Диагностика автомобиля на ардуино своими руками
Добавил пользователь Дмитрий К. Обновлено: 04.10.2024
Идеи для авто на основе маленькой платы с маленьким процессором — Arduino
Компы давно и плотно вошли в нашу жизнь. Аппаратная платформа Arduino — это одна из последних разработок с открытым программным кодом, которая построена на обычной печатной схеме. Подробнее о том, как с помощью такой платы сделать разные устройства для авто, мы расскажем далее.
С помощью платы Arduino можно соорудить автомобильный бортовой компьютер, который сможет:
- рассчитать расход горючего;
- вывести информацию о температуре антифриза;
- рассчитать скорость движения, а также расстояние поездки;
- вывести потраченное горючее за определенный километраж;
- определить обороты мотора и т.д (автор видео — канал Arduino Tech PTZ).
Помимо устройства Arduino вам также потребуется жидкокристаллический модуль, адаптер Блютуз НС-05, а также сканер ELM327 и резисторное устройство на 10 кОм. Разумеется, необходимо приготовить и звуковой индикатор, монтажные провода и сам корпус устройства.
Процедура сборки осуществляется следующим образом:
- Сначала настраиваем Блютуз адаптер. К пинам устройства нужно припаять провода — к двум нижним и верхним контактам.
- Сам модуль подключается к плате для настройки, для этого необходимо открыть программу Arduino IDE 1.0.6 или любую другую версию, после его залить скетч в схему через USB-выход.
- Когда загрузка будет завершена, нужно зайти в меню Сервис — Монитор порта и выставить скорость 9600.
- Затем собирается схема с платой, адаптером и заранее подготовленным дисплеем. Сначала подключается Блютуз адаптер.
- После этого в схему добавляется дисплей. Более подробное описание подключения вы найдете на фото ниже.
- Резисторный элемент на 10 кОм используется для управления яркостью и контрастностью дисплея. Поэтому при первом подключении вы можете заметить, что изображения нет, если это так, то его нужно просто настроить путем поворота резистора.
- Далее, производится подключение дополнительной клавиши, которая будет выполнять функцию переключения экранов с информацией. Один контакт от кнопки идет к элементу GND, второй — к контакту 10. Чтобы подключить бипер, плюсовой контакт соединяется с 13 пином, а минусовой — с GND.
- Затем, используя то же программное обеспечение Arduino IDE 1.0.6, нужно залить скетч. Теперь вам остается только настроить бортовой компьютер и подключить его к автомобилю.
GPS-трекер
Чтобы собрать GPS-трекер на базе Arduino, вам потребуется:
- сама плата, процесс описан на примере модели Mega 2560;
- модуль GSM/GPRS, который будет использоваться для передачи данных на сервер;
- а также Arduino GPS-приемник, в примере мы рассмотрим модель SKM53 (автор видео об изготовлении трекера на примере платы SIM 808 — канал Alex Vas).
Как производится подключение схемы:
Парктроник
Чтобы соорудить парктроник, вам потребуются такие составляющие:
Процедура сборки выглядит следующим образом:
- Для начала на макетной схеме необходимо установить светодиодные элементы, подготовленные заранее. Отрицательный контакт у всех светодиодов будет общим. Короткий контакт — катод — следует подключить к отрицательной шине, которая имеется на макетной плате.
- К более длинным контактам диодов, то есть анодам, необходимо подключить резисторные элементы на 200 Ом, если вы не будете их использовать, это приведет к перегоранию диодов.
- На центральной части производится монтаж ультразвукового устройства. На этом контроллере есть четыре контакта. Vcc — это контакт питания на пять вольт, Echo — это выходной контакт, Trig — это вход, а GND — это заземление.
- После того, как дальномер будет установлен, к его выходам следует подключить проводку. В частности, контакт Echo подключается к выходу 13, Trig — к 12 контакту. GND, соответственно, необходимо соединить с заземлением, которое имеется на схеме контроллера, а оставшийся выход Vcc соединяется с 5-вольтовым питанием на плате Arduino.
- После выполнения этих действий нужно соединить проводку с контактами резисторных элементов. А также они подключаются последовательным образом к пинам на плате — используются пины от 2 до 7.
- Следующим этапом будет подключение пьезопищалки, которая и будет предупреждать водителя о приближении к препятствию. Минусовой выход, как вариант, можно будет объединить с отрицательным контактом установленного ранее дальномера. Что касается положительного контакта, то он соединяется с пином под номером 11 на микросхеме.
- Для того, чтобы устройство в конечном итоге работало в нормальном режиме, дополнительно нужно будет написать, после чего загрузить код программы в плату. В этом коде необходимо точно указать дистанцию, при приближении к которой начнут загораться диодные элементы и будет срабатывать пищалка. Причем тональность пищалки должна быть разной, чтобы водитель мог узнать, когда приближение к препятствию будет критическим. Сам код либо пишется самостоятельно, либо берется уже готовый вариант из Интернета. Вариантов скетчей очень много, вам нужно только выбрать наиболее подходящий для вашего устройства (автор видео — канал Arduino Prom).
Заключение
Как видите, микроплата Arduino — это универсальный вариант, с помощью которого можно создать множество различных девайсов. Помимо вышеописанных устройств, вы также можете соорудить спидометр, который будет выдавать информацию о скорости прямо на лобовое стекло, кнопку старт-стоп, и даже сигнализацию для транспортного средства. В целом вариантов очень много, если подойти к вопросу изготовления самодельного гаджета правильно, то у вас все получится.
Разумеется, для этого вы должны обладать знаниями в области электроники и электротехнике, при этом минимальных навыков, вероятнее всего, будет недостаточно. При изготовлении девайсов вам придется принимать собственные решения, о чем в Интернете может и не быть информации. Поэтому будьте готовы к тому, что процесс сборки может занять достаточно долгое время.
Из видео ниже вы сможете узнать, как обустроить климат-контроль путем доработки регулятора отопительной системе на примере автомобиля ВАЗ 2115 (автор ролика — Иван Никульшин).
Список требуемых деталей для сборки БК
1) Arduino Uno R3 — 1 шт. ~ 7 долларов:
2) LCD2004 жк-модуль ~ 6 долларов:
3) Модуль Bluetooth HC-05 ~ 4 доллара:
4) OBD ELM327 Bluetooth сканер ~ 4 доллара:
5) Резистор 10 кОм подстроечный, бипер для звука, 2 кнопки для смены экранов, провода для соединений, корпус ~ 3 доллара.
Настройка блютуз модуля HC-05 для работы
Подпаиваем провода к пинам блютуза: (картинку с выходами смотреть в описании требуемых деталей)
- 1 — это TX
- 2 — это RX
- 12 — это 3.3V
- 13 — это GND
- 34 — на этот вход тоже кидаем 3,3 V (нужен для перевода модуля в режим настройки с помощью AT команд).
Подключаем блютуз модуль к ардуине для его настройки
- 1 — TX модуля в 6 пин ардуины. (внимание будет TX в TX это не ошибка!)
- 2 — RX модуля в 7 пин ардуины. (аналогично не ошибка!)
- 12 — и 34 пин к 3,3V ардуины.
- 13 — GND ардуины.
- 1 — TX модуля в 6 пин ардуины. (внимание будет TX в TX это не ошибка!)
- 2 — RX модуля в 7 пин ардуины. (аналогично не ошибка!)
- 12 — и 34 пин к 3,3V ардуины.
- 13 — GND ардуины.
Открываем Aduino IDE 1.0.6 (использовал эту версию) и заливаем скетч через USB порт в плату.
void loop()
if (BTSerial.available())
Serial.write(BTSerial.read());
if (Serial.available())
BTSerial.write(Serial.read());
>
После успешной загрузки скетча открываем: Сервис->Монитор порта. Далее снизу ставим скорость 9600 бод и NL+CR вместе.
Далее вводим команды по одной и нажимаем [Послать]. После каждого ввода должен быть ответ ok.
AT // (возможно 1 раз вылетит Error, не пугайтесь… это нормально, повторите опять)
AT+NAME=Car //Присваиваем имя модулю Car
AT+ROLE=1 // Переводим модуль в режим Мастер
AT+PSWD=1234 // Ставим пароль 1234 как на OBD ELM327
AT+BIND=AABB,CC,112233 //Прописываем Mac адрес OBD ELM327.
AT+CMODE=1 // Подключение модуля с фиксированным адресом
Всё, настройка модуля Bluetooth закончена.
Теперь нужно собрать схему Arduino + блютуз + LCD-экран
- 1 — TX модуля засовываем в 7 Pin (Rx) арудины (именно TX в RX, не так как ранее);
- 2 — RX модуля засовываем в 8 Pin (Tx) арудины;
- 12 — Pin (3,3V) модуля в Pin 3,3V ардуины;
- 13 — Pin (Gnd) в Gnd арудуины;
- 34 — Pin мы никуда не подключаем (заизолируйте или отпаяйте).
- VSS экрана к GND ардуины;
- VDD экрана к 5V ардуины;
- V0 экрана к центральному выходу резистора;
- RS экрана к 12 пину ардуины;
- RW экрана к GND ардуины;
- E экрана к 11 пину ардуины;
- DB4 экрана к 5 пину ардуины;
- DB5 экрана к 4 пину ардуины;
- DB6 экрана к 3 пину ардуины;
- DB7 экрана к 2 пину ардуины;
- A — к 5V ардуины;
- K — GND ардуины.
Одну из оставшихся ног потенциометра пустить на GND ардуины.
Переменный резистор на 10кОм нужен, чтобы управлять контрастностью монитора, так что если при первом включении вы включите и ничего не увидите, попробуйте отрегулировать контрастность шрифта поворотом резистора.
3. Подключаем дополнительную кнопку для переключения экранов с данными.
[1 кнопка]: один конец от нормально-открытой кнопки подключаем в GND ардуино, а второй конец в пин 10.
[2 кнопка]: GND + пин 9.
Заливаем скетч в Arduino с помощью Aduino IDE 1.0.6 (использовал эту версию).
Нужно будет обязательно учесть три переменных:
1) ED=1.998 Например объем двигателя в литрах 1.398;
2) VE_correct=1.0; Корректировка объёмного КПД ДВС по таблице: (если расход реально меньше — то уменьшаем значение в процентном соотношении). Если не хотите калибровать добейтесь чтобы при прогретом двигателе мгновенный расход в л/час был в районе половины обьема двигателя;
3) tcorrect=1.014 (калибровка времени).
4) delay_var=65 Время паузы между запросами в ЭБУ, в дастере например все работает уже на 65 мс, а в старом chrysler cirrus надо аж 235 мс ставить.
5)speed_korrect_val=1; Корректировка скорости машины, смотреть по GPS/
Управление
[Кнопка 1] + [кнопка 2]: 4 секунды — Сброс журнала общего пробега и потраченного бензина на втором экране, также это сброс ошибок на экране информации об ошибках.
Скетч:
(по умолчанию настройки в скетче на Рено Дастер 2.0)
Все, идем в машину, вставляем ELM327 в порт, ардуину в зарядку для авто и проверяем.
Про параметр Fuel system status:
Для него нормальные показания это Closed loop (2).
Но иногда можно увидеть там open loop (1). Это значение можно увидеть в трех случаях:
1) автомобиль холодный и датчик кислорода еще не прогрелся
2) сильное нажатие на педаль газа и прекращение коррекции по ДК с целью достижения макс. мощности
3) прекращение подачи топлива при отпускании педали газа на скорости на передаче.
Про Обьемный КПД двигателя
Объёмный КПД двигателя внутреннего сгорания отражает эффективность всасывания в цилиндр и выпуска из цилиндра рабочей среды (то есть, топливо-воздушной смеси или выхлопных газов). Говоря более строго, объёмный КПД — это отношение (или процентное соотношение) количества рабочей среды, фактически всасываемой в цилиндр, к объёму самого цилиндра (при неизменных условиях). Поэтому те двигатели, которые могут создавать давления на входах в трубопроводы выше давления окружающей среды, могут иметь объёмный КПД больший 100 %.
VE изменяется в зависимости от оборотов, и дроссельной заслонке согласно найденной информации и в машинах для него вообще есть настоящие 3D таблицы:
Нашел график изменения в гугле и попытался воспроизвести хотя бы грубо его изменение.
Вот такой вот график получился! =))) ( кто сможет точнее дать данные для более точного графика буду рад, информации особо не нашел сколько не искал.)
Дорогие друзья, всем привет!
Уже прошло пол года с тех пор, как я приобрел стартер-кит Arduino.
В комплекте было все, чтобы потренироваться в программировании в данной среде (надо отметить, что среда эта — практически литературный английский. Я немного владею Pascal и VB, по этому с логикой упрощенного языка C++ особых проблем не возникло) Проблемы возникли с тем, что я не знаю куда применить все это дело на практике, да так, что получилось бы дело, а не бессмысленный опыт на брэдборде. Сегодня утром, сидя в машине и лязгая зубами от холода я понял, чего мне не хватает в зимнее время в данном автомобиле — датчика температуры ОЖ, точнее датчик то есть, но индикации его нет. (Да, я знаю, что можно вывести на РТ6 инфо о температуре ОЖ, но поползет управление экранами на приборной панели и кроме того, будет отображаться ложная информация о датчиках давления воздуха в шинах) Да и вообще — руки чешутся поковыряться с этим LEGO для бородатых дядек.
Короче, решил запилить свой экран с отображением температуры ОЖ, который будет подключаться к разъему OBDII. Старт положен.
Для начала о концепции:
Существуют уже готовые решения, Такие как carduino и подобные, но стоят они дорого и смысла в них особого нет.
У меня валяется ELM327 BT, исключив модуль синезуба можно получать и передавать данные непосредственно по serial.
Ардуино прекрасно переваривает данную инфу с помощью уже готовой библиотеки ArduinoOBD.
Вот одни из самых ходовых PID которые можнополучить:
PID_RPM – Engine RPM (rpm)
PID_ENGINE_LOAD – Calculated engine load (%)
PID_COOLANT_TEMP – Engine coolant temperature (°C)
PID_ENGINE_LOAD – Calculated Engine load (%)
PID_ABSOLUTE_ENGINE_LOAD – Absolute Engine load (%)
PID_TIMING_ADVANCE – Ignition timing advance (°)
PID_ENGINE_OIL_TEMP – Engine oil temperature (°C)
PID_ENGINE_TORQUE_PERCENTAGE – Engine torque percentage (%)
PID_ENGINE_REF_TORQUE – Engine reference torque (Nm)
PID_INTAKE_TEMP – Intake temperature (°C)
PID_INTAKE_PRESSURE – Intake manifold absolute pressure (kPa)
PID_MAF_FLOW – MAF flow pressure (grams/s)
PID_BAROMETRIC – Barometric pressure (kPa)
PID_SPEED – Vehicle speed (km/h)
PID_RUNTIME – Engine running time (second)
PID_DISTANCE – Vehicle running distance (km)
PID_THROTTLE – Throttle position (%)
PID_AMBIENT_TEMP – Ambient temperature (°C)
PID_CONTROL_MODULE_VOLTAGE – vehicle control module voltage (V)
PID_HYBRID_BATTERY_PERCENTAGE – Hybrid battery pack remaining life (%)
Вобщем, как можно понять — это практически все параметры, которые может выцыганить любой нештатный БК. Казалось бы его и купить, но так жить скучно.
Собственно пока так. Надеюсь, что эта тема будет интересна и мы вместе запилим народный БК — возможности то почти неограничены, хочешь вспышку, хочешь писчик по скорости и т.п. — вариантов массы с открытым исходным кодом. я в свою очередь все движения буду описывать в БЖ.
Update! Замылил куда-то свой ELM, заказал новый, еще более компактный по этому потихоньку накидываю скетч и рисую общую концепцию:
Валялся у меня сгоревший ELM327 адаптер для k-line на микросхеме PIC18F25K80. Поковырявшись с ним некоторое время понял, что ничего полезного не сделаю. Выбросил всю внутрянку, купил чип L9637D. И понеслось.
Напрямую arduino соединить с кан-шиной нельзя. Нужен конвертер уровней. Для этих целей подходит L9637D. Он подключается по классической схеме:
Данная схема встречается с дополнительной микросхемой ELM327. На моем ситрояне используется протокол ISO 14230. По тому достаточно только L9637D.
Схема питается от 12-и вольт в obd разьеме через линейный стабилизатор на 5 вольт.
K-line — пин 7 колодки, L-line пин 15 . земля пины 4 и 5, плюс пин 16. Общая распиновка разьема obd такая:
Соединяем Tx микросхемы L9637D с 14-ым пином Ardiono, uart пины с usb-ttl адаптером.
Загружаем скетч, запускаем и.. Я получил вот такой первый пакет:
C1 33 F1 81 66 83 F1 10 C1 E9 8F BD C2 33 F1 01 0C F3 84 F1 10 41 0C 0D 20 FF C2 33 F1 01 05 EC 83 F1 10 41 05 49 13 C2 33 F1 01 0F F6 83 F1 10 41 0F 47 1B
где
C1 33 F1 81 66 — эхо на запрос инициализации шины
83 F1 10 C1 E9 8F BD — ответ ЭБУ на запрос инициализации, C1 значит ОК
C2 33 F1 01 0C F3 — эхо на запрос оборотов двигателя
84 F1 10 41 0C 0D 20 FF — ответ ЭБУ с оборотами, где 0D 20 (HEX) >> 3360 (DEC)/4 = 840 об/мин
C2 33 F1 01 05 EC — эхо на запрос температуры ОЖ двигателя
83 F1 10 41 05 49 13 — ответ ЭБУ с температурой, где 49 (HEX) >> 73 (DEC) -40 = 33 град.
C2 33 F1 01 0F F6 — эхо на запрос температуры всасываемого воздуха
83 F1 10 41 0F 47 1B — ответ ЭБУ с температурой, где 47 (HEX) >> 71 (DEC) -40 = 31 град.
Читайте также: