Не так давно у меня возникло желание сделать радио управляемый ключ. Захотелось оснастить свой самолёт подсветкой, чтобы летать в сумерках, включать пищалку для поиска самолёта в траве.
В интернете нашёл много разных схем, но решил попробовать сделать свой вариант. К этому подтолкнула тема на форуме 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 вольт, на нём падает излишек напряжения. И ещё, уровень сигнала от приёмника может быть недостаточен и контроллер его не увидет, таким образом я немного опускаю порог логической единицы для контроллера.
Прошивки, схема
Программа запоминает тип управляющего элемента - тумблер, 3-х позиционник или крутилка (при калибровке), и при смене надо заново провести калибровку.
Ещё как вариант (значение мах-мин в канале ничем не ограничено)? Диапазон полный (1ms - 2ms)?
Я считаю что это не стоит изменять иначе вылезут другие не состыковки.
Когда машина катится вперёд - курок находится в центральном положении? Если да, то устройство ведь не знает, что машина ещё двигается. Курок по центру - устройство отсчитывает 360мс и если после нажать задний ход - загорится задний ход.
если после остановки быстро нажать тормоз(задний ход) то машинка едет назад и горит тормоз -
Возможно это связянно с некоторым лагом из-за периодичности опроса входных каналов (идёт поочерёдный опрос, что-то около 40 мс) - возможно это быстро туда попадает и устройство не успевает "сообразить", что курок был в центральном оложении (просто не замечает и считает, что задний ход всё ещё включен ) - это теоретически, но может где-то что-то не учёл. Гляну, как время будет.
Ножка микросхемы может находится в 3-х состояниях: выход+, выход- и вход (вход можно ещё подтянуть к питанию через 100К). Как схемотехнически сделать чтобы оба ключа гарантированно были отключены?
(выходы контроллера по 20мА, слабенькие светодиоды можно подключить напрямую на контроллер встречно-параллельно, но что помощнее - надо ставить ключи). Если только может биполярные транзисторы использовать в качестве ключей? Да, и в этом случае нельзя одновременно включать обе нагрузки, висящие на одной ножке контроллера - стоп и задний это ещё нормально, а габариты и фары?
Тут я бы увеличил количество выходов через дешифратор( http://book.mirmk.net/book1/text/glava08.htm ) или использовать контроллер с большим количеством выходов (например tiny2313)
Впрос по каналу для включения габаритов/фар. Там сколько положений переключений (будет 3-х позиционный тумблер - на каждое переключение своя позиция тумблера или дискретный тумблер и переключение сделать по кругу - выкл, габариты, габариты+фары, выкл ... и т.д.) ?
У меня нет автомобильной аппаратуры, поэтому вопросы. Что должно включать сигнал стоп и задний ход?
С задним ходом боле-менее понятно (стик газа от центра в обратную сторону), а сигнал стоп как определять? (это отдельный канал "тормоз" на тормозные колодки?).
Когда размышлял над логикой включения стоп сигнала - подумалось...
Стоп сигнал включается если было резкое переложение стика (курка) с переднего хода на задний.
А если наоборот - авто двигалось задним ходом и резкое переложение стика на передний ход. В этом случае стоп сигнал включать или нет? По логике тоже надо, но я никогда не управлял RC автомобилем и не знаю особенностей управления...
Как скажешь - так и сделаю.
Контроллер Tiny13. Фьюзы по умолчанию, но можно поменять фьюз CKDIV8 (частота контроллера повысится - повысится точность обработки входных сигналов). Прошивка сама настроится.
Схема лежит в архиве, там же моя вариация на тему применения оптопар. Саму прошивку проверял в железе, работу оптопар - только в Протеусе.
Тестируйте. Если что - можно изменить область мёртвой зоны у центрального положения курка, и время нахождения курка в центральном положении, чтобы при включении заднего хода загоралась лампа "задний ход", а не "стоп". Сейчас что-то около 360ms.
При первом запуске нужна калибровка: отводим курок в максимум и подаём питание на контроллер (вместе с входным сигналом "газ"). (калибруется только сигнал "газ" - 1 входной канал) Начнётся мигание "габариты".
начинаем двигать курок в max и min (частота мигания ускорится), под конец калибровки она сильно возрастёт - к этому моменту надо отпустить курок в центральное положение.
Если сигнал по какой либо причине будет отсутствовать - габариты будут давать периодически серию коротких двойных импульсов.
Ещё один момент. В Протеусе у меня почему-то иногда контроллер переставал воспринимать входной сигнал (хотя он был) и переходил в режим потери сигнала. В железе такого не было. Возможно это глюк Протеуса, но если такое будет - сообщи. Я в железе не очень долго тестировал, а причину в Протеусе так и не разрешил.
обычно применяется PPM кодирование.
Прошивки создаю в AVR Studio
2-а входа сделать можно. Выхода будет только 3-и (если не считать Reset - его тоже можно использовать, но после будут трудности с перепрошивкой) если только габариты и головной свет повесить на 1 выход.
Контроллер можно и не снимать с платы.
Ещё такой момент, если что, то можно поставить попроще контроллер Tiny13. По контактам он полностю совместим, но программу надо для него свою. (по любому надо новую программу писать)
Просто, когда я делал этот проект, у меня только в наличии была Tiny25. Для данных целей её ресурсы излишни, да и дороже она чем Tiny13.
Мне собственно без разницы подо что писать Tiny13 или 25. Как скажете - под то и напишу.
Я собрал данную схему, прошил микросхему прогроматором USBASP V2.0(прошивкой из архива)
и у меня не получается переключать режимы. При включении машинки, схема не мигает лампочкой, а просто горит. Т.е. нет возможности задать минимум и максимум. 3-ий канал у меня управляется обычным двухпозиционным переключателем.
Подскажите пожалуйста какие варианты возникновения данной проблемы?