СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

| сохранено

H Тренировка кислотного аккумулятора кое-как и своими руками в черновиках

Печаль. Сдох аккумулятор, незаслуженно забытый зимой в гараже. Я его вынул из мотоцикла, то ли сигнализация сожрала всё, то ли не зарядился в прошлые покатушки. Напряжометр показывал 9В, что есть криминал.

Я принёс батарею домой, отогрел, подключил к заряднику. Зарядник через полчаса показал ОК. Врал. Ничего там не ок. Лампочка ближнего света горела примерно 10 минут и потом быстро перешла в состояние «слабо грею воздух». Аккумулятор 6Ач, лампочка 55Вт.

Не покупать же новый аккумулятор? Зима, время есть. Есть ардуина даже и коробка всяких чипсов из Китая. Зря пылятся там что ли?

image

В далёкой советской армии 30 лет назад я проходил курс ухода за аккумуляторами. Основное отличие его от инструкций 21 века было таким: батарея должна проходить серию циклов заряда и разряда. Без этого, сколько её в заряднике не держи, какой бы он ни был умный, она сдохнет.

Теория процесса нагугливается легко. Практически же надо разрядить небольшим током в несколько ампер до 10.8В, а потом зарядить до упора. И так несколько раз. Смотреть на лампочку быстро наскучило и я нарисовал схему прибора.

image

Так как я не профессиональный реаниматор батареек, я собрал всё кое-как. Ну, как положено любителю ардуины.

image

Так как я оказался в этой ситуации не один, я оформил проект на гитхабе, чтобы другие тоже могли пользоваться, и даже положил туда красивую схему, нарисовав её в easyeda.com

image

Аналоговые ноги считывали напряжение и ток, потенциометр делил напряжение аккумулятора примерно на три. При падении напряжения ниже 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.

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

комментарии (25)

0
x893 ,  
А сколько циклов прогнали пока он восстановился?
0
nwwind ,  
6 на одном и 9 на другом.
Но это с перерывами. 3 цикла, день отдыха.
+1
gearbox ,  
По молодости делал похожую (по функционалу) схему для гальваники — никелировал поверхности, там тоже заряд/разряд определенной частоты и соотношения, аж ностальгия пробила пока читал! спасибо за статью. Эх, в наше время ардуины не было!
0
nwwind ,  
В давнее время было реле и звонок. Я по звонку бежал переключать на заряд. :)
0
gearbox ,  
Это у Вас совсем сурово молодость прошла. Я то уже тиристоры успел застать )
0
ilmarin77 ,  
У мотоциклов обычно батарея по технологии AGM сделана — их вроде хитрее надо заряжать:
image
0
nwwind ,  
У меня был зарядник. Он это всё умел.
От меня только требовалось наоборот — разрядить батарейку, а потом подключить к заряднику.
+1
electronus ,  
AGM-ы содержат пластины легированные кальцием. Они никак не реагируют на десульфатацию, и в общем случае их восстановить нельзя.
0
mynameisdaniil ,  
Так, по идее, вообще все аккумуляторы нужно заряжать: сначала постоянным током (то, что называется quick charge), потом постоянным напряжением добивать до 100%, пока ток не упадет. От химии и технологии зависят параметры зарядки, но суть процессов одна и та же, что для липольки в тонком телефоне, что для свинца под капотом в машине. Просто некоторые типы аккумуляторов допускают упрощенную зарядку.
0
rus51 ,  
Интересно, спасибо!
0
nwwind ,  
Всегда пожалуйста!
+2
Alex_Crack ,  
Небольшое уточнение по опросу: лучше все же не выкинуть старый аккумулятор, а сдать на утилизацию. И природе поможете, и денюжку себе отложите.
0
MacIn ,  
Спасибо за статью. Вспоминается, как собирал из 2-3 аккумуляторов один в бакелитовом корпусе для ретро-проектов. Вот там тренировать надо, пока плотность не наберет, раз 30. А тут как раз у менчя один подопытный полу-сдохший аккумулятор есть, и как раз недавно Аруино прикупил…
+1
VT100 ,  
ЕМНИП, если подходить строго, то разряжать и заряжать токами, близкими к номиналу — это «контрольно-тренировочный цикл». А если нужна попытка десульфатации, на что намекает
Лампочка ближнего света горела примерно 10 минут и потом быстро перешла в состояние «слабо грею воздух».

то следует использовать не абы какой разряд-заряд, а с токами в несколько раз ниже номинальных. Т.е., для 6 А*ч, 6/10(ном. ток)/3..10(коэфф.) = 60..200 мА. Это делается для того, что-бы процесс шёл не только на поверхности и в неглубоких порах активной массы (что характерно для высоких токов), но и в глубине пор (где и начинает откладываться жир сульфат свинца).
+2
shushu ,  
Отдельное спасибо за easyeda.com!
0
Jump ,  
А разряд до 10,8В не слишком?
Насколько я помню ниже 11,8В разряжать не рекомендуется вообще, даже кратковременно. Особенно те что с кальцием.
0
jar_ohty ,  
Именно 10,8 под нагрузкой. А вот хранить при напряжении хх ниже 12 В нельзя.
0
electronus ,  
Как говорится: всегда найдется альтернатива на 555 для проекта на контроллере:
http://www.reuk.co.uk/wordpress/storage/battery-desulfation/
В Вашем случае можно сделать детектор/индикатор пикового напряжения на АЦП, а 555-ку эмулировать цифровым пином.
Хорошего дня
0
user343 ,  

В идеале надо выведать (отреверсить) логическими анализаторами алгоритмы работы чудо-мега-зарядных устройств А.Сороки с "электротранспорта" и повторять их, а уж кто чем сможет — дело 10-е.
Тот человек не один акк препарировал и много лет "в теме". На его эгоистично-коммерческие интересы "забить" ради общего блага и уменьшения числа свинцовых отходов-переплавок.

+1
iCpu ,   * (был изменён)
[offtop] Так, я уже запутался. Железячники и DIY обитают на гиктаймсе или здесь? Если на гиктаймсе, то как переводить статьи и предупреждать пользователей по тегам? Если здесь, то почему статьи по умному дому не переносят на хабр? Если и там, и там, то нафига вообще нам сдалось это разделение? Сломать к чертям четвёртую стену! [/offtop]

Надо бы собрать дома на коленке из палок и гсоплей и потренировать аккумуляторы от безперебойников. Какие могут быть подводные камни, что нужно читать на корпусах?
0
user343 ,  
Железячники и DIY обитают на гиктаймсе или здесь?

На гиктаймсе обитают злые и надменные железячники, пишущие туториалы со словами "жопа", "по мимо" и т.д., разговаривают матом в комментах и минусуют за попытки выразить несогласие.


"Три буквы знает — назначаем бригадиром" :)


Сайт без кнопки "пожаловаться на комментарий" или коллективного исправления опечаток (Ctr+enter, орфусом) скатится "ниже плинтуса".

+1
iCpu ,  
На хабре обитают злые рерайтеры и переводчики, которые, с позволения сказать, посредственно переводят программистские тексты и набрасывают постцы для розжига застывших доменных печей. (Не путать с доменными именами!) А про тег «политика» и говорить страшно. Мне, например, непонятно, почему рейтинг комментариев под постами этой тематики вообще до сих пор учитывается.
После таких шедевров, слово «жопа» выглядит по детски милым. Как первоклашка, выучивший плохое слово и пугливо его выкрикивающий.

Сайт без кнопки «пожаловаться на комментарий» или коллективного исправления опечаток (Ctr+enter, орфусом) скатится «ниже плинтуса».
«Все эти стоны один-в-один напоминают те, что были, когда появилась семёрка, а до неё так же (да больше, больше!) страдали от ХР»
Bedal
Увы и ах, если 10 лет назад скачать последнюю студию могли позволить себе только те, кому она была действительно нужна (у меня на тот момент исошник качался больше 8 суток), сегодня любой дошкольник может скачать юнити и по урокам на тытубе делать «игры». Или купить ардуину, которая стоит у китайцев примерно как двухлитровая кола или у нас как хеппи мил. Соответственно, из «элитарного» программирование, а вслед и ресурс, стали «массовыми». И это хорошо. Плохо, что он развивается ретроградскими методами: вместо введения шкалы сложности статей, нормальной системы создания и сопровождения обучающих материалов и путного расширения песочницы сайт поделили на три куска по совершенно непонятным критериям (точнее, хотели разделить новости, программирование и железяки, но получилось так, что лучше бы им откатиться назад до упора и просто усложнить иерархии хабов). Неразбериха от этого стала ещё больше, недовольство стало ещё больше, качество стало ещё хуже. Будем держать руку на пульсе кнопке F5.

P.S. Сорян, Bedal, твой коммент уж очень в тему всплыл, не смог удержаться.
+1
roboter ,  
Поиграть как в статье написано и продать.
0
Alexeyslav ,   * (был изменён)
Приведённую схему красивой может назвать только художник, и то только потому что использовано больше одного цвета. На самом деле, с инженерной точки зрения схема очень запутана и некрасива. Аккумулятор находится где-то в середине схемы, расположенный самым неудобнейшим образом. Он вообще должен быть изображен в самой правой части схемы логически отделённый от неё как внешний элемент, через клеммы.
Точно так же, изобразить источник питания схемы(зарядное) — в виде клемм в ЛЕВОЙ части схемы.
Общий провод должен быть в самой нижней части схемы, простота схемы вообще позволяет обойтись без вынесенных значков земли.
У изображённой ардуины убрать все неиспользуемые выходы, датчик тока вообще обозначен непонятным чёрным ящиком, и понять что это датчик тока можно только по косвенным признакам.
Логически все входные сигналы расположить в левой части модулей, а выходные в правой. Но есть и исключения — датчик тока таким образом расположить будет крайне неудобно, поскольку контролируемая цепь находится в правой части схемы, и для него делается исключение.

Схема должна быть понятной и очевидной. Да и упущен вопрос питания самой ардуины, там наверно ещё и DC-DC конвертор имеется с 12В в 5В? Который не изображён на схеме…

Да, разные цвета на схеме для компонентов и проводов предназначены лишь для удобства редактирования схемы, но «выходной документ» должен быть черно-белым.

А кстати, где-то на просторах интернета видел информацию о том что лучший алгоритм десульфатации — это те же заряд-разряд но с периодом в 20-40мс и скважностью 10 к 1.
0
VitGo ,  
про способы заряда аккумуляторов можно почитать на форуме электротранспорта…

правда там автор уже нашел алгоритм и теперь занимается его усиленным шифрованием (чтобы не повторили) и предложением купить готовый зарядник…

правда самое полезное в его постах — это объяснение химии процессов заряда/разряда… — думаю многим было бы полезно почитать