Бортовий комп’ютер на Arduino своїми руками за 25$

Бортовий комп'ютер на Arduino своїми руками за 25$

Приблизно за 25 доларів ми зможемо зробити бортовий комп'ютер, що вміє рахувати витрату палива, показувати температуру охолоджувальної рідини, швидкість авто, відстань поїздки, витрачений за поїздку бензин, обороти двигуна, тиск у впускному колекторі, температуру впускного колектора, УЗ, корекції палива, вольтаж датчиків кисню, навантаження двигуна та багато іншого. Скидання помилок доступне в режимі recovery (як зайти написано нижче). Загальний цикл роботи із запитом всіх даних з ебу відбувається приблизно раз на 750 мс. (за умови паузи між запитами 65 мс, так за замовчуванням)

бортовий

комп

комп

комп

ютер

ютер

комп

комп

Список необхідних деталей для збирання БК

1) Arduino Uno R3 - 1 шт.

ютер

2) LCD2004 РК-модуль

ютер

3) Модуль Bluetooth HC-05

бортовий

4) OBD ELM327 Bluetooth сканер

комп

5) Резистор 10 кОм підстроювальний, біпер для звуку, 2 кнопки для зміни екранів, дроти для з'єднань, корпус

Налаштування блютуз модуля 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 порт у плату.

#include SoftwareSerial BTSerial(6, 7); // TX RX void setup() Serial.begin(9600); Serial.println(«Enter AT commands:»); BTSerial.begin(38400); >

void loop() if (BTSerial.available()) Serial.write(BTSerial.read()); if (Serial.available()) BTSerial.write(Serial.read()); >

Після успішного завантаження скетчу відкриваємо:Сервіс->Монітор порту. Далі знизу ставимо швидкість 9600 бод та NL+CR разом.

Далі вводимо команди по одній та натискаємо [Послати]. Після кожного введення має бути відповідь ok.

Все, налаштування модуля Bluetooth завершено.

Тепер потрібно зібрати схему Arduino + блютуз + LCD-екран

бортовий

1.Почнемо з підключення HC-05 Bluetooth модуля.

  • 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 ми нікуди не підключаємо (заізолюйте або відпаяйте).
2. Підключаємо монітор LCD.
  • 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.

Біпер для звукових попереджень підключити за наступною схемою + до піна 13, а мінус до GND ардуїно.

Заливаємо скетч до 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/

Можливо, Arduino не буде точно рахувати час за допомогою команди millis()… Тут тільки вручну коригувати значення. На екрані"технологічний 2" буде вказано секунди: наприклад, time_start: 23. Порівняйте значення з реальним. Для прикладу засікайте 10 хвилин, коли значення time_start буде, наприклад, дорівнює 23. І вийде, що через 600 секунд реально покаже 605. Разом 623-605 = 18 секунд відставання в ардуїнці. Тобто поправочний коефіцієнт tcorrect дорівнюватиме 623/605=1,02975.

Управління

[Кнопка 1], [кнопка 2] — перегортати екран назад. При включенні при написі «Connecting»… тримати [кнопку 1] вхід у режим показу технологічних екранів і параметрів ЕБУ, що віддаються, у 16-чному форматі. Якщо вмикатимете БК не в машині, то потрібно відключити функцію опитування блютуз, треба продовжувати тримати дві кнопки при написі «Recovery»… до появи напису «All off»… а то екран буде весь час порожнім.

[Кнопка 1] + [кнопка 2]: 4 секунди — Скидання журналу загального пробігу та витраченого бензину на другому екрані, також це скидання помилок на екрані інформації про помилки.

(за замовчуванням у скетчі на Рено Дастер 2.0)

Все, йдемо в машину, вставляємо ELM327 в порт, ардуїну в зарядку для авто і перевіряємо.

UPD 06.02.15: Оновлено розрахунок MAF по змінній об'ємній ефективності VE згідно з графіком, при якому VE залежить від оборотів двигуна. . Тепер дані записує при низькій швидкості від 1 до 9 км/год раз на 30 секунд, а при заведеному двигуні на швидкості 0 км/год, раз на 10 секунд. «гальмування двигуном», тепер спрацьовує за навантаженням двигуна, працює коректніше ніж за Fuel System Status. Витрата палива тепер змінюється за паливними корекціями Long та Short. Також додано безліч інших правок.UPD 26.02.15: Додано звуковий біпер. Якщо температура двигуна вище 102 градусів, то вивести попередження про високу температуру на екран і прогудіти біпером, так само буде звук при появі ДжекіЧанаUPD 25.02.15: Додані екрани датчиків кисню B1S1, B1S2.UPD 24.02.15: При включенні БК перевіряє чи є помилки двигуна. За їх наявності пише скільки помилок у двигуні і показує код помилки. Скидання доступне в режимі рекавері.UPD 23.02.15: Додано екран паливної корекції.UPD 22.02.15: Доданий екран очищення помилок у режимі recovery. Для очищення помилок затиснути обидві кнопки на 4 секунди.UPD 19.02.15: Додав журнал загального пробігу та витраченого бензину. Скидання - обидві кнопки потримати 3 секунди.

Про параметр Fuel system status:

Він нормальні показання це Closed loop (2). Але іноді можна побачити там open loop (1). Це значення можна побачити у трьох випадках: 1) автомобіль холодний і датчик кисню ще не прогрівся 2) сильне натискання на педаль газу та припинення корекції по ДК з метою досягнення макс. потужності 3) припинення подачі палива при відпусканні педалі газу на швидкості передачі.

Про об'ємний ККД двигуна

Об'ємний ККД двигуна внутрішнього згоряння відображає ефективність всмоктування в циліндр та випуску з циліндра робочого середовища (тобто паливо-повітряної суміші або вихлопних газів). Говорячи суворо, об'ємний ККД — це відношення (або відсоткове співвідношення) кількості робочого середовища, що фактично всмоктується в циліндр, до об'єму самого циліндра (за незмінних умов). Тому ті двигуни, які можуть створювати тиск на входах у трубопроводи вище тиску навколишнього середовища, можуть мати об'ємний ККДбільший 100%.

VE змінюється залежно від оборотів, і дросельній заслінці згідно знайденої інформації та в машинах для нього взагалі є справжні 3D таблиці:

ютер

Знайшов графік зміни в гугле і спробував відтворити хоча б грубо його зміну.

ютер

Ось такий графік вийшов! =))) ( хто зможе точніше дати дані для більш точного графіка буду радий, інформації особливо не знайшов скільки не шукав.)