Доброго времени суток, ардуино-пользователи!
Возникла необходимость установить в авто ЗУ для АКБ малой(1,2 Ah) ёмоксти. Собрать хотел на базе ардуино. Накидал на макетке вольтметр. Расхождение с лаборатоным +-пару соток (не критично). Накидал ШИМ регулятор на IRF740B. Тоже работает отлично. При вращении потенциометра от 0 до МАХ меняется яркоть светодиодной ленты. Заводской вольтметр показывает напряжение от 0 до 11,4В соответственно(напряжение питания 12В). Но при установленном в 0 потенциометре и попытке замерить напряжение (по схеме) на лабораторном вольтметре появляется напряжение 4.6В при этом на вольтметре на базе ардуино 24В (в скетче использовал напряженин = 24В т.е. 24/1024=0,0234375).
Пробовал залить кусок скетча, отвечающий за замер напряжения на другую дуину подключал к ней делитель, измерял напряжение на ленте - результат один.
Вот такой головняк...
Помогите решить.
Схема
Делитель пока на переменном резисторе 100кОм.
Скетч:
09 | for ( int i = 0; i < 300; i++) { |
10 | average = average + (0,0234375 * analogRead(A0)) / 300; |
13 | int val = analogRead(A1); |
14 | val = map(val, 0, 1023, 0, 255); |
17 | Serial .println(average); |
18 | Serial .print( "val = " ); |
может програмно функцию map поковырять погрубее
потенциометр всегда шумит а ЦАП чувствет это и начинаются чудеса
сам думаю над этим
как аналогвый джойстик загрубить на 9 положений
если нащупаете подскажите
1
joyx = analogRead(joypinx);
2
joystep1=map(joyx,0,1023, 0, 600);
3
delay(1);
4
joyy = analogRead(joypiny);
5
joystep2=map(joyx,0,1023, 0,600);
я свои потенциоометры пытаюсь загрубить
0 думаю плохо
но пока не нащупал оптимально
может 10,600
когда ардуинки были в дифиците на 5 вольт питание ЦАП-ов индуктивность вешал с емкостью чтоб 0 успокоить
может и в наших чуток без дросселечков шумят заразы
art100, загрубить можно сам аналоговый вход, вернее его разрядность. joyx=analogRead(joypinx)>>7; получите "переключатель" на 8 положений, если сделать >>6 , то на 16 положений :)
Mikhail_Sakh, что-бы измерять постоянное напряжение после ШИМа нужна RC-цепочка. Но заряжать аккум голым ШИМом думаю не стоит, лучше использовать либо специализированный контроллер, либо самому сделать стабилизатор тока с ограничением макс. напряжения. PS: конечно можно и шимом заряжать, но после транзистора поставить диод, дроссель, и конденсатор. Но всё это не избавляет от необходимости контролировать ток, так что лучше что-то специальное применить.
dimax спасибо за двойную стрелочку >> совсем забыл
одна голова хорошо а две лучше :)
Собрал MPPT-контроллер на ардуино, принцип практически тот-же. Посмотри здесь: http://peling.ru/forum/?mingleforumaction=viewtopic&t=282.5
Собрал MPPT-контроллер на ардуино
Зачем для зарядки АКБ нужен MPPT контроллер?
Собрал MPPT-контроллер на ардуино
Зачем для зарядки АКБ нужен MPPT контроллер?
В случае автора темы МРРТ не нужен. Я собирал для солнечной панели и он работает.
Я предложил посмотреть схему, а скетч можно подправить под свои нужды и сделать просто ШИМ-регулятор.
Я предложил посмотреть схему, а скетч можно подправить под свои нужды и сделать просто ШИМ-регулятор.
График со стадиями заряда - дадите? А то может статься, что человеку Ваш скетч придется не просто править, а полностью переписывать.
Графиков пока нет. Успел только собрать и пару раз включить на испытание. Работы очень много, руки до него не доходят!
Графиков пока нет. Успел только собрать и пару раз включить на испытание. Работы очень много, руки до него не доходят!
Вообще говоря, сначала берется график режимов, потом пишется скетч, обеспечивающий эти режимы на аккумуляторе. И только в случае успешного результата имеет смысл предлагать свою программу как пример для подражания.
Вообще говоря, сначала берется график режимов, потом пишется скетч, обеспечивающий эти режимы на аккумуляторе. И только в случае успешного результата имеет смысл предлагать свою программу как пример для подражания.
я писал выше...
Я предложил посмотреть схему
И еще, эта схема не моя. Вот автор: http://www.256.co.uk/?p=1158
Я лишь сделал для нее печатную плату и повторил его. Хочу этому контроллеру сделать меню настроек, чтоб можно было заряжать разные типы аккумов и разное напряжение, кислотные, щелочные, литий-ионные.
И еще, эта схема не моя. Вот автор: http://www.256.co.uk/?p=1158
Дак там схема солнечного контроллера, а не для зарядки аккумулятора! Вы сначала разберитесь с назначением тех или иных компонентов, а потом советуйте. Если бы Вы сказали, "посмотрите, как на этой схеме используется делитель", или "используйте мосфет, как на схеме", но ведь Вы же с упорством пытаетесь протолкнуть всю схему целиком! Зачем? Какую цель Вы преследуете своими сообщениями? Хотите запутать топик-стартера? Он и без Вашего участия запутается...
Изюминка интеллектуальных зарядок в том, что они могут соблюдать определенные режимы (профили) заряда, и делать, например, десульфатацию, или профилактику выравнивания ячеек. И какждый производитель использует в зарядках свое ноу-хау, даже АСорока. :)
И еще, эта схема не моя. Вот автор: http://www.256.co.uk/?p=1158
Дак там схема солнечного контроллера, а не для зарядки аккумулятора! Вы сначала разберитесь с назначением тех или иных компонентов, а потом советуйте. Если бы Вы сказали, "посмотрите, как на этой схеме используется делитель", или "используйте мосфет, как на схеме", но ведь Вы же с упорством пытаетесь протолкнуть всю схему целиком! Зачем? Какую цель Вы преследуете своими сообщениями? Хотите запутать топик-стартера? Он и без Вашего участия запутается...
Изюминка интеллектуальных зарядок в том, что они могут соблюдать определенные режимы (профили) заряда, и делать, например, десульфатацию, или профилактику выравнивания ячеек. И какждый производитель использует в зарядках свое ноу-хау, даже АСорока. :)
Никаких целей я не приследую. В первом сообщении, где я давал ссылку, да, согласен, я не указал в какую точку смотреть. Но я сказал, что это МРРТ-контроллер и что принцип работы схож! Во втором сообщении я поправился и предложил посмотреть схему, указав что это контроллер для солнечной панели! Ни слова об алгоритме работы, скетче для ардуины и режимах работы контроллера! И я не пойму, какие претензии ко мне имеются? Если правильно написать скетч для этой же схемы, можно его же использовать для интелектуальной зарядки аккумулятора!
З.Ы. А разве солнечный контроллер не для зарядки аккумулятора?
Но я сказал, что это МРРТ-контроллер и что принцип работы схож!
Что-то я там MPPT функционала не увидел - или он реализуется в скетче? Речь в статье идет о PWM. Использовать для поиска точки MPPT датчик тока ACS712 с его шумностью - это сюр...
Принцип чего и схож с чем?
З.Ы. А разве солнечный контроллер не для зарядки аккумулятора?
Это только одна его часть и, скажем так, преследующая свои корыстные цели: утилизировать все, что пришло с солнечных панелей. Поэтому я и спрашивал Вас о графиках и режимах заряда: ведь, например, ток с солнечных панелей мы не можем задавать произвольно, а с источника питания - можем, а батарею надо заряжать вполне определенным током... Если ток не оптимален - пластины меньше живут.
Второй половиной своего функционала солнечный контроллер отдает энергию в нагрузку, включает и отключает нагрузку при разряде батареи...
Хмм... Насколько я помню авто акк заряжается от генератора, который выдает на номинальных оборотах чтоттотам 13.5 или 14 в , которые подаются напрямую на акб. Моя домашняя зарядка в ручном режиме максимального тока выдает 19 в на холостом, под нагрузкой соответственно проседает до текущего напряжения акка, но ток заряда зависит от разницеы напряжений ненагруженного акка и ненагруженного на акк зарядника и внутреннего сопротивления зарядника.
Короче подаете на акк 13 вольт и меряете на последовательном резисторе 0.5 ома, 10ватт ( керамика или стекло) падение напряжения, как только становится меньше 0.1 вольта, акк заряжен...и никакие шимы не нужны. А если совсем просто ставьте доп акк параллельно основному акку , последовательно доп акку токоограничительный резистор 2 ома 10 ватт ( можно намотать манганином по любому керамическому стержню или подобрать лампочку на 12 вольт соответствующей мощности) и собственно всё.
и вообще, если можно не применять мк, не применяйте его ;)
Все абсолютно верно. Но Вы опять кинулись обсуждать принцип работы контроллера. Я не предлогал его использовать. Я предложил посмотреть схему. Если к этой схеме написать грамотный скетч - будет зарядник.
И да, поиск мппт реализован в скетче. Но есть и ручной режим управления.
По поводу схожести принципа... И в заряднике и в мппт- контроллере относительно датчиков тока и напряжения управляется транзистор.
Возьмите тогда схему управления троллейбусом: там наверняка тоже есть мосфет, управляющий током и напряжением...
Еще один момент: зарядка для свинца подразумевает циклирование заряда/разряда определенными токами - расскажите, как Вы собираетесь это реализовывать в скетче?
Возьмите тогда схему управления троллейбусом: там наверняка тоже есть мосфет, управляющий током и напряжением...
Во блин, а я уже шатл купил... Что теперь и тролейбус покупать?
А если серьезно, посмотрите схему автора темы и схему, предложенную мной. Сходство есть? Такое же управление транзистором посредством ШИМ.
Еще один момент: зарядка для свинца подразумевает циклирование заряда/разряда определенными токами - расскажите, как Вы собираетесь это реализовывать в скетче?
На вскидку так: делаем меню настроек, в котором задаем ток заряда и к примеру количество циклов заряда, также в меню задаем процет заряда аккума, до которого разряжать аккум во время цикла разряда. Только придется еще один мосфет поставить на разряд с нагрузкой на "конце". Заряд и разряд управляются посредством ШИМ, относительно заданных параметров. С таким алгоритмом аккум заряжается до 100%, потом разряжается до заданного процента заряда. Потом опять заряжает до 100%... И так заданное количество раз. По окончании программы можно звуковую сигнализацию сделать как примочку.
Ну, как-то так!
Спасибо всем, что не оставили без помощи!
От ШИМ решил отказаться. Перелопатил массу информации, и в итоге собрал такую схему для заряда свинцового АКБ http://radiokot.ru/circuit/power/charger/01/. Обсуждается тут http://radiokot.ru/forum/viewtopic.php?f=25&t=23. Протестировал - для моих нескольких АКБ (самый большой 7Ah) пойдет. Хотел привязать её к ардуино, т.е. контроль тока и напряжения микроконтроллером, отключение по достижении полного заряда, проведение "качелей" и т.д. Так же хочу написать библиотеку для аккум-ов CSB и Delta, для более удобного выбора тока и режима заряда из меню МК.
Но вот он новый вопрос: имеем датчики тока ACS712. После калибровки значения немного плавают - это нормально, но вот если подождать минут пять не подключая нагрузку, значение тока уходит постепенно в плюс (два контрольных мультиметра стоят на месте, не считая небольшого падения из-за набора емкости аккума). То же и под нагрузкой. После калибровки подключаю нагрузку - все ок! Показания пару-тройку минут в норме, потом ползут вверх. Понять не могу в чем дело. Написан код для измерения тока заряда (вариант черновой):
01
int
ampSensorPin = A2;
02
int
xCount;
// Count of approximation
03
//float divider = 0.185; //Divider according to the sensor (5A = 0.185, 20A = 0.1 or 30A = 0.66 )
04
float
averageX = 0;
05
06
void
setup
() {
07
xCount = 1000;
08
Serial
.begin(9600);
09
calibrate();
10
delay(1000);
11
}
12
13
void
loop
() {
14
float
average = 0;
15
for
(
int
i = 0; i < xCount; i++) {
16
average = average + ((26.1 * analogRead(A2)) -(26.1*averageX))/ xCount ;
17
delay(2);
18
}
19
Serial
.println(average);
20
Serial
.println(analogRead(ampSensorPin));
21
}
22
void
calibrate() {
23
for
(
int
n = 0; n < xCount; n++) {
24
averageX =(averageX + analogRead(A2));
25
delay(2);
26
}
27
averageX = averageX/xCount;
28
Serial
.println(averageX);
29
}
Схема проста:
Подскажите в чем тут дело?
Собрал MPPT-контроллер на ардуино, принцип практически тот-же. Посмотри здесь: http://peling.ru/forum/?mingleforumaction=viewtopic&t=282.5
Подскажите, как у Вас реализован код для датчика?
Подскажите, как у Вас реализован код для датчика?
Просто считывается аналоговый вход и усредняется значения. Я ничего не менял в коде автора схемы, кроме номера пина.
1
panelAmps = (analogRead(A2)-516) * 0.0394;
//get the panelAmps
2
panelAmps = (panelAmps + lastPanelAmps) / 2;
//average the panelAmps
3
lastPanelAmps = panelAmps;
4
if
(panelAmps < 0.02) panelAmps = 0;
//don't let the panelAmps go below zero
5
LcdString(dtostrf(panelAmps,5,2,&tmp[1]),0,4);
//display the panelAmps
Я конечно дико извиняюсь, не хотел встревать, но не удержался.
Сначала не понимал почему не подходит зарядник свинцового аккумулятора от солнечной панели в простонародии называемом 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
Хотелось бы итоговую эл принципиальную схему+скетч
Что за схема у вас
1)Красная плата
2)ЗУ
3)Не понятно где контроль зарядки по напряжению или по емкости.
Спасибо всем, что не оставили без помощи!
От ШИМ решил отказаться. Перелопатил массу информации, и в итоге собрал такую схему для заряда свинцового АКБ http://radiokot.ru/circuit/power/charger/01/. Обсуждается тут http://radiokot.ru/forum/viewtopic.php?f=25&t=23. Протестировал - для моих нескольких АКБ (самый большой 7Ah) пойдет. Хотел привязать её к ардуино, т.е. контроль тока и напряжения микроконтроллером, отключение по достижении полного заряда, проведение "качелей" и т.д. Так же хочу написать библиотеку для аккум-ов CSB и Delta, для более удобного выбора тока и режима заряда из меню МК.
Но вот он новый вопрос: имеем датчики тока ACS712. После калибровки значения немного плавают - это нормально, но вот если подождать минут пять не подключая нагрузку, значение тока уходит постепенно в плюс (два контрольных мультиметра стоят на месте, не считая небольшого падения из-за набора емкости аккума). То же и под нагрузкой. После калибровки подключаю нагрузку - все ок! Показания пару-тройку минут в норме, потом ползут вверх. Понять не могу в чем дело. Написан код для измерения тока заряда (вариант черновой):
01
int
ampSensorPin = A2;
02
int
xCount;
// Count of approximation
03
//float divider = 0.185; //Divider according to the sensor (5A = 0.185, 20A = 0.1 or 30A = 0.66 )
04
float
averageX = 0;
05
06
void
setup
() {
07
xCount = 1000;
08
Serial
.begin(9600);
09
calibrate();
10
delay(1000);
11
}
12
13
void
loop
() {
14
float
average = 0;
15
for
(
int
i = 0; i < xCount; i++) {
16
average = average + ((26.1 * analogRead(A2)) -(26.1*averageX))/ xCount ;
17
delay(2);
18
}
19
Serial
.println(average);
20
Serial
.println(analogRead(ampSensorPin));
21
}
22
void
calibrate() {
23
for
(
int
n = 0; n < xCount; n++) {
24
averageX =(averageX + analogRead(A2));
25
delay(2);
26
}
27
averageX = averageX/xCount;
28
Serial
.println(averageX);
29
}
Схема проста:
Подскажите в чем тут дело?