Десульфатация аккумулятора на DIGISPARK/ARDUINO.

Accelero
Offline
Зарегистрирован: 03.12.2014

Конец октября. За бортом целых +10. Сажусь в свой автомобиль, поворачиваю ключ иии....как-то вяло крутит стартер, а вольтметр на приборке (есть у меня привычка вольтаж смотреть) в момент пуска показал 7,5 вольт. По приезду глянул аккумулятор - он у меня с поплавком. Поплавка этого самого не видно (должен быть зелёный) - поставил аккумулятор на зарядку. Ток он почти не брал - минут 5 было 4 ампера, потом упал до 1го и стоял 12 часов, но поплавок так и не показался. Я уже морально смирился с потерей нескольких килорублей (а хороший аккум на 70а/ч стоит 6-8т.руб в среднем), но всё же решил поковырять интернеты, благо паяльник знаю с какой стороны держать, что уже полдела! В интернетах зацепили две разновидности схем - на тиристорах, которые 220 подводят на аккумулятор импульсами и схемы на всем известном и до боли знакомом таймере NE555. Первый вариант не устраивал по двум причинам. Во-первых в цепи 220, в т.ч. и на клеммах аккумулятора (а там где оголенные 220, там и ...бом токнет 146%), во-вторых для эффективности работы нужна целая охапка неполярных конденсаторов, которые к тому же быстро убиваются этой схемой. Остановился на ne555. Глянув схему прикинул "а зачем мне лепить всю эту обвязку, когда есть кучка digispark и всё можно (кроме катушки) смонтировать на ней прям?". Родилась такая вот схема (принципиальную рисовать было лень - просьба сильно не ругать:)):

Деталюшки использованы такие:

Транзистор irl540 - 1шт (на схеме irf1104, но он дороже и тут на не на)

Диоды 1n5408 - 2шт (не принципиально, главное на 3а и больше)

Конденсатор полярный 16в 470мкф - 1шт (лучше на 25 вольт)

Какое-то ферритовое кольцо со дна коробки с барахлом - 1шт

Витая пара (2 жилы) медная - 2,5м/~60 витков. Обмоточный провод кончился.

Резистор на 100-200ом - 1шт

Ну и диджиспарк - одна штука.

Прошиваем плату следующей сверхсложной программой:

//Исполнил Accelero One

unsigned long currentTime;
unsigned long loopTime;

void setup() {
pinMode(0,OUTPUT);

}

void loop() {
    currentTime = micros();
  if(currentTime >= (loopTime + 600)) //~1,5khz (600/650), ~4,5khz (200/210), ~450hz (2000/2200).
    {                      
    digitalWrite(0,HIGH);     
    }
  if(currentTime >= (loopTime + 650)) 
    {
    digitalWrite(0,LOW);
    loopTime = currentTime; 
    } 

}

Получается что-то типа шим. В комментарии несколько вариантов частот. Можно и свою частоту подобрать, главное чтоб рабочий цикл был не более 10-15%. 1,5кГц по тестам самое то! Визуально "выхлоп" с P0 выглядит так:

Далее навесным монтажом припаиваем всё на плату диджиспарк. Получается такое чудовище:

Далее мотаем катушку, стараясь не выколоть себе глаз и припаиваем к проводам от истока и плюса. Чтобы замерить напряжение импульсов нужно подключить какой-нибудь неполярный конденсатор на выход. Внимание! Без нагрузки транзистор может выбить! Да и напряжение на выходе ближе к сотне вольт - аккуратнее! В общем вот что получается, когда схема "заведётся" (источник ~11 вольт):

Оживлять аккумулятор следует так - заряжаем/разряжаем до 11-12 вольт, подключаем нашу схему последовательно с лампочкой на 12в 21вт (она же на картинке), подключаемся к аккумулятору и только ПОТОМ подаем питание. Далее главное не допускать перезаряда аккумулятора, т.к. схема даже при малых токах его кипятит при полном заряде. Циклы повторяем до получения результата. Мне хватило 3х циклов - зелёный поплавок всплыл, аккум начал брать заряд и куда более бодро проворачивать стартер! На пуске напряжение не падает ниже 8,7 вольт - результат достигнут, но надо бы ещё погонять, правда, как обычно, пока гром не грянет) Выкладываю краткое видео по изготовлению - там есть все необходимые ссылки, в т.ч. и на готовый похожий десульфататор на ne555, а также ссылка на более развёрнутое получасовое видео для тех, кто не спешит;)

https://youtu.be/GQN8HezlegQ

Удачи в программно-аппаратном творчестве!

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

никада так 

if(currentTime >= (loopTime + 650))

не делай

Accelero
Offline
Зарегистрирован: 03.12.2014

Сразу скажу две вещи - я не программист, но данная конструкция у меня работает во многих устройствах годами, в связи с чем вопрос. Почему так не делать и как надо правильно?)

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Accelero пишет:

Сразу скажу две вещи - я не программист, но данная конструкция у меня работает во многих устройствах годами, в связи с чем вопрос. Почему так не делать и как надо правильно?)

вместо

if(currentTime >= (loopTime + 650))

надо писать

if(currentTime - loopTime >= 650)

Это тот случай, когда "от перемены мест слагаемых"... ну и так далее ;))

Это особенности вычислений в компьютере с ограничением максимального числа. Сумма в которой результат вызовет переполнение - ошибочна, а вычитание ко всяким переполнениям нечувствительно.

На форуме есть тема "Великое переполнение millis()" - поищи её поиском.

-NMi-
Offline
Зарегистрирован: 20.08.2018

Accelero пишет:

(есть у меня привычка вольтаж смотреть) в момент пуска показал 7,5 вольт.

По приезду глянул аккумулятор - он у меня с поплавком. Поплавка этого самого не видно (должен быть зелёный)

В таком случае необходимо проверить плотность электролита в каждой банке при т=20гр. И если плотность в одной или нескольких банках "упала" - только фчирмет. НичО нипалучиццо сделать по причине того, что пластины физически разрушились и их растворила в себе кислота, вследствие этого и понизилась плотность. Поэтому и просаживается напряжение в момент прокрутки до 8 Вольт. Поплавок - это всего-лишь показометр и закручен он в одну банку, остальные пять банок он не видит. Так-шо толку от него почти 0.

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

По поводу скетча и всего остального: ну-жежь там-жежь тинька85. А в ней два таймера и ацп. Ну неужели нельзя было "приделать" вольтметр на светодиодах, кнопку изменения частоты а саму частоту сделать от таймера??? Ноги то свободные естью   Ну и апогеем был бы режим "длядуракофф" = включил и "пошёл", как только замигает зелёный светодиод - выключил.

PS: фигня это всё, еслиБ оно ещё работало и толк был бы...

 

Accelero
Offline
Зарегистрирован: 03.12.2014

wdrakula пишет:

Это тот случай, когда "от перемены мест слагаемых"... ну и так далее ;))

Большое спасибо! Буду иметь ввиду)

-NMi- пишет:
В таком случае необходимо проверить плотность электролита в каждой банке при т=20гр. И если плотность в одной или нескольких банках "упала" - только фчирмет. НичО нипалучиццо сделать по причине того, что пластины физически разрушились и их растворила в себе кислота, вследствие этого и понизилась плотность. Поэтому и просаживается напряжение в момент прокрутки до 8 Вольт. Поплавок - это всего-лишь показометр и закручен он в одну банку, остальные пять банок он не видит. Так-шо толку от него почти 0.

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

По поводу скетча и всего остального: ну-жежь там-жежь тинька85. А в ней два таймера и ацп. Ну неужели нельзя было "приделать" вольтметр на светодиодах, кнопку изменения частоты а саму частоту сделать от таймера??? Ноги то свободные естью   Ну и апогеем был бы режим "длядуракофф" = включил и "пошёл", как только замигает зелёный светодиод - выключил.

PS: фигня это всё, еслиБ оно ещё работало и толк был бы...

 

По пунктам. Плотность электролита не во всех аккумах можно корректно проверить, например в CA/CA аккумуляторах она неоднородна, пластины там в пакете. Поплавок в них довольно глубоко. В AGM плотность уже никак не померить, тут понятно. Да, физически разрушенные аккумуляторы спасет только их замена, но в случае с сульфатацией процесс обратим. Насколько обратим - зависит от степени запущенности. А вот по приделке вольтметров, диодов, защит от дурака и прочее - это, во-первых, пока в процессе, во вторых - схема усложниться очень значительно и не каждый её осилит. А вот по поводу Вашего P/S - нет, уважаемый, это не фигня и она работает! Владельцы солнечных батарей подобными девайсами успешно реанимируют подуставшие аккумуляторы почти "в завод". Одна из моих таких схем пашет нонстоп - соседям восстанавливаю аккумы. Пока попался только один мёртвый - остальные стали брать заряд и отдавать ток. Экспериментирую с частотами и индуктивностями - результаты интересные.

ЮриБас
Offline
Зарегистрирован: 13.01.2012

Accelero пишет:
  Далее главное не допускать перезаряда аккумулятора, т.к. схема даже при малых токах его кипятит при полном заряде. Циклы повторяем до получения результата. Мне хватило 3х циклов   

Можно в эту моргалку внедрить алгоритм окончания заряда с переходом в режим хранения типа "качели" ..  или в  режим  разряда,  добавив в схему всего один разрядный мосфет, что в принципе не сложно.  Это довольно существенно расширит функциональность почти без изменения (простой) схемы, позволит производить КТЦ с выходом в режим хранения.. и практически можно будет оставлять на длительный срок.  Есть форум, где это все уже воплощают в жизнь.. https://electrotransport.ru/ussr/index.php?topic=44520.msg1033420#msg1033420   

Accelero
Offline
Зарегистрирован: 03.12.2014

ЮриБас пишет:

Можно в эту моргалку внедрить алгоритм окончания заряда с переходом в режим хранения типа "качели" ..  или в  режим  разряда,  добавив в схему всего один разрядный мосфет, что в принципе не сложно.  Это довольно существенно расширит функциональность почти без изменения (простой) схемы, позволит производить КТЦ с выходом в режим хранения.. и практически можно будет оставлять на длительный срок.  Есть форум, где это все уже воплощают в жизнь.. https://electrotransport.ru/ussr/index.php?topic=44520.msg1033420#msg1033420   

Себе планирую сделать на подобие. Есть корпус от сгоревшего напрочь ориона (зарядник) - думаю на его базе сделать универсальную зарядку для всего и вся, плюс десульфатация с мониторчиком 1602. У самого в хозяйстве много "свинины", поэтому такой прибор будет востребован, а для человека, которому раз в 2-3 года взбодрить аккум на машине - это крутовато ИМХО) Тут пользователи, как правило, достаточно продвинутые (себя к ним не отношу - просто радиогубитель) - для них не проблема изготовить такое, а для новичков уже тяжеловато. Делаю упор на навесной монтаж, т.е. "на коленке".

ЮриБас
Offline
Зарегистрирован: 13.01.2012

Accelero пишет:
 .. а для новичков уже тяжеловато. Делаю упор на навесной монтаж, т.е. "на коленке".  

Ну добавить хотя бы три резистора в схему, не сильно затруднит..  два на делитель измерения напряжения, и один на шунт.

Схема (с мегой328 от 7 февр 2020) примерно такая 

Делитель можно сделать меньше на максимум = 20В т.е.  делит на 4 и R1 будет = 4кОм  Это даст во первых измерять напр. на АКБ и контролировать уровень заряда, а замер тока еще и регулировать ток заряда, что особенно важно на последнем этапе заряда в интервале 14,4-16,3В ..   Ввести функцию "качель" - для хранения АКБ и т.д. 

Алгоритм примерно такой: 1) Изначально мерится напряжение на АКБ (НРЦ) 2) Подаются импульсы и мерится ток и напряжение, далее идет подстройка частоты под заданные значения тока и напряжения. 3) В процессе заряда делаются паузы для релаксации и выравнивания токов внутри АКБ.   4) При достижении порога (14,4В) 14,7В  напряжение держится на этом уровне со снижением тока заряда до тех пор, пока ток не достигнет минмума и уже почти не будет снижаться + еще заряд в течении 2часов на таком режиме.  5) Далее пауза, в паузе мерится скорость падения напряжения  и если скорость снизится до 10мВ/10час или напряжение упадет ниже 12,6В - снова включается дозаряд до 14,7В.  и так далее. 

Это простой как бы вариант, почти полноценной заряжалки - моргалки.

Accelero
Offline
Зарегистрирован: 03.12.2014

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

ЮриБас
Offline
Зарегистрирован: 13.01.2012

Accelero пишет:
 В делитель напряжения ещё защита нужна, к примеру, на стабилитроне..  Ещё момент - на выходе есть некоторые пульсации напряжения и чем ниже ёмкость аккумулятора и ближе окончание заряда, тем они сильнее - придется программно реализовывать измерение напруги между импульсами.  

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

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

Для начала надо сделать функцию замера напряжения и тока,  затем  выдавать это в порт.. это позволит отладить код программы, чтобы измерения были адекватны и четко работало.   Конечно, применять обычный AnalogRead() тут уже не подойдет из за времени исполнения около 120мксек, это слишком много, а нам надо хоть как-то делать усреднения данных и т.д..   так что придется взять примеры из статей.   Еще надо будет ввести небольшую паузу,  чтобы периодически отправлять данные в порт (а потом и на дисплей), для релаксации тока в АКБ, замеров и анализа состояния АКБ.

Ардуинку на Меге328 (на мой взгляд) лучше применить, потому что цена почти такая же, размеры небольшие, ну и главное -  позволяет нарастить "немного мяса" на "кости" этой моргалки, а именно - кнопки, светодиоды для индикации, вывод данных на компьютер (в порт), измерять ток и напряжение..  ну и если дело пойдет хорошо -  подключить дисплей и добавить функцию разряда, добавив в схему всего один разрядный транзистор.. что в принципе должно сохранить способность собрать это все "на коленке" навесным монтажом.     В конечном итоге, все что делал автор вручную, должно будет максимально автоматизировано и можно будет даже вводить какие-то доп. режимы, вести лог данных и т.д.

-NMi-
Offline
Зарегистрирован: 20.08.2018

Придёццо собрать на 85 тинике, так сказать, шоббыло. Мошт кому впарю заящег срецтва ))) Естэственно, с кнопками и свэтодиодом.

kraus
Offline
Зарегистрирован: 07.07.2019

Тоже хотел сделать десульфататор+зарядник интеллектуальный, но старый зарядник сдох раньше чем сделал. По этому купил интеллектуальный зарядник OptiMate. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

-NMi- пишет:
Вождение хороводов вокруг дохлого акб - эт чотт шаманское. Мошт малитва какая есть, типа О... аккум, зарядись, йоптэ.

канечна есть 

inspiritus
Offline
Зарегистрирован: 17.12.2012

Как правило перечисленные симптомы это не сульфатация пластин, а их осыпание.

рад , что Вашему акууму полегчало, не мешало бы добавить электролит в банки.

Accelero
Offline
Зарегистрирован: 03.12.2014

Симптомы схожи, но тут именно сульфатация. Осыпавшиеся пластины ток давать уже не будут, а тут на лицо "выздоровление" как по току, так и по ёмкости.

SLKH
Offline
Зарегистрирован: 17.08.2015

ЮриБас пишет:

 Конечно, применять обычный AnalogRead() тут уже не подойдет из за времени исполнения около 120мксек, это слишком много, 

хмм... а куда спешить обычному analogRead()'у во время зарядки/десульфатации автомобильного аккумулятора? что ужасного может произойти за 120 микросекунд?

ЮриБас
Offline
Зарегистрирован: 13.01.2012

SLKH пишет:
  хмм... а куда спешить обычному analogRead()'у во время зарядки/десульфатации автомобильного аккумулятора? что ужасного может произойти за 120 микросекунд?  

Дело в том, что этот десульфатор-ЗУ работает по принципу повышающего преобразователя и частота импульсов приходящих на катушку находится в диапазоне 1,5кГц, т.е. длит импульса (при 50% коэф зап) будет не более 650мксек.   а нам надо контролировать выходное напряжение и ток этих импульсов.  Кроме того необходимо делать оверсемплинг, а это надо успеть сделать как минимум 10-20 выборок и потом еще затратить время на усреднение, на расчеты.  Если все это посчитать, то 120мксек это очень много, надо не более 12мксек.   Правда можно пойти по другому пути.. например, делать замеры за время в 0,1сек (100 000мксек),   и результат усреднять..  

SLKH
Offline
Зарегистрирован: 17.08.2015

ЮриБас пишет:

SLKH пишет:
  хмм... а куда спешить обычному analogRead()'у во время зарядки/десульфатации автомобильного аккумулятора? что ужасного может произойти за 120 микросекунд?  

Дело в том, что этот десульфатор-ЗУ работает по принципу повышающего преобразователя и частота импульсов приходящих на катушку находится в диапазоне 1,5кГц, т.е. длит импульса (при 50% коэф зап) будет не более 650мксек.   а нам надо контролировать выходное напряжение и ток этих импульсов. 

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

На схеме необходимо дорисовать конденсатор параллельно стабилитрону и RC фильтр на вход A1.

В результате, возможно, получится устройство для (под)заряда аккумулятора, ни о какой десульфатации речь не идет.

Для десульфатации нужно добавлять схему разряда (это несложно) и мужика, который будет доливать дистиллированную воду и замерять плотность электролита.

 

ЮриБас
Offline
Зарегистрирован: 13.01.2012

SLKH пишет:
 Для контроля тока времени хватает. Потом следует выключить преобразователь, выждать паузу (много миллисекунд) и тогда уже замерить напряжение на аккумуляторе.  На схеме необходимо дорисовать конденсатор параллельно стабилитрону и RC фильтр на вход A1.  

В результате, возможно, получится устройство для (под)заряда аккумулятора, ни о какой десульфатации речь не идет.  Для десульфатации нужно добавлять схему разряда (это несложно) и мужика, который будет доливать дистиллированную воду и замерять плотность электролита.  

Если добавить конденсатор параллельно стабилитрону и RC фильтр на вход А1, то вряд ли можно будет замерить например, пиковое напряжение в импульсе (хотя бы приблизительно).  Возможно (после опытов) так и будет - будет добавлен кондер и фильтр.

А десульфацию можно проводить по разному - 1) долбить короткими (мксек) импульсами с амплитудой от 40В и током в сотни Ампер..   и эти десульфаторы (в народе)  называются "ДОЛБИЛКИ" 2) Импульсами от нескольких десятков Гц до  кГц с напряжением прим 20-30В и током в несколько десятков Ампер называемые "МОРГАЛКАМИ"  3) Зарядные импульсы с разрядом, называемые "заряд с реверсом".  4) Десульфация постоянным/импульсным малым током с конечным напряжением 14,7-17В..      Ну и так далее.  

В Нашем случае схема позволяет проводить десульфацию по 2 и 4 пункту, а если добавить разрядный мосфет, то и по 3 пункту + проводить КТЦ, ну и само собой делать обычный заряд.    Воду необходимо доливать когда делается восстановление АКБ.  Профилактический заряд можно проводить и без долива воды.      

SLKH
Offline
Зарегистрирован: 17.08.2015

ЮриБас пишет:

SLKH пишет:
 Для контроля тока времени хватает. Потом следует выключить преобразователь, выждать паузу (много миллисекунд) и тогда уже замерить напряжение на аккумуляторе.  На схеме необходимо дорисовать конденсатор параллельно стабилитрону и RC фильтр на вход A1.  

В результате, возможно, получится устройство для (под)заряда аккумулятора, ни о какой десульфатации речь не идет.  Для десульфатации нужно добавлять схему разряда (это несложно) и мужика, который будет доливать дистиллированную воду и замерять плотность электролита.  

Если добавить конденсатор параллельно стабилитрону и RC фильтр на вход А1, то вряд ли можно будет замерить например, пиковое напряжение в импульсе 

а оно не особо и нужно. значительно информативнее напряжения с нагрузкой и без неё.

 

Цитата:
(хотя бы приблизительно).  Возможно (после опытов) так и будет - будет добавлен кондер и фильтр.

А десульфацию можно проводить по разному - 1) долбить короткими (мксек) импульсами с амплитудой от 40В и током в сотни Ампер..   и эти десульфаторы (в народе)  называются "ДОЛБИЛКИ" 2) Импульсами от нескольких десятков Гц до  кГц с напряжением прим 20-30В и током в несколько десятков Ампер называемые "МОРГАЛКАМИ"  3) Зарядные импульсы с разрядом, называемые "заряд с реверсом".  4) Десульфация постоянным/импульсным малым током с конечным напряжением 14,7-17В..      Ну и так далее. 

Десульфатация по принципу "заряд с реверсом" (нормальными токами без фанатизма) проводилась задолго до распространения в ширнармассах импульсной техники и иногда давала реальные результаты. А идеи с десятками вольт и сотнями ампер мне представляются, мягко выражаясь, сомнительными.

Цитата:

В Нашем случае схема позволяет проводить десульфацию по 2 и 4 пункту, а если добавить разрядный мосфет, то и по 3 пункту + проводить КТЦ, ну и само собой делать обычный заряд.    Воду необходимо доливать когда делается восстановление АКБ.  Профилактический заряд можно проводить и без долива воды.      

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

Accelero
Offline
Зарегистрирован: 03.12.2014

SLKH пишет:
А идеи с десятками вольт и сотнями ампер мне представляются, мягко выражаясь, сомнительными.

Дык десятки вольт тут имульс всего лишь - какие сотни ампер?) Это не той сложности схема, чтобы строить теории и ломать голову на тему "работает или нет?" ИМХО - практика тут решает. Почитал в инете, полазил по али, нашел похожую, полистал отзывы у разных продавцов - решающим был отзыв человека, у которого солнечная электростанция - выложил все замеры "до" и "после" - эффект есть! Мой аккумулятор, что в машине прошел ещё пару циклов - теперь на пуске уже 10,3в (практически номинал), зелёный поплавок больше не "убегает", т.е. заряд берёт нормально. Напомню: до "обработки" поплавок не показывался, аккумулятор заряд не брал толком, на пуске напряжение просаживалось до 7 вольт (при +10 тепла), после трёх циклов появился заряд, на пуске стало больше 9 вольт, потом недавно прошёл ещё пару циклов - уже 10,3в при -1 градусе тепла.

Вывод - схема работает, причем заметно. Сейчас оживляю "труп" о 70ач, из которых 10 осталось, пусковой ток уже не дает ессна. Дня 4ре его мучаю - уже 21ач, ток пока не проверял. Мучаю дальше ;)

ЮриБас
Offline
Зарегистрирован: 13.01.2012

SLKH я Вам привел примеры десульфации которые не сам придумал, а которые реально работают во многих серийных ЗУ и много раз обсуждаемые на специализированных форумах по этим вопросам и испробованных на практике.  Поэтому нет смысла разводить здесь дискуссию.  Контроль уровня и плотности, долив воды и тому подобное - уже другая тема, которая касается обслуживания АКБ в целом.

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

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

SLKH
Offline
Зарегистрирован: 17.08.2015

Accelero пишет:

SLKH пишет:
А идеи с десятками вольт и сотнями ампер мне представляются, мягко выражаясь, сомнительными.

Дык десятки вольт тут имульс всего лишь - какие сотни ампер?) 

Вот эти: "... импульсами с амплитудой от 40В и током в сотни Ампер.."

 

SLKH
Offline
Зарегистрирован: 17.08.2015

ЮриБас пишет:

SLKH я Вам привел примеры десульфации которые не сам придумал, а которые реально работают во многих серийных ЗУ и много раз обсуждаемые на специализированных форумах по этим вопросам и испробованных на практике.  Поэтому нет смысла разводить здесь дискуссию. 

да мне не жалко.

Развлечение это достаточно безобидное, речь всё равно идет о полудохлых аккумуляторах. Или его характеристики улучшатся, или не изменятся, или он совсем сдохнет - в любом случае не критично. 

 

ЮриБас
Offline
Зарегистрирован: 13.01.2012

Самое лучшее - это дать дельный совет, по скетчу или по схеме.  Вот скетч простого варианта  

/* 
 *  16 февр 2020 Простой вариант моргалки и окончания заряда по верхнему порогу с переходом в качели
 *  Опорное вн  = 1,1В  вх. делитель = 1:31   Резисторы 1к и 30 кОм  Макс вх.напр = 34,1В 
 *  Точность измерений =  33000/1024 =0,032V  или с оверсемпл = 0,05V.. 
 *  Значение АЦП = 441 соотв 14,7В  Чтобы вычислять напряжение нужно знач АЦП * на 0,03333
 *  Версия Ардуино ИДЕ 1.8.9
 *  ==   АЛГОРИТМ -  
 *  Позволяет оставлять моргалку на сколь угодно долгое время, исключает перезаряд.
 *  А также данные выводятся в порт и можно смотреть графики заряда.
 *  При запуске проверяется напряжение, если на входе ниже 0,9В то заряд не включается и изм НРЦ.
 *  ЗАРЯД включаются импульсы заряда пока напряжение не дойдет до верхнего порога 
 *      или длит не превысит установленное значение. 
 *      если не достинут порог а длит имп. превышена - включается пауза, идут измерения далее заряд
 *  При достижении верхнего порока включается качели
 *    в качелях измеряется НРЦ и время, даже если НРЦ достигло нижнего порога но время не вышле
 *    пауза-качели продолжается.. если порог достигнут и время вышел - включается заряд по новой.
  *  Результат компиляции на 22/02/20 6:32 - Скетч использует 5134 байт
  */

 
unsigned long currentTime, loopTime; // переменные от первого скетча
unsigned long time, time1, time2 ; 

// параметры заряда, паузы и качель
unsigned long time_kachel = 300000; // мин время качелей  (5мин)
unsigned long time_imp = 50000;     //  длит заряда 50сек
unsigned long time_pauza = 7000;    // пауза 7 сек

//измерения
float V, V1,I;    //переменные изм. напряжения и тока
float V_high = 14.7; // ВЕРХНИЙ ПОРОГ 
float Kv = 0.033333;  // коэф на который надо умножит знач АЦП чтобы получить напряжение в Вольтах. 
//float V_high = 441; // верхний порог без перевода в вольты
float V_low = 13.1; // НИЖНИЙ ПОРОГ  для качелей (подбирается по типу и состоянию акб)
//float V_low = 393; // НИЖНИЙ ПОРОГ  для качелей (подбирается по типу и состоянию акб)

int j ;  // счетчик
int  srednee = 1000; // переменная =  количеству измерений в усреднении
//int  srednee2 = 100; // переменная =  количеству измерений в усреднении

// назначение пинов ардуины
#define  VoltagePin A0    //Пин измерения напряжения на АКБ 
#define  CarrentPin A1    //Пин измерения тока
#define  MosfetPin A2    //Пин управления ключом заряда

void setup() {
analogReference(INTERNAL); // опорное будет 1.1V
Serial.begin(9600);  
pinMode(VoltagePin,INPUT);
pinMode(CarrentPin,INPUT);
pinMode(MosfetPin,OUTPUT);
Serial.println("sketch Mega328 ");Serial.print("22.02.2020 ");
 
 // цилкл проверки НРЦ на входе, если нет - то ждет пока не появится!
 V1 = 0 ;
 do {
         for (j = 1; j < srednee; j++) {
                    V1 = analogRead(VoltagePin) + V1; 
          }
     V = V1/srednee * Kv ;  //получаем усредненное значение НРЦ
     Serial.println(" Vakb  = "); Serial.print(V,2);
     delay(1000);  // 
 } while (V > 0.9);
    Serial.println(" Vakb  = "); Serial.print(V,2);
    Serial.println(" Zariad !... ");
}

 void loop() 
 {
    Accelero();   // процедура заряда с заданной длительностью (time_imp = 50000)в млсек.  
    V = analogRead(VoltagePin) * Kv;  // измерение напряжения на АКБ
    if(V >= V_high)
    { 
        Kacheli();       
    }
         Pauza();
 }  

//---------------------БЛОК ПРОЦЕДУР И ФУНКЦИЙ  -------------------------------------------

// функция измерения напряжения

//Функция измерения напряжения с оверсемплингом

// процедура формирования зарядно-десульфирующих импульсов от Accelero
void Accelero() 
{
  time = millis();
      do {
          currentTime = micros();
        if(currentTime >= (loopTime + 600)) //~1,5khz (600/650), ~4,5khz (200/210), ~450hz (2000/2200).
          {                      
          digitalWrite(MosfetPin,HIGH);     
          }
        if(currentTime >= (loopTime + 650)) 
          {
          digitalWrite(MosfetPin,LOW);
          loopTime = currentTime; 
          } 
      time2 = millis()- time ;
      } while (time2 >= time_imp);
//  return;
} // end void Accelero()

// процедура паузы ----------------------------------------------------------------------
  void Pauza()
{
  int j ;
time = millis();
// крутим цикл – измеряем напряжение и время
do {
 V1 = 0 ;
 do {
         for (j = 1; j < srednee; j++) {
                    V1 = analogRead(VoltagePin) + V1; 
          }
     V = V1/srednee * Kv ;  //получаем усредненное значение НРЦ
     Serial.println(" Vakb  = "); Serial.print(V,2);
     delay(1000);  // 
 } while (V > 0.9);
    Serial.println(" Vakb  = "); Serial.print(V,2); Serial.print(" .. PAUZA... ");
   
 time2 = millis()- time ;
} while (time_pauza >=time2);
  //  return;
}   // -------------------------------------------------------------------------

// ПРОЦЕДУРА КАЧЕЛЬ ----------------------------------------------------------------------
  void Kacheli()
{
   time = millis();
   // крутим цикл – измеряем напряжение и время
   do {
         for (j = 1; j < srednee; j++) {
             V1 = analogRead(VoltagePin) + V1; 
         }
     
     V = V1/srednee * Kv ;  //получаем усредненное значение НРЦ
     time2 = millis()- time ;
     Serial.println(" Vakb  = "); Serial.print(V,2); Serial.print("    .. Kacheli..  "); 
     delay(2000);  
    } while((time_kachel >= time2) && (V <= V_low));
    //  return;
}  // ---------------------------------------------------------------------------------------

// -----------------КОНЕЦ БЛОКА С ФУНКЦИЯМИ И ПРОЦЕДУРАМИ ------------------

Скетч еще не проверен в деле..  но уже можно от чего-то отталкиваться.    Основные параметры:    длит заряда = 50сек, пауза 7 сек.  После достижения напряжения на АКБ до 14,7В включаются качели минимум на 5 минут с нижним порогом до 13,1В..  нижний порог можно поменять до 12,8 или сделать другой.

Кардинально улучшить функциональность можно путем измерения и управление током заряда, но тогда надо делать генерацию ШИМом т.е. командой analogWrite();  а измерять уже улучшенной функцией изм. напр.. наметки уже есть.

 

Из статьи https://alexgyver.ru/lessons/pwm-overclock/   устанавливаем частоту регистрами и затем запускаем analogWrite();

// пример использования analogWrite() с предустановкой регистрами для меги328

void setup() {

// Пины D9 и D10 устанавливаются на выход 2 кГц 10bit (1024)
       TCCR1A = 0b00000011; // 10bit
       TCCR1B = 0b00001010; // x8 fast pwm
  
     // устанавливаем ШИМ на 9 пине с  коэф зап = 90
       analogWrite(9, 90);    //    длит имп =45мксек,  пауза = 455мксек
}

void loop() {

}

Можно сначала сделать подбор частоты, но надо уже использовать библиотеку из той же статьи.

// установка частоты с помощью библиотеки из статьи
#include "GyverPWM.h"

void setup() {
     pinMode(9, OUTPUT);
     PWM_frequency(9, 1540, FAST_PWM);  //ШИМ на D9 с частотой 1540 Гц и 8бит
     
       // устанавливаем ШИМ на 9 пине с  коэф зап = 19  аналогично - analogWrite(9, 19)
       PWM_set(9, 19);  //    длит имп =50мксек,  пауза = 600мксек  все как в оригинале
}

void loop() {
}

Так..  теперь надо повысить разрядность ШИМ..  8 бит маловато, сделаем 10 бит, должно хватить.

#include "GyverPWM.h"
void setup() {
     pinMode(9, OUTPUT);
     PWM_frequency(9, 1540, FAST_PWM);  //ШИМ на D9 с частотой 1540 Гц и 8бит
     PWM_resolution(9, 10, FAST_PWM);  //ШИМ на D9 и 10 бит (уже с частотой 1540 Гц)

       // устанавливаем ШИМ на 9 пине с  коэф зап = 19  аналогично - analogWrite(9, 19)
       PWM_set(9, 79);  //    длит имп =50мксек,  пауза = 600мксек  все как в оригинале 
}
void loop() {
}

Итого, по идее, мы можем запустить ШИМ и одновременно мерить напряжение.. в этом случае можно использовать обычный аналогРид() с усреднением.. и считывать напряжение на АКБ во время заряда.. а также и считывать ток.    Теперь что у нас по времени.. если усреднять 1000 считываний, то должно хватить на более менее стабильные данные (достаточно с разрешением 0,1В)..  при этом все время займет около 120мкс*1000 =120-200млсек.. (4 раза в секунду)  в принципе должно хватить. 

 

// 22/02/2020 делаем 10 сек заряд и 10 сек пауза - проверка работы
// во время паузы можно снять клемму с АКБ и ШИМ (заряд) не будет идти

#include <GyverPWM.h> // библиотека c сайта  "    https://alexgyver.ru  "
#define  VoltagePin A0    //Пин измерения напряжения на АКБ 
#define  CarrentPin A1    //Пин измерения тока
#define  MosfetPin 9    //Пин управления ключом заряда

float V, V1, I ;    //переменные изм. напряжения и тока
float V_high = 14.7; // ВЕРХНИЙ ПОРОГ 
float Kv = 0.033333;  // коэф для преобр в Вольты (делитель 1кОм и 30кОм

unsigned long currentTime, loopTime; // переменные от первого скетча
unsigned long time, time1, time2,  time3, startTime;

int j ;  // счетчик
int  srednee = 1000; // переменная =  количеству измерений в усреднении

  void setup() {
       analogReference(INTERNAL); // опорное 1.1V
       Serial.begin(9600);  // уст скорость в порту
       pinMode(CarrentPin,INPUT);  // пин для изм тока
       pinMode(VoltagePin,INPUT);  // пин для изм напряжения на АКБ.
       pinMode(MosfetPin, OUTPUT);   // пин управления зарядом (мосфетом)
       PWM_frequency(MosfetPin, 1540, FAST_PWM);  //ШИМ на D9 с частотой 1540 Гц и 8бит
       PWM_resolution(MosfetPin, 10, FAST_PWM);  //ШИМ на D9 и 10 бит (уже с частотой 1540 Гц)
       startTime = millis();  
  }

void loop() {     // основной цикл программы
    // micros(); 
    time2  = 0;  time  = 0;  time1 = millis(), time3 = millis(),
   // запускаем генерацию  ШИМа на 9  пине с  коэф зап = 79 
   PWM_set(MosfetPin, 79);  //    длит имп =50мксек,  пауза = 600мксек  все как в оригинале 

   // и теперь делаем измерение напряжения на АКБ во время заряда
    
    do {
         
         V1 = 0 ; //сброс значения напряжения
         for (j = 1; j < srednee; j++) {
                    V1 = analogRead(VoltagePin) + V1; 
          }
          V = V1/srednee * Kv ;  //получаем усредненное значение НРЦ

         //  пробуем выдать данные в порт с интервалом в 1 секунду 
          time = millis()- time1 ;   // отсчет 1000 млсек  (1 сек)
          if(time >= 1000) {
                  Serial.println(" Vakb  = "); Serial.print(V,2);  
                  Serial.println(" currentTime sek  = "); Serial.print(currentTime/1000000); 
                  time  = 0;  time1 = millis();  // для осчета по новой..
          }
                   
          time2 = millis()- time3 ;  // высчитываем время длит заряда
      } while((V >= V_high )  &&  ( time2 >= 10000));  //  если напр. выше 14,7 или прошло 10сек выход из цикла

    digitalWrite(MosfetPin, LOW);  // выключаем генерацию ШИМ  (выкл. тока заряда)
    Serial.println(" Vakb  = "); Serial.print(V,2);  // выдаем напр. на АКБ  в порт
    Serial.println(" Time sek =   "); Serial.print((millis() - startTime)/1000);  // общ. время
    Serial.println(" Start Pauza  10 sek ... "); 
    // надо бы зажечь светодиодик обозначающий паузу.. чтобы в этот момент можно было отсоединить АКБ.
    // delay(10000); // 10сек пауза ..
    
    
     /* сделаем на всяк случай безопасное отключение - крутим цикл 
        Если 10сек не прошло и на входе нет напр выше 0,9В 
        (АКБ не подсоединен) то впадаем в цикл ожидания появления напр.
     */
     time = 0; time2  = 0; time1 = millis();  time3 = millis();
     do {
                V1 = 0;
                for (j = 1; j < srednee; j++) {
                      V1 = analogRead(VoltagePin) + V1; 
                }
                
                V = V1/srednee * Kv ;  //получаем усредненное значение НРЦ
                time2 = millis()- time3 ;  // отсчет 1 сек.
                time = millis()- time1 ;  // общее время в цикле
                
                if(time2 >= 1000) {
                      Serial.println(" Vakb =  "); Serial.print(V,2); 
                      Serial.println(" Pauza sek =  ");  Serial.print( time/1000);  
                      time2 = 0;  time3 = millis();  // для осчета по новой..
                }
          
     } while ((V > 0.9) && (time >= 10000 ));  
     
     Serial.println(" END Pauza ! - Start Zariad!"); 
     Serial.println(" Vakb =  "); Serial.print(V,2); 

}

Как бы должно работать..   получился тестовый скетч для проверки измерений, для проверки генерации импульсов,   -  можно проверить на той же катушке, что первоначально использовалась в проекте..    Параметры, импульсов - частота (1540Гц) , длит импульса (50мксек) и паузы(600мксек)  (если не врет прога и Ардуина и не накосячил с лихвой), должны совпадать с первоначальными настройками.  Сегодня как бы работка понемногу идет.. 

ЮриБас
Offline
Зарегистрирован: 13.01.2012

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

  По крупному - надо сделать функцию подбора и удержания заданного тока заряда на основном заряде до 14,4В и потом плавно снижать ток вплоть до минимума.. наверное надо будет повышать разрядность ШИМ до 12бит..  Наверное это самый сложный этап как в программе, так и в настройке схемы..  Хотя если получится, то можно будет брать любую более менее подходящую катушку, а программа сама настроит под оптимальный ток..  было бы неплохо.   

  На первом этапе ток будет задаваться жестко в сэтапе, в последствии через меню кнопками (энкодером) или через порт.   Начнем пожалуй с тока до 10-20А в импульсе.. в среднем это будет не больше 3-6А,  значение которого (если что) можно будет поменять в сэтапе в любых (почти) пределах. Для автомобильных АКБ как раз.    Катушка и мосфет должны подходить по параметрам..   Интересно, что нам  может дать 10 разрядный ШИМ если максимальный ток будет 20А?  20000мА/1023 = т.е. шаг примерно будет =  20мА.. с натяжкой должно хватить, если что перейдем на 12 битный. 

Также надо будет доработать процедуру качель.. качели надо будет начинать тогда, когда ток упадет до минимума = 0,001С т.е. 0,1% от емкости АКБ по паспорту, что от 60Ач АКБ будет составлять 0,06А (60мА).. или уже не будет понижаться, встанет "колом"  на каком-то одном значении.  А также надо будет сделать замеры саморазряда в паузе (что важно для анализа) и нижний порог по скорости падения напряжения.

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