Я б хотів продовжити тему блоку впорска палива на базі stm32 і розповісти про поточний статус проекту rusEfi.
- Трохи історії.
- Вибір апаратної платформи.
- Софт
- Інтеграція з програмами налаштування
- Поточний стан проекту
- А тепер - слайди!
- Другий супутник Van Allen Probes завершив роботу
- Новий палубний: Перший політ X-47
- VTOL AirMule проходить випробування
- У лікарнях працюватимуть роботи-медсестри
- Німецький інженер зібрав електромолоток із «Сімпсонів»
- Стівен Гокінг відповість на питання всіх бажаючих через Reddit
rusEfi - це opensource проект зі створення універсального блоку управління двигуном внутрішнього згоряння. Під універсальним передбачається підтримка широкого спектру конфігурацій, датчиків і виконавчих пристроїв. Це означає, що цей блок можна буде встановити на будь-який двигун і отримати повний контроль, без закритих прошивок, недокументованих можливостей і всього іншого. Якщо ви програміст, то можливості ще ширші - можна буде самому правити алгоритми, а не тільки доступні карти і налаштування. Від інших подібних проектів rusEfi відрізняється акцентом на потужному, але недорогому залізі і завдяки цьому можливості писати найбільш прозорий і переносимий код.
Трохи історії.
Чотири роки тому я випадково захопився дуже любительськими кільцевими гонками на витривалість. Йшов час, хотілося швидше і краще, але йти банальною стежкою покупки BMW e30 бажання не було - так з'явилися думки встановити на двигун турбіну. Надійність у такій конфігурації можлива тільки при правильному керуванні впорском і запалюванням, а за правилами моїх гонок все це має бути ще й дуже дешевим. Аналіз існуючих рішень показав, що ціни на них все ж високі, причому не завжди виправдано, а можливості обмежені. Саморобний блок явно виходить за ціною дешевше існуючих налаштовуваних блоків.
Почитавши доступні вихідники (а за професією я якраз програміст), я вирішив писати код з нуля. Початкове завдання було написати зрозумілий, розширюваний і мінімально прив'язаний до обладнання код.
Вибір апаратної платформи.
В даний час є велика кількість потужних і недорогих мікроконтролерів, продуктивності яких достатньо, щоб не піклуватися про кожен такт, сконцентруватися на якісному коді і високому рівні абстракції. Все це дозволить отримати якісний і переносимий код, розширюваність і відсутність прив'язки до конкретного заліза. Все це обіцяє можливості переходу на інші апаратні платформи, коли це потрубується. В результаті був обраний STM32 - недорогий, але потужний.
З кількох причин я вважаю, що на поточному етапі, а можливо і взагалі назавжди, залізо має бути модульним. У даний момент використовується зневаджувальна плата STM32F4DISCOVERY і два модулі - додаток силових драйверів і додаток аналогових входів.
Розміри плати розробки дозволяють підключити до неї з різних кутів як мінімум чотири невеликих модулі. Зараз у нас є модуль аналогових входів
модуль управління соленоїдами (паливна форсунка - якраз соленоїд)
і додаток роз "єму проводки
Плати малюються в KiCad - знову ж таки, відкритий і безкоштовний пакет. Але з урахуванням досить гнучкого налаштування розпинування бажаючі можуть використовувати свої плати введення-виведення, сумісність не потрібна.
З малюванням плат зараз напевно найвужче місце - в написанні коду вже бере участь кілька людей, а ось із залізом все складніше. Є список завдань, а людей немає. А вже хочеться спробувати у китайців замовити не тільки плату, а й замовити збірку хоча б усіх опорів.
Софт
Для кращої модульності система використовує невелику RTOS ChibiOS/RT, цінну ще й наявністю рівня абстракції від обладнання. ChibiOS дає нам по-перше потоки і примітиви блокування - це функціонал ядра RTOS, а по-друге - драйвера заліза зі зручним і єдиним для різних МК API. За рахунок цього не доводиться заглиблюватися в шини і регістри і є надія на переносимість. При цьому великого зв'язку конкретно з цією RTOS немає, якщо доведеться - можна буде переїхати на іншу.
Головний принцип цього проекту: максимально читаний вихідний код. Все що можна робиться максимально модульно і прямолінійно: дуже хочеться ніде нічого не хакати, а просто чесно імплементувати. При мінімальній зав'язаності на обрану апаратну платформу перехід на іншу платформу в майбутньому повинен бути досить простий.
Інтеграція з програмами налаштування
Як відомо, для налаштування блоку управління потрібен якийсь софт, який дозволяє писати логи, аналізувати і правити всілякі таблиці, калібрування та налаштування. Софт цей часто коштує грошей і не завжди актуальна його покупка для поодинокого налаштування.
Для управління нами використовується популярна TunerStudio, інтеграція вже працює. TunerStudio досить гнучка і дозволяє правити налаштування, створювати будь-які таблиці, редагувати карти і так далі. Все працює онлайн. Також слід зауважити, що інтеграція з TunerStudio обіцяє також інтеграцію з MegaLogViewer, який дозволяє аналізувати логи і в автоматичному режимі коригувати карту палива, на підставі лога. Також з цієї ж лінійки є Shadow Dash MS - android додаток від творців Tuner Studio, який дозволяє все те ж саме, що і Tuner Studio, але з android пристрою по bluetooth.
Всі ці програмні продукти реалізують потрібні механізми, їх не доведеться писати з нуля. Прямо зараз карти палива і температурних коригувань працюють в TunerStudio, механізми налагоджені, подальший розвиток в цьому напрямку не представляє проблем.
Поточний стан проекту
Зараз контролер управляє подачею палива, спираючись на датчки положення валів і показання датчика витрати повітря. З простої таблиці виходять довгі імпульсів в залежності від поточний оборотів і витрати вохдуху, з додатковими поправками на температури охолоджуючої рідини і повітря. Це примітивний і далекий від ідеалу алгоритм, який використовується більше для зневадження.
Прямо зараз управління запалюванням немає. У якийсь момент було і управління запалюванням, потім його тимчасово прибрали - зараз управління запалюванням буде головним напрямком роботи по прошивці.
Якщо торкнутися теми аналогів - то першим зазвичай згадують Мегасквірт, який «привідкритий» - вихідний код відкритий, але вимагає використання їх офіційного заліза, інше використання це порушення ліцензії. Мегасквірт коштує досить відчутних грошей. По-справжньому відкритим і при цьому живим проектом можна назвати тільки FreeEMS - на цьому блоці управління вже їздять порядку двадцяти машин, але цей проект прив'язаний до дуже конкретного заліза і вихідний код просто коробить моє почуття прекрасного.
Скільки все це коштує? Проект відкритий, вихідці не варті нічого. Залізо відкрите - залізо коштує стільки, скільки ви витратите на його виготовлення. Орієнтовно мінімальний блок управління повинен вийти в районі $100. До речі, окремо цікавий напрямок на майбутнє - вживляти новий МК в плату оригінального ЕБУ. Для старих блоків епохи DIP це буде найбільш економічна версія - такий апгрейд буде коштувати всього $20, при цьому буде повна сумісність з rusEfi.
Зараз потрібно просто налагодити фундамент - акуратно обробити всі варіанти датчиків положення, акуратно оформити в єдиному стилі апаратні модулі для широкого діапазону конфігурацій автомобілів.
У даний момент проект потребує Вашої підтримки. Потрібно писати код, працювати над електронікою і робити інші захоплюючі і корисні речі. Допомогти може кожен!
Код проекту розташований на Sourceforge - там же живе і трекер
Схеми поточної версії заліза
Є форум