Зарядное для свинцового АКБ.

Mikhail_Sakh
Offline
Зарегистрирован: 03.04.2014

Доброго времени суток, ардуино-пользователи!

Возникла необходимость установить в авто ЗУ для АКБ малой(1,2 Ah) ёмоксти. Собрать хотел на базе ардуино. Накидал на макетке вольтметр. Расхождение с лаборатоным +-пару соток (не критично). Накидал ШИМ регулятор на IRF740B. Тоже работает отлично. При вращении потенциометра от 0 до МАХ меняется яркоть светодиодной ленты. Заводской вольтметр показывает напряжение от 0 до 11,4В соответственно(напряжение питания 12В). Но при установленном в 0 потенциометре и  попытке замерить напряжение (по схеме) на лабораторном вольтметре появляется напряжение  4.6В при этом на вольтметре на базе ардуино 24В (в скетче использовал напряженин = 24В т.е. 24/1024=0,0234375).

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

Вот такой головняк...

Помогите решить. 

Схема

Делитель пока на переменном резисторе 100кОм.

 

 

Скетч:

void setup() {
 
  Serial.begin(9600);
}
 
void loop() {
 
  float average = 0;
  for(int i = 0; i < 300; i++) {
    average = average + (0,0234375 * analogRead(A0)) / 300;
    delay(1);
  }
  int val = analogRead(A1);
  val = map(val, 0, 1023, 0, 255);
  analogWrite(9, val);
  Serial.print("V = ");
  Serial.println(average);
  Serial.print("val = ");
  Serial.println(val);
}

 

art100
Offline
Зарегистрирован: 09.03.2014

может програмно функцию map поковырять погрубее

потенциометр всегда шумит а ЦАП чувствет это и начинаются чудеса

сам думаю над этим 

как аналогвый джойстик загрубить на 9 положений

если нащупаете подскажите

  joyx = analogRead(joypinx); 
  joystep1=map(joyx,0,1023, 0, 600); 
 delay(1); 
  joyy = analogRead(joypiny); 
  joystep2=map(joyx,0,1023, 0,600); 

я свои потенциоометры пытаюсь загрубить 

0 думаю плохо

но пока не нащупал оптимально

может 10,600

когда ардуинки были в дифиците на 5 вольт питание ЦАП-ов индуктивность вешал с емкостью чтоб 0 успокоить 

может и в наших чуток без дросселечков шумят заразы

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

art100, загрубить можно сам аналоговый вход, вернее его разрядность. joyx=analogRead(joypinx)>>7;  получите "переключатель" на 8 положений, если сделать >>6 , то на 16 положений :)

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Mikhail_Sakh, что-бы измерять постоянное напряжение после ШИМа нужна RC-цепочка. Но заряжать аккум голым ШИМом думаю не стоит, лучше использовать либо специализированный контроллер, либо самому сделать стабилизатор тока с ограничением макс. напряжения. PS: конечно можно и шимом заряжать, но после транзистора поставить диод,  дроссель, и конденсатор. Но всё это не избавляет от необходимости контролировать ток, так что лучше что-то специальное применить.

art100
Offline
Зарегистрирован: 09.03.2014

dimax спасибо за двойную стрелочку >> совсем забыл

одна голова хорошо а две лучше :)

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

Собрал MPPT-контроллер на ардуино, принцип практически тот-же. Посмотри здесь: http://peling.ru/forum/?mingleforumaction=viewtopic&t=282.5

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Тима пишет:

Собрал MPPT-контроллер на ардуино

Зачем для зарядки АКБ нужен MPPT контроллер?

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

Andrey_Y_Ostanovsky пишет:

Тима пишет:

Собрал MPPT-контроллер на ардуино

Зачем для зарядки АКБ нужен MPPT контроллер?

В случае автора темы МРРТ не нужен. Я собирал для солнечной панели и он работает.

Я предложил посмотреть схему, а скетч можно подправить под свои нужды и сделать просто ШИМ-регулятор.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Тима пишет:

Я предложил посмотреть схему, а скетч можно подправить под свои нужды и сделать просто ШИМ-регулятор.

График со стадиями заряда - дадите? А то может статься, что человеку Ваш скетч придется не просто править, а полностью переписывать.

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

Графиков пока нет. Успел только собрать и пару раз включить на испытание. Работы очень много, руки до него не доходят!

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Тима пишет:

Графиков пока нет. Успел только собрать и пару раз включить на испытание. Работы очень много, руки до него не доходят!

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

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

Andrey_Y_Ostanovsky пишет:

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

я писал выше...

Тима пишет:

Я предложил посмотреть схему

И еще, эта схема не моя. Вот автор: http://www.256.co.uk/?p=1158

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

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Тима пишет:

И еще, эта схема не моя. Вот автор: http://www.256.co.uk/?p=1158

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

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

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

Andrey_Y_Ostanovsky пишет:

Тима пишет:

И еще, эта схема не моя. Вот автор: http://www.256.co.uk/?p=1158

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

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

Никаких целей я не приследую. В первом сообщении, где я давал ссылку, да, согласен, я не указал в какую точку смотреть. Но я сказал, что это МРРТ-контроллер и что принцип работы схож! Во втором сообщении я поправился и предложил посмотреть схему, указав что это контроллер для солнечной панели! Ни слова об алгоритме работы, скетче для ардуины и режимах работы контроллера! И я не пойму, какие претензии ко мне имеются? Если правильно написать скетч для этой же схемы, можно его же использовать для интелектуальной зарядки аккумулятора!

З.Ы. А разве солнечный контроллер не для зарядки аккумулятора?

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Тима пишет:

Но я сказал, что это МРРТ-контроллер и что принцип работы схож!

Что-то я там MPPT функционала не увидел - или он реализуется в скетче? Речь в статье идет о PWM. Использовать для поиска точки MPPT датчик тока ACS712 с его шумностью - это сюр...

Принцип чего и схож с чем? 

Тима пишет:

З.Ы. А разве солнечный контроллер не для зарядки аккумулятора?

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

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

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

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

Короче подаете на акк 13 вольт и меряете на последовательном резисторе 0.5 ома, 10ватт ( керамика или стекло)  падение напряжения, как только становится меньше 0.1 вольта, акк заряжен...и никакие шимы не нужны. А если совсем просто ставьте доп акк параллельно основному акку , последовательно доп акку токоограничительный резистор 2 ома 10 ватт ( можно намотать манганином по любому керамическому стержню или подобрать лампочку на 12 вольт соответствующей мощности)  и собственно всё.

и вообще, если можно не применять мк, не применяйте его ;)

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

Все абсолютно верно. Но Вы опять кинулись обсуждать принцип работы контроллера. Я не предлогал его использовать. Я предложил посмотреть схему. Если к этой схеме написать грамотный скетч - будет зарядник.
И да, поиск мппт реализован в скетче. Но есть и ручной режим управления.

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

По поводу схожести принципа... И в заряднике и в мппт- контроллере относительно датчиков тока и напряжения управляется транзистор.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Тима пишет:
По поводу схожести принципа... И в заряднике и в мппт- контроллере относительно датчиков тока и напряжения управляется транзистор.

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

Еще один момент: зарядка для свинца подразумевает циклирование заряда/разряда определенными токами - расскажите, как Вы собираетесь это реализовывать в скетче?

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

Andrey_Y_Ostanovsky пишет:

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

Во блин, а я уже шатл купил... Что теперь и тролейбус покупать? 

А если серьезно, посмотрите схему автора темы и схему, предложенную мной. Сходство есть? Такое же управление транзистором посредством ШИМ.

Andrey_Y_Ostanovsky пишет:

Еще один момент: зарядка для свинца подразумевает циклирование заряда/разряда определенными токами - расскажите, как Вы собираетесь это реализовывать в скетче?

На вскидку так: делаем меню настроек, в котором задаем ток заряда и к примеру количество циклов заряда, также в меню задаем процет заряда аккума, до которого разряжать аккум во время цикла разряда. Только придется еще один мосфет поставить на разряд с нагрузкой на "конце". Заряд и разряд управляются посредством ШИМ, относительно заданных параметров. С таким алгоритмом аккум заряжается до 100%, потом разряжается до заданного процента заряда. Потом опять заряжает до 100%... И так заданное количество раз. По окончании программы можно звуковую сигнализацию сделать как примочку.

Ну, как-то так!

 

Mikhail_Sakh
Offline
Зарегистрирован: 03.04.2014

Спасибо всем, что не оставили без помощи!

От ШИМ решил отказаться. Перелопатил массу информации, и в итоге собрал такую схему для заряда свинцового АКБ http://radiokot.ru/circuit/power/charger/01/. Обсуждается тут http://radiokot.ru/forum/viewtopic.php?f=25&t=23. Протестировал - для моих нескольких АКБ (самый большой 7Ah) пойдет. Хотел привязать её к ардуино, т.е. контроль тока и напряжения микроконтроллером, отключение по достижении полного заряда, проведение "качелей" и т.д. Так же хочу написать библиотеку для аккум-ов CSB и Delta, для более удобного выбора тока и режима заряда из меню МК.

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

int ampSensorPin = A2;
int xCount; // Count of approximation
//float divider = 0.185; //Divider according to the sensor (5A = 0.185, 20A = 0.1 or 30A = 0.66 )
float averageX = 0;

void setup() {
	xCount = 1000;
	Serial.begin(9600);
	calibrate();
	delay(1000);
}
 
void loop() {
  float average = 0;
  for(int i = 0; i < xCount; i++) {
	  average = average + ((26.1 * analogRead(A2)) -(26.1*averageX))/ xCount ;
	  delay(2);
  }
  Serial.println(average); 
  Serial.println(analogRead(ampSensorPin)); 
}
void calibrate() {
    for(int n = 0; n < xCount; n++) {
    averageX =(averageX + analogRead(A2));
    delay(2);
}
	averageX = averageX/xCount;
	Serial.println(averageX);
}

 

Схема проста:

Подскажите в чем тут дело?

Mikhail_Sakh
Offline
Зарегистрирован: 03.04.2014

Тима пишет:

Собрал MPPT-контроллер на ардуино, принцип практически тот-же. Посмотри здесь: http://peling.ru/forum/?mingleforumaction=viewtopic&t=282.5

Подскажите, как у Вас реализован код для датчика?

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

Mikhail_Sakh пишет:

Подскажите, как у Вас реализован код для датчика?

Просто считывается аналоговый вход и усредняется значения. Я ничего не менял в коде автора схемы, кроме номера пина.

 
  panelAmps = (analogRead(A2)-516) * 0.0394; //get the panelAmps
  panelAmps = (panelAmps + lastPanelAmps) / 2; //average the panelAmps
  lastPanelAmps = panelAmps;
  if (panelAmps < 0.02) panelAmps = 0; //don't let the panelAmps go below zero
  LcdString(dtostrf(panelAmps,5,2,&tmp[1]),0,4); //display the panelAmps

 

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Я конечно дико извиняюсь, не хотел встревать, но не удержался.

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

Ток 5 - 10 - 15 Ампер, сам следит за диапазоном напряжений- не допускает ни перезаряда ни разряда ниже допустимого.  Термокомпенсация.

Шесть клемм: панель, аккумулятор, нагрузка. В корпусе. Готовая индикация.

. Always keep the battery on fill voltage condition.
. Prevent the battery from over-charging.
. Prevent the battery from over-discharging.
. Prevent the battery from reverse charging to solar panels during nights.
. Reverse Polarity Protection for Battery
. Reverse Polarity Protection for Solar Panels
. When the battery voltage is low, the controller will automatically cut off the load from the system. If the voltage of battery is back to normal and the load will restart working.
. Thunder protection
. According to the battery voltage grade, the controller can automatically set charge-off voltage, the load-off voltage, the load- restore voltage. (The parameter is default under 25 condition, locked by the CPU procedure, cannot adjust.)

. The controller will automatically compensate the temperature of the charging voltage according to the changes of ambient temperature.

 

http://www.ebay.com/itm/5A-MPPT-Solar-Panel-Battery-Regulator-Charge-Controller-12V-24V-Auto-Switch-/181202510604?pt=LH_DefaultDomain_0&hash=item2a3082e30c

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

Пишут 3-4  Ампера, но в это не верится,я думаю от силы 1-1.5 выдаст легко.

Input Voltage:5-35V
Output Voltage:Continuously adjustable from 1.25 V to 30V
Rated Output Current:3A
Max.Output Current:4A (more than 15W,preferably with a heat sink)

http://www.ebay.com/itm/Dc-Dc-adjustable-power-supply-module-High-power-LED-constant-current-drive-/191014665568?pt=AU_B_I_Electrical_Test_Equipment&hash=item2c795c7d60

incvizitor
incvizitor аватар
Offline
Зарегистрирован: 02.11.2018

Хотелось бы итоговую эл принципиальную схему+скетч

incvizitor
incvizitor аватар
Offline
Зарегистрирован: 02.11.2018

Что за схема у вас

1)Красная плата

2)ЗУ

3)Не понятно где контроль зарядки по напряжению или по емкости.

 

Mikhail_Sakh пишет:

Спасибо всем, что не оставили без помощи!

От ШИМ решил отказаться. Перелопатил массу информации, и в итоге собрал такую схему для заряда свинцового АКБ http://radiokot.ru/circuit/power/charger/01/. Обсуждается тут http://radiokot.ru/forum/viewtopic.php?f=25&t=23. Протестировал - для моих нескольких АКБ (самый большой 7Ah) пойдет. Хотел привязать её к ардуино, т.е. контроль тока и напряжения микроконтроллером, отключение по достижении полного заряда, проведение "качелей" и т.д. Так же хочу написать библиотеку для аккум-ов CSB и Delta, для более удобного выбора тока и режима заряда из меню МК.

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

int ampSensorPin = A2;
int xCount; // Count of approximation
//float divider = 0.185; //Divider according to the sensor (5A = 0.185, 20A = 0.1 or 30A = 0.66 )
float averageX = 0;

void setup() {
	xCount = 1000;
	Serial.begin(9600);
	calibrate();
	delay(1000);
}
 
void loop() {
  float average = 0;
  for(int i = 0; i < xCount; i++) {
	  average = average + ((26.1 * analogRead(A2)) -(26.1*averageX))/ xCount ;
	  delay(2);
  }
  Serial.println(average); 
  Serial.println(analogRead(ampSensorPin)); 
}
void calibrate() {
    for(int n = 0; n < xCount; n++) {
    averageX =(averageX + analogRead(A2));
    delay(2);
}
	averageX = averageX/xCount;
	Serial.println(averageX);
}

 

Схема проста:

Подскажите в чем тут дело?