РадіоКот :: Бортовий комп'ютер для автомобіля ВАЗ2110

Наши партнеры ArtmMisto

>>>


Бортовий комп'ютер для автомобіля ВАЗ2110

З нагоди урочистості хочу представити свій проект.

Отже, я є "щасливим" власником творіння вітчизняного автопрому під назвою ВАЗ-2110. Як і будь-яка техніка машина має властивість ламатися в самий невідповідний для цього момент. Але залишимо обговорення поломок для інших сайтів, все-таки тут зібралися радіоаматори, а не автомеханіки =)

Загалом історія цього проекту почалася приблизно рік тому, коли я залишився без генератора в 300км від мети поїздки і довелося продовжувати подорож на АКБ щоб зустрітися з іншим авто і далі їхати на його АКБ. На додаток до цього, вже починало сутеніти. Ось тут-то і виявилося, що на приладовій панелі відсутній такий корисний прилад, як вольтметр. Мабуть, розробники вважали, що раз двигун інжекторний, то і напруга на АКБ знати зовсім не обов'язково. Під час поїздки я вже серйозно подумував про те, щоб підключити до бортової мережі звичайний мультиметр, тому що чув, що падіння напруги на АКБ може викликати псування пам'яті ЕБУ двигуна і в той момент перевіряти справедливість цього твердження абсолютно не хотілося. Природно по приїзду додому я вирішив вмонтувати щось, що вимірює напругу. Але тут згадалася ще одна неприємна особливість інжекторного двигуна, а саме контрольна лампа Check Engine. Яка вміє загорятися зовсім несподівано і чомусь зазвичай досить далеко від будь-якого сервісу. Таке, звичайно, трапляється досить рідко, але все ж трапляється. Першою думкою було піти, купити маршрутний комп'ютер і не морочити голову. А він уже покаже і напруга, і помилки, багато чого ще. Але після походу на авторинок ентузіазм зменшився. Виявилося, що залізяка, яка містить деталей рублів на 300-400, може коштувати в кілька разів дорожче.

Ось тоді і було прийнято рішення зібрати такий девайс самому. Спочатку думав зробити щось просте на AVR МК і невеликому дисплеї від мобільника. Але тому що в той час я почав активно вивчати МК STM32, то робити на AVR було не цікаво, особливо з огляду на той факт, що у мене в місті вартість того ж Mega32 перевищує вартість STM32 103 серії. Крім цього, на просторах інтернет-магазинів я натрапив на дуже цікаву штуковину під назвою TFT дисплей. Ось такий:

Діагональ цілих 3,2 ", сенсор з АЦП, слот для SD карти, та ще й на платі запаяний. Ось тільки шина даних у нього паралельна і для управління потрібно цілих 21 висновок (16 біт сама шина даних і 5 службових висновків). Після деякого часу пошуків в інтернеті, я з'ясував, що дана залізяка досить легко і просто підключається до STM32 МК при наявності у них FSMC (Flexible static memory controller). Якщо пояснювати в двох словах, то це якийсь інтерфейс, до якого можна підчепити пам'ять з паралельним інтерфейсом, при цьому МК буде працювати з нею, точно так же, як і зі своєю внутрішньою. Тобто просто вказуємо адресу і пишемо дані. Дуже зручно. А ось тепер, якщо підключити туди дисплей, то можна просто засилати туди дані за деякими адресами, при чому апаратно і дуже швидко.

Далі підібрав і сам МК, вибір припав на STM32F103VCT6, це 100-лапое чудовисько містить на борту блок FSMC, ЦАП (на той час уже вирішив, що звичайні звукові повідомлення у вигляді писку будуть тільки дратувати), цілу пачку USART, SPI і т. п., 256 Кб пам'яті, тактову частоту 72МГц, та ще й USB модуль. Все описувати не буду, щоб не захаращувати статтю, інше можна знайти в даташіте. Замовивши дисплей і МК, почав розводити плату. До слова, плату під корпус LQFP належало виготовляти вперше. Не дивлячись на це, плата вдалася (нехай і не з першого разу), робив методом Лут.

Запаявши МК і дисплей, сів за написання програми. Після кількох тижнів танців з бубном, вдалося запустити дисплей і трохи оптимізувати бібліотеку. Вже тоді було вирішено, що весь інтерфейс буде представлений у вигляді набору картинок, а звукові повідомлення у вигляді WAV файлів. Ось тут і чекало перше розчарування. При проектуванні плати я підключив SD картку через SPI, і якщо з програванням звуків він справлявся на відмінно, то для читання зображень у нього катастрофічно не вистачало швидкості. На висновок картинки 320х240 пікселів йшло близько 3 секунд. Промучившись ще тижнів зо три, почав шукати інше рішення і досить скоро знайшов. Виявляється, крім інших корисних речей, у даного МК є інтерфейс під назвою SDIO (Secure digital input / output interface), який призначений для роботи з SD (і не тільки) картами пам'яті. Відклавши програмування, я замовив мішок слотів для MicroSD карток і зайнявся новою платою. У підсумку на окремій платі затишно розмістилися MicroSD картка і Mini USB роз'єм, а основна плата доповнилася висновками під SDIO, а також деякими корисними, які прийшли на розум в процесі розробки. Після чергових танців з бубном все це справа завелося. Картинки виводилися з прийнятною швидкістю. Справа залишилася за малим, зробити інтерфейс користувача, реалізувати задумані функції і змусити все це справа працювати. Якраз на розробку інтерфейсу пішла приблизно половина всього часу, по-перше, треба було придумати щось зручне, а по-друге створити всю графіку, з якої я в принципі не особливо дружу. Детально цей момент я описувати не буду, щоб не втомлювати читачів, скажу тільки, що була ще раз перероблена бібліотека дисплея, створені з нуля декілька шрифтів, окремо літерні (відразу вирішив робити тільки англійські, написи виходять коротше) і окремо цифрові. І графіком я все-таки зробив.

Але, коли залишалося дописати приблизно 30% прошивки, стало ясно, що доведеться переробити плату ще раз. Причинами послужило те, що з-за деяких недоробок не виходило реалізувати все задумане, і просто пекельно грілися лінійний стабілізатори в харчуванні схеми. (Зниження до 3.3В було зроблено в 2 ступені, 12В-> 5В, 5В-> 3.3В). В результаті був застосований DC-DC Step-Down перетворювач на 3.3В, виправлені попередні недоробки, і нарешті-то отримана фінальна версія плати, на якій і дописувалася прошивка.

В процесі написання програми кількість функцій збільшилася відсотків на 30 у порівнянні із спочатку задуманими.

Отже, на момент написання статті, функціонал вийшов наступний.

  1. Показ часу (RTC в МК є, чому б не використати).
  2. Вимірювання температури в салоні і на вулиці (датчики DS18b20, неймовірно зручна штуковина в плані підключення).
  3. Зв'язок з ЕБУ через K-Line і отримання таких параметрів, як: Напруга, Витрата палива (шляховий / годинний), Температура двигуна, Обороти, Швидкість руху, Масова витрата повітря, Цикловий витрата повітря, Положення дросельної заслінки, Тривалість імпульсу впорскування, Положення регулятора холостого ходу. Читання і скидання помилок.
  4. Стеження за рівнем охолоджуючої рідини і рівнем масла в двигуні, з подачею звукового і візуального повідомлення (якщо вже є датчики, то чому б їх не задіяти).
  5. Нагадування про заміну масляного і повітряного фільтрів.
  6. Управління фарами і ДГЗ в залежності від рівня освітленості з налаштуванням рівня спрацьовування.
  7. Показ максимального / мінімального / середнього рівня таких параметрів, як: годинна витрата палива, швидкість за поїздку, напруга в бортовій мережі, температура за бортом. А також висновок зразкових графіків даних величин.
  8. Збереження параметрів і помилок, отриманих з ЕБУ, на SD карту в * .txt файл.
  9. Ведення статистики поїздки (час, відстань, кількість витраченого палива, витрата на 100 км.).
  10. Управління освітленням салону. У рідного блоку управління була така функція, ось і сюди вмонтував.

Зовнішній вигляд всього пристрою представлений на малюнку:

Зовнішній вигляд всього пристрою представлений на малюнку:

Конструктивно воно складається з 5 окремих блоків: дисплей, плата-адаптер K-Line, плата з Micro SD і USB, УНЧ і центральна "материнська" плата. Модульна система була вибрана спеціально, тому що це помітно спрощує розведення плат і установку в авто. Крім цього я не був упевнений, що той же адаптер K-Line буде нормально працювати, а переробляти через нього всю плату зовсім не хотілося. Розглянемо кожен блок докладніше.

На центральній платі розташовано серце все конструкції - МК STM32F103VCT6 з усією необхідною обв'язкою. На цій же платі знаходяться DC-DC перетворювач 12В-> 3.3В на MC34063 для живлення всієї електроніки, два реле для управління фарами, потужний MOSFET для управління світлом в салоні (навіть надмірно потужний, але їх було цілий мішок, тому його і поставив) і батарея 3В для годин реального часу.

3В на MC34063 для живлення всієї електроніки, два реле для управління фарами, потужний MOSFET для управління світлом в салоні (навіть надмірно потужний, але їх було цілий мішок, тому його і поставив) і батарея 3В для годин реального часу

Адаптер K-Line зроблений за поширеною схемою на компараторе LM339. Так само на цій платі встановлена ​​пара транзисторів, які служать сполучною ланкою між датчиками в авто і МК.

Плата з USB і Micro SD взагалі нічим ні примітна і містить тільки пару роз'ємів і жменю резисторів.

Плата з USB і Micro SD взагалі нічим ні примітна і містить тільки пару роз'ємів і жменю резисторів

Розглядати УНЧ особливого сенсу не має, зроблений він на TDA2003 за схемою з даташіта. Тут уже кожен вибирає те, що йому зручніше. У мене була в наявності дана Мікра, на ній і зробив.

На плюсовом дроті харчування встановлено запобіжник.

Підключення дисплея здійснюється гнучким шлейфом, який раніше служив для підключення IDE диска до материнке. Він має більшу міцність, ніж звичайні китайські, спокійно витримав близько місяця знущань без єдиного обриву. Крім того, він одножильний, що помітно прискорять процес пайки і дає гарантію, що випадково загнувшісь непомічена "волосинка" що-небудь замкне.

Встановив девайс біля прикурювача, замість попільнички, тому що їй все одно не користуюся. Сама попільничка була успішно витягнута, на її місці закріплені дисплей і плати, після цього ззаду встановив на місце кришку, яка закривала попільничку, а лицьову панель вирізав з оргскла і обтяг карбонової плівкою. Вийшло дуже навіть не погано:

Вийшло дуже навіть не погано:

Для підключення датчиків температури використовував звичайну телефонну локшину. Зовнішній датчик встановлений під заднім бампером, а внутрішній під декоративну накладку на стоці між дверима. Зовнішній датчик був замовлений у китайців і за їхніми запевненнями абсолютно водонепроникний. Перевірити поки можливості не було, сезон дощів ще не почався. Всього пішло близько 3-3,5м дроти. При такій довжині дроти підтягаючий резистор на лінії 1-Wire довелося уменьшеіть до 1К. Фотодатчик підключений екранованим мікрофонним кабелем. Для установки статусного світлодіода була використана стандартна фішці датчика іммобілайзера, яка безцільно стирчала в панелі. Червоний світлодіод замінив на жовтий. Для підключення датчиків температури використовував звичайну телефонну локшину

А ось і схема всього девайса:

Тепер постараюся описати його роботу. У черговому режимі екран погашений і питна УНЧ відключено. Кожні 5 сек. вспихіввает статусний світлодіод, показуючи, що девайс живий. Споживання струму в цьому режимі 30-35мА. Можна його ще зменшити, якщо перевести МК в сплячку, але поки таке споживання ніякого згубного впливу на АКБ не робить.

Для того, щоб вдихнути в нього життя, потрібно або просто торкнутися екрану, або повернути ключ у замку запалювання. До речі, при дотику до екрану запалюється статусний світлодіод, і гасне при відпуску, сигналізуючи тим самим, що дотик сталося і МК його зареєстрував. У першому випадку буде включена підсвічування і надано доступ до всіх функцій, але без з'єднання з ЕБУ. Тобто відразу ж буде включений головний екран програми без заставок, мелодій і т.п. Так само не буде проводитися контроль станів датчиків. Якщо ж протягом 20 секунд користувач не робить ніяких дій, то очиститься екран.

У другому випадку спочатку буде показана заставка і через 5 секунд буде здійснено з'єднання з ЕБУ і вимикання відбудеться тільки після виключення запалення. Затримка в 5 секунд обумовлена ​​специфікою роботи ЕБУ BOSCH, встановленого в моїй машині, перші 5-6 секунд після включення він шле якусь нісенітницю і на вхідні дані не реагує. Іншими словами - це робочий режим. В даний момент заставка виглядає так:

В даний момент заставка виглядає так:

Після переходу на головний екран, здійснюється спроба з'єднання з ЕБУ. Якщо з якихось причин з'єднатися з перших двох спроб не вдалося, на екран виводиться ось така піктограма і спроби налагодити сполучення тривають.

Після 8 невдалих спроб буде виведено повідомлення про помилку, якщо після цього торкнутися екрану в будь-якому місці, процедура з'єднання повториться спочатку.

Після 8 невдалих спроб буде виведено повідомлення про помилку, якщо після цього торкнутися екрану в будь-якому місці, процедура з'єднання повториться спочатку

Вся основна інформація виводиться на Головному екрані у вигляді таблиці. Дані оновлюються кожні 100 мс. Крім напруги (1с) і температури з DS18b20 (2с). Головний екран розділений на дві області. У верхній, більшою, області відображаються параметри представлені у вигляді таблиці, як:

  • Напруга в мережі (MAIN VOLT.)
  • Температура в салоні (TEMP. INT.)
  • Температура за бортом (TEMP. OUT.)
  • час
  • Температура двигуна (ENGINE TEMP.)
  • Кількість оборотів (ENGINE RPM)
  • Швидкість руху (SPEED)
  • Часовий витрата палива (FUEL RATE)

Нижня область відведена під іконки статусу і кнопки. Зліва направо:

Зліва направо:

У разі виникнення проблем, піктограма виділяється червоним кольором, це саме можна сказати і до напруги. Крім цього про неполадку повідомляється частим миготінням статусного світлодіода (5 разів з інтервалом 300мс.) І звуковим сигналом (в тому випадку, якщо включений звук). Повідомлення про рівень масла / тосола / напруги повторюються раз в хвилину, а повідомлення про заміну фільтрів раз на годину. Пробіг перед заміною узятий з довідкової літератури та для повітряного фільтра становить 15000км, а для масляного - 10000км.

Значок "мінус" для негативної температури вже ніяк не поміщався, тому негативна температура виводиться синім кольором. Четверта цифра в кількості оборотів теж не помістилася, довелося її замінити точкою. Тепер якщо точка стоїть після числа (123.) то це означає, що обороти перевищили 1000, у даному прикладі - це 1230 об / хв. А якщо точка стоїть зліва від числа (.876), то обороти менше 1000, в даному випадку - 876 об / хв. (На фото не зовсім вірна інформація, воно було зроблено під час одного з тестів).

Частина пунктів таблиці кликабельна, це:

  • напруга
  • Температура за бортом
  • час
  • швидкість
  • Витрати палива

Натискання на перелічені пункти, крім часу, відкриває екран статистики, у верхній частині якого представлені мінімальне / максимальне / середнє значення параметра, а в нижній приблизний графік.

Перші 18 раз запис даних проводиться з інтервалів в 10с, далі в 1хв, а потім з інтервалом в 5 хв.

Натискання на годинник відкриє екран статистики за поїздку:

Натискання на годинник відкриє екран статистики за поїздку:

Статистика ведеться в двох режимах. Ще не натиснуто кнопку START, статистика скидається через хвилину, після виключення запалення. Якщо ж натиснути кнопку START, то ведення статистики буде працювати до натискання кнопки RESET навіть з вимкненим двигуном. Це буде корисно, якщо рух здійснюється з зупинками і потрібно дізнатися загальний час, проведений в дорозі, або ж загальна кількість витраченого палива.

Натискання на пікограм з написами AIR / OIL відкриє екран статистики фільтрів.

Тут відображається відстань, пройдену з моменту заміни фільтра. Відповідно, після заміни фільтра потрібно скинути пробіг утримуванням кнопки RESET. При виключенні запалення і через годину, значення пробігу зберігаються на карту пам'яті.

Далі йде кнопка управління зовнішнім освітленням. При натисканні відбувається перебір режимів, на що вказує зміна виду кнопки. Всього режимів 3:

- управління вимкнено - управління вимкнено

- включення габаритних вогнів - включення габаритних вогнів

- включення фар і габаритних вогнів - включення фар і габаритних вогнів

Габаритні вогні включаються після 2 хвилин роботи двигуна якщо машина не рухається, або відразу після початку руху, або при досягненні температури двигуна рівної 60 градусам. Вимкнення відбувається через хвилину після виключення запалення.

З фарами все набагато цікавіше, вони реагують на рівень освітленості. Як тільки цей рівень стане нижче порогового (встановлюється в меню) і протримається в цьому стані не менше 15сек. Буде вироблено включення фар. Вимкнення відбудеться або через 3сек. після виключення запалення, або в тому випадку, якщо рівень освітленості протримається вище порогового не менш хвилини. Включення фар або габаритних вогнів супроводжується звуковим повідомленням і миготінням статусного світлодіода (3 рази з інтервалом 800 мс.).

Наступна кнопка управляє звуком. Тут все просто:

- звук вимкнений - звук вимкнений

- звук включений - звук включений

При відключеному звуці повідомлення будуть виводитися тільки за допомогою статусного світлодіода і піктограм.

При натисканні на кнопку меню на екрані з'явиться вікно налаштувань девайса:

При натисканні на кнопку меню на екрані з'явиться вікно налаштувань девайса:

Він складається з 6 пунктів:

Почнемо по порядку. Збільшений екран параметрів є ось таку таблицю:

Збільшений екран параметрів є ось таку таблицю:

Тут можна побачити:

  • Напруга в мережі (MAIN VOLT.);
  • Обороти (ENGINE RPM);
  • Витрата повітря (AIR FLOW);
  • Датчик масової витрати повітря (MAF SENSOR);
  • Положення дросельної заслінки (THROTTLE POSITION);
  • Час упорскування (IHJECT. TIME);
  • Регулятор положення ХХ (REG-R IDLE);
  • Кут випередження запалювання (IGNITION ANGLE).

Все це справа можна зберегти в текстовий документ diagnost.txt. на карту пам'яті натисканням на кнопку SAVE. Якщо все пройшло успішно, поруч з кнопкою з'явиться зелений квадрат, а в разі помилки - червоний.

Екран читання помилок.

Екран читання помилок

Тут виводяться помилки, що містяться в пам'яті ЕБУ, звичайно, якщо вони взагалі є (у мене, на щастя, жодної не було). Помилки так само можна зберегти на карту пам'яті в файл errors.txt, а крім цього зробити скидання утримуванням кнопки RESET.

Підключення USB. Тут, на жаль, не все так добре. З USB підключенням я не встиг розібратися на момент написання статті, тому поки тільки виводиться ось така картинка:

З USB підключенням я не встиг розібратися на момент написання статті, тому поки тільки виводиться ось така картинка:

Годинника. Тут все просто, в цьому розділі можна зробити установку часу.

Встановлюється значення віділяється червоного кольору и стрілкою. Після виставлення годин, можна налаштувати хвилини, а після хвилин знову годинник, і так по колу. Збереження значень відбувається після натискання кнопки APPLY, а при натисканні кнопки CANCEL все залишається без змін.

Налаштування порога включення фар. Даний екран виглядає наступним чином:

Даний екран виглядає наступним чином:

Вгорі відображається поточний рівень освітленості, одержуваний з датчика, а внизу той рівень, який був налаштований. Відповідно настройка здійснюється простим натисканням на повзунок. Як і раніше застосування налаштувань відбувається після натискання кнопки APPLY. Для контролю за освітленістю застосований звичайний фоторезистор. Його сдедует встановити так, щоб на нього потрапляв світло, що пройшло через лобове скло.

Налаштування яскравості дисплея. Тут всього один повзунок:

Зміни яскравості при налаштуванні можна побачити відразу після натискання на повзунок. Далі буде відбуватися автоподстройка рівня яскравості за показаннями, отриманими з датчика освітленості, на основі заданого рівня. Збереження все тієї ж кнопкою APPLY.

На цьому різні менюшки закінчуються. Всі настройки системи зберігаються на карту пам'яті в файлик settings.bin. Як можна помітити, вся робота пристрою зав'язана на карті пам'яті. Тому проводиться контроль її наявності, щоб уникнути помилок в роботі. Якщо карта пам'яті з якихось причин не відповідає, то проводиться спроба ініціалізації карти пам'яті, а в тому випадку, якщо це не допомагає, на екран виводиться ось таке повідомлення:

Якщо карта пам'яті з якихось причин не відповідає, то проводиться спроба ініціалізації карти пам'яті, а в тому випадку, якщо це не допомагає, на екран виводиться ось таке повідомлення:

При натисканні в будь-якій точці екрану буде зроблена спроба ініціювати карту пам'яті. Також без карти пам'яті девайс не увімкнеться, а на екрані буде виводиться повідомлення про помилку. Особисто у мене подібної проблем з картою пам'яті поки не було, вона прекрасно витримує тряску і з роз'єму не випадає.

Також варто зупиниться на першому включенні, коли ніякі настройки не зроблені. Оскількі екран сенсорний, то йому просто необхідна така річ, як калібрування. Саме в цей режим і переходить пристрій при першому включенні:

Для виконання даної процедури слід торкнутися екрану в точках, зазначених перехрестям. Всього таких точок 4. Після цього очиститься екран і пристрій перейде в режим очікування будь-яких дій.

І остання функція - керування освітленням салону. У момент відкриття дверей починає плавно нарощуватися яскравість світильника. Повна яскравість досягається за 13 секунд. Після закриття дверей, після 10 секунд освітлення починає плавно гаснуть. При цьому якщо почати рух, то освітлення буде погашено практично миттєво.

Тепер розповім про формат картинок і звуків для інтерфейсу. Картинки представляють собою звичайні BMP файли, але збережені в колірному форматі RGB565 і з вертикальним дзеркальним відображенням. Зі звуками все простіше, це WAV фали, моно, 8 біт. Частота дискретизації не важлива, в програмі передбачена автоподстройка. Тобто зміна інтерфейсу проводиться дуже легко без необхідності зміни чого-небудь в прошивці. Карта пам'яті повинна бути з файлової таблицею FAT32. Особисто мною перевірена робота з картками об'ємом до 8 ГБ. включно.

За ідеєю дана схема буде працювати з будь-яким ЕБУ, який використовує Keyword Protocol 2000. В планах на майбутнє допив USB і додати функцію діагностичного адаптера. Також, можливо, зробити підтримку інших протоколів обміну даними з ЕБУ, з простою заміною. Наприклад, зберігати необхідні команди у файлі на карті пам'яті або записувати по USB. Може ще чого придумаю. Поки на цьому у мене все =)


файли:
Схеми / Плати / Прошивка
Файли для роботи схеми


Всі питання в Форум .


ЦІ статті вам теж могут стати в нагоді:

Главное меню
Реклама

Архив новостей
ArtmMisto
Наши партнеры ArtmMisto. Игроки могут начать свое азартное приключение на сайте "Buddy.Bet", который только что открылся для всех ценителей азарта.

Реклама

© 2013 mexpola.h1a25414f