Sommario:

Arduino LTC6804 BMS - Parte 2: Balance Board: 5 passaggi
Arduino LTC6804 BMS - Parte 2: Balance Board: 5 passaggi

Video: Arduino LTC6804 BMS - Parte 2: Balance Board: 5 passaggi

Video: Arduino LTC6804 BMS - Parte 2: Balance Board: 5 passaggi
Video: Lithium-Ion Battery Management System | BMS | LTC6804-2 2024, Dicembre
Anonim
Arduino LTC6804 BMS - Parte 2: Balance Board
Arduino LTC6804 BMS - Parte 2: Balance Board

La prima parte è qui

Un sistema di gestione della batteria (BMS) include funzionalità per rilevare importanti parametri del pacco batteria tra cui tensioni delle celle, corrente della batteria, temperature delle celle, ecc. Se uno di questi è fuori da un intervallo predefinito, il pacco può essere scollegato dal suo carico o caricatore, o può essere intrapresa un'altra azione appropriata. In un progetto precedente (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/) ho discusso il mio progetto BMS, che si basa sul chip LTC6804 Multicell Battery Monitor di Linear Technology e un microcontrollore Arduino. Questo progetto estende il progetto BMS aggiungendo il bilanciamento del pacco batteria.

I pacchi batteria sono costituiti da singole celle in configurazione parallela e/o in serie. Ad esempio, un pacchetto 8p12s verrebbe costruito utilizzando 12 set collegati in serie di 8 celle collegate in parallelo. Ci sarebbero un totale di 96 celle nella confezione. Per ottenere le migliori prestazioni, tutte le 96 celle dovrebbero avere proprietà simili, tuttavia, ci sarà sempre qualche variazione tra le celle. Ad esempio, alcune celle potrebbero avere una capacità inferiore rispetto ad altre celle. Quando il pacco viene caricato, le celle di capacità inferiore raggiungeranno la loro massima tensione di sicurezza prima del resto del pacco. Il BMS rileverà questa alta tensione e interromperà l'ulteriore ricarica. Il risultato sarà che gran parte del pacco non è completamente carica quando il BMS interrompe la carica a causa della tensione più alta della cella più debole. Una dinamica simile può verificarsi durante la scarica, quando le celle di capacità maggiore non possono scaricarsi completamente perché il BMS disconnette il carico quando la batteria più debole raggiunge il limite di bassa tensione. Il pacco è quindi buono solo quanto le sue batterie più deboli, come una catena che è forte solo quanto il suo anello più debole.

Una soluzione a questo problema consiste nell'utilizzare una bilancia. Sebbene ci siano molte strategie per bilanciare il pacco, le più semplici schede di bilanciamento "passive" sono progettate per scaricare parte della carica delle celle a più alto voltaggio quando il pacco si sta avvicinando alla carica completa. Mentre una parte dell'energia viene sprecata, il pacco nel suo insieme può immagazzinare più energia. Lo spurgo viene effettuato dissipando parte della potenza attraverso una combinazione resistore/interruttore controllata da un microcontrollore. Questa istruzione descrive un sistema di bilanciamento passivo compatibile con arduino/LTC6804 BMS di un progetto precedente.

Forniture

Puoi ordinare il PCB Balance Board da PCBWays qui:

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

Passaggio 1: teoria del funzionamento

Teoria del funzionamento
Teoria del funzionamento

La pagina 62 della scheda tecnica dell'LTC6804 tratta del bilanciamento delle celle. Sono disponibili due opzioni: 1) utilizzare i MOSFET interni a canale N per eliminare la corrente dalle celle alte, oppure 2) utilizzare i MOSFET interni per controllare gli interruttori esterni che trasportano la corrente di dispersione. Uso la seconda opzione perché posso progettare il mio circuito di spurgo per gestire una corrente più elevata di quella che potrebbe essere eseguita utilizzando gli interruttori interni.

I MOSFET interni sono disponibili tramite i pin S1-S12 mentre alle celle stesse si accede tramite i pin C0-C12. L'immagine sopra mostra uno dei 12 circuiti di spurgo identici. Quando Q1 è acceso, la corrente scorrerà da C1 a terra attraverso R5, dissipando parte della carica nella cella 1. Ho selezionato un resistore da 6 Ohm, 1 Watt, che dovrebbe essere in grado di gestire diversi milliampere di corrente di dispersione. un LED aggiunto in modo che l'utente possa vedere quali celle stanno bilanciando in un dato momento.

I pin S1-S12 sono controllati dal CFGR4 e dai primi 4 bit dei gruppi di registri CFGR5 (vedi pagine 51 e 53 del datasheet dell'LTC6804). Questi gruppi di registri sono impostati nel codice Arduino (discusso di seguito) nella funzione balance_cfg.

Passaggio 2: schematico

Schema
Schema

Lo schema della bilancia BMS è stato progettato utilizzando Eagle CAD. È abbastanza semplice. C'è un circuito di spurgo per ogni segmento di serie del pacco batteria. Gli interruttori sono controllati da segnali provenienti dall'LTC6804 tramite l'intestazione JP2. La corrente di spurgo fluisce dal pacco batteria attraverso l'intestazione JP1. Si noti che la corrente di spurgo fluisce verso il successivo segmento inferiore del pacco batteria, quindi, ad esempio, C9 sfocia in C8, ecc. Il simbolo dello scudo Arduino Uno è posizionato sullo schema per il layout del PCB descritto nel passaggio 3. Viene fornita un'immagine a risoluzione più elevata nel file zip. Quello che segue è l'elenco delle parti (per qualche motivo la funzione di caricamento del file Instructables non funziona per me…)

Qtà Valore Dispositivo Confezione Parti Descrizione

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, Q7, Q8, Q9, Q10, Q11, Q12 Mosfet canale P 2 PINHD-1X13_BIG 1X13-BIG JP1, JP2 PIN HEADER 12 16 R-US_R2512 R2512 R5, R7, R9, R11, R13, R15, R17, R19, R21, R23, RESISTENZA R25, R27, simbolo americano 12 1K R-US_R0805 R0805 R4, R6, R8, R10, R12, R14, R16, R18, R20, R22, R24, R26 RESISTENZA, simbolo americano 12 200 R-US_R0805 R0805 R1, R2, RESISTENZA R3, R28, R29, R30, R31, R32, R33, R34, R35, R36, simbolo americano

Passaggio 3: layout PCB

Layout PCB
Layout PCB

Il layout è principalmente determinato dal design del sistema BMS principale discusso in un istruzioni separato (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/). Le intestazioni JP1 e JP2 devono corrispondere alle intestazioni corrispondenti sul BMS. I Mosfet, i resistori di spurgo e i LED sono disposti in modo logico sullo shield Arduino Uno. I file Gerber sono stati creati utilizzando Eagle CAD e i PCB sono stati inviati a Sierra Circuits per la fabbricazione.

Il file allegato "Gerbers Balance Board.zip.txt" è in realtà un file zip contenente i Gerber. Puoi semplicemente eliminare la parte.txt del nome del file e quindi decomprimerlo come un normale file zip.

Mandami un messaggio se desideri ottenere un PCB, potrei averne ancora un po'.

Passaggio 4: assemblaggio PCB

I PCB della scheda di bilanciamento sono stati saldati a mano utilizzando una stazione di saldatura a temperatura controllata Weller WESD51 con una punta "cacciavite" serie ETB ET da 0,093 e una saldatura da 0,3 mm. Sebbene le punte più piccole possano sembrare migliori per lavori complessi, non trattengono il calore e rendono il lavoro più difficile. Utilizzare una penna di flusso per pulire i pad PCB prima della saldatura. La saldatura da 0,3 mm funziona bene per le parti SMD saldate a mano. Metti un po' di saldatura su un pad e poi posiziona la parte con una pinzetta o un coltello x-acto e fissa quel pad. Il pad rimanente può quindi essere saldato senza che la parte si muova. Assicurati di non surriscaldare la parte o i pad del PCB. Poiché la maggior parte dei componenti è abbastanza grande per gli standard SMD, il PCB è abbastanza facile da assemblare.

Passaggio 5: codice

Codice
Codice

Il codice Arduino completo è fornito nell'istruzione precedente collegata a sopra. Qui attirerò la tua attenzione sulla sezione che controlla il bilanciamento delle cellule. Come accennato in precedenza, S1-S12 sono controllati dal CFGR4 e dai primi 4 bit dei gruppi di registri CFGR5 sull'LTC6804 (vedere le pagine 51 e 53 della scheda tecnica dell'LTC6804). La funzione loop del codice Arduino rileva il segmento del pacco batteria a più alta tensione e ne inserisce il numero nella variabile cellMax_i. Se la tensione di cellMax_i è maggiore di CELL_BALANCE_THRESHOLD_V, il codice chiamerà la funzione balance_cfg(), passando il numero del segmento alto, cellMax_i. La funzione balance_cfg imposta i valori del registro LTC6804 appropriato. Una chiamata a LTC6804_wrcfg scrive quindi questi valori nell'IC, attivando il pin S associato a cellMax_i.

Consigliato: