Универсальный "OBD" для безмозглых автомобилей
http://funkyimg.com/u2/432/873/torpedo_modest.png
Disclaimer:
1.1 Ядро Ключевая часть устройства заключается в одном-единственном микроконтроллере pic16F877a, к которому в свою очередь подключаются различные датчики, кнопки и прочие аналоговые и цифровые устройства. Распиновка микропроцессора с точки зрения созданной программы указана на схеме. Синим выделены используемые аналоговые входы (на них замеряется напряжение относительно земли, но не более 5В), фиолетовым - цифровые и зеленым ножки, к которым подключается преобразователь компьютерных сигналов. Передача трансмиссии шифруется резистивным делителем. Питание устройства осуществляется с интерфейса USB или внешнего источника питания +5В. 1.2 Датчики 1.2.1 Тахометр, спидометр В различных автомобилях кодирование оборотов и скорости может быть выполнено различными средствами. Для ВАЗ-2110 имеем: Цитата:
Минимальной измеряемой скоростью является 1 км/ч, максимальной - 255. Для тахометра максимальный предел - 8000 оборотов в минуту. 1.2.2 Аналоговые приборы Датчики, имеющие на выходе от 0 до 15В (аккумуляторная батарея в том числе) подключаются через делитель напряжения, собранный из 20КОм и 10КОм резисторов. На выходе делителя имеем напряжение от 0 до 5 В. 1.2.3 Дискретные цепи 12В В зависимости от характера цепи (общий анод, общий катод) выбирается один из двух вариантов подключения, указанных на схеме. 1.2.4 Кнопки Подключение кнопок также показано на схеме. 1.2.5 Шифратор КПП Исходя из мнения, что в каждый момент времени может быть включена только одна передача или трансмиссия в положении нейтрали, для кодирования этой информации логично воспользоваться шифратором. Шифратор на пять передач + задний ход собран по принципу резистивного делителя и строится на резисторах 1-5 кОм. Нажатые кнопки (сверху вниз на схеме) кодирут передачи 1-5 и задний вход. Отсутствие замыкания на всех кнопках соответствует нейтрали. Подключается к третьему аналоговому входу МК. 1.3 Преобразователь интерфейсов. Подключение микроконтроллера к компьютеру производится через интерфейсы RS-232 или USB. Интерфейс RS-232 формируется при участии микросхемы max232. Схема подключения указана на рисунке. При таком подключении устройству необходим внешний источник питания +5В. Также не забудьте о температурном диапазоне выбираемых микросхем. Интерфейс USB реализуется через микросхему FT232Rl: 1.4 Печатная плата и монтаж Заготовка печатной платы под микропроцессор, FT232Rl и max232 в формате SprintLayout 5 находится в архиве с прошивкой, ссылка на который прикреплена в конце повествования. При должном соотношении пофигизм/аккуратность плата отлично изготовляется методом ЛУТа. 1.5 Программирование МК Исходный код программы и скомпилированная прошивка находится в соответствующем архиве. Программирование возможно как покупным программатором, так и программаторами из говна и палок. 2. Приложение для ПК 2.1 Описание Программа графически напоминает приборную панель автомобилей Lexus с добавлением необходимых для работы элементов. Тахометр, спидометр, индикаторы температуры жидкости и уровня топлива имеют стрелочный характер, номер передачи и напряжение бортовой сети выводятся текстом, прочие индикаторы имеют вид лампочек. На шкале Возможен запуск приложения под Windows, Linux и Mac (На Mac не тестировалось, в ОС Linux подключение возможно через com порт или usb в режиме преобразователя com). Программа позволяет "горячее" подключение и отключение устройства. 2.2 Настройка Перед запуском программу необходимо настроить. Настройка осуществляется изменением файла torpedo.ini в папке с программой (В Linux - ~/.config/Torpedo/torpedo_modest.ini) Код:
[window] Имя com-порта зависит от системы. В Windows оно имеет вид Com#, в Linux - /dev/ttyS# (при использовании USB преобразователя - /dev/ttyUSB#). 2.3 Калибровка значений датчиков Калибровка значений стрелочных датчиков производится путем изменения файла torpedo.ini. Параметр min отвечает за показание датчика, в котором стрелка должна находиться в нулевом положении, max - в максимальном. Для тахометра и спидометра введен дополнительный параметр factor - умножитель. Для уровня топлива и температуры охлаждающей жидкости дополнительный флаг invert для датчиков, работающих в обратном ключе. Калибровка значения бортового напряжения зависит от напряжения питания микроконтроллера. Параметр maxvoltage позволяет определить поправку на максимальное напряжение, параметр limitvoltage определяет значение напряжения, ниже которого загорается лампа разрядки аккумулятора. Для цифровых датчиков можно установить маску инвертирования. Биты, поступающие с микропроцессора будут инвертированы в том случае, если напротив них в маске будет установлена единица. В настройках маска записывается целым десятичным числом в диапазоне [0,255]. 2.4 Скриншоты программы http://funkyimg.com/t2/892/006/modest_screenshot.png http://funkyimg.com/t2/440/423/torpe...est_ubuntu.jpg 2.5 Самостоятельная разработка программ Общение с устройством возможно по двум интерфейсам: com (max-232, микросхема ft232 работает как переходник uart-usb) и usb. В обоих случаях необходимо выбрать асинхронный режим, 9600бод. После подключения, устройство возвращает восемь байт с информацией о состоянии автомобиля. Расшифровку показаний см. в исходном коде прошивки. Посланная команда 177 обнулит значение одометра. Общение по интерфейсу usb происходит через библиотеку ftd2xx.dll. Подробнее о ее фукциях см. на сайте производителя. Также вместе с программой поставляется ее исходный код. 3. Ссылки Прошивка микроконтроллера 02.09.09 Приложение для ПК + исходные коды 31.10.09 Драйвера для FT232Rl. |
шикарная штука.
Сорри за глупый вопрос, а на машинах с автоматом также датчик скорости устроен? |
Думаю, также
|
Urvin - ты крут!
Входы пика через диоды мож?.... |
Сильно. :yes4:
А почему не стал делать для готового устройства. Очень удобно бы получилось. Тем более что оно недорогое и доступное. Проще купить его чем спаять и прошить самодельное. Планировал сделать такое как отмечать закончу. :) |
Респект автору, завтра будем испытывать :)
|
Urvin, может поправишь программу для arduino Nano?
У тебя это гораздо быстрее выйдет. :yes4: |
serg_wolf, Дополнительных диодов не надо - будут только мешать работе МК
St@rz, у меня критическое отторжение Arduino как дорогой игрушки. Да и получается, что это очень сложная система для простых задач - как никто не покубает бухгалтерам четырехядерных писюков. В добавок цена Arduino - 700 рублей, эта же схема со всей обвязкой уместится в 450. При подключении к COM - еще на 150 рублей дешевле. Другое дело, что в Arduino уже правильно сидят сложнораспаиваемые элементы и не требуется программатор. Выбор уже зависит от кривизны рук и любознательности исполнителя. Мой выбор - за микроконтроллерами - всяко железнее и полезнее. Про правку программы - я по программированию ардуины ничего досконально не читал, потому уйдет некоторое время. Вообще попробую. Tores, ждем отчета. Если нароешь инфу по датчику скорости в твоей машине и заснимешь сигнал на осциллограф, можно будет и считалку импульсов сделать. ёперный театр! Забыл схему шифратора КПП UPD: добавил |
Что у меня выходит для arduino Nano v3
Уж насколько ненавижу "теоретическое" программирование... Устройства у меня нет, потому исхожу из предположений и документации. Как я понял, в arduino сидит переходник USB-COM, и компьютер определяет устройство именно как "нечто на ком-порту". Также я понял, что если мы хотим использовать связь с компьютером, у нас пропадают цифровые входы-выходы D0 и D1. У Carduino Nano цифровых входов маловато, потому отказываемся от индикации "Check Engine" и передачи трансмиссии. Увы. Подключение аналоговых датчиков (см. схемы п.1 первого поста): A0 - спидометр; A1 - тахометр; A2 - охлаждающая жидкость; A3 - уровень топлива; A4 - АКБ A5 - [в программе не отображается, но прием налажен] Подключение дискретных цепей: D2 - водительская дверь; D3 - задняя левая дверь; D4 - передняя правая дверь; D5 - задняя правая дверь; D6 - левый поворотник; D7 - правый поворотник; D8 - аварийка; D9 - габариты/ближний свет; D10 - ручной тормоз; D11 - масло; D12 - тормоза; D13 - дальний свет. Программа для arduino следующая: Код:
// Массив значений по портам |
Цитата:
|
Часовой пояс GMT +4, время: 02:49. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot