Не так давно у меня возникло желание сделать радио управляемый ключ. Захотелось оснастить свой самолёт подсветкой, чтобы летать в сумерках, включать пищалку для поиска самолёта в траве.
В интернете нашёл много разных схем, но решил попробовать сделать свой вариант. К этому подтолкнула тема на форуме http://forum.rcdesign.ru/ и давнее желание научиться писать программы для микроконтроллеров.
Вот наступила нелётная погода, и я решил наконец, сделать законченное устройство о котором и написать в журнале.
Для основы взят микроконтроллер фирмы Atmel ATtiny25, просто потому, что он у меня был (купил в DIP корпусе для изучения). Есть линейка идентичных контроллеров:ATtiny25, ATtiny45, ATtiny85, которые отличаются только объёмом памяти. Для данного устройства подойдёт любой из них. Для простоты прошивания контроллера, чтобы не испортить его неправильной пошивкой фьюзов, решил оставить заводские настройки фьюзов и не трогать их. По количеству доступных ног микросхемы, можно управлять независимым переключением 4-х нагрузок. Во время тестирования программы, обнаружилось, что мой приёмник перестаёт выдавать сигнал (если не настроить FailSafe), когда теряется связь с передатчиком. Решил это использовать и выделил один канал для сигнализации о потере связи (4 канал). Получилось 3-и управляемых канала + канал "потеря связи".
Сперва переключение каналов поизводилось только пропорциональным управлением с передатчика (крутилка или стик). Но т.к. были пожелания сделать управление с помощью тумблера, разработал универсальную прошивку, которая может работать с крутилкой, тумблером и 3-х позиционным тумблером.
Перед началом использования, RC Switch нужно настроить на работу (откалибровать) с данным элементом управления на передатчике (крутилка, тумблер или 3-х позиционный тумблер). Для этого перевести этот элемент управления в максимум и подключить RC Switch на соответствующий канал приёмника. Начнёт мигать светодиод 4-го канала приглашая выполнить калибровку. Далее, надо покрутить крутилку (если элемент управления - крутилка) несколько раз в крайние положения или пощёлкать тумблером, соответственно. Для этого есть около 4-х секунд. После данной процедуры устройством можно пользоваться.
Новую калибровку необходимо проводить только при смене прошивки и при смене типа элемента управления.
Сделал 2-а Варианта прошивки:
1- при включении следующего канала, предыдущий отключается
RC_Switch_ATtiny25_v3_01;
2- при включении следующего канала, предыдущий остаётся включеный
RC_Switch_ATtiny25_v3_02.
Ещё, до кучи, может кому сгодится, сделал 2-а варианта 4-х канальной прошивки. Тут 4-й канал имеет двойную функцию: его можно включить самому, и также он включается автоматически когда теряется сигнал.
1- RC_Switch_ATtiny25_v3_31_4ch.hex
2- RC_Switch_ATtiny25_v3_32_4ch.hex
(Прошивки и схема в конце статьи)
Прошить контроллер можно этим программатором: Программатор USBasp AVR для процессоров ATMEL
Полевые транзисторы (n-канальные) использовал от старой материнской платы, можно было купить что-нибудь меньше размером в другом корпусе, но не люблю покупать, то что можно найти на халяву :)
Диод по питанию IN4148 поставил, чтоб можно было использовать регуляторы на 5,5 - 6 вольт, на нём падает излишек напряжения. И ещё, уровень сигнала от приёмника может быть недостаточен и контроллер его не увидет, таким образом я немного опускаю порог логической единицы для контроллера.
Прошивки, схема
Если это конечно кому интересно.
Кстати, Дмитрий, может вас, заинтересует технология, по которой я и сам делаю печатные платы, получаются очень профессионально. Для симуляции работы своих проектов использую Proteus ISIS (пробную версию), очень удобно тестировать прошивки, в комплекте есть ARES, в котором очень удобно рисовать платы. Суть проста, покупаю не ekits.ru текстолит с нанесенным фоторезистом, печатаю на пленке для принтеров негатив платы обычным струйником, далее под ультрафиолет на 7 мин, каустической содой проявляю и травлю в хлорном железе. На все 20 мин и плата просто загляденье. Дорожки получал даже 0,1мм.
Хотя ту есть один минус , не все прогроматоры смогу перепрошить такой проц.
Можно и по другому.
Например поставить кнопки на каналы, и при включении сначало опрашивать каналы, например в течении секунды, и в зависимости какая кнопка будет нажата на канале включить нужный режим. и ждать пока кнопку не отпустят, и после начать работу с нужным режимом.
Тем самым избавимся от перепрошивки и не трогаем вывод reset.
Но надо просто попробоваь и понять, и не все так сложно как кажется.
Тем более в наш век когда все можно найти в инете.
Я пользуюсь таким
http://www.parkflyer.ru/product/8833/
но 1 канала маловато.
Там на форуме RCdesign в теме http://forum.rcdesign.ru/f87/thread297998.html в архивах у меня положены исходники (для AVR Studio4), тут решил не засорять лишней информацией (для повторения устройства она не нужна).
Связь с приёмником осуществляю используя прерывание по приходу импульса на ногу контроллера. В прерывании определяю, что это было - фронт или спад. Если фронт - обнуляю таймер, если спад - получаю данные таймера - это и есть длительность импульса на входе. Запоминаю эту длительность в регистре. (на самом деде чуть сложнее - я запоминаю длительность 2-х импульсов: текущего и предыдущего, чтобы обрабатывать тумблеры).
А в бесконечном цикле тела программы я читаю данные этих регистров и решаю что надо записать в порт вывода.