Cuprins:

Încărcător inteligent pe bază de microcontroler: 9 pași (cu imagini)
Încărcător inteligent pe bază de microcontroler: 9 pași (cu imagini)

Video: Încărcător inteligent pe bază de microcontroler: 9 pași (cu imagini)

Video: Încărcător inteligent pe bază de microcontroler: 9 pași (cu imagini)
Video: How to use XH-M603 Battery Charger Controller - Lead Acid only, not Lithium 2024, Iulie
Anonim
Încărcător inteligent pe bază de microcontroler
Încărcător inteligent pe bază de microcontroler
Încărcător inteligent pe bază de microcontroler
Încărcător inteligent pe bază de microcontroler
Încărcător inteligent pe bază de microcontroler
Încărcător inteligent pe bază de microcontroler

Circuitul pe care urmează să-l vedeți este un încărcător inteligent de baterie bazat pe ATMEGA8A cu întrerupere automată. Parametrii diferiți sunt afișați prin intermediul unui LCD în diferite stări de încărcare.

Am construit încărcătorul practic pentru a-mi încărca bateria Li-ion de 11,1v / 4400maH. Firmware-ul este scris în principiu pentru a încărca acest tip de baterie. Puteți încărca propriul protocol de încărcare pentru a vă satisface nevoile de încărcare a altor tipuri de baterii.

După cum știți, încărcătoarele inteligente de baterii sunt ușor disponibile pe piețe. Dar fiind un entuziast electronic, este întotdeauna de preferat să îmi construiesc propriul meu, decât să cumpăr unul care va avea funcții statice / neschimbabile. În acest modul, am de gând să actualizați în viitor, așa că am lăsat spațiu cu privire la asta.

Când am cumpărat pentru prima dată bateria Li-ion de 11.1v / 2200mah, am căutat încărcătoare de baterii DIY cu control inteligent pe internet, dar am găsit resurse foarte limitate. Dar, deoarece bateria mea anterioară a murit în timp (fără niciun motiv), am cumpărat o altă baterie Li-ion de 11,1v / 4400mah, dar de data aceasta, configurarea anterioară a fost inadecvată pentru a încărca noua mea baterie. cerință, am studiat pe net și am putut să-mi proiectez propriul încărcător inteligent.

Îmi împărtășesc acest lucru, deoarece cred că mulți pasionați / entuziaști sunt acolo, cu adevărat pasionați de lucrul la electronica de putere și microcontroler și, de asemenea, au nevoie să își construiască un încărcător inteligent.

Să aruncăm o privire rapidă la modul de încărcare a unei baterii Li-ion.

Pasul 1: Încărcați protocolul pentru o baterie Li-ion

Pentru a încărca bateria Li-ion, trebuie îndeplinite anumite condiții. Dacă nu le menținem, fie bateria va fi supraîncărcată, fie va fi incendiată (dacă este supraîncărcată) sau va fi deteriorată permanent.

Există un site web foarte bun pentru a ști tot ce este necesar despre diferite tipuri de baterii și, bineînțeles, știți numele site-ului web dacă sunteți familiarizat cu lucrul pe baterii … Da, vorbesc despre batteryuniversity.com.

Iată linkul pentru a cunoaște detaliile necesare încărcării unei baterii Li-ion.

Dacă sunteți suficient de leneși pentru a citi toate aceste teorii, atunci esența este următoarea.

1. Încărcarea completă a unei baterii Li-ion de 3.7v este 4.2v. În cazul nostru, bateria Li-ion de 11.1v înseamnă o baterie de 3 x 3.7v. Pentru încărcare completă, bateria trebuie să ajungă la 12.6v, dar din motive de siguranță, îl va încărca până la 12,5 v.

2. Când bateria este pe punctul de a ajunge la încărcare completă, atunci curentul acumulat de baterie din încărcător scade până la 3% din capacitatea nominală a bateriei. De exemplu, capacitatea bateriei din pachetul meu de celule este de 4400 mah. Deci, atunci când bateria va fi complet încărcată, curentul extras de baterie va fi atins cu aproape 3% -5% din 4400ma, adică între 132 și 220ma. Pentru a opri în siguranță încărcarea, încărcarea va fi oprită atunci când curentul tras va fi mai mic 190ma (aproape 4% din capacitatea nominală).

3. Procesul de încărcare totală este împărțit în două părți principale 1-curent constant (modul CC), 2-tensiune constantă (modul CV). va notifica utilizatorul la încărcarea completă prin alarmare, apoi bateria trebuie deconectată de la încărcător)

Mod CC -

În modul CC, încărcătorul încarcă bateria cu o rată de încărcare de 0,5c sau 1c. va fi 2200ma și 1c va fi de 4400ma curent de încărcare. „c” înseamnă rata de încărcare / descărcare. Unele baterii acceptă și 2c, adică în modul CC, puteți seta curentul de încărcare până la capacitatea de 2xbaterie, dar este o nebunie !!!!!

Dar pentru a fi în siguranță, voi alege un curent de încărcare de 1000ma pentru bateria de 4400mah, adică 0,22c. În acest mod, încărcătorul va monitoriza curentul tras de baterie independent de tensiunea de încărcare. / scăderea tensiunii de ieșire până când încărcarea bateriei ajunge la 12,4v.

Mod CV -

Acum, deoarece tensiunea bateriei ajunge la 12,4 v, încărcătorul va menține 12,6 volți (independent de curentul absorbit de baterie) la ieșire. Acum, încărcătorul va opri ciclul de încărcare în funcție de două lucruri. Dacă tensiunile bateriei traversează 12,5 v și, de asemenea, dacă curentul de încărcare scade sub 190ma (4% din capacitatea nominală a bateriei, așa cum s-a explicat anterior), atunci ciclul de încărcare va fi oprit și se va auzi un buzzer.

Pasul 2: schematică și explicație

Acum, aruncăm o privire asupra funcționării circuitului. Schema este atașată în format pdf în fișierul BIN.pdf.

Tensiunea de intrare a circuitului poate fi de 19 / 20v. Am folosit un încărcător de laptop vechi pentru a obține 19v.

J1 este un conector terminal pentru a conecta circuitul la sursa de tensiune de intrare. Q1, D2, L1, C9 formează un convertor Buck. de convertor, puteți atinge tensiunea de ieșire dorită prin variația ciclului de funcționare. Dacă doriți să aflați mai multe despre convertoarele Buck, accesați această pagină. C9 pentru cerințele mele, a durat 3 zile de încercare și eroare. Dacă veți încărca diferite baterii, atunci este posibil ca aceste valori să se schimbe.

Q2 este tranzistorul driver pentru MOSFET de putere Q1. R1 este un rezistor de polarizare pentru Q1. Vom alimenta semnalul pwm în baza Q2 pentru a controla tensiunea de ieșire. C13 este un capac de decuplare.

Acum, ieșirea este apoi trimisă la Q3. O întrebare poate fi pusă: „La ce folosește Q3 aici ?? . Răspunsul este destul de simplu, acționează ca un simplu comutator. Ori de câte ori vom măsura tensiunea bateriei, vom opri Q3 pentru a deconecta tensiunea de încărcare ieșită de la convertorul Buck. Q4 este driverul pentru Q3 cu un rezistor de polarizare R3.

Rețineți că există o diodă D1 în cale. Ce face dioda aici în cale ?? Acest răspuns este, de asemenea, foarte simplu. Ori de câte ori circuitul va fi deconectat de la puterea de intrare în timp ce bateria este atașată la ieșire, curentul de la baterie va fi curge în traseul invers prin diodele corpului MOSFET Q3 și Q1 și astfel U1 și U2 vor obține tensiunea bateriei la intrările lor și vor alimenta circuitul de la tensiunea bateriei. Pentru a evita acest lucru, se utilizează D1.

Ieșirea D1 este apoi alimentată la intrarea senzorului de curent (IP +). Acesta este un senzor de curent de bază efect efect hall, adică partea de detectare a curentului și partea de ieșire sunt izolate. Ieșirea senzorului de curent (IP-) este apoi alimentată la Aici R5, RV1, R6 formează un circuit divizor de tensiune pentru a măsura tensiunea / tensiunea de ieșire a bateriei.

ADC-ul atmega8 este utilizat aici pentru a măsura tensiunea și curentul bateriei. ADC poate măsura maxim 5v. Dar vom măsura un maxim de 20v (cu un spațiu liber). Pentru a reduce tensiunea la intervalul ADC, un 4: Se utilizează 1 divizor de tensiune. Potul (RV1) este utilizat pentru reglarea fină / calibrare. Voi discuta mai târziu. C6 este decuplarea capacului.

Ieșirea senzorului de curent ACS714 este, de asemenea, alimentată la pinul ADC0 al atmega8. Prin acest senzor ACS714, vom măsura curentul. Am o placă de rupere din pololu de versiunea 5A și funcționează foarte bine. Voi vorbi în etapa următoare pe cum se măsoară curentul.

LCD-ul este un lcd normal de 16x2. Lcd-ul utilizat aici este configurat în modul pe 4 biți, deoarece numărul de pini al atmega8 este limitat. RV2 este potul de reglare a luminozității pentru LCD.

Atmega8 este tactat la 16mhz cu un cristal extern X1 cu două capace de decuplare C10 / 11. Unitatea ADC a atmega8 este alimentată prin pinul Avcc printr-un inductor de 10uH. C7, C8 sunt capace de decuplare conectate la Agnd. Plasați-le ca cât mai aproape posibil de Avcc și Aref în mod corespunzător în timp ce realizați PCB. Observați că pinul Agnd nu este afișat în circuit. Pinul Agnd va fi conectat la masă.

Am configurat ADC-ul atmega8 pentru a utiliza Vref extern, adică vom furniza tensiunea de referință prin pinul Aref. Motivul principal din spatele acestui lucru pentru a atinge o precizie maximă posibilă de citire. Tensiunea de referință internă de 2.56v nu este atât de mare în avrs. De aceea l-am configurat extern. Acum este un lucru de remarcat. 7805 (U2) furnizează doar senzorul ACS714 și pinul Aref al atmega8. Acest lucru este pentru a menține o precizie optimă. ACS714 oferă o tensiune de ieșire stabilă de 2,5 v când nu există flux de curent prin el. Dar, de exemplu, dacă tensiunea de alimentare a ACS714 va fi redusă (să zicem 4.7v), atunci tensiunea de ieșire fără curent (2.5v) va fi, de asemenea, coborâtă și va crea o citire necorespunzătoare / eronată a curentului De asemenea, măsurând tensiunea față de Vref, atunci tensiunea de referință de pe Aref trebuie să fie lipsită de erori și stabilă. De aceea avem nevoie de 5v stabil.

Dacă am alimenta ACS714 și Aref de la U1 care furnizează atmega8 și LCD, atunci ar exista o cădere substanială de tensiune la ieșirea lui U1, iar citirea amperilor și a tensiunii ar fi eronată. De aceea, U2 este folosit aici pentru a elimina eroarea. prin furnizarea unui 5v stabil doar la Aref și ACS714.

S1 este apăsat pentru a calibra citirea tensiunii. S2 este rezervat pentru utilizare ulterioară. Puteți adăuga / nu adăuga acest buton în funcție de alegerea dvs.

Pasul 3: Funcționarea …

Funcționează …
Funcționează …
Funcționează …
Funcționează …
Funcționează …
Funcționează …

La pornire, atmega8 va porni convertorul buck oferind o ieșire de 25% pwm la baza Q2. La rândul său, Q2 va conduce Q1 și va porni convertorul Buck. Q3 va fi oprit pentru a deconecta ieșirea convertorului buck. și bateria. Atmega8 citește apoi tensiunea bateriei prin divizorul de rezistență. Dacă nu este conectată nicio baterie, atunci atmega8 afișează un mesaj „Introduceți bateria” prin 16x2 lcd și așteaptă bateria. Dacă o baterie este apoi atașată, atmega8 va verifica tensiunea. Dacă tensiunea este mai mică de 9v, atunci atmega8 va afișa „baterie defectă” pe lcd-ul de 16x2.

Dacă s-a găsit o baterie cu mai mult de 9v, atunci încărcătorul va intra mai întâi în modul CC și va porni mosfet-ul de ieșire Q3. Modul încărcător (CC) va fi actualizat pentru a fi afișat imediat. Dacă tensiunea bateriei este mai mare de 12,4v, atunci mega8 va părăsi imediat modul CC și va intra în modul CV. În cazul în care tensiunea bateriei este mai mică de 12,4v, atunci mega8 va menține curentul de încărcare 1A prin creșterea / scăderea tensiunii de ieșire a convertorului buck prin variația ciclului de funcționare al pwm. Curentul de încărcare va fi citit de senzorul de curent ACS714. Tensiunea de ieșire buck, curentul de încărcare, ciclul de funcționare PWM vor fi actualizate periodic în LCD.

. Tensiunea bateriei va fi verificată prin oprirea Q3 după fiecare interval de 500 ms. Tensiunea bateriei va fi actualizată imediat la lcd.

Dacă tensiunea bateriei devine mai mare de 12,4 volți în timpul încărcării, atunci mega8 va părăsi modul CC și va intra în modul CV. Starea modului va fi imediat actualizată la lcd.

Apoi, mega8 va menține tensiunea de ieșire de 12,6 volți, variind ciclul de funcționare al dolarului. Aici tensiunea bateriei va fi verificată după fiecare interval de 1 s. De îndată ce tensiunea bateriei va fi mai mare de 12,5 v, atunci va fi verificată dacă curentul tras este mai mic de 190ma. Dacă ambele condiții sunt îndeplinite, atunci ciclul de încărcare va fi oprit prin oprirea permanentă a Q3 și se va auzi un buzzer pornind Q5. De asemenea, mega8 va afișa „Încărcare completă” prin intermediul LCD-ului.

Pasul 4: Piese necesare

Piese necesare
Piese necesare

Mai jos sunt enumerate părțile necesare pentru finalizarea proiectului. Vă rugăm să consultați fișele tehnice pentru identificare. Se furnizează doar link-ul de date tehnice pentru piese.

1) ATMEGA8A x 1. (foaie tehnică)

2) Senzor de curent ACS714 5A de la Pololu x 1 (vă recomand cu tărie să utilizați senzorul de la Pololu, deoarece acestea sunt cele mai precise dintre toți ceilalți senzori pe care i-am folosit. Puteți găsi aici). Pinul este descris în imagine.

3) IRF9540 x 2. (foaie tehnică)

4) 7805 x 2 (recomandat de la Toshiba, de fapt, deoarece oferă cea mai stabilă ieșire de 5V). (Fișă tehnică)

5) 2n3904 x 3. (foaie tehnică)

6) 1n5820 schottky x 2. (foaie tehnică)

7) 16x2 LCD x 1. (foaie tehnică)

8) Inductor de putere 330uH / 2A x 1 (recomandat de la coilmaster)

9) 10uH inductor x 1 (mic)

10) Rezistențe - (Toate rezistențele sunt de 1% tip MFR)

150R x 3

680R x 2

1k x 1

2k2 x 1

10k x 2

22k x 1

Oală de 5k x 2 (tip montare pe PCB)

11) Condensatoare

Notă: Nu am folosit C4. Nu este necesar să-l folosesc dacă utilizați o sursă de alimentare pentru laptop / o sursă de alimentare reglementată ca sursă de alimentare de 19 v

100uF / 25v x 3

470uF / 25v x 1

1000uF / 25v x 1

100n x 8

22p x 2

12) Comutator de apăsare momentan montat pe PCB x 2

13) Buzzer 20v x 1

14) Conector 2 pini bornier x 2

15) Cabinet (am folosit un dulap ca acesta.) Puteți folosi orice doriți.

16) Sursă de alimentare pentru laptop de 19 v (Am modificat o sursă de alimentare pentru laptop HP, puteți utiliza orice tip de sursă de alimentare după cum doriți. Dacă doriți să construiți una, accesați acest instructables.)

17) Radiator de dimensiuni medii pentru U1 și Q1. Puteți utiliza acest tip. Sau puteți consulta imaginile din circuitul meu. Dar asigurați-vă că utilizați radiator pentru ambele.

18) Conector banana - Femelă (negru și roșu) x 1 + tată (negru și roșu) (în funcție de nevoia dvs. de conectori)

Pasul 5: Timpul de calculat ……

Calculul măsurării tensiunii:

Tensiunea maximă, vom măsura folosind atmega8 adc este de 20v. Dar adc-ul de la atmega8 poate măsura maxim 5v. Deci, pentru a face 20v în intervalul de 5v, aici se folosește un divizor de tensiune 4: 1 (ca 20v / 4 = 5v). Așadar, am putea pune în aplicare acest lucru folosind pur și simplu două rezistențe, dar în cazul nostru am adăugat un pot între două rezistențe fixe, astfel încât să putem regla manual acuratețea prin rotirea potului. Rezoluția ADC este de 10 biți, adică adc va reprezenta 0v la 5v ca 0 la 1023 numere zecimale sau 00h la 3FFh. („h” înseamnă numere hex). Referința este setată la 5v extern prin intermediul pinului Aref.

Deci, tensiunea măsurată = (citirea adc) x (Vref = 5v) x (factorul de împărțire a rezistorului, adică 4 în acest caz) / (citirea maximă a adc, adică 1023 pentru 10 biți adc).

Să presupunem că obținem o citire adc a 512. Atunci tensiunea măsurată va fi -

(512 x 5 x 4) / 1023 = 10v

Calculul măsurării curente:

ACS714 va oferi o ieșire stabilă de 2,5 v la pinul de ieșire atunci când nu va curge curent de la IP + către IP-. Va da 185mv / A peste 2,5 v, adică, dacă curentul de 3A curge prin circuit, ACS714 va da 2,5v + (0,185 x 3) v = 3,055v la pinul de ieșire.

Deci, formula de măsurare curentă este următoarea -

Curent măsurat = (((citire adc) * (Vref = 5v) / 1023) -2,5) /0.185.

de exemplu, citirea adc este de 700, atunci curentul măsurat va fi - (((700 x 5) / 1023) - 2,5) /0.185 = 4.98A.

Pasul 6: Software-ul

Software-ul este codat în Winavr folosind GCC. Am modularizat codul, adică am creat diferite biblioteci, cum ar fi biblioteca ADC, biblioteca LCD etc. Biblioteca ADC conține comenzile necesare pentru configurare și interacțiune cu ADC. Biblioteca LCD conține toate funcții pentru a conduce lcd-ul de 16x2. De asemenea, puteți utiliza lcd_updated _library.c deoarece secvența de pornire a lcd-ului este modificată în această bibliotecă. Dacă doriți să utilizați biblioteca actualizată, redenumiți-o cu lcd.c

Fișierul main.c conține funcțiile principale. Protocolul de încărcare pentru li-ion este scris aici. Vă rugăm să definiți ref_volt în main.c prin măsurarea ieșirii U2 (7805) cu un multimetru precis pentru a obține citiri exacte ca calcule se bazează pe ea.

Puteți pur și simplu să ardeți fișierul.hex direct în mega8 pentru a ocoli headche-ul.

Pentru cei care doresc să scrie un alt protocol de încărcare, am pus suficiente comentarii prin care chiar și un copil poate înțelege ce se întâmplă pentru fiecare execuție de linie. Doar trebuie să vă scrieți propriul protocol pentru diferite tipuri de baterii. Dacă utilizați Li- ion de tensiune diferită, trebuie să schimbați numai parametrii. (Deși acest lucru nu este testat pentru alte tipuri de baterii Li-ion / alt tip. Trebuie să îl rezolvați singur).

Vă recomand cu tărie să nu construiți acest circuit, dacă acesta este primul dvs. proiect sau sunteți nou în microcontroler / electronică de putere.

Am încărcat fiecare fișier ca fiind formatul original, cu excepția fișierului Makefile, deoarece creează o problemă de deschidere. L-am încărcat în format.txt. Copiați conținutul și lipiți-l într-un nou Makefile și construiți întregul proiect. Voila ….ești gata să arzi fișierul hex.

Pasul 7: Destul de teorie ….. Să-l buld

Destul de teorie … să-l buld
Destul de teorie … să-l buld
Destul de teorie … să-l buld
Destul de teorie … să-l buld
Destul de teorie … să-l buld
Destul de teorie … să-l buld
Destul de teorie … să-l buld
Destul de teorie … să-l buld

Iată fotografiile prototipului meu, de la breadboarded la finalizate în pcb. Vă rugăm să parcurgeți notele imaginilor pentru a afla mai multe. Fotografiile sunt aranjate în serie de la început până la sfârșit.

Pasul 8: Înainte de primul ciclu de încărcare …. Calibrează !!

Înainte de a încărca o baterie utilizând încărcătorul, trebuie să o calibrați mai întâi, în caz contrar nu va putea încărca bateria / o supraîncărca.

Există două tipuri de calibrare 1) Calibrarea tensiunii. 2) Calibrarea curentului. Pașii sunt după cum urmează pentru calibrare.

La început, măsurați tensiunea de ieșire a U2. Apoi definiți-o în main.c ca ref_volt. Mine a fost 5.01. Schimbați-o conform măsurării dvs. Acesta este principalul pas necesar pentru calibrarea tensiunii și curentului. Pentru calibrarea curentului, nimic altceva este necesar. Totul va fi asigurat de software-ul însuși

Acum, după ce ați ars fișierul hexagonal după ce ați definit volta ref în main.c, ucideți puterea unității.

. Măsurați acum tensiunea bateriei pe care o veți încărca folosind un multimetru și conectați bateria la unitate.

Acum apăsați butonul S1 și țineți-l apăsat și alimentați circuitul în timp ce butonul este apăsat. După o scurtă întârziere de aproximativ 1s, eliberați butonul S1. Rețineți că unitatea nu va intra în modul de calibrare dacă alimentați mai întâi circuitul, apoi apăsați S1.

Acum puteți vedea pe afișaj că circuitul este introdus în modul de calibrare. Un "mod cal" va fi afișat pe LCD împreună cu tensiunea bateriei. Acum potriviți tensiunea bateriei afișată pe LCD cu citirea multimetrului dvs. prin rotirea potului.. După ce ați terminat, apăsați din nou comutatorul S1, țineți-l apăsat timp de aproximativ o secundă și eliberați-l. Veți ieși din modul de calibrare. Reiniționați din nou încărcătorul oprindu-l și pornindu-l.

Procesul de mai sus se poate face și fără o baterie conectată. Trebuie să conectați o sursă de alimentare externă la terminalul de ieșire (J2). După ce ați intrat în modul de calibrare, calibrați utilizând potul. Dar de această dată mai întâi deconectați sursa de alimentare externă, apoi apăsați S1 pentru a ieși din modul de calibrare. Acest lucru este necesar pentru a deconecta mai întâi sursa de alimentare externă pentru a evita orice tip de defecțiune a oricărei unități.

Pasul 9: Pornirea după calibrare …..acum sunteți gata să vă balansați

Pornirea după calibrare …..acum sunteți gata să vă balansați
Pornirea după calibrare …..acum sunteți gata să vă balansați
Pornirea după calibrare …..acum sunteți gata să vă balansați
Pornirea după calibrare …..acum sunteți gata să vă balansați
Pornirea după calibrare … acum acum sunteți gata să vă balansați
Pornirea după calibrare … acum acum sunteți gata să vă balansați

Acum, după ce calibrarea este completă, puteți începe acum procesul de încărcare. Atașați mai întâi bateria, apoi porniți unitatea. Încărcătorul va avea grijă de odihnă.

Circuitul meu este 100% funcțional și testat. Dar dacă observați ceva, vă rugăm să ne anunțați. De asemenea, nu ezitați să contactați pentru orice întrebări.

Clădire fericită.

Rgds // Sharanya

Recomandat: