Продолжаю совершенствовать устройство управления встроенными ДХО. Есть несколько важных дополнений заслуживающих отдельной версии.
Про предыдущую версию можно прочитать здесь. Там же подробное описание принципа действия устройства и целый роман на тему зачем все это нужно и как устроено.
По просьбе пользователей в схему добавлена кнопка для настройки времени задержки отключения ДХО после выключения двигателя. Теперь пользователь может сам выбирать задержку просто удерживая кнопку нужное количество времени. Светодиод мигает каждую секунду отсчитывая время. Получается, нажимаем кнопку, держим и считаем вспышки светодиода — сколько вспышек, столько задержка в секундах. Настройки сохраняются в энергонезависимой памяти МК. Кнопку удалось впихнуть на прежнюю плату, не увеличивая размер, но расположение компонентов немного изменилось и монтаж стал еще плотней. Плата нарисована в DipTrace 2.4.1 и отредактирована в DipTrace 3.0. Для 3D визуализации применены модели из стандартного набора моделей DipTrace 3.0, поэтому теперь открываются у всех.
Схема устройства соответственно тоже изменилась. Дополнительно решил перерисовать ее в DipTrace 3.0. В схему питания микроконтроллера добавлен диод DL4148 в корпусе MiniMELF для защиты от переполюсовки. Стабилизатор питания теперь используется L79L05ABU в корпусе SOT-89 вместо непопулярного в SOIC-8.
Девайс теперь научился следить за постановкой автомобиля на охрану. Это нужно для того, чтобы принудительно выключить ДХО прервав задержку отключения при постановке автомобиля на охрану. Для этого подключаем контакт SECURITY к проводу сигнализации на котором появляется «плюс» при постановке на охрану (например провод на сирену или на замки дверей). Если такая опция не нужна, то контакт SECURITY просто никуда не подключаем.
Скачать прошивку МК с исходниками в BASCOM для вер. 4.5
Скачать п/плату и схему устройства в DipTrace 3.0 для вер. 4.5
Здесь можно посмотреть еще одно видео демонстрирующее работу контроллера.
Но самые главные изменения сделаны в прошивке. Долго мне не давала покоя неравномерность розжига спиралей ламп — при линейном инкриминировании значения Pwm0a фары светились почти полностью уже при 1/3 значения и визуально розжиг выглядел не плавным, сначала резко, потом медленно. Учитывая, что такое явление особенно заметно на не прогретых лампах, изначально я сделал предварительный прогрев ламп низким значением Pwm0a в течении пары секунд, а потом уже увеличивал значение Pwm0a. В принципе этого стало достаточно, чтобы несведущий пользователь не заметил подвоха, но для меня все это было не то! Нужен был нелинейный режим увеличения значения Pwm0a относительно времени в течении которого фары разгораются.
В итоге я все же ухитрился добиться правильного (нелинейного) алгоритма розжига ламп как на графике, потратив весь день на расчеты логарифмов и построения графиков различных функций, подбирая нужную характеристику. При этом необходимо было обойтись мизерным количеством памяти ATtiny13. Поэтому я не мог себе позволить ни «большие» переменные, ни сложные математические функции. Но как обычно, все гениальное, оказалось просто — я ввел в уравнение некоторое число «800», которое в каждом цикле Do…Loop делю на значение Pwm0a, которое в этом же цикле каждый раз увеличивается на 1. Полученное частное вставляется в оператор Waitms, почти логарифмически уменьшая задержку между импульсами ШИМ. В итоге кривая на графике сначала плавно увеличивается, а в конце резко взлетает вверх. Число «800» подобрано экспериментально, чтобы в итоге время плавного розжига фар составило 5 сек. На практике получился идеально плавный розжиг фар с лампами любой мощности и при любой температуре.
Дополнительно в месте сравнения данных АЦП слегка уменьшен гистерезис для более точного контроля напряжения бортовой сети и еще светодиод, теперь часто моргает, когда МК переходит в режим отсчета времени задержки отключения ДХО. Так же исправлены не значительные недочеты и теперь программа вылизана до блеска и дополнена комментариями.
Чтобы уменьшить количество вопросов по подключению контроллера, нарисовал пару схемок поясняющих общий принцип встраивания девайса в электросистему автомобиля: