Перейти к содержанию

Устройство импульсного заряда/разряда АКБ на МК PIC (Эх, заряжу - 01)


Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • 2 недели спустя...

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

  • 2 недели спустя...

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Я собрал схему в корпусе ИБП от компа и запитал от него же. Обороты вентилятора зависят от температуры. Радиатор игольчатый 40х70х20. На больших АКБ пока не проверял-нет вналичии. При калибровке на токе 3А нагрев не заметный. Проверь или транзисторы открываются полностью.

Ссылка на комментарий
Поделиться на другие сайты

Горят транзисторы IRF9540N при зарядке. Транзистор стоит на радиаторе, при работающем кулере горят при температуре 30* и токе около 3а.

В чём была причина сего?

Заменой на IRF-5210 проблема заряда при больших токах решена?

Ссылка на комментарий
Поделиться на другие сайты

1 - Добавил еще один оУ (чтобы разделить заряд и разряд). А то раньше они оказывали влияние друг на друга.

2 - Прошивка разделена на две части - Зарядное и Калибровка. - это позволило увеличить функционал самого ЗУ (память не резиновая).

3 - Теперь при калибровке выводится усредненное значение тока и напряжения - что существенно упрощает саму калибровку.

4 - Сопротивление измерительного резистора теперь отсутствует. Тем самым уменьшено количество операций для определения значения тока. Есть значение одного разряда АЦП - 20мА (можно изменять во время калибровки - максимальный измеряемый ток 0,02*1024=20,48А, если надо меньше, например 10А - устанавливаем 10мА - получаем 0,01*1024=10,24А). Таким образом МК для определения тока нужно показания АЦП*20мА/1000 - что гораздо быстрее и менее ресурсоемко чем прежде.

5 - Время усреднения 0,5с.

Собственно вот тестирование

post-146988-0-70104200-1431978985_thumb.jpg

KALIBR 7_7.rar

Ссылка на комментарий
Поделиться на другие сайты

Тут lm358 две штуки. Напарник собрал на LM124, тоже самое что и lm324 только по температурам допуски больше.

Для питания ОУ 5,5В - в минус кренки 7805 диод добавил.

p.s. в прошивку для авторской схемы 38191_postal 1.06_3.hex режим качели добавлять? оно надо?

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

У каждого свое мнение, как на меня то для этой схемы качели лишние.

Позволю высказать свое скромное мнение.

Существует несколько способов накачки емкости аккумуляторной батареи (АБ) после основного цикла зарядки, как известно в процессе которого даже 85% достичь проблематично.

Основные из них это: дозаряд (так его пока назовем) малыми токами, импульсная накачка и качели.

Что значит малыми токами? Малые токи могут быть и при киловольтах, или при том напряжении который способен обеспечить источник питания. Возьмем последнее и предположим, что наш источник способен выдать 20В, тогда со временем, непременно возникнет перезаряд, заодно активное парообразование. Микрогорелку подключить можно, ведь этот пар ни что иное как гремучи газ (H2O → H2 + 0,5 O2 ) Если это плюс то можно так и оставить, но нам АБ зарядить надо, а у нас перезаряд который способствует активному кородированию тоководов, и разрушению обмазки пластин, что в свою очередь ведет к уменьшению активной массы и соответственно необратимому снижению емкости АКБ.

С импульсной накачкой дела обстоят примерно так же, только импульсами да и кипит поменее (кипение не возникает моментально – процесс инерционный) при подобранных для каждой АБ частоте и скважности, а вот с перезарядом история та же.

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

Кроме прямого назначения – накчки АБ почитай до полной емкости, при работе качелей с целью профилактики сульфатации (АВ заряжаем для проведения ТО), а таковая есть всегда, на какое то время подключаем разрядную нагрузку.

Перестроив диапазон качелей, подключенный к АБ зарядник можно оставлять для длительного хранения – месяцы, годы. Хотя я бы делать такого не стал, во избежание…, всяко бывает.

Изменено пользователем kava

... нельзя впихнуть невпихуемое, связать несвязуемое ...

Ссылка на комментарий
Поделиться на другие сайты

Наверно я что то не понял.

Зачем ради этого городить аппаратные качели на плату? Думаю, что для людей которые способны написать обеспечение для данного устройства не будет невозможным дописать код качелей, в том числе с регулируемыми программно порогами. На мой взгляд, количество АБ которые поддерживает устройство несколько избыточно и лучше дать пользователю возможность создания нескольких своих профилей, где можно задать очередность процедур и задать свои значения доступным для изменения параметрам - токи, напряжения, длительности импульсов и пауз, подключать нагрузочный элемент при этом или нет и т.п., с возможностью сохранения нескольких таких профилей. Но это только ИМХО.

... нельзя впихнуть невпихуемое, связать несвязуемое ...

Ссылка на комментарий
Поделиться на другие сайты

Прошивка с качелями (бета) - (выбрать режим Swing) - алгоритм такой:

Первая и вторая фазы соответствуют стандартному циклу заряда.

На третей фазе транзистор отключается и МК ждет снижения напряжения до Ustandby. По его достижению возвращается в фазу 2.

Памятка по напряжениям в зависимости от температуры:

темп окр среды -20, -10, 0, 10, 20, 25 , 30, 40, 50

макс напр при заряде 16 15.65 15.3 14.94 14.58 14.4 14.22 13.86 13.5

Ustandby 14.04 13.92 13.8 13.68 13.56 13.5 13.44 13.32 13.2

Свое ЗУ упаковал в корпус. Осталось панельку распечатать и заламинировать.

postal 1.06_4+Swing.rar

post-146988-0-25863000-1432150208_thumb.jpg

post-146988-0-13833100-1432150219_thumb.jpg

post-146988-0-40723200-1432150227_thumb.jpg

Изменено пользователем postaloi
Ссылка на комментарий
Поделиться на другие сайты

Charger 7_8.rarПрошивка для моей схемы.

в опциях можно настроить:

- время десульфатации в часах;

- количество циклов восстановления;

- можно отключить разряд АКБ в режиме восстановления, т.е. заряд ->десульфатация->заряд. Этот режим бесконечный.

Доступны следующие режимы:

1 - Pulsed - качели 3 фазы заряда

2 - Zar_DC - 4-х фазный заряд

3 - Desulf - десульфатация

4 - Razr - разряд

5 - Vos_Pul - восстановление где режим заряда это качели.

6 - Vos_DC - восстановление где режим заряда это 4-х фазный заряд.

7 - Opt-n - Настройка емкостей АКБ, EEPROM

Ссылка на комментарий
Поделиться на другие сайты

Лазил по форуму и наткнулся на статейку http://forum.cxem.ne...howtopic=139446

Что если убрать из схемы ЗУ транзистор Т1, а управлять МК будет скважностью шима БП????

Может кто схемку набросать?post-146988-0-23389100-1432316807_thumb.png

Какие подводные камни?

Вот еще придумал: post-146988-0-63110500-1432317064_thumb.png

Ссылка на комментарий
Поделиться на другие сайты

2153 несколько проблемная мелкосхема, применять ее пожалуй стоит тогда, когда вас не очень интересует стабильность системы. В связи с отсутствием собственных средств обработки ОС выходные параметры очень сильно зависят от величины питающих напряжений, нагрузки. Делал аналогичную схему только без 3120, просто источник питания для 28 вольтовых машинок и 12 вольт на прочью лабуду. При работе устройств прекрасно представлял какое напряжение в сети. Гаражи ведь, кто то козла включил, компрессор не мелкий заводится, а кто то сварку, так и осталась только для 28и вольт с матюками.

Думаю, что не стоит оно тех усилий. Есть куча специализированных ИС с встроенными усилителями ошибок, заточенными под ОС, да и по цене полной схемы не дороже, тот же БП компа на TL494, наUC38xx, на TOP25x .

... нельзя впихнуть невпихуемое, связать несвязуемое ...

Ссылка на комментарий
Поделиться на другие сайты

2153 несколько проблемная мелкосхема,////// на TL494, наUC38xx, на TOP25x .

Неважно на какой МС делать - меня интересует принцип работы -

Контроль тока и напряжения на выходе обеспечивает МК - т.е. с МК выходит +5В и БП должен выдать полный ток и напряжение, МК выдал 0В и БП выдает тоже 0В и 0А. Т.Е. МК управляет МС шима и регулировка идет по первичке, тем самым мы избавляемся от Т1. Если есть наработки в данном направлении то скинь ссылку. А то так даташит на ТЛ494 курить не хочется, а с 2153 вроде все понятно - на схемах, что я выше приводил, закорачивая управление оптодрайвера - выключаем ШИМ....и тока нету

p.s. прошивку postal 1.06_4+Swing.rar в железе проверяли?? Косяки есть? Как режим калибровки?

В своем железе Charger 7_8.rar работает "на-ура" - 3 часика прогонял на 100Ач в режимах :

Pulsed , Zar_DC, Desulf по 1 часу в каждом. - Нагрев радиатора и ТР умеренный, Вентилятор в половину оборотов крутился.

Ток с часами косяк - 1 час показало на ЗУ - а в реале прошло 1ч10мин, вот и думаю - корректировать в прошивке или и так сойдет?

ХМ! И еще один косяк нашёл - Реле у меня нету - и если полярность попутать то начинает через встроенный диод транзистора Т2 АКБ разряжаться на Нагрузочный резистор - а ток там 6А, вот надо даташит смотреть - выдержит диод или нет :) - если нет то писец - места там нету, ну разве что в разрядную цепь воткнуть еще один диод.

Ссылка на комментарий
Поделиться на другие сайты

Посмотри на эту ссылку, там управляет 555, но какая разница на чем шим организован.

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

... нельзя впихнуть невпихуемое, связать несвязуемое ...

Ссылка на комментарий
Поделиться на другие сайты

Посмотри на эту ссылку, там управляет 555,

Опять не то - там управление идет по вторичке.

Мне надо ЧТОБЫ МС шима в первичке реагировала на команды МК, который выдает управляющий сигнал +5В вкл, и 0В выкл.

с доработкой 4оу

можно один из оконечных ОУ не использовать, т.е. только 3 ОУ - их задача разделить Заряд и Разряд. У меня работает на трех ОУ.

post-146988-0-90719100-1432392472.jpg

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Автору. Никаких тут 250...200 ватт у этой китайской бздюшки нет в помине. Тем паче на таком подобии радиатора Катушки даже на выходе нет-плохо  
    • Повторюсь - НЕТ, так как у вас там крутилки, что приведет к искажениям при работе в мостовой схеме. Если бы вы "могли" то вам нужно было разорвать выход с темброблока и вход усилителей и впаять (можно навесом) вот такую схему:
    • Все верно, вы почти все что нужно сделали.  Только не нужно было добавлять это b=UDR; Сразу после старта сбросить флаг flags = 0; А в основном цикле ждать установки флага FLAG_END_RX. И если он установлен, проверять на совпадение строки в буфере (rx_buf) с вашей строкой (AT+QM \ r \ n .....   .....  AT+MP \ r \ n) При совпадении вызывать выполнение нужного алгоритма.
    • У меня до саба ещё дело не дошло, только сейчас думаю купить амп на полкиловатта, но так можно, при условии, что на входе будет моно, и будет срез частот
    • Про флаг Т: если он не используется в основной программе, а у меня он постоянно в деле. для меня меня отложенная обработка прерывания обычное дело, нужно лишь правильно расставить приоритеты частей программы. И обычное дело: выставляешь частоту задающего генератора побольше, делишь его до получения частоты 1000 Гц каким либо таймером, загоняешь в прерывание с флагом. затем закольцовываешь основную программу с проверкой флага прерывания от таймера 1000Гц. загоняешь программу в Sleep. Получаешь кольцо обработки с образцовым интервалом в 1 мс. После любого прерывания проверяешь флаг от таймера, если он, то сбрасываешь флаг и начинаешь перебирать подпрограммы обработки индикаторов, клавиатуры, и тд. и тп, подпрограммы обработки флагов и др. После окончания обработки всех подпрограмм возвращаешься к Sleep. И так по кольцу. Если происходит прерывание не от таймера, программа выходит из Sleep, проверяется флаг от таймера, если не он (а это не он) обратно к Sleep. В большенстве программ использую этот алгоритм.   GPIOR1 и GPIOR2 в 88 условно можно использовать как флаги, но их адреса больше 0х1Е, на них не распространяются команды cbi, sbi, sbic, sbis, и их сначала нужно загрузить в общий регистр, промодифицировать, и заново сохранить. Эта последовательность длинная, и модифицирует SREG, что сводит на нет работу по сравнению с  классическим GPIOR.
    • @korsaj Сегодня попробовал сделать как ты посоветовал. Получился следующий код. #define F_CPU 7372800UL #define BAUND 9600L #define UBRRL_value (F_CPU/(BAUND*16))-1 #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdlib.h> void init_pin(void); #define C_PC0 (~PINC&(1<<PC0)) #define C_PC1 (~PINC&(1<<PC1)) #define LED_1_ON() PORTD|=(1<<PD2) #define LED_1_OFF() PORTD&=~(1<<PD2) #define LED_2_ON() PORTD|=(1<<PD3) #define LED_2_OFF() PORTD&=~(1<<PD3) #define FLAG_END_RX (1<<3) #define FLAG_ERR_RX (1<<4) #define BUF_SIZE 20 char rx_buf[BUF_SIZE]; char buf_index = 0; volatile start=1, flags; char b; ISR(USART_RXC_vect) { b=UDR; if(!(flags & FLAG_END_RX)) { rx_buf[buf_index]=UDR; if(rx_buf[buf_index] == 0x0D) { flags |= FLAG_END_RX; return; } buf_index++; if(buf_index >= BUF_SIZE) { buf_index = 0; flags |= FLAG_ERR_RX; } } } void init_UART() { UBRRL = UBRRL_value; UBRRH = UBRRL_value>>8; UCSRB|=(1<<TXEN); UCSRB|=(1<<RXEN); UCSRC|=((1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)); UCSRB|=(1<<RXCIE); sei(); flags = 0; } void send_UART(char value) { while(!(UCSRA&(1<<UDRE))); UDR=value; } int main(void) { init_pin(); init_UART(); while(1) { if (start==1) { _delay_ms(500); send_UART('O'); send_UART('K'); send_UART('!'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); start=0; } if (b == '0') { LED_1_ON(); LED_2_OFF(); send_UART('N'); send_UART('+'); send_UART('0'); send_UART('0'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); b=4; } if (b == '1') { LED_1_OFF(); LED_2_ON(); send_UART('N'); send_UART('+'); send_UART('0'); send_UART('1'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); b=4; } if (b == '2') { LED_1_ON(); LED_2_ON(); send_UART('N'); send_UART('+'); send_UART('0'); send_UART('2'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); b=4; } if (b == '3') { LED_1_OFF(); LED_2_OFF(); send_UART('N'); send_UART('+'); send_UART('0'); send_UART('3'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); b=4; } if (C_PC0) { send_UART('P'); send_UART('C'); send_UART('0'); send_UART(0x0D); send_UART(0x0A); _delay_ms(250); } if (C_PC1) { send_UART('P'); send_UART('C'); send_UART('1'); send_UART(0x0D); send_UART(0x0A); _delay_ms(250); } } } void init_pin(void) { DDRC = 0b00000000; PORTC = 0b11111111; DDRD |= ((1<<2)|(1<<3)); PORTD &=~ ((1<<2)|(1<<3)); } Ну как сказать всё работает, но вот меня очень интересует приём команд на саму ATMEGA16. Он так и работает только с цифрами. Более ничего корректно принять не получается даже используя таблицу ascii. А мне нужно будет принимать команды и посложней чем просто буквенно - цифровые. Потому как возвращаясь к командам самого плеера там в этих командах хранятся различные данные. Вот примерно так это всё выглядит. AT+QM \ r \ n Запрос режима работы [0: Bluetooth], [1: MP3] AT+M1 \ r \ n Номер текущего файла AT+M2 \ r \ n Общее количество звуковых файлов AT+MD \ r \ n Источник музыки USB или SD Card AT+MT \ r \ n Общее время воспроизведения текущего файла AT+MK \ r \ n Время воспроизведения текущего файла AT+MP \ r \ n Текущее состояние плеера [0]Стоп, [1]Воспроизведение, [2]Пауза К примеру при отправке команды AT+M1 \ r \ n в ответ мы получим M1 + 000002 \ r \ n при этом здесь может быть любое число в hex формате. Мне же нужно каким то образом принять эти данные и обработать их соответствующим образом. Но при этом и нужно учитывать так же что плеер может сам отправить эти данные по началу воспроизведения трека. Вот в этом сейчас и стоит основная задача. Чего я и пытаюсь получить в итоге.
  • Похожий контент

×
×
  • Создать...