Шлем оптимуса натолкнул на мысли...

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


Итак, поехали:

Немного теории. Управление нашей подсветкой будем осуществлять от любого из каналов приемника, можно через Y-кабель, можно смикшировать с каналом газа, можно просто на отдельный какнал, тут кому что нравится/необходимо. Каким именно образом формируются управляющие импульсы можно подробно почитать здесь. Зажигать светодиоды мы будем используя ШИМ.

Что нам потребуется: руки, паяльник, микроконтроллер ATMega8 (просто была под рукой), кусочек (18х36) двухстороннего текстолита, 12-ть smd резисторов, пара конденсаторов, спаренные штырьковые разъемы, собственно сами светодиоды ну и программатор (я использую USBASP).

Реализация: Прошивка написана на MikroC, плата разведена в DipTrace. По этой причине, я скомпилировал исходники и выгнал плату в pdf. Исходников два, первый (led_6x6.c) на порту С - динамическое управление светодиодами, на порту B - дискретное управление. второй (led_12x0.c) - оба порта управляются динамически. Соответственно две скомпилированные прошивки (flash_6x6.hex) (flash_12x0.hex). Ну и сама плата в формате pdf (PCB.pdf), она уже отзеркалена, просто распечатываем как есть и переводим с помощью ЛУТ на текстолит.
В самих исходниках я постарался максимально закомментировать все выполнямые действия. Как это работает: На внешнем прерывании INT0 висит сигнал от приемника, когда приходит передний фронт управляющего импульса, включается таймер и считает тики до окончания управляющего импульса. По завершению счета, мы получаем значение длительности этого импульса, он меняется от 1мс до 2мс, что соответствует минимальному и максимальному положению стика газа на пульте. Второй таймер тикает постоянно, и считает от 0 до 255 (это наш диапазон изменения яркости свечения светодиодов), при прохождении счетчика таймера через 0, на порт со светодиодами подается высокий уровень, при достижении значения таймера соответствующего значению длительности входа, порт отключается до следующего перехода через ноль, т.е. получаем классический программный ШИМ, который и позволит нам зажигать светодиоды с различной яркостью. В прошивке "6x6" реализовано дополнение - на порту B светодиоды загораются при положении стика газа больше среднего т.е. при длительности управляющего импульса больше 1.5мс, а при меньшем значении - отключаются.
Для того чтобы залить прошивку на плате предусмотрены площадки для припаивания проводков программатора.


Площадки RESET, SCK, MISO, MOSI - это для программатора, к ним припаиваем проводки, шьем прошивку и отпаиваем проводки. Площадка GND и аналогичная под C1 - это переходные отверстия на противоположную сторону, там фольгу не вытравливаем, там у нас земля. правая площадка под C1 - это питание. Сверху платы выведен порт C, снизу порт B, конденсаторы С1 и С2 любые (у меня С1 - 0.1мкФ, С2 - 22мкФ танталовый электролит). Контакты signal, +5v, GND (слева) - сюда подключается выход из приемника (как обычная серва). Резисторы надо подбирать под ваши светодиоды, чтобы добиться минимального потребления тока при максимальном свечении, ну обычно номинал этих резисторов от 300Ом до 1кОм, у меня отлично все получилось при номинале 510Ом. Питается вся схема от управляющего сигнала приемника, т.е. отдельное питание не надо, только смотрите, чтоб оно не превышало 5.5вольт, чтоб не спалить контроллер. Контроллер тактируется внутренним резонатором на 8МГц.

Как все это выглядит в собранном виде:

С припаянными проводами программатора:



Вид снизу:


с программатором:


устройство, готовое к эксплуатации:


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

вот скрин как установить фьюзы:



Для чего две разные версии прошивок: ну например, ставим все светодиоды по окружности выходного канала сопла, шасть из них будут плавно загораться при увеличении газа до половины, после зажгутся остальные шесть (визуально как будто включился форсаж). Можно поставить по три динамических и три дискретных на каждое сопло. Можно поставить все светодиоды как динамические, по шесть на каждое сопло. Т.е. вариантов несколько, каждый выбирает по вкусу свой.

Ну и на закуску, видео работы полученного девайса:



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

Будут вопросы - задавайте.

летом катер выходит в плавание, весной, надеюсь, полетит истребитель из видео.

Вес собранной платы без внешних светодиодов - 6гр.