Индикатор внешней температуры и напряжения АКБ для авто.
Индикатор внешней температуры и состояния аккумулятора автомобиля на Ардуино и OLED дисплее.
Попросил приятель сделать ему в Nissan Serena показометр температуры за бортом и состояния заряда аккумулятора, всё это дело желательно запилить в приборную панель. Запиливать я не стал, пусть сам с эстетикой разбирается, но само устройство ему спаял.
Arduino Pro Mini у меня закончились, по этому взял микроконтроллер ATmega168PA, которые я заказываю на Али по очень вкусной цене, как их прошивать через Arduino IDE .
Схема термометра -- вольтметра.
Компоненты и печатная плата.
- ATmega168PA в корпусе TQFP.
- I2C Дисплей 128x64 с чипом SSD1306.
- Датчик температуры 18b20.
- Стабилизатор на 5v 78L05.
- Резисторы 1206, резистор RES 0805.
- Конденсаторы 0805 и тантал 1210.
Я собирал из того что было, заработало всё сразу, потребовалось только подобрать сопротивление резисторов в коде, для точного отображения напряжения. Стабилизатор немного греется, налил припоя в качестве радиатора. На плате есть восьмиугольные пятачки, для возможности в дальнейшем добавить какие нибудь датчики.
Логика работы.
Вольтметр (2 строка дисплея) всегда показывает напряжение на аккумуляторной батарее.
Принцип контроля состояния акб (3 строка дисплея) состоит в измерении напряжения НРЦ (напряжение разомкнутой цепи), а далее по таблице зависимости заряженности от напряжения выводим в процентах на дисплей. Данный метод усреднённый и работает только тогда, когда в аккумуляторе практически останавливается химическая реакция, например если авто простояло ночь. Надеюсь правильно выразился.
Таблица с сайта Varta.
В третей строке отображается состояние:
- Аккумулятор мёртв
- 50%
- 60%
- 70%
- 80%
- ОК
При зарядке когда напряжение больше 13v, в строке отображается просто марка автомобиля.
Нужно понимать, что заряженность и ёмкость - разные вещи. В 60А/ч батарее из-за деградации и разрушения пластин может оставаться всего 20А при полной зарядке, но показатель заряженности покажет на сколько батарея заряжена, а не какова её ёмкость. Измерить ёмкость можно только разрядом до 12v, по времени.
Плата сделана так, что измеряемое напряжение берётся непосредственно от питания всего устройства подключённого к замку зажигания в положении 1, при такой конфигурации требуется только 2 провода для подключения к автомобилю.
Если в первом положении замка имеется нагрузка, то показания состояния аккумулятора будут не точными, для компенсации потребуется отсоединить дорожку на плате от резистора 100к и подсоединить этот резистор дополнительным проводом непосредственно к аккумулятору.
Первая строка дисплея - термометр. Он не использует специальную библиотеку, код я взял у Гайвера.
Заказываю компоненты у проверенных продавцов.
Код Ардуино.
#include <Wire.h> void setup(){ } void loop(){ int analogvalue = analogRead(A1); u8g.firstPage(); } void draw(void) { // ======= dallas ======= |
Исходники и файлы печатки СКАЧАТЬ