Как стать автором
Обновить

Автоматика для КТЦ или продлеваем жизнь аккумуляторам

Время на прочтение 5 мин
Количество просмотров 66K
В результате публикации рассказов о моей автономной солнечной энергосистеме, описанной здесь, здесь и здесь, частыми были схожие вопросы: каков срок окупаемости и как долго прослужит система? Надо отметить, что одной из самых дорогих и капризных частей системы являются аккумуляторы. Именно накопители энергии изнашиваются быстрее всего, емкость аккумуляторов падает и количество оставшихся циклов заряд-разряд неуклонно уменьшается. С уменьшенной емкостью аккумуляторов хорошо знакомы автомобилисты, когда внезапный резкий мороз не оставляет шанса старому аккумулятору завести автомобиль.
Я задался вопросом, как определить остаточную емкость аккумулятора, чтобы это было максимально просто и быстро.





Для начала, немного теории, чтобы понимать, как измерять остаточную емкость аккумулятора и что для этого нужно.

Контрольно-тренировочный цикл заряда-разряда проводится для предотвращения сульфатации и определения емкости аккумулятора. Контрольно-тренировочные циклы проводятся не реже одного раза в год и выполняются следующим образом: заряжают АБ нормальным током до полного заряда; выдерживают АБ 3 часа после прекращения заряда; корректируют плотность электролита; включают зарядку на 20-30 минут для перемешивания электролита; проводят контрольную разрядку постоянным нормальным током 10-часового режима и контролируют время полного разряда до напряжения 1,7 В на банку (10,2 В на АБ); емкость батареи определяют как произведение величины разрядного тока и времени разряда. После контрольного разряда батарею сразу же ставят на зарядку и полностью заряжают. Если оказалось, что емкость АБ меньше 50% номинальной, она считается неисправной.
Неавтоматизированный контрольный разряд требует постоянного присутствия обслуживающего персонала для фиксации и регулировки тока разряда. (с)взято отсюда

То есть для определения остаточной емкости нам нужно разряжать аккумулятор нагрузкой с известной и постоянной мощностью до величины 10,2 (в иных источниках рекомендуют разряжать 12В аккумулятор не ниже, чем до 10,8В) Вольта. Можно просто купить вот такой прибор и не ломать голову изобретением велосипеда, но ежедневная борьба с ленью требует новых свершений и изобретений.


Итак, руководствуясь принципом «Чем проще-тем надежнее», было решено собрать собственное автоматизированное устройство для измерения остаточной емкости аккумулятора, и заодно, проведения КТЦ. Так как зарядное устройство у меня уже было, то изобретать велосипед не было нужды. Требовалось лишь включить эту зарядку вовремя. А вот разряжать надо чем-то, что имеет постоянную нагрузку, независимо от окружающей температуры и напряжения аккумулятора. Самый простой способ — это разрядка автомобильными лампами накаливания. Номинал мощности пишут прямо на них, поэтому потребляемый ток можно вычислить простой арифметикой: Вт/12=ток нагрузки. То есть лампа на 60 Вт будет потреблять 5 Ампер. Аккумулятор разряжают током, составляющим 10% емкости или 0,1С и заряжают таким же током.
В результате пятиминутного раздумья было составлено ТЗ для будущего устройства:
1. Фиксация времени начала процесса разряда
2. Слежение за напряжением аккумулятора
3. По достижении критического напряжения устройство должно отключить нагрузку и включить ЗУ
4. Фиксация времени окончания процесса разряда

Из всего этого следовало, что нам понадобится:
1. Arduino Nano — 175 руб
2. RTC1307 — 56 руб
3. Реле — 131 руб
4. LCD 2х16 i2c — 222 руб
5. 3 резистора по 10 кОм, некоторое количество проводов — 50 руб
Итого: 634 руб

Чтобы Ардуина понимала, какое напряжение в каждый момент времени на аккумуляторе, необходимо было подсоединить аккумулятор к ардуино. Сделать напрямую этого нельзя, так как аналоговые входы контроллера могут принимать не более 5В, поэтому было решено собрать делитель напряжения из 3 резисторов по 10кОм. Минус аккумулятора и минус контроллера связывались напрямую. Питание контроллера осуществлялось от отдельного источника питания. Схема подключения и код представлены ниже:



Скетч КТЦ
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <EEPROM.h>
#include <Wire.h>
#include <DS1307.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
int rtc[7];
byte rr[7];
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
#define RELE_NAGRUZKA 2 //объявляем работу реле нагрузки на пине 2
#define RELE_ZARYADKA 3 //объявляем работу реле зарядки на пине 3
int analogPin = 0;
int flag=0;
float val=0;
float valkoef=0;

void setup () 
{
  DDRC|=_BV(2) |_BV(3);  // POWER:Vcc Gnd
  PORTC |=_BV(3);  // VCC PINC3
  RTC.get(rtc,true);
  lcd.init();                      // initialize the lcd 
  lcd.backlight();
  lcd.home();
  pinMode(RELE_NAGRUZKA, OUTPUT); //инициируем реле только на выход  
  pinMode(RELE_ZARYADKA, OUTPUT); //инициируем реле только на выход
  lcd.clear();  
  digitalWrite(RELE_NAGRUZKA, HIGH);
  digitalWrite(RELE_ZARYADKA, HIGH);
  RTC.SetOutput(DS1307_SQW32KHZ);
  EEPROM.write (0, rtc[2]); // при старте записываем значение времени, часы
  EEPROM.write (1, rtc[1]); // при старте записываем значение времени, минуты
}

void loop () 
{
 val = analogRead(analogPin); // считываем значение напряжения с аналогового порта
 valkoef=val/74,49; // приводим снятое с аналогового пина значение к обычным вольтам
 RTC.get(rtc,true);
 lcd.setCursor (0,0);
 lcd.print (rtc[2]);
 lcd.print (":");
 lcd.print (rtc[1]);
 lcd.print (":");
 lcd.print (rtc[0]);
 lcd.print (" str");
 lcd.print (EEPROM.read(0));
 lcd.print (":");
 lcd.print (EEPROM.read(1));
 lcd.setCursor (0,1);
 lcd.print (valkoef);
 lcd.print (" ");
 lcd.print (flag);
 
 if (valkoef < 10.72)
   {
    flag=1;
    EEPROM.write(2, rtc[2]); // записыываем время окончания разрядки, часы
    EEPROM.write (3, rtc[1]); // записыываем время окончания разрядки, минуы
   }
 if (flag==1)
 {
   digitalWrite(RELE_ZARYADKA, LOW); // включаем зарядку
   digitalWrite(RELE_NAGRUZKA, HIGH); // выключаем нагрузку
   lcd.print (" stp");
   lcd.print (EEPROM.read(2)); // выводим время окончания разрядки
   lcd.print (":");
   lcd.print (EEPROM.read(3));
 }
   
 if ((valkoef > 10.72) && (flag==0))
 {
   digitalWrite(RELE_NAGRUZKA, LOW);
    }
 else
   {
     digitalWrite(RELE_NAGRUZKA, LOW);
    
   }
  delay(500);
}



Как работает устройство? Элементарно!

К первому реле подключается нагрузка, ко второму ЗУ. Причем лучше разрывать высоковольтную цепь питания зарядного устройства, чтобы не оставлять включенным устройство без аккумулятора. При включении контроллера в первой строке отображается текущее время и время старта работы нагрузки. Во второй строке отображается текущее напряжение на аккумуляторе и время окончания разряда, когда аккумулятор достигнет критического напряжения. Сразу по достижении значений, реле нагрузки отключается и включается реле заряда. Если добавить пару кнопок, то можно с легкостью настроить регулировку порога напряжения или настройку часов реального времени. На данном этапе такой задачи не стояло, поэтому код максимально прост и функционален. Вычитая из времени окончания время старта разрядки, можно получить емкость, если умножить время на ток, потребляемый нагрузкой.

Заключение
Итак, организовать контрольно-тренировочный цикл для любого аккумулятора, имея зарядное устройство, 600-700 рублей на запчасти и пару часов времени, очень просто. Не забывайте, что заряженный аккумулятор служит дольше, а периодические КТЦ придают уверенности хотя бы в том, что Вы точно будете знать, что утром машина заведется, несмотря ни на какие морозы.
Теги:
Хабы:
+2
Комментарии 7
Комментарии Комментарии 7

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн