![]() |
![]() |
|||||||||||||||||
Универсальный адаптер, переводящий резистивный сигнал управления в кнопочный
Автор: KoledaS Цель: управлять любым устройством (FM-модулятор, mp3, НЕштатная магнитола, телефон,…) с помощью кнопок на руле авто (при условии, что на устройстве кнопки работают путем соединения контакта с землей, а кнопки на руле используют резистивную схему) Идея заключается в следующем: преобразовать сигнал, идущий по одному проводу от резистивных кнопок, в сигнал на нескольких проводах. На том или другом выходном проводе будет появляться минус в зависимости от нажатой на руле кнопки. На моём авто (Mazda Verisa) схема резистивного управления на руле выглядит так: Если измерить сопротивление между проводами 1P и 1N, то получаем следующие результаты (на разных авто сопротивления могут отличаться, но это не важно, т.к. систему можно обучить любым сигналам):
В штатной системе провод 1P подключен к земле, а на провод 1N в зависимости от нажатой кнопки устанавливается напряжение от 0 до 5В. Именно по величине напряжения система и понимает, какая из кнопок нажата. Провод 1N – это и есть провод с резистивным сигналом. Не буду томить долгими вводными вступлениями, общая схема представлена ниже: На схеме синий блок – панель кнопок на руле, красный блок – наш адаптер, сиреневый блок – кнопки на устройстве, которым хотим управлять. Как видно из схемы, адаптер позволяет запрограммировать до 8 кнопок. Опишу всё поэлементно:
Принцип работы: Изначально систему необходимо обучить, записав в EEPROM определенные АЦП для каждого канала порта D значения соответствующих кнопок. После этого в зависимости от нажатой на руле кнопки АЦП определит значение, найдет такие же значения в EEPROM, и определит каналы порта D, соответствующие найденному значению. После этого на эти каналы будет подан минус (земля). На одну кнопку руля может быть запрограммировано несколько каналов, таким образом при нажатии на эту кнопку минус будет подан на все запрограммированные каналы. Запись прошивки в микроконтроллер ATmega8 Процесс прошивки МК очень прост, всё что для этого нужно это:
Схему элементарного программатора "Пять проводков" я взял в интернете. Подключаем программатор к компьютеру, затем к собранному адаптеру, после этого подаём питание на адаптер (5В к проводу VCC, можно взять из USB-порта или от провода блока питания компьютера). Далее, нужно обновить конфигурацию оборудования, для того чтобы компьютер увидел устройство. Для этого нажимаем правой кнопкой мыши по значку «Мой компьютер» - Управление – Диспетчер устройств. Выбираем корневой узел дерева и нажимаем Действие – Обновить конфигурацию оборудования. После этого закрываем окно. Открываем программу CodeVisionAVR. Идем в меню Settings – Programmer. Для программатора «5 проводков» выставляем следующие параметры: Далее, идем в меню Tools – Chip Programmer. Устанавливаем все параметры как на рисунке: Далее, File – Load FLASH и выбираем файл rtb_adapter.hex. Далее, File – Load EEPROM и выбираем файл rtb_adapter.eep. Далее, Program – Erase Chip. Далее, Program – FLASH. Далее, Program – EEPROM. Если всё прошло без ошибок, закрываем программу, отключаем питание от адаптера, и отсоединяем от него программатор. Подключение и обучение адаптера Прежде чем подключать адаптер к кнопкам руля и к кнопкам устройства, которым хотите управлять, нужно убедиться в следующем:
Если условия выполнены, соединяем провода и приступаем к обучению адаптера:
Немного фоток Заключение Этот адаптер так бы и остался только в идеях, если бы не сайт radiokot.ru , а конкретно два человека Goodefine и radteh. Выражаю им огромную благодарность за помощь, идеи и консультации по всем возникающим в процессе вопросам!!! Также выражаю благодарность авторам сайта https://AVR123.nm.ru. По бесплатному учебному курсу, который находится на этом сайте, я освоил принципы работы с микроконтроллерами (не имея ни малейшего представления о том, что это такое) за 3 дня. Во время разработки прошивки я также использовал программу для моделирования работы контроллера PROTEUS версия 7.8 SP2.
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |