Автоматическое ЗУ на МК ATmega16A. Схемы устройств на микроконтроллерах Зарядное устройство тестер аккумуляторов на atmega8

В интернете существует огромное количество схем зарядных устройств (ЗУ) для автомобильных аккумуляторов. От простейших до очень сложных. В нашем случае пойдет речь о ЗУ сделанном на микроконтроллере (МК) Atmega8. Использование МК в отличие от схемы на транзисторах позволяет внедрить очень богатый функционал для ЗУ. К примеру в данном зарядном я решил внедрить следующие функции.

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

2. Ток заряда будет до 5А. Хотя у меня в автомобиле стоит батарея 85А/ч мне для заряда хватит и 5А, просто на заряд уйдет немного больше времени. Однако при необходимости можно будет без глобальных переделок и перепрошивки МК увеличить ток заряда до 10А.

3. Менять ток заряда можно будет с шагом до 0.1А. Минимальный ток можно будет выбрать до 0.1А. Это значит можно заряжать и батареи маленькой емкости. Причем если энкодер вращать чуть быстрее, шаг увеличения/уменьшения тока заряда будет работать в пределах 0.5 А.

4. Батарея будет заряжаться до напряжения 14.4 вольт.

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

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

7. Заряд батареи должен быть полностью автоматизирован. Это вполне возможно, так как будет использоваться МК. Автоматизация процесса заряда должна исключать участие человека. Это значит подключил батарею, выбрал ток заряда и на этом все. Все остальное должно сделать само зарядное. А именно, поддержание выбранного зарядного тока в процесе заряда. Если батарея неисправна и заряд дальше не возможен, батарея должна быть автоматически отключена, в противном случае она будет просто бесконечно кипеть, а нам это не надо.

8. Показалось, что удобна будет функция "хранение батареи зимой". Как ни крути, абсолютно любая батарея в природе имеет свой внутренний саморазряд. Это значит, что если просто оставить без присмотра батарею на определенный срок, то из-за тока саморазряда она разрядится, что в итоге приведет к сульфатации пластин. А для батареи это смерть. Причем время саморазряда и сульфатации не такое уж и большое. Порой достаточно пару месяцев. Чтобы этого не произошло и будет внедрена функция "хранение батареи зимой". Работает это просто, подключаем зарядник к батарее, причем батарею не нужно вынимать из автомобиля. Далее ЗУ будет раз в пол часа смотреть какое же напряжение на батарее. Если напряжение упало ниже нормы, включится автоматический заряд, после окончания цикла заряда, ЗУ опять перейдет в режим контроля напряжения на батарее. Причем порог срабатывания выставляет сам пользователь в меню и силу тока тоже можно выбрать в меню. Лично я для себя установил порог 12.5 вольт и сила тока заряда 0.5А. Зярадка малым током более эффективна чем большими токами.

9. Возможно будет полезна функция "продолжение заряда после отключения электричества". Хотя такое совпадение может произойти раз в 150 лет, тем не менее эта функция есть. Зарядное всегда "помнит", что включен процесс заряда и если произойдет отключение/включение элетричества, заряд просто продолжится дальше. В любом случае все функции можно отключить или включить по выбору в меню. Если отключить все функуции, то зарядное просто станет "обычным зарядным" которое зарядит батарею и выключится.

10. Ну и напоследок в ЗУ будет работать программный таймер. Таймер будет постоянно тикать вперед 0..1,2 и так далее. Если батарея заряжается, а это видно будет по тому, как на ней будет постепенно подниматься напряжение до 14.4 вольта. Так вот, как только на батарее напряжение чуть поднялось, таймер сразу сбросится в 0 и продолжить снова считать 0...1,2... Но если батарея неисправна или старая, или не совсем правильна плотность электролита, то при определенном пороге заряд дальше невозможен. И этот порог может быть ниже 14.4 вольта. Как быть? В таком случае таймер перестанет сбрасываться. И дотикав до определенного момента, он попросту выключит заряд с сообщением на дисплей. Дальше кипятить батарею не имеет смысла. Таймер можно выключить в меню или включить, задав диапазон тикания от 30 мин до 3х часов. На дисплее можно будет видеть как таймер будет тикать и сбрасываться время от времени, если заряд протекат в штатном режиме.

Теперь перейдем к обсуждению схемы зарядника.

Блок питания.
В данном случае будем использовать любой импульсный блок питания (ИБП). Выходное напряжение от 16 до 20 вольт. Так как ток заряда будет до 5А, то выходной ток ИПБ должен быть с запасом где-то до 6А. Я использовал ИПБ MEAN WELL RS-75-15 у которого выходное напряжение 15 вольт, но в блоке есть подстроечный резистор которым можно поднять напряжение до 16.5 вольт. Преимущество ИПБ в том что он легкий, компактный и имеет уже втроенную защиту от повышенных токов, замыканий и пр. Поэтому об этом уже не надо особо заботиться. Впринципе подходит любой другой ИПБ. Хоть с ноутбука. Если в вашем ИПБ ток менее 5А, его тоже можно использовать, просто нужно следить за тем чтоб не выставлять ток заряда более чем может выдать ИПБ. Трансформатрный блок питания в нашем случае не подходит. Зарядное на трансформаторе это отдельная тема и отдельная статья. Итак схема питания будет выглядеть примерно так.

Конденсатор на 1000uF в принципе можно не ставить так как он уже установлен в импульсном блоке питания на выходе, но если установить то хуже не будет. Конденсатор С2 лучше если будет электролит, но я поставил керамический smd. Стабилизатор 7805 нужен чтобы питать МК, дисплей LCD и прочую обвязку.

Теперь подключим батарею и полевой транзистор.



Как видим, все просто. Транзистором будем регулировать силу тока через батарею. Реле К1 будет брать на себя роль защиты, будет включаться только тогда, когда батарея подключена и подключена правильно. Цементный резистор R18 выполняет роль шунта. При токе в 5А на нем будет напряжение 0.5 вольт. Это напряжение усилим и подадим на АЦП МК, так МК будет знать какой ток в цепи заряда и это значение можно будет вывести на дисплей. Теперь пора подключать МК к схеме.

Как видим схема немного усложнилась. Но не сильно. К выводу PB0 подключим реле, любое реле на 12V, контакты которого должны выдержать ток в 5А. Последовательно с реле надо подключить гасящий резистор примерно в 200 Ом, так как питаться то реле у нас будет от напряжения 16-20 вольт. Параллельно катушке реле надо установить защитный диод (любой, поставил LL4148) , без диода может пробиться транзистор VT4. VT4 может быть любой тип npn, использовал MMBT4401LT1 .

К выводам PD7, PC1, PC0 подключен энкодер. Использовался этот или этот . На выводы к которым подключен энкодер необходимо подключить конденсаторы 0.1 uF и подтягивающие резисторы по 10к. Это уменьшит контактов.

Дисплей использовался на две строки по 16 символов. Дисплей так же имеет встроенный русский шрифт. Если подключить дисплей без русских символов, на экране будут крякозябры. Так как у МК Atmega8 не сильно много ног, то дисплей подключил по 4х битной шине. Выводы дисплея DB3-DB0 не используются.

К выводу МК PB2 подключен диод шоттки BAT54S , два конденсатора 0.1uF и резистор 100 Ом. Зачем это нужно? Дело в том что в схеме используется операционный усилитель ОУ LM358 который не "rail to rail". В таких ОУ без отрицательного напряжения питания на минусовом выводе питания, на выходе ОУ никогда не будет 0 вольт. Поэтому эта цепочка элементов подключенная к выводу PB2 создает отрицательное напряжение где то -4V для питания ОУ. Для того чтобы цепочка на выводе PB2 заработала и генерировала -4V, на нее необходимо подать ШИМ сигнал со скважностью 50%. Таким образом на выводе PB2 всегда присутствует ШИМ с частотой 62.5 кГц.

На выводе PB3 так же всегда присутствует ШИМ, но скважность сигнала в данном случае от 0 до 100% уже регулируется вращением энкодера. Резистор R18 и конденсатор С11 составляют интегрирующую цепочку сглаживают ШИМ в постоянное напряжение. Резисторы R19 и подстроечный R20 являются делителем напряжения. Как настроить R20? Подключаем мультиметр к выводу PB3 и вращаем энкодер до тех пор, пока прибор не покажет 2.5 Вольта. Далее вращаем подстроечный резистор R20 так чтобы на неинвертирующем выводе ОУ было напряжение 0.25 вольта. На этом настройка R20 закончена.

Как работает регулировка и управление транзистором? Предположим что на неинвертирующем выводе ОУ (+) 0.5 вольт. Одно из свойств ОУ это то, что он стремиться к тому, чтоб уровнять разность потенциалов между его двумя входами. Делает это он используя свой выход, повышая или понижая на нем напряжение. Итак на выводе (+) 0.5 вольт, а на выводе (-) 0 вольт. Что дальше? ОУ сразу же начнет повышать напряжение на выходе, который подключен к затвору транзистора IRF540. Транзистор начинает открываться. Через батарею, транзистор и шунт начинает течь ток. Текущий ток вызывает падение напряжение на шунте R18. ОУ будет открывать транзистор до тех пор пока на шунте не будет напряжение 0.5 вольт. Напряжение с шунта подается через R13 на вывод (-). Как только на выводе (-) будет 0.5 вольта (такое же как и на выводе (+)), ОУ перестанет открывать транзистор. При этом ток заряда будет равен 5А.

Если энкодером уменьшить напряжение на выводе (+) до 0.25 вольта, ОУ уменьшит напряжение на затворе транзистора до такой величины, чтоб на выводе (-), так же стало 0.25 вольта, данное значение соответствует току заряда в 2.5А. Получается что регулировка тока заряда осуществляется аппаратным способом с помощью ОУ. А это очень хорошо, так как ОУ никогда не зависнет и скорость раекции мгновенная. Данная схема регулировки является обычным линейным источником тока. Удобство данной схемы в том что она является простой, но минус в том, что вся разность напряжения между импульсным блоком питания и напряжением на батарее выделяется в виде тепла на транзисторе.

К примеру ИПБ выдает 20 вольт, напряжение на батарее в начале ее заряда 12 вольт, а ток заряда 5А. Какая мощность выделиться на трназисторе? (20-12)*5=40 Вт. 40Вт это очень много!!! Нужен здоровенный радиатор и пять вентиляторов. Так никуда не годиться. Хотя транзистор IRF540 выдержит и 150 ватт, разогревать транзистором зарядник нет смысла. Как уменьшить выделение тепла? Можно понизить напряжение ИПБ например до 16 вольт. Тогда (16-12)*5 =20 Вт в два раза меньше уже лучше. Но нагрев можно сделать еще меньше до 5 ватт и менее. Каким образом?

В ИПБ подобного типа как MEAN WELL RS-75-15 всегда есть подстроечный резистор, которым можно регулировать напряжение на выходе в пределах 10%. Это значит от 13.5 до 16.5, в моем случае получилось от 13 до 17 вольт. Можно выпаять из ИПБ подстроечник, а вместо него впаять вывод МК, таким образом мы сможем с помощью МК регулировать напряжение на выходе ИПБ, это позволит снизить выделение тепла на транзисторе до минимума. К примеру если на батарее 12 вольт, понижаем напряжение до 13 вольт и получаем (13-12)*5=5 Вт тепла на транзисторе, лучше чем 40. Итак модернезируем схему


В выводу PB1 подключаем оптрон PC123 или подобный ему. На выводе PB1 так же всегда дежурит шим сигнал который интегрируется цепочкой R22 и C13. В ИБП выпаиваем подстроечный резистор и вместо него впаиваем обычный на 1.2 кОм. Вот теперь МК может управлять напряжением на выходе ИБП через оптрон. Когда оптрон выключен напряжение на выходе ИБП минимально, когда включен, резистор R23 шунтируется на землю, напряжение поднимается. Плавно закрывая/открывая оптрон с помощью ШИМ сигнала на выводе РВ1, плавно регулируем напряжение на выходе ИБП.

Чтабы знать когда и на сколько регулировать напряжение на выходе ИБП, надо знать сколько вольт вообще на силовом транзисторе. Нам то надо напряжение на выходе ИБП понизить настолько, чтоб разница между напряжением на батарее и напряжением на выходе ИБП была допустимо минимально. Для этого выводом РС2 используя АЦП МК измеряем напряжение на стоке транзистора. Это делается с помощью делителя R9 и R10. Теперь зная необходимые параметры, программа в МК будет сама контролировать скважность ШИМ на выводе РВ1.

Теперь осталось совсем немного. Это измерять ток в цепи заряда и выводить его на дисплей. И еще осталось измерить напряжение на батарее и так же вывести его на дисплей.

Напряжение на батарее измеряем дифференциальным способом. Значение снимаем с вывода РС5. Резисторы R5 и R6 должны быть ровно по 3кОм, а резисторы R2 и R4 по 1кОм, желательно точность не менее 1%, у меня таких не было поэтому R4 установил подстроечным. Суть в том, что при таких номиналах резисторов отношение напряжений на входах ОУ и на его выходе составляет 3:1. При изменении напряжения от 0 до 15 вольт на батарее, на выходе ОУ напряжение будет меняться от 0 до 5 вольт. Для настройки данной цепочки необходимо вместо батареи подключить 14.4 вольта например с лабораторного блока питания. Далее вращаем подстроечник R4 чтоб на дисплее LCD тоже было 14.4 вольта. Настройка цепи измерения напряжения на этом закончена.

Ток измеряется через падение напряжения на шунте, роль которого играет обычный цементный резистор. Ток у нас от 0 до 5А. Напряжение на шунте соответсвенно изменяется от 0 до 0.5 вольт. Значения резисторов R16 и R17 подобраны так, чтоб на выходе ОУ значение напряжения было от 0 до 5 вольт. Отображение тока заряда настраиваем по следующей цепочке. Подключаем батарею и делаем ток в 2.5 А. Параллельно батарее подключаем лампочку на 12 вольт. Батарею отключаем, а лампочку оставляем. Убеждаемся что ток равен 2.5 ампера. Если на шунте напряжение будет 0.25 вольт, значит ток равен 2.5А. если это не так, вращаем энкодер пока на шунте не будет 0.25 вольт. Теперь вращаем подстроечник R17 чтоб на дисплее отображался ток в 2.5А. Настройка отображения тока на этом закончена.

Что можно было бы упростить? Например если нет желания возиться с делителем напряжения в ИБП, то все что припаяно к ноге МК РВ1, можно выкинуть из схемы. Но все остальное должно быть на своих местах. Но в таком случае вся разница напряжения между батареей и на выходе ИБП высадится в виде тепла на силовом транзисторе. В таком случае радиатор берем побольше не жалеем.

Если нужен ток заряда до 10А, параллельно шунту припаиваем такой же шунт значением 0.1 Ом. Реле берем с контактами выдерживающем до 10А и параллельно транзистору IRF540 припаиваем еще один такой же. Транзисторы прикручиваем на здоровенный радиатор и вперед, делаем тест. Единственное, значение тока на диспле надо в уме умножать на 2. Если дисплей покажет 5А, на самом деле это уже будет 10А. Лично я сам так не делал, но в теории должно работать.

В конце концов итоговая схема будет иметь следующий вид:


Ничего не видно согласен, поэтому скачиваем схему отсюда .

Пару фрагментов прошивки.

#include "define.h" #include "init_mcu.h" #include "lcd.h" #include "text.h" #include "bits_macros.h" #include "fun.h" #include "encoder.h" #include "servise.h" #include "main.h" #include #include #include #include #include #include #include #define RELAY PB0 uint8_t lcd_time,lcd_track,lcd_count,enc_interval,enc_speed,off_charge; uint8_t U_bat_tim,I_bat_tim=255,stok_reg,energy_flag,count; uint16_t I_reg,enc_block,bat_count,bat_save,bat_off; EEMEM uint8_t energy_off; struct flag { _Bool lcd_clr_txt0: 1; _Bool lcd_clr_txt1: 1; _Bool count_timer0: 1;//для обработчика прерывания _Bool start_charging: 1;//отключение реле если при заряде бат откл. электричество _Bool ocr1a_block: 1; }flags; ISR(TIMER0_OVF_vect)//прерывание по переполнению Timer 0 раз в 1мсек. { TCNT0=0x6; flags.count_timer0=1; } void reg_I(uint16_t reg_val)//уменьшение тока заряда при достижении 14.4вольта { if (I_reg>reg_val) { I_reg=0; off_charge=1; if (OCR2!=0) { OCR2--; enc_data=OCR2; } } } void charg_off(void) { if (BitIsSet(PORTB,RELAY)) { eeprom_update_byte(&energy_off,0); } ClearBit(PORTB,RELAY); ClearBit(TCCR2,COM21);//отключили аппаратный вывод шим на пине PB3 OCR1A=0;//опустили питание импульсника до 12.5 вольт. off_charge=0; flags.start_charging=0; flags.ocr1a_block=0; enc_data=0; I_bat_tim=255; count=0; OCR2=0; } int main(void) { #if 1//инициализация MCU_init_ports(); MCU_init_adc(); MCU_init_an_comp(); MCU_init_timer0(); MCU_init_timer1(); MCU_init_timer2(); LCD_init(); LCD_string_of_flashXY(text_1,4,0); LCD_string_of_flashXY(text_2,3,1); _delay_ms(1500); LCD_string_of_flashXY(text_3,3,0); LCD_string_of_flashXY(text_4,2,1); _delay_ms(1500); LCD_clear(); if (BitIsClear(PIND,PUSH)){servise();}//вход в сервисное меню if (eeprom_read_byte(&energy_off) && u_batt()>20) { enc_data=eeprom_read_byte(&i_pusk); } else { eeprom_update_byte(&energy_off,0); } MCU_init_wdt(); sei(); #endif while(1) { wdt_reset(); uint8_t u_bat=u_batt(); uint8_t i_bat=i_batt(); #if 1/*определяем подключена ли батарея*/ if (u_bat>30)//30*0.0585=1.7 вольта на батарее, подключена { if (flags.lcd_clr_txt0==0) { flags.lcd_clr_txt0=1; LCD_clear(); } if (lcd_time>200) { lcd_time=0; LCD_string_of_flashXY(text_7,0,0); LCD_string_of_flashXY(text_9,7,0); LCD_string_of_flashXY(text_11,13,0); char buffer; uint16_t U=(u_bat*59)/100; utoa((uint8_t)U, buffer, 10);//выводим напряжение на дисплей if ((uint8_t)U>=100) { LCD_dataXY(buffer,2,0); LCD_data(buffer); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,6,0); } else if ((uint8_t)U>=10 && (uint8_t)U<=99) { LCD_dataXY(buffer,2,0); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,5,0); } else { LCD_dataXY("0",2,0); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,5,0); } uint16_t I=(i_bat*20)/100; utoa((uint8_t)I, buffer, 10);//выводим ток на дисплей c шунта if ((uint8_t)I>9) { LCD_dataXY(buffer,10,0); LCD_data("."); LCD_data(buffer); } else { LCD_dataXY("0",10,0); LCD_data("."); LCD_data(buffer); } } } else //неподключена { LCD_string_of_flashXY(text_5,0,0); LCD_string_of_flashXY(text_6,0,1); flags.lcd_clr_txt0=0; eeprom_update_byte(&energy_off,0); continue; } #endif #if 1/*обрабатываем флаг прерывания timer0*/ if (flags.count_timer0==1) { flags.count_timer0=0; lcd_time++; enc_interval++; I_reg++; lcd_track++; if (enc_speed!=100)//определяем скорость вращения энкодера. { enc_speed++; } if (enc_block>=1) { enc_block++; if (enc_block>=500) { enc_block=0; } } if (BitIsSet (PORTB,RELAY)) { bat_count++; } else { bat_count=0; bat_off=0; bat_save++; } stok_reg++; if (flags.start_charging && count!=255) { count++; } } #endif #if 1/*Получение данных от энкодера*/ if (enc_interval>=5) { enc_interval=0; OCR2=encoder();//считали значение энкодера. #if 0//временно для теста char buffer; utoa(OCR2, buffer, 10); if (OCR2>=100) { LCD_dataXY(buffer,0,1); LCD_data(buffer); LCD_data(buffer); } else if (OCR2>=10 && OCR2<=99) { LCD_dataXY("0",0,1); LCD_data(buffer); LCD_data(buffer); } else { LCD_dataXY("0",0,1); LCD_data("0"); LCD_data(buffer); } #endif if (OCR2==0)//отключаем все. { charg_off(); } else//начали заряд { if (flags.ocr1a_block==0) { flags.ocr1a_block=1; OCR1A=255;//подняли питание импульсника до 17 вольт. } SetBit(TCCR2,COM21); SetBit(PORTB,RELAY); } } #endif #if 1 /*уменьшение тока заряда при достижении 14.4вольта*/ if (u_bat==246 && OCR2>0) { reg_I(3000);//раз в 3 сек } else if (u_bat==255 && OCR2>0) { reg_I(100);//раз в 100 мсек } else if (u_bat>246 && OCR2>0) { reg_I(500);//раз в 500 мсек } #endif #if 1 /*Отключаем заряд при достижении тока заряда 0.1А*/ if (off_charge==1 && enc_block==0) { if (i_bat<=5)//5*0.02=0.1 А ток в батарее. { charg_off(); flags.lcd_clr_txt1=1; LCD_string_of_flashXY(text_13,0,1);//"БАТАРЕЯ ЗАРЯЖЕНА" } } //отключение реле если при заряде бат откл. электричество. if (OCR2>0 && i_bat>4)//4*0.02=0.08A { flags.start_charging=1; } if (flags.start_charging==1 && i_bat<2 && count==255)//2*0.02=0.04 А ток в батарее. { ClearBit(PORTB,RELAY); } #endif #if 1 /*Бегущий индикатор на дисплее*/ if (OCR2>0) { if (flags.lcd_clr_txt1==1) { flags.lcd_clr_txt1=0; LCD_string_of_flashXY(text_8,0,1); } if (lcd_track>=200) { lcd_track=0; lcd_count++; switch (lcd_count) { case 0: LCD_data_of_flashXY(text_15,8,1); break; case 1: LCD_data_of_flashXY(text_16,8,1); break; case 2: LCD_data_of_flashXY(text_17,8,1); break; case 3: LCD_data_of_flashXY(text_18,8,1); break; case 4: LCD_data_of_flashXY(text_19,8,1); break; case 5: LCD_data_of_flashXY(text_20,8,1); break; case 6: LCD_data_of_flashXY(text_21,8,1); break; case 7: LCD_data_of_flashXY(text_22,8,1); break; case 8: #if 1 if (off_charge==1) { lcd_count=5; break; } if (u_bat<232)// 13.57V/0.0585=230 на АЦП. { lcd_count=255; LCD_string_of_flashXY(text_12,8,1); } else if (u_bat<=234) { lcd_count=0; } else if (u_bat<=236) { lcd_count=1; } else if (u_bat<=238) { lcd_count=2; } else if (u_bat<=240) { lcd_count=3; } else if (u_bat<=242) { lcd_count=4; } else if (u_bat<=244) { lcd_count=5; } else { lcd_count=5; } break; #endif default:lcd_count=5; break; } } } else { lcd_count=255; if (flags.lcd_clr_txt1==0) { flags.lcd_clr_txt1=1; LCD_string_of_flashXY(text_8,0,1); } } #endif #if 1 /*Аварийный таймер отключения*/ if (bat_count>=60000 && eeprom_read_byte(&timer_time))//мсек 60000 { bat_count=0; bat_off++; #if 1//для отладки LCD_string_of_flashXY(text_37,0,1); char buffer; utoa(bat_off, buffer, 10); if(bat_off>=100) { LCD_dataXY(buffer,2,1); LCD_data(buffer); LCD_data(buffer); LCD_string_of_flashXY(text_38,5,1); } else if (bat_off>=10 && bat_off<=99) { LCD_dataXY(buffer,2,1); LCD_data(buffer); LCD_string_of_flashXY(text_38,4,1); } else { LCD_dataXY(buffer,2,1); LCD_data(" "); LCD_string_of_flashXY(text_38,4,1); LCD_dataXY(" ",7,1); } #endif } if (u_bat>U_bat_tim && off_charge==0)//сброс аварийного таймера по напряжению { bat_off=0; U_bat_tim=u_bat; } if (i_bat= eeprom_read_word(&tim_dlitl))//180 минут по умолчанию { charg_off(); LCD_string_of_flashXY(text_14,0,1); bat_off=0; flags.lcd_clr_txt1=1; } #endif #if 1/*Регулировка напряжения на выходе блока питания*/ if (stok_reg>=100) { stok_reg=0; uint8_t u_stok=u_stokk(); if (u_stok>62)//0,0195*51*2=2 вольта на стоке. { if (OCR1A!=0) { OCR1A--; } } else if (u_stok<60) { if (OCR1A!=255) { OCR1A++; } } #if 0//временно для теста char buff; utoa(u_stok, buff, 10); if (u_stok>=100) { LCD_dataXY(buff,3,1); LCD_data(buff); LCD_data(buff); } else if (u_stok>=10 && u_stok<=99) { LCD_dataXY("0",3,1); LCD_data(buff); LCD_data(buff); } else { LCD_dataXY("0",3,1); LCD_data("0"); LCD_data(buff); } #endif } #endif #if 1 /*Режим хранения батареи*/ if (bat_save>=60000 && eeprom_read_byte(&save_on)!=0) { bat_save=0; if (u_bat<=eeprom_read_byte(&u_start))//12.5V / 0.0585=213,6 на АЦП { enc_data=eeprom_read_byte(&i_pusk); } } #endif #if 1 /*Режим отключения питания*/ if (enc_data && eeprom_read_byte(&power_off) && energy_flag==0) { energy_flag=1; eeprom_update_byte(&energy_off,1); } #endif } } #if 1 //тексты на дисплей const uint8_t PROGMEM text_1="Зарядное"; const uint8_t PROGMEM text_2="устройcтво"; const uint8_t PROGMEM text_3="SIRIUS 5А "; const uint8_t PROGMEM text_4="Для АКБ 12В"; const uint8_t PROGMEM text_5="Подключи батарею"; const uint8_t PROGMEM text_6="УЧТИ полярность."; const uint8_t PROGMEM text_7="U="; const uint8_t PROGMEM text_8=" "; const uint8_t PROGMEM text_9=" I="; const uint8_t PROGMEM text_10="В "; const uint8_t PROGMEM text_11="А "; const uint8_t PROGMEM text_12=" "; const uint8_t PROGMEM text_13="БАТАРЕЯ ЗАРЯЖЕНА"; const uint8_t PROGMEM text_14="ЗАРЯД ОТКЛЮЧЕН! "; // const uint8_t PROGMEM text_15={0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0}; // 1 const uint8_t PROGMEM text_16={0xFF,0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0}; // 12 const uint8_t PROGMEM text_17={0xFF,0xFF,0xFF,0x20,0x20,0x20,0x20,0x20,0}; // 123 const uint8_t PROGMEM text_18={0xFF,0xFF,0xFF,0xFF,0x20,0x20,0x20,0x20,0}; // 1234 const uint8_t PROGMEM text_19={0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0x20,0x20,0}; // 12345 const uint8_t PROGMEM text_20={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0x20,0}; // 123456 const uint8_t PROGMEM text_21={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0}; // 1234567 const uint8_t PROGMEM text_22={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0}; // 12345678 const uint8_t PROGMEM text_23 ="Режим сохр. "; const uint8_t PROGMEM text_24 ="ВКЛ "; const uint8_t PROGMEM text_25 ="ВЫКЛ"; const uint8_t PROGMEM text_26 ="U запуска <"; const uint8_t PROGMEM text_27 =" СЕРВИСНОЕ МЕНЮ "; const uint8_t PROGMEM text_28 =" ВЫХОД ИЗ МЕНЮ "; const uint8_t PROGMEM text_29 ="I запуска "; const uint8_t PROGMEM text_30 ="Режим отключения"; const uint8_t PROGMEM text_31 ="питания "; const uint8_t PROGMEM text_32 ="Аварийный Таймер"; const uint8_t PROGMEM text_33 =" ВКЛ "; const uint8_t PROGMEM text_34 =" ВЫКЛ "; const uint8_t PROGMEM text_35 ="задержка "; const uint8_t PROGMEM text_36 =" мин"; const uint8_t PROGMEM text_37 ="T="; const uint8_t PROGMEM text_38 ="min"; #endif

Вопросы задаем сюда dmalash@gmail com
Если кому то нужен прошитый микроконтроллер, то его можно заказать отсюда . Все остальное естественно собираем и делаем сами.

Сейчас немного видео и фотографий. Вот так выглядел самый первый прототип.

Вот так выглядела первая плата.

В последствии была сделана более цивильная плата.

Потом был придуман корпус.

Потом все это было собрано.

В итоге получилось вот что.

Скачать схему зарядного устройства можно .
Заказать прошитый микроконтроллер можно .
Дополнительная информация., печатная плата .
Вопросы и пожелания [email protected]

Микропроцессорное зарядное устройство для необслуживаемых свинцово-кислотных аккумуляторных батарей.

Рис. 1 Устройство со снятой крышкой.

План.

1) Обратная связь.
2) Введение.
3) Что же такое простейшая автоматика?
4) А как же улучшить ситуацию?
5) Подходим к вопросу: "А что же хотел пользователь"?
6) Недостатки конструкций, найденных в Интернете.
7) Создание собственной системы.
8) Поиск подходящего БП.
9) Подготовительный этап (сборка аналоговой части).
10) Установка в корпус и переподключение трансформатора.
11) Сборка цифровой части.
12) Методика прошивки и Fuse биты.
13) Что нужно пользователю видеть на верхнем уровне?
14) Финальное тестирование.
15) Как в последующем обновлять прошивку?
16) Алгоритм автономной работы.
17) Прошивка и программа контроля.
18) А что можно почитать по данному вопросу?

Обратная связь.

Так как в конце статьи ссылку на ветку форума по данной теме никто не видит, то выношу эту ссылку в самый верх. То есть если у Вас есть вопросы или предложения по данной теме, то Вам на наш форум . Или пишите на адрес электронной почты указанный В САМОМ низу страницы.

Введение.

После выхода на нашем сайте двух статей о и UPS под нужды , мы много раз сталкивались с проблемой зарядки и тестирования необслуживаемых свинцовых аккумуляторных батарей (они же lead acid battery или, по простому, аккумуляторы из UPS). К моменту написания этой статьи у автора уже был опыт создания и двухлетней эксплуатации "автоматического" зарядного устройства, сделанного из компьютерного ATX блока питания (в свою очередь собранного на ШИМ контроллере ). Вот документация на и ее аналог .

Что же такое простейшая автоматика?

Ну начнем с определения. В большинстве найденных в Интернете схем простейших "автоматических" зарядных устройств, под автоматикой понималось ограничение тока заряда (обычно около 1-2А) до некоторого порогового напряжения (обычно около 13.8-14.5В), а потом переход на стабилизацию напряжения.

Рис. 2 Блок схема TL494.

Измерение напряжения проводится через делитель напряжения, подключенный к 1ой и 2ой ногам , а ограничитель тока, отключением выходных ключей микросхемы по средствам подачи +5В на 4 ногу . По-другому, берем ATX блок питания на или его аналоге, создаем токоизмерительную цепь из сопротивления 1Ом 5Вт и оптопары, выходы оптопары заводим в обратную связь по току (4 ногу ), организуем делитель напряжения (для 1ой и 2ой ног ) для ограничения напряжения на выходе, ну и на последок организуем питание вентилятора - вот и все работы. Для наглядности приведу схему переделки под .
Если выкопировка из схемы моего блока питания отлична от вашей, то с 28 разными схемами ATX блоков питания, собранных на и их аналогах.
Самый ближайший аналог схемы под мой блок питания вот .
Если схем блоков питания разных вагон, а нужной как всегда нету, то придется срисовывать схему самому. Отсутствие унификации связанно с тем, что дешевые блоки питания собирают "на коленке", по принципу как есть, включая .
Но, вернемся к нашим ба... блокам питания: к сожалению, такое простое и красивое решение имеет ряд технологических недостатков. Как было написано на одном сайте со схожей тематикой: "Есть такая наука - ХИМИЯ. И все, что происходит в аккумуляторных батареях, подчиняется законам Химии. Все "умные советы бывалых", которые не ложатся на химию - вредны по определению" (С) adopt-zu-soroka .
От себя хочу добавить, что аккумулятор находится на стыке ФИЗИКИ и ХИМИИ, то есть, кроме химических процессов есть конвенция раствора активной массы, иссыхание пластин и нагрев, которые рассмотрены в физике.

Что это означает применительно к нашей простейшей "автоматической" зарядке:
1) Постоянный "маленький подзаряд", обеспечивающий поддержание порогового напряжения (в режиме стабилизации напряжения), сушит аккумуляторы (из них испаряется вода, долить которую в необслуживаемые аккумуляторы относительно сложно), что в свою очередь сильно снижает срок службы аккумулятора. Особенно, если аккумулятор оставляют каждую ночь на подзарядку.
2) Зарядка большим, не пульсирующим током в самом начале заряда (особенно при сильно разряженных аккумуляторах), сильно снижает оставшийся ресурс аккумулятора (оставшееся количество циклов заряд/разряд), а в некоторых случаях без раскачки аккумулятор не берет заряд.
3) Зарядка постоянным током без пульсаций, в десятые доли герца увеличивает сульфатацию и препятствует более полному использованию хим.веществ, т.к. не дает пауз на выравнивание плотности раствора активной массы.
4) Пункт 3 также относится и к тренировочному разряду, который в простейшей "автоматической" зарядке просто не реализован, а в большинстве самодельных, микропроцессорных зарядках полностью не контролируется.
5) ECR аккумулятора измеряют на относительно большой частоте, поэтому для измерения ECR желательно иметь схему тестового разряда относительно большим током малой скважности, т.е. иметь блок тестирования подключаемый без фильтровочных конденсаторов.

Подвожу итог: Для однократного использования простейшие "автоматические" зарядки вполне подходят, а при постоянной(каждодневной) зарядке одного и того же аккумулятора применение простейших зарядок сильно снижает ресурс заряжаемого аккумулятора. А в большинстве своем средств диагностики они вообще не имеют, так как при такой реализации единственный метод диагностики это проверка постоянным током РАЗРЯДНОЙ лампочкой 12В 75Вт. Но по результату такого теста можно только примерно оценить процент заряда, а определить оставшуюся емкость аккумулятора (косвенно о емкости можно сделать вывод по значению ECR) с его помощью практически невозможно. Более плотное знакомство с их программным обеспечением выявило практически поголовное отсутствие самодиагностики у самодельных устройств.
Отходя от темы скажу, что при наладке своего устройства мной были зафиксированы случаи частичной порчи некоторых байт прошивки в микроконтроллере, т.е. при программировании он проходил верификацию, но на следующий день прошивка билась и если бы в моей системе отсутствовал блок самоконтроля целостности прошивки, то система могла вести себя неадекватно (как вариант испортить аккумулятор).

А как же улучшить ситуацию?

Создать схему измерения токов (тока заряда и тока разряда) и напряжения в обычном и измерительном режиме, что в совокупности даст возможность подсчитать количество энергии, передаваемой в оба направления и поручить заряд ГРАМОТНО составленному алгоритму, чередующему заряд/разряд и продолжительность циклов (то есть, алгоритм, составленный с учетом физ. и хим. структуры данного типа аккумуляторов). Правда, тут надо уточнить, что грамотно составленный алгоритм составляется по имеющимся данным и к данной конкретной ситуации, а при изменении исходных данных или ситуации требуется и корректировка алгоритма.

Подходим к вопросу:
"А что же хотел пользователь"?

Как другим - не знаю, а большинству моих пользователей нужна зарядка с простейшим управлением, которую можно будет использовать:
1) Для зарядки необслуживаемых свинцово - кислотных необслуживаемых аккумуляторных батарей, напряжением 12В и емкостью от 12V3.3Ah до 12V18Ah. Описание свернуто в "пояснения":


2) Для каждодневной (правильней сказать на всю ночь) подзарядки не полностью разряженных свинцово - кислотных аккумуляторных батарей.
3) Для тестов определения оставшегося процента заряда и оставшейся емкости свинцово - кислотных аккумуляторных батарей.
4) Для тестовых/тренировочных автоматических циклов заряд-разряд свинцово - кислотных аккумуляторных батарей по месту (например, отключенных от UPS батарей в серверном шкафу без их физического демонтажа из шкафа).

При этом данная конструкция должна обеспечивать:
1) Функцию самодиагностики основных блоков устройства и звуковую индикацию внештатных ситуаций таких как: переполюсовка клемм, подключение аккумулятора не того напряжения, внезапное отключение аккумулятора во время заряда/разряда, замыкание выходной цепи и т.д.
2) Функцию обновления прошивки без внешнего программатора (не вскрывая корпуса устройства).
3) Память последнего активного режима и, в случае обесточивания и повторного включения, автоматически возвращаться к прерванной операции.
4) Достаточную точность измерительной системы, необходимость которой диктует физика и химия процесса.

Рис. 3 Зависимости срока службы от напряжения в режиме StendBy.

Подробности по вопросам "достаточной точности измерительной системы" свернуты в "пояснения".

По ГОСТ 825-73 "Аккумуляторы свинцовые для стационарных установок" номинальное напряжение свинцового стационарного аккумулятора любой емкости принято считать равным 2В. Это наименьшее допускаемое напряжение на зажимах полностью заряженного аккумулятора в течение первого часа разряда десятичасовым режимом при плотности раствора соляной кислоты 1205±5 кг/м3 и температуре раствора +25"С. Предельное напряжение, до которого разрешается разряжать аккумуляторы при температуре раствора +25° С, составляет: для режимов разряда - не короче трехчасового = 1,8В, а для более коротких режимов (включая 15-минутный) = 1,75В (то есть, до 10.8В на 12В аккумуляторе, измеренное под нагрузкой или не ниже 12В без нагрузки).
Но в документации на один из аккумуляторов (смотри ) эти параметры немного отличаются. До 10.8В на 12В аккумуляторе при токах от 0.16С и менее (от 5 часового разряда и до 18 часового) и до 9.3В на 12В аккумуляторе при токах от 1С-3С (от 8 минутного разряда и до 43х минутного). Правда с оговоркой - при таких токах аккумулятор прослужит 260 циклов заряд/разряд или 5 лет в режиме StendBy.
Этот же , но в маленьком масштабе (зато с пояснениями) представлен в документации к аккумулятору .
График зависимости срока службы аккумуляторной батареи от напряжения постоянного подзаряда в режиме StendBy приведен на Рис. 3.
Указанные предельные значения напряжений, до которых можно разряжать аккумуляторы, установлены опытным путем. Они выбраны с таким расчетом, чтобы не вся активная масса превращалась при разряде в сернокислый свинец, так как это вызвало бы чрезмерную сульфатацию пластин.
То есть, можно сделать вывод о том, что нельзя разряжать ниже допустимого предела и нельзя перезаряжать выше указанного номинала - в этом случае идет работа только с "активной массой" и не допускается разрушение пластин в первом случае и кипения раствора - во втором.


Недостатки конструкций, найденных в Интернете.

Идем в Интернет и находим несколько десятков готовых микропроцессорных зарядок. Как говорится - задача на уровне школьного кружка "сделай сам", поэтому практически каждый радиолюбитель начинает свое творчество с "изобретения" зарядки из подручных средств. Вот только, к сожалению и результат по качеству не выходит за уровень школьного кружка... Смотрим на описание устройств и их схемы и на некоторых из них обнаруживаем не очень приятные вещи:
1) Отсутствует даже упоминание о технике безопасности работы с аккумуляторными батареями и сетью ~220В.
2) Отсутствие точной настройки измерительной системы (измеряемого напряжения и тока). Как писалось выше, превышение или занижение параметров может привести к разрушению пластин или выкипанию раствора.
3) Использование дорогих датчиков тока. Напомню, что датчик тока на основе эффекта Холла плюс дисплей стоят дороже всей системы вместе взятой. При том, что исходя из химии и габаритов используемых аккумуляторов (напомню мой пользователь хотел от 3,3 до 18 Ah), измерять больше нескольких ампер нам не придется. А про дисплей написано в пункте 4.
4) Наличие кучи светодиодов, кнопок и дорогого дисплея на корпусе устройства. Вы когда-нибудь пробовали втиснуться в глубь серверного шкафа и посмотреть на расстоянии 1м что написано на дисплее размером в спичечный коробок? А без задания режима через кнопки навигации (сверяясь с надписями на дисплее), найденные конструкции не работают. Поставить дисплей побольше и вынести его вместе с кнопками на 1м кабеле? А раз выносить, то это уже два разных устройства: отдельно зарядка и отдельно дисплей.
5) Питание вентилятора системы от напряжения заряда. То есть, или от 16В (см. пункт 5) и при этом городить понижающую часть или питать напрямик от напряжения на клеммах (где мы имеем от 9В до 14В вместо штатных 12В).
6) Создание своей импульсной схемы стабилизации напряжения из входных 16В. То есть, история на тему, а давайте создадим еще один дополнительный ШИМ (один на уже есть в блоке питания), но на низковольтной части, что увеличит габариты схемы, потребует дополнительных силовых ключей на радиаторах и уменьшит КПД системы в целом.
7) Разрядный алгоритм без контроля разрядного тока. А в большинстве случаев и без элементов его замера (я не про общий ток который измеряется практически везде, а про разрядный).
8) Необходимость перемотки силового трансформатора (Ниже в подробностях свернуто 3 способа разборки и перемотки). Это конечно даст прирост тока, но этот прирост нам нужен? Со штатными обмотками трансформатор может дать 3-5А, из которых в данной конструкции мы используем максимум 1-2A (14В*2А=28Вт) и 15A нам для нашего ТЗ не надо (14.8В*15А=217Вт).

"Щелкните по этому тексту, чтобы развернуть пояснения"

Способ 1 = Выпаиваем трансформатор, аккуратно снимаем наклейку с надписью и разматываем желтый скотч, разогреваем его в печке до 150 градусов в течении 15 минут и расшатать сердечник вручную в перчатках.

Рис. 4 После расшатки.
БП SL-Lite

Способ 2 = Выпаиваем трансформатор, аккуратно снимаем наклейку с надписью и разматываем желтый скотч, обдуваем феррит феном от паяльной станции или строительным феном со всех сторон в течении пары минут. Половинки начинают шевелиться относительно друг друга просто разъединяем их. Сама катушка легко снимается, что очень удобно при намотке.

Рис. 5 Процесс обдува феном.
Фото пользователя DenGess из топика БП SL-Lite

Способ 3 = Выпаиваем трансформатор, аккуратно снимаем наклейку с надписью и разматываем желтый скотч, вывариваем трансформатор в воде в течении 10 минут.

Рис. 6 Вы еще варите трансформаторы в чайниках?
Фото пользователя DenGess из топика БП SL-Lite



9) Габариты устройства часто превышают размер стандартного ATX блока питания. За бортом чаще всего оказывается "утилизатор энергии разряда", обычно его роль выполненяет автомобильная лампочка из фары, из за чего вся конструкция начинает сильно смахивать на детский ночник. Причем как говорилось выше лампочка в "ночнике" просто включается, без какого либо контроля или стабилизации потребляемого ею тока.
10) Отсутствие систем самодиагности и систем контроля целостности программного обеспечения (об этом я уже писал выше).

Создание собственной системы.

Ну раз готовых подходящих разработок не наблюдается, то постараемся описать порядок изготовления подобной системы самостоятельно из того, что было под руками - "Я тебя слепила из того что было" (С) не мой.
Хотя выше писалось, что это задача на уровне школьного кружка "сделай сам", но ее выполнение сопряжено с высоковольтными импульсными источниками питания, поэтому, если вы до этого их не разрабатывали, то лучше начать тренироваться на чем-нибудь другом, менее энергонасыщенном, более низковольтном и как следствие менее опасным... К тому же, аккумуляторы при неправильном использовании, сами по себе не безопасны и помещения аккумуляторных на всех производственных сооружениях относятся к классу "А" - как сверх пожароопасные.
Ну и как всегда - оговорка. Про возможность пожара и поражение электрическим током при нарушении правил эксплуатации и некачественной сборке я упоминал выше. А про возможность химического поражения содержимым аккумулятора в результате замыкания его клемм и теплового разрыва корпуса, говорю сейчас. Поэтому все эксперименты с аккумуляторами и самодельными зарядными устройствами вы делаете на свой страх и риск, осознавая всю ответственность за возможные последствия.
Ну и наше любимое ПУЭ... Электропитание осуществляется от сети переменного тока 50Гц, 220В в соответствии с "Правилами устройства электроустановок". Для обеспечения безопасности людей, электрооборудование должно быть надежно заземлено в соответствии с требованиями ПУЭ и паспортными требованиями на электрооборудование. Помещение в котором располагается оборудование должны быть оборудованы контуром - шиной защитного заземления, с которым соединяются корпуса всех устройств через розеточную сеть. Для присоединения заземляющих проводников в шину должны быть выведены винты М8. Контур - шина защитного заземления должен соединяться с заземляющим устройством. Величина заземления должна быть не более 4 Ом. Заземление внутри помещений должно соответствовать ГОСТ 12.1.030-81. Создание заземления и соответствие его стандартам обеспечиваются пользователем.
Если Вас абзацы выше не напугали (вы с ними согласны) и вы ознакомились в интернете с техникой безопасности при работе с аккумуляторами и теорией первой медицинской помощи при химических ожогах и поражении электрическим током, а также запаслись огнетушителем для тушения возгораний класса "E" (позволяет тушить оборудование под напряжением) и выполнили все меры по улучшению безопасности, то приступим непосредственно к переделке БП в микропроцессорную зарядку.
Причем хочу отметить , что опасны (при не соблюдении техники безопасности) в данном применении, аккумуляторы и сетевое напряжение ~220В. А сам переделываемый блок питания относится к слабогорючим (т.е. он не поддерживает горение и практически не горит если его из вне паяльной лампой не жечь...) и химически активных веществ (кислоты) в себе не содержит.
Вывод: Данные замечания относятся практически ко всем зарядным устройствам заряжающим аккумуляторы и питающиеся от сети ~220В. Поэтому если авторы других самодельных зарядных устройств не предупреждают Вас о "побочных свойствах" в их устройстве и тонкостях его эксплуатации, то это вовсе не означает, что этих свойств и тонкостей в них нет.
Хотя данная статья ориентирована на относительно опытных пользователей, не первый год владеющих паяльником, я ниже буду описывать все очень подробно и пошагово - как для начинающих. Такой подход позволит провести полный контроль сборки и не забыть проверить какой-либо из блоков. Т.е. ниже будет описан процесс изготовления и настройки каждого блока моей .

Рис. 7 Структурная схема устройства "на пальцах".

Подробное описание структурной схемы свернуто в "пояснения".

"Щелкните по этому тексту, чтобы развернуть пояснения"

А раз мы решили пояснять на пальцах, то данное устройство можно наглядно сравнить с водопроводной системой, изображенной на Рис. 7 (перетоки энергии в ней анимированы ниже по тексту). И для полной аналогии левый верхний кран изображает управление ШИМ контроллером . Левый синий бак это фильтровочный конденсатор после выпрямительного мостика, два зеленых бака соединенных маленькой трубкой это аккумулятор, а трубка, в свою очередь, олицетворяет внутреннее сопротивление аккумулятора. Краны под баком это два реле отключения аккумулятора от зарядно/разрядной и отключения от тестовой систем. Верхний правый кран это две тестовые РАЗРЯДНЫЕ лампочки 12В 50Вт включенные на ШИМ управляемый от центрального процессора. Нижний правый кран это штатная система разряда стабилизированным током состоящая из 8 РАЗРЯДНЫХ лампочек на 13.8В по 0.16А контролируемая ШИМ контроллером .

Стандартные вопросы по блок схеме:
- Зачем два ШИМ на разряд?
- А нельзя ли меньше лампочек? Может заменить их одной лампочкой?
- Может вместо лампочек поставить одно сопротивление и светодиод?
- Ладно, это все понятно, но два включающих реле вместо одного переключающего то зачем?

И ответы на них:
- Нужна малая скважность при малом токе разряда и очень большая при тестовом. Если поставить один контроллер, то это условие не соблюдается, т.к. мы получим строго наоборот, плюс мешается конденсатор - синий бак по схеме.
- Лампочки очень не любят момент включения с холодной спиралью на полное напряжение, поэтому напряжение и ток понизили, установив несколько лампочек.
- Лампочки в отличие от сопротивлений имеют свойство стабилизировать ток, если эту функцию возложить на контроллер - он будет регулировать ток скважностью, а нам нужна малая и желательно постоянная скважность в некотором диапазоне напряжений...
- Два включающих реле вместо одного переключающего установлено ДЛЯ НАДЕЖНОСТИ! При тестирование были случаи самопроизвольного открытия силового ключа ШИМ контроллера от электромагнитных наводок на провода в корпусе устройства.


Поиск подходящего БП.

Находим рабочий компьютерный ATX блок питания на , желательно с "Т" образными радиаторами. Самый простой способ поискать у друзей или наведаться в ближайшую фирму по ремонту компьютеров и купить несколько дохлых блоков питания по цене 1$ за пару.
Как выбрать нужный по внешним признакам свернуто в "пояснения".

"Щелкните по этому тексту, чтобы развернуть пояснения"

Как выбрать нужный: "Т" образные радиаторы видны через щели, а отличить блок питания на от более современной его версии (например на которая более сложна и менее подходит для переделки) можно по размеру микросхемы и наличии второй микросхемы или транзисторов во вторичке. То есть, если во вторичке видно две микросхемы или куча транзисторов, то это точно не GS6105, а или ее аналог. Например, является обрезанной версией в части защиты от превышения входного напряжения, но при этом полностью совместим по ногам. Если есть выбор из нескольких испорченных блоков питания, то определить ремонто - пригодный не вскрывая корпуса можно, измерив Омы на разъеме питающего кабеля ~220В. Или омы на входе есть, или там бесконечность (пробит входной предохранитель). Если пробит входной предохранитель, то такой блок лучше оставить (чинить первичку долго, сложно и нудно). А, измерив Омы между землей и +5 шиной, мы видим или заряд конденсатора или сопротивление около 1-20 Ом. Если обнаруживается 1-20 Ом вместо заряда, то сплавился в гайку диод +5В шины. Если при этом не вылетел входной предохранитель, то в БП, скорее всего, работает защита (но главный вывод вам повезло и в данном экземпляре она есть). А так как диод в 5 вольтовой цепи нам, для нашей конструкции не нужен, то в 95% такой БП можно будет восстановить (для проверки "на старт без нагрузки" заменив на два обычных), а потом и переделать.
Кстати замечено, что не все БП стартуют без нагрузки. Поэтому, если в БП сломался вентилятор (а особенно если кроме ветродуя подсохли кондеры во вторичке), то попытка его включить замыкая PW_On может не привести к желаемому результату и БП по этой причине может быть записан в дохлые.
Внимание!!! Если в блоке питания неработает дежурка (+5vSb) то входные конденсаторы после мостика заряжаются до 400В и длительное время могут оставаться заряженными даже после отключения блока питания от сети.
Мне попался блок питания, имеющий схему, отдаленно напоминающую схему из данного мануала .
Но если у вас другой, то прикладываю архив с 28 схемами ATX блоков питания, собранных на и их аналогах .
Ну и далее блок питания надо проверить под маленькой нагрузкой (я использую два HDD - динозавра на 25мб каждый), а если он не работает, то починить, подробнее о ремонте блоков питания на ищите в интернете.


Подготовительный этап
(сборка аналоговой части).

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

Рис. 8 Разрядная часть в работе.

Подробности по данному пункту свернуты в "пояснения".

"Щелкните по этому тексту, чтобы развернуть пояснения"

Рис. 9 Решетка для cooler"а.

1) Убеждаемся, что блок питания включается и дает +5 и +12 (с разбросом +/-1В). Для включения провод PW_On (обычно это провод зеленого цвета находящийся между двумя черными в АТХ вилке), надо замкнуть скрепкой на один из черных (землю). Если блок питания не работает или cooler у него плохо крутится, то чиним БП и смазываем cooler (если и после смазки он плохо крутится - меняем cooler). Если решетка cooler"а выполнена в виде прорезей в корпусе блока, то для улучшения обдува и уменьшения шума желательно выкусить ее кусачками и заменить на стандартную - внешнюю решетку для cooler"а.

Рис. 10 После установки решотки.

Рис. 11 Трансформатор вентилятора и стаб. +/-5В.

Внимание!!! Компьютерный блок питания нельзя включать без нагрузки, поэтому его надо чем либо нагрузить. Как вариант подключить полудохлый HDD (с вращающейся механикой, я использую два HDD - динозавра на 25мб каждый) или пару cooler"ов на +12В. CD-Rom в качестве нагрузки не подходит, так как он не дает постоянной нагрузки.
7) Проверяем стабилизацию напряжений +5 и -5В и собираем блок питания в корпус, при этом из корпуса должны быть выведены +12/+5/Gnd/-5/-12 от и стабилизированные +5 и -5В от установленного трансформатора питания. Лампочка ~220В 200Вт при этом тлеть или светиться не должна.
8) Собираем схему с ОУ на . Базируясь на познаниях в электротехнике (в рамках школьного курса физики), собираем тестовые делители из постоянного сопротивления, питающего диод (на обычных диодах падение напряжения около 0.56 В) к которому подключен переменный резистор. Вращая переменный резистор получаем напряжение +0.100В, а на втором аналогичном плече напряжение -0.100В. Отдельно оговорюсь, что тестер надо перевести на шкалу с милливольтами, если ваш тестер имеет шкалу только 20В или класс точности у него хуже чем 0.5, то ищем нормальный тестер.
9) Полученные +0.100В и -0.100В подаем по очереди на вход токовой цепи, собранной на и подбираем резисторы обратной связи, тем самым настраиваем измерительную часть по замеру токов. Наша задача - добиться на выходе операционного усилителя измерителя тока напряжения равного 1.250В. Для контура заряда используется +0.100В, а для контура разряда используется -0.100В. Отдельно оговорюсь, что тестер надо перевести на шкалу 2В (но не выше 3В шкалы), если ваш тестер не имеет такой шкалы или класс точности у него хуже чем 0.5, то ищем нормальный тестер.
10) С помощью еще одного делителя получаем 6.000В, подаем на вход цепи измерения напряжения, собранной на , и настраиваем на ее выходе напряжение в 1.000В. Для тех, кто не владеет тестером оговорюсь, что измерять надо на как можно более близком приделе, то есть, 1.000В измеряется на 2В шкале (но не выше 3В шкалы), а 6.000В на большей - примерно 10В (но не выше 20В шкалы).
11) Рядом со схемой ОУ реализована звуковая сигнализация, сигнализирующая ошибочное включение (переполюсовку) клемм аккумулятора на интегральном зуммере 1212FXP или его аналоге (кстати если у кого есть датащит на 1212FXP или его аналог - пожалуйста пришлите). При подключении надо соблюдать полярность зуммера и блокирующего диода на тот случай если в зуммере обнаружится КЗ в схеме присутствует защитное токоограничительное сопротивление. После сборки желательно проверить зуммер. Для проверки я использовал 9В батарейку типа "Крона". Перед экспериментом желательно отключить блок питания от сети.
12) Собираем схему разряда на и настраиваем на потребление тока около 0.5А (нагрузку следует выбирать из расчета 10 часового разряда для вашего аккумулятора, при этом ток будет около 0.1С подробнее смотрите в документации на ваш аккумулятор, там на графике один из токов разряда дает 10Hr). Для тех кто не владеет терминологией "C" это емкость аккумулятора и для 7.2 Ah аккумулятора 0.1*С=0.72А. Схема включения нагрузки у меня не совсем стандартна, но так как мы делаем стабилизатор тока (а не понижающий ШИМ блок питания), который должен работать практически при любом значении входного напряжения, было принято решение ставить ключ со стороны земли (что характерно для Step-Up, а не Step-Down), при таком включении мы открывать его напряжением, не зависящим от напряжения на входных клеммах. Правда при этом на нагрузке (РАЗРЯДНОЙ лампочке) получается переменное напряжение, но лампочки не полярные, а основную функцию (разряд стабилизированным током) данная схема решает.
Внимание!!! В цепи управления Мосфетом должен стоять обычный быстродействующий диод. Не диод Шотки и не надо спалалеливать оба диода в корпусе BAV70, подключите только один из них.

Рис. 12 Восемь разрядных лампочек.

Для компактности устройства, вместо одной автомобильной РАЗРЯДНОЙ лампочки 12В 1А, я установил 8 РАЗРЯДНЫХ лампочек на 13.8В по 0.16А внутрь устройства (прямо на вентилятор, для отвода выделяемого ими тепла). Такое решение позволяет исключить внешний блок разрядки и разместить все блоки в штатном корпусе блока питания. Диод на обратную полярность я использовал демонтированный из 12В линии обычно это аналог SR1040 (см. инструкцию на всю серию ).
Для тех кто не догадался - включается разрядная часть закрытием транзистора, то есть замыканием на землю управляющего пина (заземлением через резистор базы транзистора).
Лампочка ~220В 200Вт во входной цепи, при экспериментах с включенной разрядкой, должна слабо тлеть.
Внимание!!! Компьютерный блок питания нельзя включать без обдува радиаторов, поэтому со снятой крышкой не включать!!!


Установка в корпус и переподключение трансформатора.

Рис. 13 Фильтровочные конденсаторы.

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

"Щелкните по этому тексту, чтобы развернуть пояснения"

1) Отпаиваем все лишнее во вторичке, затем отпаиваем "хобот" и подключаем к центральной части, довесив конденсаторами. Керамические конденсаторы брать качественные, рассчитанные на относительно большой ток. Такое решение связано с тем, что LowECR 105C конденсаторы напряжением выше 16В трудно достать, поэтому заменяем их парами - обычный электролит и качественная керамика. В качестве керамики я ставил полиэтилентерефталатные конденсаторы типа 1мкФ на 250В.
В данном случае мы объединяем обмотки от линий +5В и +12В получив одну +16В но с током от наименьшей линии. У китайцев на корпусе БП обычно написана липа и надо исходить из реального размера силового трансформатора. Для трансформатора в 250Вт (не путать с липой обзывающего его как 450ВТ на этикетке) с шины +5В мы можем снять ток до 20А, а с шины +12В до 6А. Т.е. получаем ток до 5A.

Рис. 14 Липовый 450ВТ (слева), 170Вт (центр) и 300Вт (справа).

Да конечно можно перемотать трансформатор (методика перемотки и фотографии описывались выше)... Это конечно даст прирост тока, ну скажем до 15A (для трансформатора в 250Вт), но этот прирост нам нужен? Со штатными обмотками трансформатор может дать 3-5А (для трансформаторов в 100-250Вт), из которых в данной конструкции мы используем максимум 1-2A (14В*2А=28Вт) и 15A нам для нашего ТЗ не надо (14.8В*15А=217Вт).
Поэтому я поставил обычные 3х амперные диоды Но если вам ну очень хочется добиться больших токов, то выбирайте из диодов Шотки на 100В. Ну например из серии (см. инструкцию на всю серию ) и сажайте их на радиатор.
2) Еще раз смотрим на блок схему (отображена на рис.2) и глушим обратную связь по току (на 16 ноге), потом убираем выключалку (на 4 ноге) и заменяем своей на 2х оптопарах , допаиваем наладочное сопротивление 1кОм 2Вт на выход и включаем без обратной связи. Генерация не должна заваливаться (лампочка ~220В 200Вт при этом тлеть или светиться не должна), а на сопротивлении должно быть около 36В, при этом генератор должен характерно "цикать" (издавать очень тихие звуки на подобие сверчка).
Если на выходе нет вообще ничего, то скорее всего на 4 ноге у вас дежурит +5В и его надо притягивать к земле (проверьте сопротивление в 10кОм на землю). Если на выходе появляется напряжение только при включении, а потом пропадает, значит на 16 ноге дает о себе знать штатная обратная связь по току.
3) Налаживаем обратную связь по напряжению, подбираем делитель так чтобы на выходе было по грамотному 2.275В*6=13.65В, а по вредным советам "бывалых", которые не "стыкуются" с ГОСТ 825-73 равным 2.450В*6=14.7В (что по тому же ГОСТ 825-73 сокращает жизнь аккумуляторной в 4 раза, до 25%, см. график зависимости срока службы аккумуляторной батареи от напряжения постоянного подзаряда в режиме StendBy, приведенный на Рис. 3 выше). Лампочка ~220В 200Вт при этом тлеть или светиться не должна. После отпаиваем сопротивление 1кОм 2Вт, припаянное для наладочных целей с выхода преобразователя, что приводит к тому, что частота "циков" (издаваемых звуков) упадет раза в три.
4) Устанавливаем схему разряда и лампочки на cooler. Включаем систему. Силовой трансформатор должен характерно "зашипеть", а лампочка ~220В 200Вт при этом должна начать тлеть. Долго без крышки не экспериментируем, т.к. без крышки радиатор первички, лишенный обдува, начинает ощутимо греться. Особое внимание обращаем на качество и правильность выполнение токовых цепей (на л.2 схемы они отмечены жырно). На каждую из них я применял двойной провод из косички к ATX штекеру отпаянному в пункте выше.
5) Цепляем токовую часть на выключение выходных ключей и разрядной схемой проверяем правильность подключения полярности... То есть, на детекторе тока (тот, в противовес которому весит светодиод) должно получаться положительное напряжение около + 0.625В.
6) Если в пункте 5 все прошло нормально, то на выход цепляем лампочку 12В 1.5А и переменным резистором у светодиода ограничиваем ток до 1А (напряжение на переменном резисторе около +1.25В).
7) Делаем провода подключения к аккумулятору. Для этого я взял 3 оранжевых и 3 черных провода из косички к ATX штекеру, отпаянному в пункте выше. Скручиваем по 3 провода в косичку и с одной стороны подпаиваем к скрутке стандартные клеммы для аккумулятора. С другой стороны два из трех проводов косички подключаем к токовым цепям, а оставшийся конец подключаем измерение напряжения. Для эстетики на клеммы надеваем термоусадочный кембрик.
8) Ну вот у нас получилось "автоматическое" зарядное устройство, сделанное из компьютерного ATX блока питания, под автоматикой которого понимается ограничение тока заряда (мы выставили 1А), а при достижении некоторого порогового напряжения (мы выставили 13.8В), переход на стабилизацию напряжения. А после надстройки цифровой части мы получим микропроцессорное зарядное устройство для необслуживаемых свинцово - кислотных аккумуляторных батарей.


Сборка цифровой части.

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

"Щелкните по этому тексту, чтобы развернуть пояснения"

1) Внимание!!! Микропроцессор ATMega8 (еще есть варианты прошивки для ATMega48 и ATMega88) устанавливается в панельку только в 6 пункте! Все проверки проводятся со снятым микропроцессором.
2) Собираем схему включения реле. В качестве реле было выбрано реле на 12В с током коммутации 10А, хотя если его сравнивать с пускателем 3 габарита, то можно придти к выводу, что Амперы там китайские (такие же маленькие). После выводим на переднюю панель корпуса светодиод показывающий подключение к аккумулятору (показывающий включенность реле). Других средств индикации мне не надо, все равно даже этот светодиод, при использовании в шкафу, видно не будет.
3) Собираем схему клавиатуры, крепим ее на передней панели, под ней в крпусе крепим кнопку Reset с таким расчетом, что бы ее можно было нажать через щель воздухозаборника спичкой.

Рис. 15 Кнопки клавиатуры и под ними кнопка Reset.

4) Собираем RS232 часть и подключаем к пину звонка +5Sb через предохранитель (это надо для питания внешнего управляющего модуля). Временно замыкаем RX и TX пины панельки микропроцессора, открываем HyperTerminal и проверяем работоспособность RS232 части.
5) Подключаем концы к ЦАП, проверяем ограничительные диоды, впаиваем их и проверяем, что бы они отсекали отрицательное напряжение при разряде. В качестве ограничительных диодов мной были использованы низковольтные диоды Шотки .
6) Если все проверки прошли успешно, устанавливаем процессор и прошиваем его.


Рис. 16 Примерка платы в корпус.

Методика прошивки и Fuse биты.

Что нужно пользователю видеть на верхнем уровне?

  Пользователю в режимах разряд/заряд (о служебных и тестовых режимах поговорим отдельно) хотелось бы знать о текущем состоянии процесса (а процесс характеризуется средними токами и напряжением) с обновлением данных не реже 1 раза в 5 секунд.
И хотелось бы знать данные о перетоках энергии и данных текущего процесса (всего залито или слито тока) для построения графика. График не в относительных единицах, поэтому данные нужны жестко 1 раз в минуту (желательно с большой точностью).

"Щелкните по этому тексту, чтобы развернуть пояснения"

Исходя из требований минутных отчетов от устройства и учитывая, что для получения средних данных микропроцессору очень удобно делить на число 2, в какой либо степени, поэтому берем кол-во замеров равным 2^8=256 за одну минуту.
Если исходить из того, что циклы должны быть около 2х секунд (и каждый состоять не менее чем из 8 комплектов замеров), то возьмём кол-во циклов равным 256/8=32
При этом получим продолжительность одного цикла равной 60/32=1,875 сек.
Проверка: 1,875 сек это в пределах допуска от 2х секунд.
При этом приход наборов будет через каждые 60/(32*8)=0,234375 сек.
Учитывая, что для генерации каждого набора надо провести замер и вычислить по нему значения, то необходимость в прерывании возникает каждые 60/(32*8*2)=0,1171875 сек... По другому 512 раз в минуту.
Кварц у нас 11059200, поэтому редукцию на первый таймер выбираем равной 64 и инкрементироваться он будет 172800 раз в секунду. Но нам надо не 172800 раз, а в 8,53(3) быстрее 172800/8,53(3)=0x4F1A.
Полный цикл займет 32*8*2*64*20250/11059200, что ровно 60 сек (без остатка)
Проверка: 60 сек (без остатка) равно заданию "циклы точно в 1мин".
Для смены кварца в автоматическом режиме пишем формулу вычисления периода таймера 0xFFFF-(CLOCKr/64)*60/512.
АЦП микропроцессора имеет разрядность в 10 бит, но в документации сказано, что абсолютная погрешность составляет ±2 младших разряда, поэтому принимаем разрядность АЦП=8 бит. Замеров у нас по каждому каналу 0xFF в минуту, а максимальное кол-во сохраняемых минутных репортов примем равным 0xFFFF (на 45 суток). Поэтому под токи отводим 4 байта на канал, а под мощности 5 байт на канал. Каждый пакет желательно пронумеровать, а эксплуатировать девайс мы собираемся не менее 24 часов - отводим под номера пакетов два байта (NnNn).
Это все упаковываем в текстовый формат и самый младший байт не отправляем, что равносильно делению на 256 (система измеряет 256 раз в минуту, репорты минутные, поэтому требовалось поделить сумму на 256)
Далее упаковываем все это в посылку вида:

>N_NnNnXiXiXiYyYyYyWwWwWwWwTtTtTtTt +#11 +#13

И того 37 байт на минутные пакеты (точно 60 сек).
А на счет текущих данных разряд/заряд которые надо предоставлять не реже чем 1 раз в 5 секунд, то берем среднее арифметическое за два цикла (2 цикла * 8 замеров = 16 что составляет 2 в степени четыре = удобно делить на МК), упаковываем их в текстовую посылку, добавляя байт состояния и выдаем пользователю каждые 2*1,875 = 3,75 секунды (что укладывается в заданный не реже чем 1 раз в 5 секунд).
Данные будем выдавать в текстовом виде, поэтому, вначале префикс ">P_".

>P_KkIrIzUu +#11 +#13

И того 13 байта на 4х секундные пакеты (точнее 3,75 сек.).

Финальное тестирование.

Алгоритм автономной работы.

  Как уже писалось выше, алгоритм составляется по имеющимся данным и к данной конкретной ситуации... Данная конструкция создавалась по принципу "как есть", по данным найденным в интернете, из параллельных веток и документации на аккумуляторы (т.е. самостоятельные исследования параметров нескольких сотен аккумуляторов от разных производителей автор не проводил). Система проверялась на нескольких имеющихся у автора аккумуляторах и показала положительный результат, поэтому с большой долей вероятности данный алгоритм подходит и к другим аналогичным аккумуляторам от других производителей.
Поэтому, если вы в данном описании заметили какую-либо неточность или у вас есть идеи как его улучшить, то пишите на электронный адрес, указанный в самом низу страницы.
Один философ говорил: "Верить это значит, отказываться понимать". Поэтому не повторяйте в слепую, а проверьте совместимость с вашими условиями перед повторением данной конструкции.
Reset - Кнопка, которую можно нажать спичкой через щель воздуховода.
Для активации режима самопрограммирования.

Дистанционное управление.

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

Алгоритм заряда.

1) Проверить напряжение на клеммах. Если менее 6,5В - отмена заряда со звуковым сигналом.
2) Цикл заряда ограничение тока заряда (обычно около 1-2А) до некоторого порогового напряжения (обычно около 13.8-14.5В), а потом переход на стабилизацию напряжения.
3) Проверка условия проведения раскачки.
4) Проверка условия слива 1:10 залитого.
Если во время слива напряжение упало ниже 6,5 Вольт = выход со звуковым сигналом.
Если раскачка уже была, и во время слива 1:10 напряжение упало ниже 8,6 Вольт = выход со звуковым сигналом.
5) Проверочное условие окончания заряда - Если раскачка уже была, но средний ток за минуту меньше 0,09A = выход со звуковым сигналом.
6) Проверка условия генерации отчета за два цикла.
7) Проверка условия генерации минутного отчета.
8) Проверка не пришла ли по рс232 команда - остановка или не нажали ли SB4.
9) Идти в пункт 2

Алгоритм разряда

1) Проверить напряжение на клеммах. Если менее 12,0В - отмена разряда со звуковым сигналом.
2) Циклы разряда проводятся пульсирующим током с максимумом в 0.1С (для 7.2Ah при I=0.1С мы получим I=0.75А).
3) Проверка напряжения на клеммах. Если среднее за минуту менее 10,8В - отмена разряда со звуковым сигналом.
4) Проверка напряжения на клеммах. Если среднее за два цикла менее 6,5В - отмена разряда со звуковым сигналом.
5) Проверка условия генерации отчета за два цикла.
6) Проверка условия генерации минутного отчета.
7) Проверка не пришла ли по рс232 команда - остановка или не нажали ли SB4.
8) Идти в пункт 2

Прошивка и программа контроля.

Математическая часть проекта к простой не относится, поэтому мы пока разработали только базовую ее часть. Базовая часть умеет контролировать процессы заряда и разряда, отрабатывает все нештатные ситуации, имеет алгоритмы самодиагностики. Алгоритмы тестирования и гибкой настройки под ваiе железо (учитывающие допуски деталей) мы планируем написать позднее. Поэтому пока файлы прошивки и программу контроля как есть (в тестовый и основной набор), т.е. автор дописал систему до состояния "А у меня работает и мне все нравится!", но если вам интересно дальнейшее развитие проекта или есть идеи по улучшению, то пишите на адрес электронной почты внизу страницы... постараемся вместе, что либо придумать...
К данной системе можно дописать:
1) Подстройку под железо с компа через RS232.
2) Загрузку подстроечных параметров в программу из железа.
3) Телепузиков и анимашек в программе контроля.
4) Алгоритм тестирования оставшейся емкости и процента заряда АК.
5) Аппаратный пульт управления - устройство логера снабженное LCD дисплеем и I2C памятью для записи логов.

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

"Щелкните по этому тексту, чтобы развернуть пояснения"

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

Материалы по ATX блокам питания:
Мощный блок питания путем модернизации блоков меньшей мощности .
Модификация блока питания ..
ЗУ для свинцовых АКБ на МК Atmega8 .
Зарядное утсройство на atmega8 .

Ограничения.

Устройство разработано по принципу КАК ЕСТЬ и автор не несёт ответственности за явный (или не явный) ущерб, причинённый в результате повторения.

То есть все эксперименты вы делаете на свой страх и риск.

Список часто задаваемых вопросов читайте в

Если у вас возникли вопросы и предложения - пишите мне по адресу внизу страницы

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

Это устройство предназначено для измерения ёмкости аккумуляторов Li-ion и Ni-Mh , а также для заряда Li-ion аккумуляторов с выбором начального тока заряда.

Управление

Подключаем устройство к стабилизированному блоку питания 5в и током 1А (например от сотового телефона). На индикаторе в течении 2 сек отображается результат предыдущего измерения емкости "ххххmA/c" а на второй строке значение регистра OCR1A "S.xxx". Вставляем аккумулятор. Если нужно зарядить аккумулятор то кратко жмём кнопку ЗАРЯД, если нужно измерить ёмкость то кратко жмём кнопку ТЕСТ. Если нужно изменить ток заряда (значение регистра OCR1A) то долго(2 сек) жмем кнопку ЗАРЯД. Заходим в окно регулировки регистра. Отпускаем кнопку. Кратко нажимая на кнопку ЗАРЯД меняем по кругу значения (50-75-100-125-150-175-200-225) регистра, в первой строке показывается ток заряда пустого аккумулятора при выбранном значении (при условии что у вас в схеме стоит резистор 0,22 Ом). Кратко жмём кнопку ТЕСТ значение регистра OCR1A запоминаются в энергонезависимой памяти.
Если вы проделывали разные манипуляции с устройством и вам надо сбросить показания часов, измеренной ёмкости то долго жмём кнопку ТЕСТ (значение регистра OCR1A не сбрасываются). Как только заряд окончен подсветка дисплея отключается, для включения подсветки кратко нажмите кнопку ТЕСТ или ЗАРЯД.

Логика работы устройства следующая:

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

Если напряжение более 2В то это Li-ion аккумулятор и напряжение полного разряда составит 2,9В, иначе это Ni-MH аккумулятор и напряжение полного разряда составит 1В. Только после подключения аккумулятора доступны кнопки управления. Далее устройство ожидает нажатия кнопок Тест или Заряд. На дисплее отображается "_STOP". При нажатии кратко кнопки Тест подключается нагрузка через MOSFET.

Величина тока разряда определяется по напряжению на резисторе 5,1Ом и, каждую минуту суммируется с предыдущим значением. В устройстве используется кварц 32768Гц для работы часов.

На дисплее отображается текущая величина емкости аккумулятора "ххххmA/c" и тора разряда "А.ххх", а также время "хх:хх:хх"с момента нажатия кнопки. Показывается также анимированный значок разряда аккумулятора. По окончании теста для Ni-MH аккумулятора появляется надпись "_STOP", результат измерения отображается на дисплее "ххххmA/c" и запоминается.

Если аккумулятор Li-ion, то также результат измерения отображается на дисплее "ххххmA/c" и запоминается, но сразу включается режим заряда. На дисплее отображается содержимое регистра OCR1A "S.xxx". Показывается также анимированный значок заряда аккумулятора.

Регулировка тока заряда осуществляется с помощью ШИМ и ограничивается резистором 0,22Ом. Апаратно ток заряда можно уменьшить увеличив сопротивление 0,22Ом до 0,5-1Ом. В начале заряда ток плавно нарастает до значения регистра OCR1A или до достижения напряжения на клемах аккумулятора 4,22В (если аккумулятор был заряжен).

Величина тока заряда зависит от значения регистра OCR1A - больше значение - больше ток заряда. При превышении напряжения на клемах аккумулятора 4,22В значение регистра OCR1A уменьшается. Процесс дозаряда продолжается до величины регистра OCR1A равного 33, что соответствует току около 40 mA. На этом заряд заканчивается. Подсветка дисплея отключается.

Настройка

1. Подключаем питание.
2. Подключаем аккумулятор.
3. Подключаем вольтметр к аккумулятору.
4. Временными кнопками + и - (PB4 и PB5)добиваемся совпадения показания вольтметра на дисплее и на эталонном вольтметре.
5. Длительно нажимаем на кнопку ТЕСТ (2 сек), происходит запоминание.
6. Извлекаем аккумулятор.
7. Подключаем вольтметр к резистору 5,1Ом (по схеме около транзистора 09N03LA).
8. Подключаем регулируемый БП к клемам аккумулятора, выставляем на БП 4В.
9. Нажимаем кратко кнопку ТЕСТ.
10. Измеряем напряжение на резисторе 5,1Ом - U.
11. Высчитываем ток разряда I=U/5,1
12. Временными кнопками + и - (PB4 и PB5) устанавливаем на индикаторе"А.ххх" рассчитанный ток разряда I.
13. Длительно нажимаем на кнопку ТЕСТ (2 сек), происходит запоминание.

Устройство питается от стабилизированного источника напряжением 5 Вольт и током 1А. Кварц на 32768Гц предназначен для точного отсчета времени. Контроллер ATmega8 тактируется от внутреннего генератора частотой 8 МГц, также необходимо установить защиту от стирания EEPROM соответствующими битами конфигурации. При написании управляющей программы были использованы обучающие статьи с данного сайта.

Текущие значения коэффициентов напряжения и тока (Ukof . Ikof) можно увидеть если подключить дисплей 16х4 (16х4 предпочтительно для отладки) на третьей строке. Или в Ponyprog если открыть файл прошивки EEPROM (считать с контроллера EEPROM).
1 байт - OCR1A , 2 байт - I_kof, 3 байт - U_kof, 4 и 5 байт результат предыдущего измерения емкости.

Видео работы прибора:

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

Описание
Устройство предназначено для зарядки и тренировки (десульфатации) свинцово-кислотных АКБ ёмкостью от 7 до 100 Ач, а также для приблизительной оценки уровня их заряда и емкости. ЗУ имеет защиту от неправильного включения батареи (переполюсовки) и от короткого замыкания случайно брошенных клемм. В нём применено микроконтроллерное управление, благодаря чему осуществляются безопасные и оптимальные алгоритмы зарядки: IUoU или IUIoU, с последующей «добивкой» до 100%-го уровня зарядки. Параметры зарядки можно подстроить под конкретный аккумулятор (настраиваемые профили) или выбрать уже заложенные в управляющей программе. Конструктивно зарядное устройство состоит из блока питания АТ/АТХ, который нужно немного доработать и блока управления на МК ATmega16A. Всё устройство свободно монтируется в корпусе того же блока питания. Система охлаждения (штатный кулер БП) включается/отключается автоматически.
Достоинства данного ЗУ - его относительная простота и отсутствие трудоёмких регулировок, что особенно актуально для начинающих радиолюбителей.
]1. Режим зарядки - меню «Заряд». Для аккумуляторов емкостью от 7Ач до 12Ач по умолчанию задан алгоритм IUoU. Это значит:
- первый этап- зарядка стабильным током 0.1С до достижения напряжения14.6В
- второй этап-зарядка стабильным напряжением 14.6В, пока ток не упадет до 0,02С
- третий этап-поддержание стабильного напряжения 13.8В, пока ток не упадет до 0.01С. Здесь С - ёмкость батареи в Ач.
- четвёртый этап - «добивка». На этом этапе отслеживается напряжение на АКБ. Если оно падает ниже 12.7В, включается заряд с самого начала.
Для стартерных АКБ (от 45 Ач и выше) применяем алгоритм IUIoU. Вместо третьего этапа включается стабилизация тока на уровне 0.02C до достижения напряжения на АКБ 16В или по прошествии времени около 2-х часов. По окончанию этого этапа зарядка прекращается и начинается «добивка». Это- четвёртый этап. Процесс заряда проиллюстрирован графиками рис.1 и рис.2.
2. Режим тренировки (десульфатации) - меню «Тренировка». Здесь осуществляется тренировочный цикл:
10 секунд - разряд током 0,01С, 5 секунд - заряд током 0.1С. Зарядно-разрядный цикл продолжается, пока напряжение на АКБ не поднимется до 14.6В. Далее - обычный заряд.
3. Режим теста батареи. Позволяет приблизительно оценить степень разряда АКБ. Батарея нагружается током 0,01С на 15 секунд, затем включается режим измерения напряжения на АКБ.
4. Контрольно-тренировочный цикл (КТЦ). Если предварительно подключить дополнительную нагрузку и включить режим «Заряд» или «Тренировка», то в этом случае, сначала будет выполнена разрядка АКБ до напряжения 10.8В, а затем включится соответствующий выбранный режим. При этом измеряются ток и время разряда, таким образом, подсчитывается примерная емкость АКБ. Эти параметры отображаются на дисплее после окончания зарядки (когда появится надпись «Батарея заряжена») при нажатии на кнопку «выбор». В качестве дополнительной нагрузки можно применить автомобильную лампу накаливания. Ее мощность выбирается, исходя из требуемого тока разряда. Обычно его задают равным 0.1С - 0.05С (ток 10-ти или 20-ти часового разряда).
Перемещение по меню осуществляется кнопками «влево», «вправо», «выбор». Кнопкой «ресет» осуществляется выход из любого режима работы ЗУ в главное меню.
Основные параметры зарядных алгоритмов можно настроить под конкретный аккумулятор, для этого в меню есть два настраиваемых профиля - П1 и П2. Настроенные параметры сохраняются в энергонезависимой памяти (EEPROM-е).
Чтобы попасть в меню настроек нужно выбрать любой из профилей, нажать кнопку «выбор», выбрать «установки», «параметры профиля», профиль П1 или П2. Выбрав нужный параметр, нажимаем «выбор». Стрелки «влево» или «вправо» сменятся на стрелки «вверх» или «вниз», что означает готовность параметра к изменению. Выбираем нужное значение кнопками «влево» или «вправо», подтверждаем кнопкой «выбор». На дисплее появится надпись «Сохранено», что обозначает запись значения в EEPROM.
Значения настроек:
1. «Алгоритм заряда». Выбирается IUoU или IUIoU. См. графики на рис.1 и рис.2.
2. «Емкость АКБ». Задавая значение этого параметра, мы задаем ток зарядки на первом этапе I=0.1C, где С- емкость АКБ В Ач. (Таким образом, если нужно задать ток заряда, например 4.5А, следует выбрать емкость АКБ 45Ач).
3. «Напряжение U1». Это напряжение, при котором заканчивается первый этап зарядки и начинается второй. По умолчанию задано значение 14.6В.
4. «Напряжение U2». Используется только, если задан алгоритм IUIoU. Это напряжение, при котором заканчивается третий этап зарядки. По умолчанию - 16В.
5. «Ток 2-го этапа I2». Это значение тока, при котором заканчивается второй этап зарядки. Ток стабилизации на третьем этапе для алгоритма IUIoU. По умолчанию задано значение 0.2С.
6. «Окончание заряда I3». Это значение тока, по достижению которого зарядка считается оконченной. По умолчанию задано значение 0.01С.
7. «Ток разряда». Это значение тока, которым осуществляется разряд АКБ при тренировке зарядно-разрядными циклами.


Выбор и переделка блока питания.

В нашей конструкции мы используем блок питания от компьютера. Почему? Причин несколько. Во–первых, это - практически готовая силовая часть. Во-вторых, это же и корпус нашего будущего устройства. В-третьих, он имеет малые габариты и вес. И, в-четвёртых, его можно приобрести практически на любом радиорынке, барахолке и в компьютерных сервисных центрах. Как говорится, дёшево и сердито.
Из всего многообразия моделей блоков питания нам лучше всего подходит блок формата АТX, мощностью не менее 250 Вт. Нужно только учесть следующее. Подходят лишь те блоки питания, в которых применён ШИМ-контроллер TL494 или его аналоги (MB3759, КА7500, КР1114ЕУ4). Можно также применить и БП формата AT, только придется изготовить еще маломощный блок дежурного питания (дежурку) на напряжение 12В и ток 150-200мА. Разница между AT и ATX – в схеме начального запуска. АТ запускается самостоятельно, питание микросхемы ШИМ–контроллера берётся с 12-вольтовой обмотки трансформатора. В ATX для начального питания микросхемы служит отдельный источник 5В, называемый «источник дежурного питания» или «дежурка». Более подробно о блоках питания можно прочитать, например, а переделка БП в зарядное устройство неплохо описана
Итак, блок питания имеется. Сначала необходимо его проверить на исправность. Для этого его разбираем, вынимаем предохранитель и вместо него подпаиваем лампу накаливания 220 вольт мощностью 100-200Вт. Если на задней панели БП имеется переключатель сетевого напряжения, то он должен быть установлен на 220В. Включаем БП в сеть. Блок питания АТ запускается сразу, для ATX нужно замкнуть зелёный и чёрный провода на большом разъёме. Если лампочка не светится, кулер вращается, а все выходные напряжения в норме - значит, нам повезло и наш блок питания рабочий. В противном случае, придётся заняться его ремонтом. Оставляем лампочку пока на месте.
Для переделки БП в наше будущее зарядное устройство, нам потребуется немного изменить «обвязку» ШИМ-контроллера. Несмотря на огромное разнообразие схем блоков питания, схема включения TL494 стандартная и может иметь пару вариаций, в зависимости от того, как реализованы защиты по току и ограничения по напряжению. Схема переделки показана на рис.3.


На ней показан только один канал выходного напряжения: +12В. Остальные каналы: +5В,-5В, +3,3В не используются. Их обязательно нужно отключить, перерезав соответствующие дорожки или выпаяв из их цепей элементы. Которые, кстати, нам могут и пригодиться для блока управления. Об этом - чуть позже. Красным цветом обозначены элементы, которые устанавливаются дополнительно. Конденсатор С2 должен иметь рабочее напряжение не ниже 35В и устанавливается взамен существующего в БП. После того, как «обвязка» TL494 приведена к схеме на рис.3, включаем БП в сеть. Напряжение на выходе БП определяется по формуле: Uвых=2,5*(1+R3/R4) и при указанных на схеме номиналах должно составлять около 10В. Если это не так, придется проверить правильность монтажа. На этом переделка закончена, можно убирать лампочку и ставить на место предохранитель.

Схема и принцип работы.

Схема блока управления показана на рис.4.


Она довольно проста, так как все основные процессы выполняет микроконтроллер. В его память записывается управляющая программа, в которой и заложены все алгоритмы. Управление блоком питания осуществляется с помощью ШИМ с вывода PD7 МК и простейшего ЦАП на элементах R4,C9,R7,C11. Измерение напряжения АКБ и зарядного тока осуществляется средствами самого микроконтроллера - встроенным АЦП и управляемым дифференциальным усилителем. Напряжение АКБ на вход АЦП подается с делителя R10R11, Зарядный и разрядный ток измеряются следующим образом. Падение напряжения с измерительного резистора R8 через делители R5R6R10R11 подается на усилительный каскад, который находится внутри МК и подключен к выводам PA2, PA3. Коэффициент его усиления устанавливается программно, в зависимости от измеряемого тока. Для токов меньше 1А коэффициент усиления (КУ) задается равным 200, для токов выше 1А КУ=10. Вся информация выводится на ЖКИ, подключенный к портам РВ1-РВ7 по четырёхпроводной шине. Защита от переполюсовки выполнена на транзисторе Т1, сигнализация неправильного подключения - на элементах VD1,EP1 ,R13. При включении зарядного устройства в сеть транзистор Т1 закрыт низким уровнем с порта РС5, и АКБ отключена от зарядного устройства. Подключается она только при выборе в меню типа АКБ и режима работы ЗУ. Этим обеспечивается также отсутствие искрения при подключении батареи. При попытке подключить аккумулятор в неправильной полярности сработает зуммер ЕР1 и красный светодиод VD1, сигнализируя о возможной аварии. В процессе заряда постоянно контролируется зарядный ток. Если он станет равным нулю (сняли клеммы с АКБ), устройство автоматически переходит в главное меню, останавливая заряд и отключая батарею. Транзистор Т2 и резистор R12 образуют разрядную цепь, которая участвует в зарядно-разрядном цикле десульфатирующего заряда (режим тренировки) и в режиме теста АКБ. Ток разряда 0.01С задается с помощью ШИМ с порта PD5. Кулер автоматически выключается, когда ток заряда падает ниже 1,8А. Управляет кулером порт PD4 и транзистор VT1.

Детали и конструкция.

Микроконтроллер. В продаже обычно встречаются в корпусе DIP-40 или TQFP-44 и маркируются так: ATMega16А-PU или ATMega16A-AU. Буква после дефиса обозначает тип корпуса: «P»- корпус DIP, «A»- корпус TQFP. Встречаются также и снятые с производства микроконтроллеры ATMega16-16PU, ATMega16-16AU или ATMega16L-8AU. В них цифра после дефиса обозначает максимальную тактовую частоту контроллера. Фирма- производитель ATMEL рекомендует использовать контроллеры ATMega16A (именно с буквой «А») и в корпусе TQFP, то есть, вот такие: ATMega16A-AU, хотя в нашем устройстве будут работать все вышеперечисленные экземпляры, что и подтвердила практика. Типы корпусов отличаются также и количеством выводов (40 или 44) и их назначением. На рис.4 изображена принципиальная схема блока управления для МК в корпусе DIP.
Резистор R8 –керамический или проволочный, мощностью не менее 10 Вт, R12- 7-10Вт. Все остальные- 0.125Вт. Резисторы R5,R6,R10 и R11 нужно применять с допустимым отклонением 0.1-0.5% . Это очень важно! От этого будет зависеть точность измерений и, следовательно, правильная работа всего устройства.
Транзисторы T1 и Т1 желательно применять такие, как указаны на схеме. Но если придется подбирать замену, то необходимо учитывать, что они должны открываться напряжением на затворе 5В и, конечно же, должны выдерживать ток не ниже 10А. Подойдут, например, транзисторы с маркировкой 40N03GР, которые иногда используются в тех же БП формата АТХ, в цепи стабилизации 3.3В.
Диод Шоттки D2 можно взять из того же БП, из цепи +5В, которая у нас не используется. Элементы D2, Т1 иТ2 через изолирующие прокладки размещаются на одном радиаторе площадью 40 квадратных сантиметров. Буззер EP1- со встроенным генератором, на напряжение 8-12 В, громкость звучания можно подрегулировать резистором R13.
Жидкокристаллический индикатор – WH1602 или аналогичный, на контроллере HD44780, KS0066 или совместимых с ними. К сожалению, эти индикаторы могут иметь разное расположение выводов, так что, возможно, придется разрабатывать печатную плату под свой экземпляр
Программа
Управляющая программа содержится в папке «Программа» Конфигурационные биты (фузы) устанавливаются следующие:
Запрограммированы (установлены в 0):
CKSEL0
CKSEL1
CKSEL3
SPIEN
SUT0
BODEN
BODLEVEL
BOOTSZ0
BOOTSZ1
все остальные - незапрограммированы (установлены в 1).
Наладка
Итак, блок питания переделан и выдает напряжение около 10В. При подключении к нему исправного блока управления с прошитым МК, напряжение должно упасть до 0.8..15В. Резистором R1 устанавливается контрастность индикатора. Наладка устройства заключается в проверке и калибровке измерительной части. Подключаем к клеммам аккумулятор, либо блок питания напряжением 12-15В и вольтметр. Заходим в меню «Калибровка». Сверяем показания напряжения на индикаторе с показаниями вольтметра, при необходимости, корректируем кнопками «<» и «>». Нажимаем «Выбор». Далее идет калибровка по току при КУ=10. Теми же кнопками «<» и «>» нужно выставить нулевые показания тока. Нагрузка (аккумулятор) при этом автоматически отключается, так что ток заряда отсутствует. В идеальном случае там должны быть нули или очень близкие к нулю значения. Если это так, это говорит о точности резисторов R5,R6,R10,R11,R8 и хорошем качестве дифференциального усилителя. Нажимаем «Выбор». Аналогично - калибровка для КУ=200. «Выбор». На дисплее отобразится «Готово» и через 3 сек. устройство перейдет в главное меню.
Калибровка окончена. Поправочные коэффициенты хранятся в энергонезависимой памяти. Здесь стоит отметить, что если при самой первой калибровке значение напряжения на ЖКИ сильно отличается от показаний вольтметра, а токи при каком - либо КУ сильно отличаются от нуля, нужно применить (подобрать) другие резисторы делителя R5,R6,R10,R11,R8, иначе в работе устройства возможны сбои. При точных резисторах (с допуском 0,1-0,5%) поправочные коэффициенты равны нулю или минимальны. На этом наладка заканчивается. Если же напряжение или ток зарядного устройства на каком-то этапе не возрастает до положенного уровня или устройство «выскакивает» в меню, нужно ещё раз внимательно проверить правильность доработки блока питания. Возможно, срабатывает защита.
Весь материал одним архивом можно скачать

Это устройство предназначено для измерения ёмкости аккумуляторов Li-ion и Ni-Mh , а также для заряда Li-ion аккумуляторов с выбором начального тока заряда.

Управление

Подключаем устройство к стабилизированному блоку питания 5в и током 1А (например от сотового телефона). На индикаторе в течении 2 сек отображается результат предыдущего измерения емкости "ххххmA/c" а на второй строке значение регистра OCR1A "S.xxx". Вставляем аккумулятор. Если нужно зарядить аккумулятор то кратко жмём кнопку ЗАРЯД, если нужно измерить ёмкость то кратко жмём кнопку ТЕСТ. Если нужно изменить ток заряда (значение регистра OCR1A) то долго(2 сек) жмем кнопку ЗАРЯД. Заходим в окно регулировки регистра. Отпускаем кнопку. Кратко нажимая на кнопку ЗАРЯД меняем по кругу значения (50-75-100-125-150-175-200-225) регистра, в первой строке показывается ток заряда пустого аккумулятора при выбранном значении (при условии что у вас в схеме стоит резистор 0,22 Ом). Кратко жмём кнопку ТЕСТ значение регистра OCR1A запоминаются в энергонезависимой памяти.
Если вы проделывали разные манипуляции с устройством и вам надо сбросить показания часов, измеренной ёмкости то долго жмём кнопку ТЕСТ (значение регистра OCR1A не сбрасываются). Как только заряд окончен подсветка дисплея отключается, для включения подсветки кратко нажмите кнопку ТЕСТ или ЗАРЯД.

Логика работы устройства следующая:

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

Если напряжение более 2В то это Li-ion аккумулятор и напряжение полного разряда составит 2,9В, иначе это Ni-MH аккумулятор и напряжение полного разряда составит 1В. Только после подключения аккумулятора доступны кнопки управления. Далее устройство ожидает нажатия кнопок Тест или Заряд. На дисплее отображается "_STOP". При нажатии кратко кнопки Тест подключается нагрузка через MOSFET.

Величина тока разряда определяется по напряжению на резисторе 5,1Ом и, каждую минуту суммируется с предыдущим значением. В устройстве используется кварц 32768Гц для работы часов.

На дисплее отображается текущая величина емкости аккумулятора "ххххmA/c" и тора разряда "А.ххх", а также время "хх:хх:хх"с момента нажатия кнопки. Показывается также анимированный значок разряда аккумулятора. По окончании теста для Ni-MH аккумулятора появляется надпись "_STOP", результат измерения отображается на дисплее "ххххmA/c" и запоминается.

Если аккумулятор Li-ion, то также результат измерения отображается на дисплее "ххххmA/c" и запоминается, но сразу включается режим заряда. На дисплее отображается содержимое регистра OCR1A "S.xxx". Показывается также анимированный значок заряда аккумулятора.

Регулировка тока заряда осуществляется с помощью ШИМ и ограничивается резистором 0,22Ом. Апаратно ток заряда можно уменьшить увеличив сопротивление 0,22Ом до 0,5-1Ом. В начале заряда ток плавно нарастает до значения регистра OCR1A или до достижения напряжения на клемах аккумулятора 4,22В (если аккумулятор был заряжен).

Величина тока заряда зависит от значения регистра OCR1A - больше значение - больше ток заряда. При превышении напряжения на клемах аккумулятора 4,22В значение регистра OCR1A уменьшается. Процесс дозаряда продолжается до величины регистра OCR1A равного 33, что соответствует току около 40 mA. На этом заряд заканчивается. Подсветка дисплея отключается.

Настройка

1. Подключаем питание.
2. Подключаем аккумулятор.
3. Подключаем вольтметр к аккумулятору.
4. Временными кнопками + и - (PB4 и PB5)добиваемся совпадения показания вольтметра на дисплее и на эталонном вольтметре.
5. Длительно нажимаем на кнопку ТЕСТ (2 сек), происходит запоминание.
6. Извлекаем аккумулятор.
7. Подключаем вольтметр к резистору 5,1Ом (по схеме около транзистора 09N03LA).
8. Подключаем регулируемый БП к клемам аккумулятора, выставляем на БП 4В.
9. Нажимаем кратко кнопку ТЕСТ.
10. Измеряем напряжение на резисторе 5,1Ом - U.
11. Высчитываем ток разряда I=U/5,1
12. Временными кнопками + и - (PB4 и PB5) устанавливаем на индикаторе"А.ххх" рассчитанный ток разряда I.
13. Длительно нажимаем на кнопку ТЕСТ (2 сек), происходит запоминание.

Устройство питается от стабилизированного источника напряжением 5 Вольт и током 1А. Кварц на 32768Гц предназначен для точного отсчета времени. Контроллер ATmega8 тактируется от внутреннего генератора частотой 8 МГц, также необходимо установить защиту от стирания EEPROM соответствующими битами конфигурации. При написании управляющей программы были использованы обучающие статьи с данного сайта.

Текущие значения коэффициентов напряжения и тока (Ukof . Ikof) можно увидеть если подключить дисплей 16х4 (16х4 предпочтительно для отладки) на третьей строке. Или в Ponyprog если открыть файл прошивки EEPROM (считать с контроллера EEPROM).
1 байт - OCR1A , 2 байт - I_kof, 3 байт - U_kof, 4 и 5 байт результат предыдущего измерения емкости.

Видео работы прибора:

Поделиться: