Стоп-сигнал с акселерометром на BMW E36
Продолжение историй с LED-тюнингом:
Peugeot 307 CC, LED Madness ч.2 — Ночные дорожные испытания
Peugeot 307 CC, LED Madness
В общем, с поворотниками на свой Пасик я влип в фазу "кризиса жанра": неправильная технология пайки, неправильный расчет распределения тепла и слабый источник питания привели к тому, что сами поворотники не вышли даже из тестов. Да и контроллер я для этого не очень удобный выбрал. Идея пока отправилась на полку в поисках фиксов для таких неувязочек. Но руки-то чем-то занять нужно…
И раз уж я умею в светодиоды — почему бы не поэкспериментировать на других машинах? Как нельзя кстати подвернулся вариант бесплатного тестирования на чужом купе E36, поэтому в качестве подарка другу решил собрать ему центральный стоп-сигнал с акселерометром.
Общий смысл идеи — отслеживать отрицательное ускорение и миганием разной частоты (от 2 до 8 герц) обозначать текущую силу торможения автомобиля. В целом выглядит как "тормозим плавно — горит постоянно, тормозим тапкой в пол — моргает пуще дискотеки".
Сказано — сделано. Нашел в Украине в каком-то бемовском магазине запчастей этот центральный стоп-сигал по коду, который мне прислал друг, разобрался с подключением, разобрал (благо разбираются они быстро), вытащил лампу, разделил всю работу на 3 большие части — модуль контроля и модуль сигнализации (грубо говоря — управляющая схема и светодиодная индикация).
Первой решил сделать модуль индикации и запустить его. Промерял внутреннюю нишу стоп-сигнала, определился с размерами и рясненько набросал 27 RGB-светодиодов. Конечно лучше было бы взять обычные белые, но эти были прямо здесь под рукой и за ними не нужно было ехать в другой конец города. Подготовил плату и тут сделал первый косяк — решил залудить ее феном и слегка перегрел. С одного из краев платы образовался вздутый бугор, как будто там что-то пыталось сгореть. Слава высшим силам — на металлизацию это не повлияло и я решил таки напаивать, а не делать новую.
Так же решил поменять технологию пайки SMD на этой плате — сами светодиоды я заранее залуживал, нанося небольшую капельку олова на каждую ножку. Эта капелька образовывала на контакте своеобразный шарик, который аккуратно ложился на контакты, предназначенные для светодиодов. Конденсаторы паял простым паяльником, а вот светодиоды выкладывал пинцетом и прогревал снизу феном. В итоге весь модуль засветился с первой попытки вообще без каких-либо проблем.
Дальше собрал на макетке Arduino Pro Mini, модуль акселерометра MPU6050 и модуль питания на LM2596, набросал тестовую прошивку для проверки и занялся платой для размещения всего этого добра. Акселерометр решил разместить между модулем питания и основной платой, остальное же напаял на межплатных соединителях. Там же модифицировал саму ардуинку, чтобы вывести I2C на аналоговые пины А2-А3, попутно отрезав их от микроконтроллера. В общем, франкенбутер для управления получился довольно быстро.
Вечер просидел над первой тестовой прошивкой, результаты работы которой мы в 5 утра тестировали на дороге. Ну и прошивал ардуинку при помощи USBasp программатора через ICSP, выпилив из нее бутлоадер. Это позволило избавиться от задержки в 0.5-1с при загрузке, что весьма критично, если вы вешаете контроллер на педаль тормоза :).
Как это работает: Один раз в 100-500мс контроллер опрашивает акселерометр 4 раза с разницей в 10мс, получая среднее ускорение по трем осям. Дальше в зависимости от подобранных в тестах значений результирующего вектора (значение по трем осям) выбирается один из 4 режимов работы — тушение панели светодиодов с частотой 1, 2, 4, 8 Герц на 50-100мс. Т.е. при максимально зажатой педали в пол вы увидите 8 мерцаний за секунду, при минимальной — будет гореть постоянно. И все это практически моментально начинает работать после включения питания на контроллер от педали тормоза.
Дальше все просто — собрал управляющий бутерброд и повесил его на боночках в сам стоп-сигнал, приклеил лавсановые стойки для панели светодиодов, пробил отверстия для проводов и позвал друго в час ночи поездить-потестить. Поскольку я не озадачивался быстрой перепрошивкой — для каждого изменения кода приходилось все разбирать, доставать ардуину, шить ее отдельно и собирать заново. Очень скоро меня это достало и я припаял лишние 6 длинных проводов, чтобы вывести интерфейс программирования из корпуса через отверстие под лампу.
Ну и тесты показали, что идея вполне рабочая, но требует программной доработки. Нужно быстро спроецировать вектор ускорения на плоскость движения автомобиля и дальше не учитывать ускорение по оси Z. На видео, кстати, видно прикольный баг, когда Пассат подскакивает на кочках и стоп-сигнал начинает бешено мерцать ) Это все ось Z…
На выходных поставим это все добро другу и будем тестить на дороге дальше. Stay tuned!
З.Ы. Код прошивки, платы с макетами для печати шаблонов и схемы свободно доступны на github’е (github.com/elhsmart/CLA). You are welcome )
З.Ы.Ы. Прошу прощения за вертикальное видео, исправлюсь.
UPD. Продолжение истории здесь: www.drive2.ru/b/501592807618641963/
Источник: