Съдържание:

Arduino LTC6804 BMS - Част 2: Балансова дъска: 5 стъпки
Arduino LTC6804 BMS - Част 2: Балансова дъска: 5 стъпки

Видео: Arduino LTC6804 BMS - Част 2: Балансова дъска: 5 стъпки

Видео: Arduino LTC6804 BMS - Част 2: Балансова дъска: 5 стъпки
Видео: Вольтметр амперметр с алиэкспресс - подключение, калибровка и доработка 2024, Декември
Anonim
Arduino LTC6804 BMS - Част 2: Балансова дъска
Arduino LTC6804 BMS - Част 2: Балансова дъска

Част 1 е тук

Система за управление на батерията (BMS) включва функционалност за определяне на важни параметри на батерията, включително напрежение на клетката, ток на батерията, температура на клетката и т.н. или могат да се предприемат други подходящи действия. В предишен проект (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/) обсъждах моя дизайн на BMS, който се основава на чипа за многоетажна батерия за линейна технология LTC6804 и микроконтролер Arduino. Този проект разширява проекта BMS, като добавя балансиране на батерията.

Батериите са изградени от отделни клетки в паралелни и/или серийни конфигурации. Например пакет от 8p12s ще бъде конструиран, използвайки 12 последователно свързани комплекта от 8 паралелно свързани клетки. В опаковката ще има общо 96 клетки. За най -добро представяне всички 96 клетки трябва да имат тясно съвпадащи свойства, но винаги ще има някои вариации между клетките. Например, някои клетки могат да имат по -нисък капацитет от други клетки. Когато пакетът се зарежда, клетките с по -нисък капацитет ще достигнат максималното си безопасно напрежение преди останалата част от опаковката. BMS ще открие това високо напрежение и ще прекъсне по -нататъшното зареждане. Резултатът ще бъде, че голяма част от опаковката не е напълно заредена, когато BMS прекъсне зареждането поради по -високото напрежение на най -слабата клетка. Подобна динамика може да се случи по време на разреждане, когато клетките с по -голям капацитет не могат да се разредят напълно, защото BMS изключва товара, когато най -слабата батерия достигне границата на ниско напрежение. Следователно пакетът е толкова добър, колкото и най -слабите му батерии, като веригата е толкова здрава, колкото и най -слабото му звено.

Едно решение на този проблем е да се използва балансираща дъска. Въпреки че има много стратегии за балансиране на пакета, най -простите „пасивни“балансиращи табла са проектирани да обезвъздушат част от заряда на клетките с най -високо напрежение, когато пакетът е близо до пълно зареждане. Докато част от енергията се губи, опаковката като цяло може да съхранява повече енергия. Кървенето се извършва чрез разсейване на известна мощност чрез комбинация от резистор/превключвател, контролирана от микроконтролер. Тази инструкция описва пасивна система за балансиране, съвместима с arduino/LTC6804 BMS от предишен проект.

Консумативи

Можете да поръчате печатна платка Balance Board от PCBWays тук:

www.pcbway.com/project/shareproject/Balance_board_for_Arduino_BMS.html

Стъпка 1: Теория на операцията

Теория на операцията
Теория на операцията

Страница 62 от листа с данни LTC6804 обсъжда балансирането на клетките. Има два варианта: 1) използване на вътрешните N-канални MOSFETS за обезвъздушаване на тока от високите клетки, или 2) използване на вътрешните MOSFETS за управление на външни превключватели, които носят изпускателния ток. Използвам втората опция, защото мога да проектирам моя собствена верига за обезвъздушаване, която да обработва по -голям ток, отколкото би могло да се направи с помощта на вътрешните превключватели.

Вътрешните MOSFETS са достъпни чрез щифтове S1-S12, докато самите клетки са достъпни с помощта на щифтове C0-C12. Изображението по -горе показва една от 12 -те идентични схеми за обезвъздушаване. Когато Q1 е включен, токът ще тече от C1 към земята през R5, разсейвайки част от заряда в клетка 1. Избрах резистор от 6 Ohm, 1 Watt, който би трябвало да може да издържи няколко милиампера изтичащ ток. добавен светодиод, за да може потребителят да види кои клетки балансират във всеки един момент.

Пиновете S1-S12 се управляват от CFGR4 и първите 4 бита от регистърните групи CFGR5 (вижте страници 51 и 53 от листа с данни LTC6804). Тези регистърни групи са зададени в кода на Arduino (обсъден по -долу) във функцията balance_cfg.

Стъпка 2: Схеми

Схематично
Схематично

Схемата за балансовата дъска на BMS е проектирана с помощта на Eagle CAD. Това е доста ясно. Има една верига за обезвъздушаване за всеки сегмент от серията батерии. Превключвателите се управляват от сигнали от LTC6804 през заглавката JP2. Изтичащият ток тече от батерията през заглавие JP1. Обърнете внимание, че изтичащият ток тече към следващия по -нисък сегмент на батерията, така че например C9 преминава в C8 и т.н. Символът на щита Arduino Uno е поставен върху схемата за оформлението на печатната платка, описана в Стъпка 3. Предлага се изображение с по -висока разделителна способност в zip файла. По -долу е списъкът с части (По някаква причина функцията за качване на файл Instructables не работи при мен …)

Количество Стойност на пакета за устройство Описание Описание

12 LEDCHIPLED_0805 CHIPLED_0805 LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8, LED9, LED10, LED11, LED12 LED 12 BSS308PEH6327XTSA1 MOSFET-P SOT23-R Q1, Q2, Q3, Q4, Q5, Q6, Q6, Q6, Q6, Q9, Q10, Q11, Q12 P-Channel Mosfet 2 PINHD-1X13_BIG 1X13-BIG JP1, JP2 ПИН ХЕДЕР 12 16 R-US_R2512 R2512 R5, R7, R9, R11, R13, R15, R17, R19, R21, R23, R25, R27 RESISTOR, американски символ 12 1K R-US_R0805 R0805 R4, R6, R8, R10, R12, R14, R16, R18, R20, R22, R24, R26 RESISTOR, американски символ 12 200 R-US_R0805 R0805 R1, R2, R3, R28, R29, R30, R31, R32, R33, R34, R35, R36 резистор, американски символ

Стъпка 3: Разположение на печатни платки

Разположение на печатни платки
Разположение на печатни платки

Оформлението се определя най-вече от дизайна на основната BMS система, обсъдена в отделна инструкция (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/). Заглавките JP1 и JP2 трябва да съвпадат със съответстващите заглавки на BMS. Мосфетите, резисторите за обезвъздушаване и светодиодите са подредени по логичен начин на щита Arduino Uno. Файловете на Гербер са създадени с помощта на Eagle CAD и печатните платки са изпратени до Сиера Circuits за производство.

Прикаченият файл "Gerbers Balance Board.zip.txt" всъщност е zip файл, съдържащ Gerbers. Можете просто да изтриете.txt частта от името на файла и след това да го разархивирате като нормален zip файл.

Изпратете ми съобщение, ако искате да получите печатна платка, може още да ми е останало.

Стъпка 4: Монтаж на печатни платки

Платките за балансиране са запоени ръчно с помощта на температурна запояваща станция Weller WESD51 с накрайник "отвертка" от серия ETB ET 0.093 и припой 0.3 мм. Въпреки че по -малките съвети може да изглеждат по -добри за сложна работа, те не задържат топлината и всъщност правят работата по -трудна. Използвайте писалка, за да почистите подложките на печатни платки преди запояване. Припоят от 0,3 мм работи добре за ръчно запояване на SMD части. Поставете малко спойка върху една подложка и след това поставете частта с пинсета или нож x-acto и поставете тази подложка надолу. След това останалата подложка може да бъде запоена, без да се движи частта. Уверете се, че не прегрявате частта или подложките на печатни платки. Тъй като повечето от компонентите са доста големи по стандартите на SMD, печатната платка е доста лесна за сглобяване.

Стъпка 5: Код

Код
Код

Пълният код на Arduino е предоставен в предишната инструкция, свързана по -горе. Тук ще насоча вниманието ви към раздела, който контролира балансирането на клетките. Както бе споменато по-горе, S1-S12 се управляват от CFGR4 и първите 4 бита от регистърните групи CFGR5 на LTC6804 (вижте страници 51 и 53 от листа с данни LTC6804). Цикличната функция на кода на Arduino открива сегмента на батерията с най -високо напрежение и поставя неговия номер в променливата клеткаMax_i. Ако напрежението на cellMax_i е по -голямо от CELL_BALANCE_THRESHOLD_V, кодът ще извика функцията balance_cfg (), предавайки номера на високия сегмент, cellMax_i. Функцията balance_cfg задава стойностите на съответния регистър LTC6804. Обаждане към LTC6804_wrcfg след това записва тези стойности в IC, като включва S пина, свързан с cellMax_i.

Препоръчано: