Jump to content
sasha5577

Устройство Удаленного Управления Gsm "по Звонку" (Ууу Gsm "по Звонку")

Recommended Posts

В данной теме обсуждаем статью на сайте: Устройство удаленного управления GSM "По звонку" (УУУ GSM "По звонку")

Данная статья будет полезна всем, кто заинтересован в бесперебойной работе компьютера, удаленном его включении, в управлении как компьютером, так и других устройств, например, двигатель автомобиля, теплица. Можно организовать полив комнатных растений без непосредственного присутствия человека. Остальные варианты возможного применения будут описаны ниже. Включение/отключение осуществляется "по звонку" и что самое главное бесплатно.

Основные технические характеристики:

Количество управляющих комбинаций - 2 (при доработке - больше);

Напряжение питания - 5В;

Количество релейных выходов - 4 (max 100V/0,5A);

Дальность действия - ограничивается зоной покрытия сотовой сети.

Вот фото

sotov117-5.jpg

Share this post


Link to post
Share on other sites

Я так понял, что для выдачи отдельной команды нужно с разных номеров на него звонить? Это мягко говоря хреновое решение. Да и вообще что-то я толком не нашёл, где принцип работы описан и для электронщика и для конечного пользователя... только какие то жуткие отладки с точки зрения человека-дилетанта. Полив цветов может делать намного более простой аппарат, в котором вообще практически ничего нет. Питание 5В тоже не совсем удобное питание, когда речь например пойдет о батарейках и экономии. Компьютер перезагрузить, если завис - тоже довольно простое устройство и небольшая софтинка на этот комп. Всё намного проще, чем эта штука.

И зачем городить такую плату, когда существуют готовые GSM-контроллеры....

Share this post


Link to post
Share on other sites

И зачем городить такую плату, когда существуют готовые GSM-контроллеры....

Да это как раз понятно - сии контроллеры хрен найдёшь, а мобилы под ногами валяются :)

А вот насчёт кодовых сигналов я тоже не понял :(

Share this post


Link to post
Share on other sites

Вебинар «Каждому ключу — свой драйвер» (13.08.2020)

Компания КОМПЭЛ приглашает вас принять участие в вебинаре, который будет посвящен теме драйверов управления транзисторами компании Infineon. Мы рассмотрим четыре различных технологии изготовления микросхем драйверов, в чём их отличия и особенности.

Подробнее

Да вроде модули для подключения к МК не сильно редкие. Заказать можно... и где-то в нете натыкался на готовые модули, которые уже релюшками могут щёлкать.

А вот насчёт кодовых сигналов я тоже не понял :(

Ну я так понял, что на каждый "управляющий" номер в телефоне ставится соответствующая мелодия-шифр, предварительно залитая в телефон - типа спектрумовских кассетных записей или вроде того... А МК висит на динамике. Соответственно в зависимости от того, с какого номера позвонили - с динамика своя кодовая последовательность идёт, по которой он определяет, что делать. Поэтому и связь устанавливать не надо, наличия вызова достаточно... а потому всё это бесплатным получается...

Ну это если я правильно нагадал.

Share this post


Link to post
Share on other sites

Меньше не бывает: неизолированные микро-DC/DC нового поколения R4 от Mornsun

Компания Mornsun разработала серию R4 неизолированных импульсных стабилизаторов напряжения в новом миниатюрном конструктивном исполнении. Уменьшение коснулось не только размеров, на 80% меньше существующих преобразователей, но и стоимости.

Подробнее

Я так понял, что для выдачи отдельной команды нужно с разных номеров на него звонить? Это мягко говоря хреновое решение. Да и вообще что-то я толком не нашёл, где принцип работы описан и для электронщика и для конечного пользователя... только какие то жуткие отладки с точки зрения человека-дилетанта. Полив цветов может делать намного более простой аппарат, в котором вообще практически ничего нет. Питание 5В тоже не совсем удобное питание, когда речь например пойдет о батарейках и экономии. Компьютер перезагрузить, если завис - тоже довольно простое устройство и небольшая софтинка на этот комп. Всё намного проще, чем эта штука.

И зачем городить такую плату, когда существуют готовые GSM-контроллеры....

Да. Нужно звонить с разных номеров. Возможно, полив цветов логичней, конечно, организовать на простом таймере. У меня же была задача включать компьютер в удобное мне время. Возможно через 6 часов, а может через 2 суток. Тут каждый для себя сам выбирает способ включения какого-либо устройства, исходя из поставленных целей. Принцип работы для электронщика имеется в виду порядок сборки?

Поясню. Принцип работы для конечного пользователя:

1. Подключаемся к телефону

2. Подключаем к выходному разъему соответствующие контакты материнки (Reset, PowerON)

3. Подаем на плату питание, включаем в сеть зарядник

4. Устанавливаем "мелодии" на определенные номера

5. Устройство готово к работе

Экономить мА смысла нет, так как устройство работает не в полевых условиях. Если же стоит такая задача, то можно перейти на другой контроллер или использовать спящие режимы.

Про GSM-контроллеры могу сказать вот что: в настоящее время телефон найти проще, чем контроллер, да и стоит телефон дешевле. Для выполнения данной задачи вполне достаточно бюджетного телефона. Если вы говорите про GSM-модули, то там и плата сложнее и стоимость много выше. Если вы говорите про GSM-контроллеры, то вот пример

  • GSM контроллер – 6000 руб.
  • Блок питания контроллера на 15В – 1000 руб.
  • Аккумулятор 7 А/ч для бесперебойного питания контроллера – 800 руб.

Кстати напряжение питания контроллеров около 15 В + потребление контроллеров GSM выше.

Если что не понятно - спрашивайте.

А вот насчёт кодовых сигналов я тоже не понял :(

Ну я так понял, что на каждый "управляющий" номер в телефоне ставится соответствующая мелодия-шифр, предварительно залитая в телефон - типа спектрумовских кассетных записей или вроде того... А МК висит на динамике. Соответственно в зависимости от того, с какого номера позвонили - с динамика своя кодовая последовательность идёт, по которой он определяет, что делать. Поэтому и связь устанавливать не надо, наличия вызова достаточно... а потому всё это бесплатным получается...

Ну это если я правильно нагадал.

Совершенно верно! :dance2:

Edited by sasha5577

Share this post


Link to post
Share on other sites

Сетевой источник питания с расширенным диапазоном входных напряжений на основе VIPER26xK

Питание стационарных устройств чаще осуществляется напряжением 220 В, получаемым от одной фазы трехфазной промышленной сети. Однако существует ряд приложений, которым необходима энергия из всех трех фаз, в т.ч. и в аварийных режимах. Решение этой задачи обычно требует введение в модули питания дополнительных узлов, увеличивающих как их размеры, так и стоимость. Упростить схемы источников питания от трехфазной сети переменного тока либо от других высоковольтных источников, позволяет использование преобразователей с расширенным диапазоном входного напряжения.

Подробнее

Ну не знаю, про какие вы модули говорите, конкретное название назовите. И потом это скорее всего полностью готовые к использованию вещи. Я говорю про "полуфабрикат" типа SIM900D, который стоит меньше тысячи. Бесспорно с таким компонентом устройство будет подороже и посложнее по программной части, но там полный контроль над всем. И GPRS-ом можно попользоваться на нём.

Вот было бы интереснее - если была бы гранитура, и режим "снять трубку по звонку". Контроллер в данном случае должен будет дешифрировать тоны от нажатия кнопок, и выполнять соответствующую команду. Хоть уже и платно, но номер нужен всего один и команд можно сколько угодно сделать.

Позвонил, трубка тут же поднимается, набрал на цифрах пароль, оттуда пикает... потом набрал код команды, оттуда опять пикает - мол всё сработало, или по другому пикает, если пароль например неправильный...

Edited by tcoder

Share this post


Link to post
Share on other sites

Гораздо проще и логичнее было бы использовать DTMF. Усложнений особых нет, удорожания тоже, выход с того же динамика берется, зато управление с любого телефона (16 команд легко реализуется) и не нужно никаких мелодий к звонкам привязывать.

Share this post


Link to post
Share on other sites

Ну не знаю, про какие вы модули говорите, конкретное название назовите. И потом это скорее всего полностью готовые к использованию вещи. Я говорю про "полуфабрикат" типа SIM900D, который стоит меньше тысячи. Бесспорно с таким компонентом устройство будет подороже и посложнее по программной части, но там полный контроль над всем. И GPRS-ом можно попользоваться на нём.

Вот было бы интереснее - если была бы гранитура, и режим "снять трубку по звонку". Контроллер в данном случае должен будет дешифрировать тоны от нажатия кнопок, и выполнять соответствующую команду. Хоть уже и платно, но номер нужен всего один и команд можно сколько угодно сделать.

Позвонил, трубка тут же поднимается, набрал на цифрах пароль, оттуда пикает... потом набрал код команды, оттуда опять пикает - мол всё сработало, или по другому пикает, если пароль например неправильный...

Я писал про готовое решение GSM контроллер CCU6225. Здесь представлен бюджетный вариант, когда не нужно больше 2 команд. У меня, к примеру (да и у многих сейчас), телефон с 2 сим-картами. Звонки и смс с других номеров игнорируются.

Вот про SIMM900 SIM900D [b09] GSM/GPRS модуль 640

Конечно у него возможностей больше. Просто я искал применение старым ненужным телефонам.

Про тоновый набор - идея интересная. Возьму на заметку. Можно, конечно, и без гарнитуры обойтись. Просто посадить кнопку ответа на контакт релюшки. Кстати эти же "мелодии" могут служить паролем к снятию трубки. И далее по тоновой комбинации можно распознать какую команду мы просим выполнить.

Гораздо проще и логичнее было бы использовать DTMF. Усложнений особых нет, удорожания тоже, выход с того же динамика берется, зато управление с любого телефона (16 команд легко реализуется) и не нужно никаких мелодий к звонкам привязывать.

Выход нужно будет брать с другого динамика. Спасибо. Взял на заметку. Если не сложно, выложите пример для CodeVisionAVR для расшифровки DTMF.

Share this post


Link to post
Share on other sites

Если не сложно, выложите пример для CodeVisionAVR для расшифровки DTMF.

Так Вы поищите через поисковик. Искать нужно "DTMF декодер" или "DTMF декодер на AVR" к примеру. Вероятно декодировать можно на аналоговом уровне, посредством специальной микросхемы-декодера или непосредственно декрдировать в МК. Выбор за Вами. Лично не занимался этим, ничего конкретного не посоветую.

Вот например машинка на управлении DTMF-ом через мобильный телефон - там исходник прилагается вроде как, правда для другой среды - это с микросхемой-декодером отдельной. Но зато почти то, что Вам нужно.

Share this post


Link to post
Share on other sites

Если не сложно, выложите пример для CodeVisionAVR для расшифровки DTMF.

Автономная система записи телефонных разговоров на микроконтроллере AVR - 2 части:

http://www.rlocman.ru/shem/schematics.html?di=64371

http://www.rlocman.ru/shem/schematics.html?di=64492

Оригинал на инглише: http://www.circuitcellar.com/avr2006/winners/AT3344.htm

Но там WinAVR.

Если неохота колупаться с алгоритмом Герцеля (программная декодировка DTMF), можете посмотреть в сторону микросхем HT9170B (DTMF decoder) и LM567.

Последняя - вообще универсальный тоновый детектор. Можно контролировать наличие какой-то частоты в сигнале.

Share this post


Link to post
Share on other sites

Автономная система записи телефонных разговоров на микроконтроллере AVR - 2 части:

http://www.rlocman.r...s.html?di=64371

http://www.rlocman.r...s.html?di=64492

Оригинал на инглише: http://www.circuitce...ners/AT3344.htm

Но там WinAVR.

Если неохота колупаться с алгоритмом Герцеля (программная декодировка DTMF), можете посмотреть в сторону микросхем HT9170B (DTMF decoder) и LM567.

Последняя - вообще универсальный тоновый детектор. Можно контролировать наличие какой-то частоты в сигнале.

Есть нерабочие ссылки. Если я правильно понимаю, то на каждую частоту нужно по LM567. Многовато выходит. Первой микросхемы нет в наличии в магазинах. Может покопать в домашних телефонах... Еще наткнулся на MT8870, но тоже нет в наличии.

Share this post


Link to post
Share on other sites

Пардон.

Русские ссылки рабочие:

http://www.rlocman.ru/shem/schematics.html?di=64492

http://www.rlocman.ru/shem/schematics.html?di=64371

Английская похоже дохлая, если Вам надо, киньте мне Ваш email в личку, я вышлю Вам полный архив - 1.8 метра. Описание, схемы, прошивка. Качал полтора года назад ....

Про LM567 Вы правильно поняли. Сколько частот, столько и микросхем. Зато можно всё, что угодно слепить :)

Насчёт HT9170B и MT8870 Вы правы ... Довольно редкие ...

Share this post


Link to post
Share on other sites

Английская похоже дохлая, если Вам надо, киньте мне Ваш email в личку, я вышлю Вам полный архив - 1.8 метра. Описание, схемы, прошивка. Качал полтора года назад ....

Про LM567 Вы правильно поняли. Сколько частот, столько и микросхем. Зато можно всё, что угодно слепить :)

Насчёт HT9170B и MT8870 Вы правы ... Довольно редкие ...

У вас, наверное, тот же самый архив, что выложен в русской статье про запись телефонных разговоров. Дело в том, что код написан сплошняком и поэтому плохо читаем. Если у вас другой код, то вышлите на почту.

Share this post


Link to post
Share on other sites

Неплохая идея. На мой взгляд устройство можно упростить:

Вместо кодовой посылки поставить тональный сигнал, на каждый номер (команду) свою частоту, и написать простую программу частотомер на микрокотроллере, или вообще отказатся от микроконтроллера и использовать аналоговые фильтры с логикой.

Ещё добавить функцию обратного вызова, что всё ОК.

Для реализации устройства нехватает только телефона с двумя сим картами :)

Share this post


Link to post
Share on other sites

Неплохая идея. На мой взгляд устройство можно упростить:

Вместо кодовой посылки поставить тональный сигнал, на каждый номер (команду) свою частоту, и написать простую программу частотомер на микрокотроллере, или вообще отказатся от микроконтроллера и использовать аналоговые фильтры с логикой.

Ещё добавить функцию обратного вызова, что всё ОК.

Для реализации устройства нехватает только телефона с двумя сим картами :)

Я вначале так и хотел сделать, то есть измерять частоту. :dance2: Но потом отказался. У меня давно висит в голове идея обратной связи. Пока что не могу определиться с выбором типа ОС. Есть вариант доработки. Он таков: прикрутить DTMF (MT8870), на клавиатуру телефона повесить по релюшке или транзистору и набирать первый номер, если выполнилось первое действие, второй - соответственно, если второе. Это при двух комбинациях. Если же комбинаций много, то можно звонить на 1 номер, если устройство включилось, на второй - если выключилось. В идеале, конечно, программку для андроида написать с распознаванием DTMF.

Начал разбираться с алгоритмом Герцеля (для доработки устройства). Но вдруг неожиданно наткнулся в магазине на микросхему MT8870. Хочу реализовать на ней. Пока что думаю пароль DTMF забивать или использовать фильтр по номеру телефона. Везде есть свои плюсы и минусы. В будущем, конечно, хочу перейти на программную обработку сигнала.

Для реализации устройства нехватает только телефона с двумя сим картами :)

Можно попробовать и с одной сим-картой. На динамик выводить постоянный сигнал при звонке с конкретного номера. Если лог. "1" , например, держится менее 4 секунд, то выполнить действие 1, если более, то 2.

Share this post


Link to post
Share on other sites

Устройство надо делать без "снятия трубки", так бесплатно.

Ещё, как вариант, кроме расширения количества сим-карт (с которых звоним), для увеличения числа выполняемых операций можно попробовать разделять запросы на выполнение команд через 2-3 секунды. Например:

команда 1 - входящий звонок с конкретного номера до 2 секунд (гудков)

команда 2 - входящий звонок с конкретного номера от 2 до 4 секунд (гудков)

команда 3 - входящий звонок с конкретного номера от 4 до 6 секунд (гудков)

Идея, конечно, немного бредовая, но для людей увлекающихся музыкой и умеющих держать определенный темп, может иметь смысл. :)

Можно написать программу для андроида, которая подавала бы звуковой сигнал через указанные промежутки времени.

Share this post


Link to post
Share on other sites

Ах*инеть :crazy: !!! Ребят, а кто нить слышал про АТ-команды? Зачем использовать кучу симок, мп3 какие то заливать, разбирать мобилу что бы подпаятся.......? МК с мобилой или gsm-модулем связывается через RX-TX и все, при чем если питание МК и ЖСМ-модуля с одного источника ~4 В, то и согласовывать ненужно. Напрямую вывод RX телефона с выводом TX МК, и наоборот TX тел. с RX МК. С помощью АТ-команд можно определить номер входящего вызова и по желанию отклонить его или ответить (все решается программным путем).

Всевозможние дополнительные настройки можно внести в записную книжку СИМки, а МК их может прочитать при помощи АТ-команд.

Могу ошибатся, в GSM-модуле SIM 900 или SIM 900D там и DTMF декодирует сам модуль при подаче АТ комманды (включение функции декодера), и выдает в UART какая ДТМФ посылка пришла.

GSM модуль дороже, но его проще перезапустить программно (имеется ввиду запустить после подачи питания, програмой в МК) чем мобилу. А представьте в удаленном месте пропадет электричество, мобила вырубится и все! Придется ехать включать ее вручную.

Edited by Серега_

Share this post


Link to post
Share on other sites

Всем привет) Читаю и недопонимаю, нафига так заморачиваться, тупо сим900 поставить и контроллер и делай с этим девайсом что угодно) всё уходит практически в область программирования).

Share this post


Link to post
Share on other sites

Может кто взялся бы за разработку устройства, подобного этому Только на AVR (к примеру мега16). Что то подобное вот

.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

  • Similar Content

    • By Rad TV
      Скетч простой и кислий. Сделан автором RadTV канал:https://www.youtube.com/channel/UC1k5elIKErFnmwTzIsRgQrA?view_as=subscriber
      Буду рад рокомендациях и помощи!Сделал сам проект должен бить простим и  что би влезло в ATtini85!
      Есть защита акб и просто парения (!!!Кнопка на розмикания!!!)
      Обновления будут!!!!
       
       
      RadMOD ver1.0.txt
    • By Prozac
      Здравствуйте, уважаемые форумчане! Вообще говоря, не имею такой привычки - донимать людей вопросами, и до всего стараюсь доходить самостоятельно. Но в данном случае без "помощи зала" совсем никак: перепробовал уже все, что только смог придумать - а "воз и ныне там! Поэтому и обращаюсь сюда - возможно, кто-то уже сталкивался с чем-то подобным, и сумел найти решение...
      Суть проблемы в следующем: решил построить ШИМ-контроллер для автомобильного вентилятора охлаждения ("карлсона"), но никак не могу заставить его работать - как только открываются VT2 и VT3, подключая нагрузку, МК уходит в резет или виснет (чаше - первое)!.. Сбросившись, опять пытается подключить нагрузку, и опять резетится, и так - без конца! Причем, изначально решил испытать схему не на индуктивной нагрузке (электромоторе), а на вполне себе пассивной 60Вт (около 3A по току) лампочке из фары - и та же фигня: МК пытается запуститься, сбрасывается, лампа моргает, дергается... Даже не ШИМ, а обычное мигание лампой с частотой 1Гц через несколько вспышек или вешает МК, или резетит его (что видно по сбою ритма моргания). При этом без нагрузки - по осциллографу, подключенному к ноге 5 МК или к нижнему (по схеме) выводу R7 - все отлично: наблюдается ровный и чистенький ШИМ-сигнал, изменяющийся согласно тестовой программе! Однако, стоит подать нагрузку, как осциллограмма начинает прыгать: появляются ШИМ-импульсы, затем ровная линия, затем снова импульсы с тем заполнением, которое должно быть в самом начале программы... Собственно, это наблюдение и позволило сделать вывод о том, что МК перезагружается.
      Естественно, первая мысль - слабый лабораторник (он у меня импульсный, самодельный, где-то на 3А - действительно слабый; но та же петрушка наблюдалась и при попытках питать устройство от трансформаторного ЗУ на 10А). Ну, пригнал машину, снял с нее аккум (100% свежий и не дающий просадок!), запитал от него - однако проблема повторилась... Значит, дело не в питании!.. Пробовал много различных танцев с бубном: отключал внешнюю цепочку сброса R2-C2 (результат - ноль), включал BOD микроконтроллера (стало еще хуже), подвешивал вместо C4 и C6 электролиты большей емкости (не помогло)... Думал, что, возможно, кондеи C4 и C6 разряжаются через R7 - экспериментировал с его сопротивлением (от 100 до 960 Ом), перекидывал его верхний вывод на анод VD1 (чтобы отсечь резистор от фильтрующих C4 и C6) - тщетно... Грешил даже на то, что какие-то проблемы вносит емкость затворов VT2 и VT3 - уменьшал сопротивление R10 и R12, дабы затвор быстрее "разряжался" - безрезультатно...
      Игрался с частотой МК и ШИМ - перебрал частоты ШИМ от 18 до 4687 Гц; пытался запускать нагрузку с разным заполнением ШИМ, от 10 до 40% - как глючило, так и глючит... Т.е., перелопатил, практически, всю схему!
      Удалось заставить устройство нормально работать на лампу, и даже на пару спаралеленных электродвигателей МЭ218 (от "печки") следующим образом: R8 был исключен (вместо него - перемычка), а C7 (изначально - К73-17В всего на 0,47мкФ) был заменен на пару электролитов по 1500мкФ, включенных плюс к плюсу последовательно (для устранения полярности кондеев). Нагрузка стала нормально подключаться, отрабатывать как на повышение, так и на убывание заполнения ШИМ. Двигатели отлично работали как при ступенчатом изменении ШИМ-заполнения, так и при плавном. Единственное, что при попытке подать на двигатели ШИМ с заполнением менее 20%, МК опять начинал дергаться и резетить, а так же резетил при резком отключении движков: если раскрутить их до 100%, а потом снять сигнал, то МК перезагружался; однако, если после 100% плавно понижать обороты где-то до 40%, и лишь потом снимать сигнал, то схема работала нормально. Плюс, очень сильно нагревались электролиты C7...
      Однако, когда принес схему в машину - для отладки непосредственно в "боевых условиях", и подключил мощный двигатель вентилятора, началась старая песня с резетами...
      Сейчас, вроде бы, "осенило" - поменял VD2 на Шоттки 1N5822 - лампочка запустилась на "ура" даже без С7; так же отлично и мягко стартовала спарка из МЭ218 - радостный побежал к машине... Но с "карлсоном" - опять мимо: МК вновь ушел в перезагрузку... Все: я не знаю, что тут делать - каждую деталь уже перелопатил, и кучу вариантов испробовал!!! Но ничего не понятно(( Вот и прошу помочь: может быть, кто-то уже был в такой ситуации, и как-то решил подобную проблему?
      VT2 и VT3 стоят "фирменные", IR-овские (не Китай) - из "Чип и Дипа". ATtiny13 - с Алиэкспресс; чтобы исключить возможность брака конкретной микросхемы, пробовал ставить в схему несколько разных экземпляров МК (из одной посылки). DS18B20 пока еще не подключал (нужно разобраться с ШИМ!). IRF3205 каскадированны для уменьшения нагрева (хотя его и так практически нет), и для дополнительной надежности (чтобы в случае выхода из строя одного транзистора не перегреть машину). Тестовую программу специально написал "китайским стилем", без циклов и т.п. - чтобы она была максимально простой, наглядной и линейной - для уверенности, что не в ней дело.
      Подскажите пожалуйста - откуда эти резеты, и как с ними бороться? Как заставить схему отрабатывать на мощную нагрузку? Заранее благодарю!!!
       
       
      ;*************ТЕСТОВАЯ ПРОГРАММА************* ;============ДИРЕКТИВЫ ТРАНСЛЯТОРУ=========== .device ATtiny13 .include "tn13def.inc" .list ;Обзывательство регистров .def Temp = R16 .cseg .org 0x00 ;=========ТАБЛИЦА ВЕКТОРОВ ПРЕРЫВАНИЙ======== rjmp Begin //Начальный сброс reti //Внешнее прерывание INT0 reti //Изменение состояния любой линии reti //Переполнение T0 reti //Готовность EEPROM reti //Срабатывание компаратора reti //Совпадение в канале A таймера T0 reti //Совпадение в канале B таймера T0 reti //Переполнение сторожевого таймера reti //Завершение преобразования в АЦП ;============МОДУЛЬ ИНИЦИАЛИЗАЦИИ============ Begin: ;-----Инициализация стека ldi Temp, RAMEND out SPL, Temp ;-----Отключение компаратора ldi Temp, 0x80 out ACSR, Temp ;-----Настройка портов ldi Temp, 0b00000111 out DDRB, Temp //PB0 - на вывод ;-----Настройка ШИМ ldi Temp, 0b11000001 out TCCR0A, Temp //Режим - быстрый ШИМ с инверсией ldi Temp, 0b00000010 out TCCR0B, Temp //Делим тактирование таймера на 8 rjmp Start //При старте пропускаем 5-секундную задержку ;===============ТЕСТОВЫЙ ЦИКЛ================ PWM: ldi Temp, 0b00000000 out OCR0A, Temp //ШИМ=0% rcall Delay5sec //Ждем 5 сек ;-----Повышаем скорость Start: ldi Temp, 77 out OCR0A, Temp //ШИМ=30% rcall Delay2sec ldi Temp, 102 out OCR0A, Temp //ШИМ=40% rcall Delay2sec ldi Temp, 128 out OCR0A, Temp //ШИМ=50% rcall Delay2sec ldi Temp, 154 out OCR0A, Temp //ШИМ=60% rcall Delay2sec ldi Temp, 179 out OCR0A, Temp //ШИМ=70% rcall Delay2sec ldi Temp, 205 out OCR0A, Temp //ШИМ=80% rcall Delay2sec ldi Temp, 230 out OCR0A, Temp //ШИМ=90% rcall Delay2sec ldi Temp, 255 out OCR0A, Temp //ШИМ=100% rcall Delay2sec ;-----Понижаем скорость ldi Temp, 230 out OCR0A, Temp //ШИМ=90% rcall Delay2sec ldi Temp, 205 out OCR0A, Temp //ШИМ=80% rcall Delay2sec ldi Temp, 179 out OCR0A, Temp //ШИМ=70% rcall Delay2sec ldi Temp, 154 out OCR0A, Temp //ШИМ=60% rcall Delay2sec ldi Temp, 128 out OCR0A, Temp //ШИМ=50% rcall Delay2sec ldi Temp, 102 out OCR0A, Temp //ШИМ=40% rcall Delay2sec ldi Temp, 77 out OCR0A, Temp //ШИМ=30% rcall Delay2sec rjmp PWM //Возвращаемся, и начинаем с 5 сек "молчания" ;===========ПОДПРОГРАММЫ ЗАДЕРЖКИ============ ;-----Задержка в 2 секунды Delay2sec: ldi R17, 253 ldi R18, 75 ldi R19, 29 L1: subi R17, 1 sbci R18, 0 sbci R19, 0 brcc L1 nop ret ;-----Задержка в 5 секунд Delay5sec: ldi R17, 253 ldi R18, 61 ldi R19, 73 L2: subi R17, 1 sbci R18, 0 sbci R19, 0 brcc L2 nop ret  

    • By Дмитрий Чуков
      Необходимо составить программу, которая формирует сигнал с частотой 1 кГц и скважностью 4 при помощи таймера. В CodeVision AVR написать программу и после в протеусе проверить, целый день уже бьюсь, не могу разобраться с таймерами. Вроде задача не трудная, если бы увидел, как это должно выглядеть в коде... Как настроить таймер для ATMega8A и решить эту задачу?
    • By Стас73
      Доброй ночи, уважаемые.
      Прошу Вашего совета по следующей куче проблем для меня, т.к. не соображаю в электронике, схемах, резисторах и подобному, но дружу с компом и есть желание сделать определенный механизм, но пока нет наставления на путь истинный от специалистов)
      Задача состоит в следующем - хочу мотор стеклоочистителя подключить к Ардуино, но управлять им необходимо с кнопки. Шилд, например, который обрабатывает сигнал нажатия на кнопку (допустим кнопка записи), при ее активации, нажимаю на другую кнопку, которая дает команду движку вращаться по часовой стрелке. Отпускают ее, моторчик останавливается. Другая кнопка, вращение в противоположную сторону. Т.е. записал последовательность и продолжительность вращений,  нажимаю вновь на кнопку запись и мои действия сохраняются. Далее на 4 кнопку жму и моя игра с моторчиком автоматически воспроизводится. Если такое выполнимо с помощью плат и шилдов без доп программирования логики, то буду ОЧЕНЬ  признателен если расскажете как вкратце это осуществить или кинете ссылки к примеру на Али с нужными товарами. Если легковыполнимо, то в будущем наверное уже разберусь,  как обойтись без нажатия на 4 кнопку (воспроизведения записанных действий) и запускать этот процесс, подключив датчик движения или звука.
      Если необходимо описывать логику или создавать типа какого-то протокола, что шилд (?) умел понимать, что я от него хочу, то подскажите среду разработки для неба, что б там по минимуму было наворотов) В принципе с основами c++ для Ардуино скорее всего придется ознакомиться. 
      Заранее спасибо!
    • By Ilya Gray
      Доброго времени суток!
      В целом, имеется опыт разработки малых устройств, что-то понимаю, в общем, старательно читаю даташиты, даже понимаю их, но на звание серьёзного инженера (пока что) не претендую.
      Я пытаюсь использовать I2C на 8-битном PIC16F18326. Сижу в даташитах. Всё понимаю, всё делаю, на мой неопытный взгляд, правильно. Даже копирую полностью рабочие примеры (я даже купил такой же микроконтроллер, как в примере, скопировал код, контролируя, что он делает. Но всё равно не работает - SCL/SDA на 5в и всё тут).
      Так вот: PIC16F18326 on breadboard (прошу прощения, я хз как это по-русски) на внутреннем 32мгц кристалле. Чип пашет, без проблем моргаю LEDкой. Ну, думаю, щас быстренько подниму I2C. В итоге SCL SDA сидят на 5в без движения. Я использую LED для отладки. Судя по LED, код заloopливается в месте, где проверяется while PIR1bits.SSP1IF==0. Я уже везде был, кучу форумов перерыл. Уже попробовал всё, что мог представить. Я довольно новый в мире PIC, хотел попробовать их, а они ужасно сопротивляются. Уже 2 недели долблюсь безуспешно.
      Подтяжки 10к, проблем с ними никогда не было.
      Собственно, вот код (я уже там попробовал повыключать ADC, вычитал про баг, что сначала I2C пины надо делать OUTPUT LOW, а потом уже INPUT из-за бага MSSP, но ничего не помогло).
      // PIC16F18326 Configuration Bit Settings // 'C' source line config statements // CONFIG1 #pragma config FEXTOSC = OFF // FEXTOSC External Oscillator mode Selection bits (Oscillator not enabled) #pragma config RSTOSC = HFINT32 // Power-up default value for COSC bits (HFINTOSC with 2x PLL (32MHz)) #pragma config CLKOUTEN = OFF // Clock Out Enable bit (CLKOUT function is disabled; I/O or oscillator function on OSC2) #pragma config CSWEN = ON // Clock Switch Enable bit (Writing to NOSC and NDIV is allowed) #pragma config FCMEN = ON // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled) // CONFIG2 #pragma config MCLRE = ON // Master Clear Enable bit (MCLR/VPP pin function is MCLR; Weak pull-up enabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config WDTE = OFF // Watchdog Timer Enable bits (WDT disabled; SWDTEN is ignored) #pragma config LPBOREN = OFF // Low-power BOR enable bit (ULPBOR disabled) #pragma config BOREN = ON // Brown-out Reset Enable bits (Brown-out Reset enabled, SBOREN bit ignored) #pragma config BORV = LOW // Brown-out Reset Voltage selection bit (Brown-out voltage (Vbor) set to 2.45V) #pragma config PPS1WAY = ON // PPSLOCK bit One-Way Set Enable bit (The PPSLOCK bit can be cleared and set only once; PPS registers remain locked after one clear/set cycle) #pragma config STVREN = ON // Stack Overflow/Underflow Reset Enable bit (Stack Overflow or Underflow will cause a Reset) #pragma config DEBUG = OFF // Debugger enable bit (Background debugger disabled) // CONFIG3 #pragma config WRT = OFF // User NVM self-write protection bits (Write protection off) #pragma config LVP = ON // Low Voltage Programming Enable bit (Low Voltage programming enabled. MCLR/VPP pin function is MCLR. MCLRE configuration bit is ignored.) // CONFIG4 #pragma config CP = OFF // User NVM Program Memory Code Protection bit (User NVM code protection disabled) #pragma config CPD = OFF // Data NVM Memory Code Protection bit (Data NVM code protection disabled) // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. #include <xc.h> #include <htc.h> #include <stdio.h> #include <stdint.h> #define _XTAL_FREQ 32000000 void i2c_is_idle(void){ //while(!PIR1bits.SSP1IF); //while(SSPCON2bits.SEN==1 || SSPCON2bits.RSEN==1 || SSPCON2bits.PEN==1 || SSPCON2bits.RCEN==1 || SSPCON2bits.ACKEN==1 || SSPSTATbits.R_nW==1){}; while(PIR1bits.SSP1IF == 0){ PORTCbits.RC2=1; }; // SSP1IF is set when operation complete PORTCbits.RC2=0; PIR1bits.SSP1IF = 0; // clear interrupt flag } void i2c_start(void){ i2c_is_idle(); SSPCON2bits.SEN = 1; } void i2c_rep_start(void){ i2c_is_idle(); SSPCON2bits.RSEN = 1; } void i2c_stop(void){ i2c_is_idle(); SSPCON2bits.PEN = 1; } void i2c_write(uint8_t i2c_data){ i2c_is_idle(); SSPBUF = i2c_data; while(SSPSTATbits.BF != 0); while(SSPCON2bits.ACKSTAT != 0); } uint8_t i2c_read(uint8_t ack){ uint8_t recieve =0; i2c_is_idle(); SSPCON2bits.RCEN = 1; while(SSPSTATbits.BF != 1); recieve = SSPBUF; SSPCON2bits.ACKEN = ack; return recieve; } void i2c_init(void){ TRISCbits.TRISC0 = 1; TRISCbits.TRISC1 = 1; SSPSTATbits.SMP = 1; SSPSTATbits.CKE = 0; SSPCONbits.SSPM = 0x08; SSPADD = 79; SSPCONbits.SSPEN = 1; } void main(void) { ANSELCbits.ANSC0 = 0; //ADC RC0 OFF ANSELCbits.ANSC1 = 0; //ADC RC1 OFF TRISCbits.TRISC2=0; //LED PIN TRISCbits.TRISC0=0; //MSSP bug counter TRISCbits.TRISC1=0; //MSSP bug counter //__delay_ms(5); LATCbits.LATC1=0; //MSSP bug counter LATCbits.LATC0=0; //MSSP bug counter //__delay_ms(5); INTCONbits.GIE=1; //global interrupt en INTCONbits.PEIE=1; //peripheral interrupt en ADCON0bits.ADON=0; //unpower adc just in case i2c_init(); //THIS SETS TRISC BITS FOR SCL SDA while(1){ i2c_start(); i2c_write(0x3C); i2c_stop(); } return; } Задача: просто увидеть коммуникацию на SCL SDA, я уже потом по даташитам таргет девайсов без проблем напишу дрова. Не получается именно осуществлять коммуникацию.
      Подскажите, пожалуйста, я не понимаю, где я дурак, а между тем волос на голове становится всё меньше, а те, что остались, стремительно приобретают серый окрас, ибо 2 недели я долбаюсь с одной проблемой. Благодарю за ваши советы. Спасибо.
       
×
×
  • Create New...