Контроллер ходовых огней на ATmega как в премиум авто

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

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

А теперь рассмотрим схему и работу алгоритмов контроллера более подробно.

Схема контроллера ходовых огней

Печатная плата контроллера ходовых огнейПечатная плата контроллера ходовых огней

номер контакта обозначение описание
1,3 LED+ силовой выход на огни
2,4 VCC Силовое питание платы
6 Lled Левый свет
8 Rled Правый свет
5 lbm Ближний свет
7 fog Противотуманки
9 Rin Правый поворотник
11 Run Сигал с генератора
13 Lin Левый поворотник
15 Ign Зажигание
12,14,16 GND Общий провод

Для подключения использован шестнадцати контактный двухрядный разъем CN1 с шагом выводов 5.08, но можно припаивать провода прямо на плату. Дежурное питание поступает на плату через диод D5 на линейный стабилизатор U2 (U3), который питает микроконтроллер. Входные цепи, которые определяют работу контроллера, организованы резистивными делителями напряжения и керамическими конденсаторами для подавления помех. Силовое питание подается в схему через реле после получения сигнала запуска двигателя через делитель R11-R4, и удерживается все необходимое время даже после отключения зажигания. Реле управляется микроконтроллером через транзистор Q6, а диод D3(D4) служат для защиты схемы от индуктивных выбросов катушки реле. Силовое питание подается на аноды светодиодных ходовых огней через контакты 2 и 4 разъёма CN1, а независимое управление яркостью свечения огней осуществляется мосфетами Q2 и Q3 (Q4 и Q5) методом широтно-импульсной модуляции. Важным моментом является частота импульсов. Она должна быть минимум 8 килогерц или больше. Низкая частота, как в функциях ардуино, работает не так плавно как должно быть. Тактирование микроконтроллера может осуществляться как от внутреннего RC генератора, так и от внешнего кварцевого резонатора, что определяется коррекцией прошивки микроконтроллера. FUSE биты контроллера остаются по умолчанию для использования встроенного генератора. 

Контроллер, к слову, можно использовать практически любой, подходящий по посадочному месту из линейки ATMega. В данный момент имеется реализация под Mega88 и Mega328, как самые популярные и доступные решения в Arduino. Некоторые элементы в схеме продублированы и имеют разные посадочные места, что позволяет собирать устройство по принципу «из того что есть».

При разводке печатной платы, в угоду ее компактности и универсальности, пришлось использовать двухсторонний дизайн и располагать элементы и дорожки с двух сторон. Не обошлось при этом и без переходных отверстий, которые адаптированы для ручного изготовления при помощи пайки на плату пустых штырьков. Контроллер желательно прошить заранее до пайки, но можно подпаять провода к дополнительным пятачкам на плате и прошить его на месте. Для прошивки естественно нужно пользоваться программатором, что конечно, не так удобно как в ардуино. Вся схема собрана и упакована в корпус из ABS пластика, напечатанный на 3D принтере. Модель корпуса для печати прилагается. Плату готового устройства желательно покрыть лаком для защиты элементов от внешних вредных воздействий, так как работать ей придется в подкапотном пространстве автомобиля, где условия очень неблагоприятные для такой электроники.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 МК AVR 8-бит ATmega168 1 88 или 328
U2 Линейный регулятор LM317 1
Q4 Q5 MOSFET-транзистор IRL510 2
D3 Выпрямительный диод FR103 1
D2 Защитный диод SMCJ16A 1
Q6 MOSFET-транзистор XP151A12A2MR-G 1 любой аналог
D5 Выпрямительный диод RL201 1
RELAY1 Реле JQC-33FF 1 много аналогов на 12 вольт
C3, C5, C6, C8, C9, C11-C14 Конденсатор SMD 0805 0.1uF 1
R1-R6 Резистор SMD 0805 10k 1
R8-R13 Резистор SMD 0805 19.1k 1
R7, R14, R15 Резистор SMD 0805 4.7Ohm 1
R16 Резистор SMD 0805 680Ohm 1
R17 Резистор SMD 0805 2k 1
C4 Электролитический конденсатор 1000 uF 1
C10 Электролитический конденсатор 47uF 1