08.08.2018 14:36
Успешно закончил испытания самодельного блока управления магнитолой и КК штатными кнопками на рулевом колесе, позволю себе поделиться опытом, возможно, кому-то он будет полезен.
Блок управления магнитолой Alpine, имитирующий сигналы IrDA, был мной изготовлен еще в 2016 году, но все это время он не развивался — не было необходимости. Позже, успешно проверив работоспособность круиз-контроля и не желая ставить дополнительный подрулевой переключатель, я принял решение таки расширить функционал и заодно воплотить в железе успевшие появиться за это время доработки.
Блок управления круиз-контролем собран на восьмиканальном мультиплексоре
74HC4051, общий вывод подключается ко входу ЭБУ, на остальных располагаются сопротивления требуемого номинала. Поскольку собственное сопротивление ключей у микросхемы составляет порядка
90 Ом, номиналы сопротивлений соответственно скорректированы, а на массу вывод замыкается полевым транзистором. Управляет всем блоком микроконтроллер
ATTiny44A, который также отвечает за формирование импульсов для управления магнитолой и распознавание кнопок на руле.
Замечания по итогам испытаний:
- Длительности "нажатия кнопки" управления КК порядка 80мс вполне достаточно — ЭБУ уверенно распознает команду, увеличивать время свыше этого нет необходимости.
- ЭБУ очень чувствителен к номиналу сопротивления кнопки SET, причем на его уменьшение реагирует более благосклонно.
Дело в том, что с ростом температуры плывут характеристики мультиплексора и сопротивление его ключей увеличивается на дополнительные ~10 Ом. Так ЭБУ не регистрировал нажатие, когда итоговое сопротивление поднималось до 228~230 Ом, но вполне продолжал реагировать, когда оно было снижено до
210 Ом, чтобы оставить запас на температурный рост. Остальные кнопки подобной зависимости не демонстрируют.
Алгоритм работы системы следующий:
По умолчанию все кнопки на руле вызывают те или иные функции магнитолы, различая короткое и длительное нажатие. Кнопки громкости при длительном нажатии просто непрерывно повторяют команду вплоть до отпускания клавиши. В режим управления круиз-контролем система переводится длительным (> 0,5с) нажатием кнопки
Source, при этом в ЭБУ отправляется команда, соответсвующая кнопке
On/Off и на приборной панели зажигается индикатор
Cruise. В этом режиме короткое нажатие кнопок
Pst+ и
Pst- соответствует клавишам
Res и
Set круиз-контроля, длительное нажатие этих же клавиш отправляет в магнитолу команду смены трека, короткое нажатие кнопки
Set соответствует кнопке
Cancel. В исходный режим блок возвращается повторным длительным нажатием кнопки
Set, при этом вновь имитируется нажатие кнопки
On/Off и индикатор
Cruise гаснет.
Решение, безусловно, компромиссное, поскольку кнопок на руле мало, а функций получается много, но на мой взгляд удобней, чем прилаживать куда-то дополнительный подрулевой переключатель. Светодиоды в приборную панель устанавливались самые дешевые из ближайшего Чип-и-Дип:
Kingbright KA-3528SGC, сопротивлений
1 кОм им хватает в самый раз, чтобы индикаторы было видно днем и они не выделялись среди остальных ночью.
Принципиальная схема, фотография моего варианта изготовления и исходный текст программы прилагаются, возможно, кому-то это пригодится. Сопротивления R15-R13 и R12-R14 устанавливаются параллельно для облегчения точной подборки. Мне она понадобилась только в случае с кнопкой
Set. Скомпилированная AVR GCC прошивка занимает ~1,5 килобайта ПЗУ и при работе расходует 66 байт ОЗУ. Микроконтроллер тактуется от внешнего кварца, работая на частоте 2 МГц, квант времени в программе — 16 мс, задается прерыванием по таймеру.