Subaru Legacy (BL/BP) (Legacy GT Spec.B)

Sensors\Gauges. Part 2. Control Unit. Software.

Я їжджу на Subaru Legacy (BL/BP)
Суми, Україна

В продовження теми Sensors\Gauges. Part 1. Dashboard.

Частина друга, про "мозок" системи, а точніше його програмну складову.

Як і писав в першій частині - планується 7 датчиків: coolant temp, engine oil temp, transmission oil temp, air intake temp, oil pressure, boost, EGT.

Всі сенсори аналогові, ми на них подаємо напругу і в залежності від температури\тиску напруга на них змінюється. І зараз розберемо, як то все закодити, щоб вони відображали те, що нам потрібно.

Temp sensors.

Почнемо з перших чотирьох - температурні датчики. Це звичайні терморезистори (NTC), які змінюють свій опір в залежності від температури (низька температура - високий опір, велика температура - низький опір). Тобто, знаючи опір\напругу на датчику, можемо визначити його температуру, а точніше температуру того середовища, куди ми його помістили. Але є момент - залежність опору від температури не лінійна і описується рівнянням Стейнхарта — Харта

Виглядає складно, але, якщо пошукати, то є вже багато прикладів як то запрограмувати. Ось дуже гарне відео на тему датчика температури. В описі до відео є посилання GIT з кодом. Все що нам треба - це порахувати змінні для свого датчику. Для рідин (coolant temp, engine oil temp, transmission oil temp) я купив bosch сенсори 0281.002.170 і в них на сайті є даташити для своїх сенсорів. Беремо даташит, беремо NTC калькулятор і розраховуємо потрібні нам коефіцієнти A, B, C в трьох контрольних точках. Підставляємо то все у рівняння і отримуємо наступний код для свого бош сенсора. Швиденько зібрав схему (про підключення я окремо розповім в одному з постів)

Для референсу і калібровки заюзав датчик DS18B20, як "еталон". І сходу отримав майже ідентичні дані на виході

Різниця дуже мінімальна. Розбіжність в 3-5 градусів мене цілком би влаштовувала, а тут 0.5С. Далі потрібно було то потестити на батареї (40С), в холодильнику (-15С) та кип'ятку (100С), тож додав міні екранчик для моніторингу, щоб можно було то по квартирі носити з павербанком і без ноутбуку.

В морозилці і кип'ятку різниця в показниках була 0.5-2градуси, що мене цілком влаштовує і вважаю такий результат дуже гарним.

Для IAT я купив не бош, а GM сенсор, в нього калібровки (опір-температура) трохи відрізняються, але логіка налаштування\підключення абсолютно аналогічна.


Boost sensor (MAP).

На відміну від сенсорів температури сенсори тиску мають лінійну залежність, ніяких кривих Стейнхарта.На просторах ютуба було знайдено два дуже гарних відео з поясненнями як воно працює Там же в описі і є код з прикладом. Все, що нам потрібно - це на основі відео 2 розрахувати формулу під свій датчик тиску.

Я придбав bosch 0281.002.996 . На основі відео №2 та даних з сайту бош виводимо свою формулу і отримуємо наступний код

Зібрав схемку

Тиск 1.01бар. Перемога. Це сенсор абсолютного тиску, тобто він міряє атмосферний + 2бара наддуву (сенсор на 3бар), чого мені з запасом (наддув в машині 1.1+-)

Віднімаємо 1бар атмосферного і маємо 0.01бар, що буде округлено до 0.0 (соті мене не цікавлять).Таким чином можно буде бачити як розрідження у впускному коллекторі, так і наддув.


Oil pressure sensor.

На щастя, сенсор тиску мастила також лінійний як і МАР сенсор. Я придбав defi сенсор. На просторах інтернета знайшов калібровки для нього. 0.5В-4.5В = 0-10Бар (тобто 0.4В\1бар)

Вносимо невеличкі коррективи в код МАР сенсора і отримуємо наступний код

Далі збірка схеми і перевірка



EGT sensor.

Ну і останній - сенсор EGT (температури вихлопних газів). Тут логіка трохи відрізняється від інших. На нього ми не подаємо напруга, віс сам її генерує під час нагрівання. Сенсор представляє з себе твердий сплав (сварка, умовно кажучи) 2 металів. І під час нагрівання створюється ЕРС (електронно рушійна сила), виміряти яку ми можемо на іншому кінці дротів. Не рекомендуються щось самому варити чи подовжувати дроти. Наче все просто, але є момент. Напруга генерується дуже мала (різница в 100С це всього навсього 4мВ) і штатного АЦП мікроконтроллера недостатньо, щоб нормально моніторити температуру на сенсорі і йому потрібен спеціалізований зовнішній АЦП. Але, нащастя, воно хоча б все стандартизовано, і в автівках використовуються сенсорі K-type. Сенсор замовив із США

Зовнішній АЦП - звичайний MAX6675 з алішки за 3.5$ разом з дешманським сенсором для калібровок



Оскільки це стандартний ардуіно шилд то і код є в стандартних бібліотеках, тож юзаємо готове

Підсмалив його трохи запальничкою

Наче все працює. На машині вже буде встановлено нормальний датчик, але з цим же модулем АЦП.


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

Опубліковано: 06 лютого 14:17
4 0 1

Коментарі

Щоб залишати коментарі, потрібно авторизуватись.
Я їжджу на BMW X3 (F25)
Блін, круто і цікаво! Чекаємо продовження!
08 лютого 11:17
Я їжджу на Subaru Legacy (BL/BP)
serhii_sumy
Блін, круто і цікаво! Чекаємо продовження!
serhii_sumy,
Дякую!
Ну, модуль я дороблю, думаю, впродовж тижня-двох (хоча там роботи на пару годин). А от встановлення вже в березні-квітні, як буде тепло. Нема бажання по морозу лазити коло автівки)
08 лютого 13:26
Я їжджу на Audi A5 (1G)
На мою думку атмосферний тиск теж варто вимірювати окремо і потім віднімати саме виміряне значення, а не фіксовану константу в 1 бар.
06 лютого 15:51
Я їжджу на Subaru Legacy (BL/BP)
eBatushka
На мою думку атмосферний тиск теж варто вимірювати окремо і потім віднімати саме виміряне значення, а не фіксовану константу в 1 бар.
eBatushka, я спочатку навіть додав окремий сенсор bmp280
потів погуглив https://geomap.land.kiev.ua/climate-4.html
тиск зима-літо в одній локації змінюється на 0.005-0.01 бар +-
низина-гори 0.01бар +-
це та величина, якою можна знехтувати
проблема коли таргет 1.2, а дує 1.5. А коли таргет 1.2, а дує 1.22 то нічого страшного немає) І, відповідно, така похибка в показниках теж не критична. тож викинув окремий сенсор тиску, але добавити його то пів години діла (на паяння і правку кода), в разі чого
Віднімати буду не 1бар, а реальний тиск, який буде (взимку це 1.01, влітку подивлюся). Вцілому, можна зробити "саморегулювання": після ввімкнення щупаємо тиск, зберігаємо в змінну і потім її ж віднімаємо від фінального значення.
2
06 лютого 16:09