Индикатор заряда на PIC12F675 или PIC12F1840

Собирая очередное устройство с питанием от аккумулятора, задумался как бы сделать универсальный индикатор заряда, которому нужно только указать напряжение полно заряда и разряда аккумулятора, а дальше он всё сделает сам. Конечно полного автомата не получилось, но вот что вышло.

Изначально были разработаны два варианта индикатора на PIC12F675 со светодиодной индикацией, питание от 5 вольт, в качестве источника опорного напряжения используется напряжение питания микроконтроллера (не самый хороший вариант, но вполне работоспособный), теоретически все индикаторы могут работать с напряжением до 99 вольт, для этого необходимо переделать источник питания и входные цепи, но на практике проверялись лишь аккумуляторы до 24 вольта, при этом стабилизатор 7805 ставился на радиатор. Прошивки из статьи рассчитаны на 3S литий ионный аккумулятор с напряжением разряда 9.3 вольта, а напряжением полного заряда 12,5 вольта, как по мне это оптимальные уровни для продолжительной работы данной сборки аккумулятора.

Первый вариант имеет 3 светодиода, это самый простой вариант указывающий на заряд, разряд и рабочее состояние аккумулятора.

 

  При полностью заряженном аккумуляторе горит синий светодиод D6, по мере разряда вплоть до напряжения разряда горит зеленый светодиод D5 и как только напряжение упадет до напряжения разряда и ли ниже загорится красный светодиод D4, а также откроется транзистор Q3 сигнализируя о разряде аккумулятора.

    

Вся настройка данного варианта схемы заключается в следующем. При программировании в ячейки EEPROM 0x00 и 0x01 вносим шестнадцатеричное число соответствующие напряжению разряда аккумулятора для 9.3 вольта это число 93 в шестнадцатеричном виде число 0x005D , а в ячейки 0x02 и 0x03 напряжение полностью заряженного аккумулятора для напряжения 12.5 вольт это число 125 шестнадцатеричном виде число 0x007D.

После программирования замыкаем перемычку J1 и подаём на вход индикатора 8 вольт, для запуска индикатора подаем плюс источника питания на один из разрешающих входов разъёма ON (on1 или on2), далее вращение ручки потенциометра добиваемся зажигания зелёного светодиода, тем самым откалибровав показания АЦП, размыкаем перемычку J1 переведя индикатор в обычный режим работы. 

Второй вариант может использовать в качестве индикатора состояния аккумулятора уже до 8 светодиодов.

Настройка данного варианта индикатора заключается в следующем, при программировании также вносим необходимое напряжение разряда и заряда аккумулятора в ячейки EEPROM 0х00 0х01 и 0х02 0х03, затем в ячейку 0x04 вносим число соответствующие количеству светодиодов используемых для индикации, данное число может быть от 3 до 8.


После программирования также замыкаем перемычку J1 и подаём на вход индикатора 8 вольт, для запуска индикатора подаем плюс источника питания на один из разрешающих входов разъёма ON (on1 или on2), далее вращение ручки потенциометра добиваемся зажигания среднего светодиода индицирующий цепочки для 3 светодиодов или 2-х средних светодиодов для цепочки от 4 светодиодов до 8, тем самым откалибровав показания АЦП, размыкаем перемычку J1 переведя индикатор в обычный режим.

    

Ну и наконец 3 вариант.

Светодиоды это конечно хорошо, но хотелось попробовать использовать какой-нибудь дисплей, как по мне самый подходящим это SSD1306 с разрешением 128х32, да и питание в 5 вольт не всегда подходит, ну а поскольку используется дисплей SSD1306 то можно запитать индикатор как от 5 вольт, так и от 3.3, индикатор останется работоспособен до 2.5 вольт, в качестве источника опорного напряжения используется внутренний источник на 2.048 вольта. 

 

Как и в предыдущих индикаторах оставлен режим калибровки на будущие, но так как на дисплее есть индикация напряжения то калибруется данный индикатор просто вращением ручки подстроечного резистора R1, не забыв при этом внести при программировании необходимое напряжение разряда и заряда аккумулятора в ячейки 0х00 0х01 и 0х02 0х03 EEPROM.

      

Также для PIC12F1840 были продублированы прошивки для вариантов с 3 и 8 светодиодами, но в железе на момент написания статьи проверялся только вариант с SSD1306.

На этом наверное всё, если будут вопросы пишите постараюсь ответить.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Схема с 3 светодиодами
C1, C3, C4 Конденсатор 100 нФ 50 В 3 smd 1206
C2 Конденсатор 47мкФ 10В 1 smd
D1 Стабилитрон BZV55B5V1 (BZV55B3V3).115 1
D2, D3 Выпрямительный диод 1N4148W 2
D4 Светодиод GNL-5012ED 1 красный светодиод
D5 Светодиод GNL-5012GD 1 зелёный светодиод
D6 Светодиод GNL-5013UBC 1 синий светодиод
Q1 MOSFET-транзистор IRLML5203 1
Q2, Q3 Биполярный транзистор BC817-40 2
R1, R3, R7, R8, R12 Резистор 10 кОм 5 smd 1206
R4, R13 Резистор 100 кОм 2 smd 1206
R5 Резистор 3.6k (300R) 1 smd 1206
R6 Резистор 82k (39k) 1 smd 1206
R9, R10, R11 Резистор 1 кОм 3 smd 1206
R2 Подстроечный резистор 1 кОм 1 3296W
U1 Стабилизатор напряжения L7805CDT 1
U2 Микроконтроллер PIC12F675 (PIC12F1840) 1 SOIC-8/150mil
Схема с 8 светодиодами
C1, C3, C4, C5 Конденсатор 100 нФ 50 В 4 smd 1206
C2 Конденсатор 47мкФ 10В 1 smd
D1 Стабилитрон BZV55B5V1 (BZV55B3V3).115 1
D2, D3 Выпрямительный диод 1N4148W 2
D4 Светодиод GNL-5013UBC 1 синий светодиод
D5, D6, D7, D8, D9 Светодиод GNL-5012GD 5 зелёный светодиод
D10 Светодиод GNL-5012YD 1 желтый светодиод
D11 Светодиод GNL-5012ED 1 красный светодиод
Q1 MOSFET-транзистор IRLML5203 1
Q2, Q3 Биполярный транзистор BC817-40 2
R1 Резистор 82k (39k) 1 MF-25 (С2-23) 0.25 Вт
R2, R5, R8, R9 Резистор 10 кОм 4 smd 1206
R4 Резистор 3.6k (300R) 1 smd 1206
R3, R7, R10 Резистор 100 кОм 3 smd 1206
R11, R12, R13, R14, R15, R16, R17, R18 Резистор 1 кОм 8 smd 126
R6 Подстроечный резистор 1 кОм 1 3296W
U1 Стабилизатор напряжения L7805CDT 1
U2 Микроконтроллер PIC12F675 (PIC12F1840) 1 SOIC-8/150mil
U3 Сдвиговый регистр CD74HC595 1 SOIC-16/150mil
Схема с SSD1306
C4, C6, C7, C8 Конденсатор 100 нФ 50 В 4 smd 1206
C5 Конденсатор 47мкФ 10В 1 smd
D1 Стабилитрон BZV55-B3V3 1
 
D2, D3 Выпрямительный диод 1N4148W 2
Q1 MOSFET-транзистор IRLML5203 1
Q2, Q3 Биполярный транзистор BC817-40 2
R1 Подстроечный резистор 1 кОм 1 3296W
R2, R13 Резистор 100 кОм 2 smd 1206
R4 Резистор 300 Ом 1 smd 1206
R5 Резистор 39 кОм 1 smd 1206
R6, R7, R8, R9, R12 Резистор 10 кОм 5 smd 1206
SSD1306 Дисплей SSD1306 1
U1 Стабилизатор напряжения L7805CDT 1
U3 МК PIC 8-бит PIC12F1840 1 SOIC-8/150mil