Я принёс батарею домой, отогрел, подключил к заряднику. Зарядник через полчаса показал ОК. Врал. Ничего там не ок. Лампочка ближнего света горела примерно 10 минут и потом быстро перешла в состояние «слабо грею воздух». Аккумулятор 6Ач, лампочка 55Вт.
Не покупать же новый аккумулятор? Зима, время есть. Есть ардуина даже и коробка всяких чипсов из Китая. Зря пылятся там что ли?
В далёкой советской армии 30 лет назад я проходил курс ухода за аккумуляторами. Основное отличие его от инструкций 21 века было таким: батарея должна проходить серию циклов заряда и разряда. Без этого, сколько её в заряднике не держи, какой бы он ни был умный, она сдохнет.
Теория процесса нагугливается легко. Практически же надо разрядить небольшим током в несколько ампер до 10.8В, а потом зарядить до упора. И так несколько раз. Смотреть на лампочку быстро наскучило и я нарисовал схему прибора.
Так как я не профессиональный реаниматор батареек, я собрал всё кое-как. Ну, как положено любителю ардуины.
Так как я оказался в этой ситуации не один, я оформил проект на гитхабе, чтобы другие тоже могли пользоваться, и даже положил туда красивую схему, нарисовав её в easyeda.com
Аналоговые ноги считывали напряжение и ток, потенциометр делил напряжение аккумулятора примерно на три. При падении напряжения ниже 10.8В включался заряд, при превышении 14.5В разряд. И так три раза. Потом батарея заряжалась и разряд уже не включался.
#define POWERPIN 0
#define AMPERPIN 1
#define LIMIT 10.8f
#define UPLIMIT 14.5f
Запускался процесс кнопкой или автоматически после полного заряда. Самый дохлый из аккумуляторов заряжаться не хотел до упора и только зря грелся. Я его пинал кнопкой несколько раз, потом процесс пошёл.
Был в коробке амперметр, я применил его для подсчёта ёмкости батарейки при разряде. В процессе цикла в терминале было видно:
- Текущий заряд в Ач.
- Текущий разряд в Ач.
- Ток в А.
- Напряжение в В.
При переключении режима, соответственно было видно конечная величина Ач для предыдущего процесса. Так же выводилось время, затраченное на цикл.
/*
** Реле на пин 2
** Кнопка на пин 3
** Меряем напряжение на аналоговом пине 0
** Амперметр на аралоговый порт 1
** Переключаем на заряд при напряжении 10.8В
** Не хотим работать при напряжении меньше 5В
**
** При включении работает зарядка.
** Кнопка переключает режим заряд/разряд.
** Разряд завершается при достижении 10.8B и начинается заряд.
*/
/*
Todo:
Считать время заряда и разряда.
Если лампа перегорает -- на зарядку.
*/
#define RELAYPIN 2
#define BUTTONPIN 3
#define POWERPIN 0
#define AMPERPIN 1
#define LIMIT 10.8f
#define UPLIMIT 14.5f
#define BADPOWER 5.0f
#define CIRCLES 3
#define SWITCH_LAMP 0
#define SWITCH_CHARGER 1
// Секунд на вывод инфы
#define TICKS (60*5)
void setup() {
pinMode(RELAYPIN, OUTPUT);
pinMode(BUTTONPIN, INPUT_PULLUP);
digitalWrite(RELAYPIN, HIGH);
Serial.begin(9600);
Serial.println("Start...");
}
int mode = SWITCH_CHARGER;
int pressed = 0;
int tick = 0;
unsigned long start = 0;
int circle = 1;
float chargeAh = 0.0;
unsigned long chargeMs = 0;
float dischargeAh = 0.0;
unsigned long dischargeMs = 0;
void loop() {
// Закончили
if (circle > CIRCLES) return;
// Проверяем напряжение.
float v = analogRead(POWERPIN) / 1023.0f * 3.0f * 5.0f;
// Измеряем ток
float a = ((analogRead(AMPERPIN) * (5.0 / 1024.0)) - 2.5) / 0.1;
// Заряжаем, если что-то не так с зарядкой.
if (v > BADPOWER) {
// Идёт зарядка, ожидаем кнопку.
if (mode == SWITCH_CHARGER) {
chargeAh += a * (millis() - chargeMs) / 3600000.0;
chargeMs = millis();
if (digitalRead(BUTTONPIN) == LOW || v > UPLIMIT && circle <= CIRCLES) {
mode = SWITCH_LAMP;
digitalWrite(RELAYPIN, LOW); // Переключаем на лампочку.
dischargeMs = millis();
Serial.print("Try "); Serial.println(circle);
Serial.print("Charge was "); Serial.print(chargeAh); Serial.println("Ah");
dischargeAh = 0.0;
Serial.println("LETS LIGHT!");
delay(100);
pressed = 1;
circle++;
if (circle > CIRCLES) Serial.println("Thats enough!");
}
}
// Идёт разряд, ожидаем падение напряжения.
if (mode == SWITCH_LAMP) {
dischargeAh += a * (millis() - dischargeMs) / 3600000.0;
dischargeMs = millis();
// Достигли дна по напряжению.
if (v < LIMIT) {
mode = SWITCH_CHARGER;
digitalWrite(RELAYPIN, HIGH); // Переключаем на зарядник.
start = millis();
Serial.println("TIME TO SUCK ELECTRICITY!");
unsigned long msec = millis() - start;
Serial.print("Discharge time ");
Serial.print(msec / 3600000); Serial.print("h ");
Serial.print((msec % 3600000) / 60000); Serial.print("m ");
Serial.print((msec % 60000) / 1000); Serial.print("s ");
Serial.println();
Serial.print("Appoximate capacity "); Serial.print(55 / 12);
Serial.println("Ah");
Serial.print("Disharge was "); Serial.print(dischargeAh); Serial.println("Ah");
chargeAh = 0.0;
}
// Переключить на зарядку принудительно.
if (pressed == 0 && digitalRead(BUTTONPIN) == LOW) {
mode = SWITCH_CHARGER;
digitalWrite(RELAYPIN, HIGH); // Переключаем на зарядник.
chargeMs = millis();
Serial.println("SUCK THE ELECTRICITY!");
Serial.print("Disharge was "); Serial.print(-dischargeAh); Serial.println("Ah");
chargeAh = 0.0;
if (circle > CIRCLES) Serial.println("LAST CHARGING!");
delay(100);
}
}
} else {
Serial.println("BAD POWER!");
}
if (tick == 0) {
Serial.print(" Disharge = "); Serial.print(-dischargeAh);
Serial.print(" Charge = "); Serial.print(chargeAh);
Serial.print(" Current = "); Serial.print(a);
Serial.print(" Voltage = "); Serial.println(v);
}
pressed = 0;
tick = ++tick % TICKS;
delay(1000); // Не спешим
}
Всякие дисплеи я не прикручивал, наблюдал за процессом с терминала через usb/serial.
В итоге, оба аккумулятора ожили и показали приличные амперчасы примерно соответствующие своим номиналам, что было даже удивительно для их возраста.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (55)
gearbox
12.01.2017 19:39+1По молодости делал похожую (по функционалу) схему для гальваники — никелировал поверхности, там тоже заряд/разряд определенной частоты и соотношения, аж ностальгия пробила пока читал! спасибо за статью. Эх, в наше время ардуины не было!
ilmarin77
12.01.2017 19:48У мотоциклов обычно батарея по технологии AGM сделана — их вроде хитрее надо заряжать:
nwwind
12.01.2017 19:49У меня был зарядник. Он это всё умел.
От меня только требовалось наоборот — разрядить батарейку, а потом подключить к заряднику.
electronus
13.01.2017 04:43+1AGM-ы содержат пластины легированные кальцием. Они никак не реагируют на десульфатацию, и в общем случае их восстановить нельзя.
mynameisdaniil
13.01.2017 07:55Так, по идее, вообще все аккумуляторы нужно заряжать: сначала постоянным током (то, что называется quick charge), потом постоянным напряжением добивать до 100%, пока ток не упадет. От химии и технологии зависят параметры зарядки, но суть процессов одна и та же, что для липольки в тонком телефоне, что для свинца под капотом в машине. Просто некоторые типы аккумуляторов допускают упрощенную зарядку.
Alex_Crack
12.01.2017 22:06+2Небольшое уточнение по опросу: лучше все же не выкинуть старый аккумулятор, а сдать на утилизацию. И природе поможете, и денюжку себе отложите.
MacIn
12.01.2017 22:36Спасибо за статью. Вспоминается, как собирал из 2-3 аккумуляторов один в бакелитовом корпусе для ретро-проектов. Вот там тренировать надо, пока плотность не наберет, раз 30. А тут как раз у менчя один подопытный полу-сдохший аккумулятор есть, и как раз недавно Аруино прикупил…
VT100
12.01.2017 23:46+1ЕМНИП, если подходить строго, то разряжать и заряжать токами, близкими к номиналу — это «контрольно-тренировочный цикл». А если нужна попытка десульфатации, на что намекает
Лампочка ближнего света горела примерно 10 минут и потом быстро перешла в состояние «слабо грею воздух».
то следует использовать не абы какой разряд-заряд, а с токами в несколько раз ниже номинальных. Т.е., для 6 А*ч, 6/10(ном. ток)/3..10(коэфф.) = 60..200 мА. Это делается для того, что-бы процесс шёл не только на поверхности и в неглубоких порах активной массы (что характерно для высоких токов), но и в глубине пор (где и начинает откладыватьсяжирсульфат свинца).
electronus
13.01.2017 04:47Как говорится: всегда найдется альтернатива на 555 для проекта на контроллере:
http://www.reuk.co.uk/wordpress/storage/battery-desulfation/
В Вашем случае можно сделать детектор/индикатор пикового напряжения на АЦП, а 555-ку эмулировать цифровым пином.
Хорошего дняuser343
13.01.2017 08:52В идеале надо выведать (отреверсить) логическими анализаторами алгоритмы работы чудо-мега-зарядных устройств А.Сороки с "электротранспорта" и повторять их, а уж кто чем сможет — дело 10-е.
Тот человек не один акк препарировал и много лет "в теме". На его эгоистично-коммерческие интересы "забить" ради общего блага и уменьшения числа свинцовых отходов-переплавок.
iCpu
13.01.2017 06:45+1[offtop] Так, я уже запутался. Железячники и DIY обитают на гиктаймсе или здесь? Если на гиктаймсе, то как переводить статьи и предупреждать пользователей по тегам? Если здесь, то почему статьи по умному дому не переносят на хабр? Если и там, и там, то нафига вообще нам сдалось это разделение? Сломать к чертям четвёртую стену! [/offtop]
Надо бы собрать дома на коленке из палок игсоплей и потренировать аккумуляторы от безперебойников. Какие могут быть подводные камни, что нужно читать на корпусах?user343
13.01.2017 09:05Железячники и DIY обитают на гиктаймсе или здесь?
На гиктаймсе обитают злые и надменные железячники, пишущие туториалы со словами "жопа", "по мимо" и т.д., разговаривают матом в комментах и минусуют за попытки выразить несогласие.
"Три буквы знает — назначаем бригадиром" :)
Сайт без кнопки "пожаловаться на комментарий" или коллективного исправления опечаток (Ctr+enter, орфусом) скатится "ниже плинтуса".
iCpu
13.01.2017 10:00+1На хабре обитают злые рерайтеры и переводчики, которые, с позволения сказать, посредственно переводят программистские тексты и набрасывают постцы для розжига застывших доменных печей. (Не путать с доменными именами!) А про тег «политика» и говорить страшно. Мне, например, непонятно, почему рейтинг комментариев под постами этой тематики вообще до сих пор учитывается.
После таких шедевров, слово «жопа» выглядит по детски милым. Как первоклашка, выучивший плохое слово и пугливо его выкрикивающий.
Сайт без кнопки «пожаловаться на комментарий» или коллективного исправления опечаток (Ctr+enter, орфусом) скатится «ниже плинтуса».
«Все эти стоны один-в-один напоминают те, что были, когда появилась семёрка, а до неё так же (да больше, больше!) страдали от ХР»
Увы и ах, если 10 лет назад скачать последнюю студию могли позволить себе только те, кому она была действительно нужна (у меня на тот момент исошник качался больше 8 суток), сегодня любой дошкольник может скачать юнити и по урокам на тытубе делать «игры». Или купить ардуину, которая стоит у китайцев примерно как двухлитровая кола или у нас как хеппи мил. Соответственно, из «элитарного» программирование, а вслед и ресурс, стали «массовыми». И это хорошо. Плохо, что он развивается ретроградскими методами: вместо введения шкалы сложности статей, нормальной системы создания и сопровождения обучающих материалов и путного расширения песочницы сайт поделили на три куска по совершенно непонятным критериям (точнее, хотели разделить новости, программирование и железяки, но получилось так, что лучше бы им откатиться назад до упора и просто усложнить иерархии хабов). Неразбериха от этого стала ещё больше, недовольство стало ещё больше, качество стало ещё хуже. Будем держать руку на
Bedalпульсекнопке F5.
P.S. Сорян, Bedal, твой коммент уж очень в тему всплыл, не смог удержаться.
Alexeyslav
13.01.2017 11:56Приведённую схему красивой может назвать только художник, и то только потому что использовано больше одного цвета. На самом деле, с инженерной точки зрения схема очень запутана и некрасива. Аккумулятор находится где-то в середине схемы, расположенный самым неудобнейшим образом. Он вообще должен быть изображен в самой правой части схемы логически отделённый от неё как внешний элемент, через клеммы.
Точно так же, изобразить источник питания схемы(зарядное) — в виде клемм в ЛЕВОЙ части схемы.
Общий провод должен быть в самой нижней части схемы, простота схемы вообще позволяет обойтись без вынесенных значков земли.
У изображённой ардуины убрать все неиспользуемые выходы, датчик тока вообще обозначен непонятным чёрным ящиком, и понять что это датчик тока можно только по косвенным признакам.
Логически все входные сигналы расположить в левой части модулей, а выходные в правой. Но есть и исключения — датчик тока таким образом расположить будет крайне неудобно, поскольку контролируемая цепь находится в правой части схемы, и для него делается исключение.
Схема должна быть понятной и очевидной. Да и упущен вопрос питания самой ардуины, там наверно ещё и DC-DC конвертор имеется с 12В в 5В? Который не изображён на схеме…
Да, разные цвета на схеме для компонентов и проводов предназначены лишь для удобства редактирования схемы, но «выходной документ» должен быть черно-белым.
А кстати, где-то на просторах интернета видел информацию о том что лучший алгоритм десульфатации — это те же заряд-разряд но с периодом в 20-40мс и скважностью 10 к 1.
VitGo
13.01.2017 12:43про способы заряда аккумуляторов можно почитать на форуме электротранспорта…
правда там автор уже нашел алгоритм и теперь занимается его усиленным шифрованием (чтобы не повторили) и предложением купить готовый зарядник…
правда самое полезное в его постах — это объяснение химии процессов заряда/разряда… — думаю многим было бы полезно почитать
x893
А сколько циклов прогнали пока он восстановился?
nwwind
6 на одном и 9 на другом.
Но это с перерывами. 3 цикла, день отдыха.