- De ce avem nevoie de un tester de capacitate a bateriei?
- Componente necesare
- Diagrama circuitului de testare a capacității bateriei Arduino
- Program Arduino pentru măsurarea capacității bateriei
- Îmbunătățiri ale preciziei
- Construirea și testarea circuitului
Odată cu apariția tehnologiei, dispozitivele și dispozitivele noastre electronice sunt din ce în ce mai mici, cu aplicații mai funcționale și complexe. Odată cu această creștere a complexității, necesitatea de putere a circuitului a crescut, de asemenea, și în încercarea noastră de a face dispozitivul cât mai mic și cât mai portabil, avem nevoie de o baterie care să poată furniza curent mare pentru o perioadă lungă de timp și în același timp timp, cântăriți mult mai puțin, astfel încât dispozitivul să rămână portabil. Dacă doriți să aflați mai multe despre baterii, puteți citi și acest articol despre terminologiile de bază ale bateriei.
Din multe tipuri diferite de baterii disponibile, bateriile cu plumb acid, bateriile Ni-Cd și bateriile Ni-MH nu sunt potrivite, deoarece fie cântăresc mai mult, fie nu pot furniza curentul necesar pentru aplicația noastră, acest lucru ne lasă cu bateriile litiu-ion care poate asigura un curent ridicat, menținând în același timp greutatea redusă și dimensiunea compactă. Anterior, am construit, de asemenea, un încărcător de baterii 18650 și un modul de rapel și un sistem de monitorizare a bateriei bazat pe IoT, le puteți verifica dacă sunteți interesat.
De ce avem nevoie de un tester de capacitate a bateriei?
Există mulți furnizori de baterii pe piață care vând versiuni ieftine de baterii Li-ion care pretind specificații bizare cu un preț foarte mic, ceea ce este prea bun pentru a fi adevărat. Când cumpărați aceste celule, fie nu funcționează deloc, fie dacă funcționează, capacitatea de încărcare sau fluxul curent sunt atât de mici încât nu pot funcționa deloc cu aplicația. Deci, cum să testați o baterie cu litiu dacă celula nu este una dintre aceste knockoff-uri ieftine? Una dintre metode constă în măsurarea tensiunii în circuit deschis fără sarcină și încărcare, dar acest lucru nu este deloc fiabil.
Deci, vom construi un tester de capacitate a bateriei 18650 pentru o celulă Li-Ion 18650 care va descărca o celulă 18650 complet încărcată printr-un rezistor, măsurând în același timp curentul care curge prin rezistor pentru a calcula capacitatea acestuia. Dacă nu obțineți capacitatea revendicată a bateriei în timp ce tensiunea celulei se încadrează în limitele specificate, atunci celula respectivă este defectă și nu ar trebui să o utilizați, deoarece starea de încărcare a celulei se va epuiza la o rată foarte rapidă sub sarcină, creând o bucla de curent local, dacă este utilizată într-un acumulator, având ca rezultat încălzirea și eventual incendiul. Deci, să sărim direct în el.
Componente necesare
- Arduino Nano
- 16 × 2 caractere LCD
- LM741 OPAMP IC
- 2.2Ω, rezistor de 5 wați
- 7805 IC regulator de tensiune pozitivă
- Alimentare 12V
- Potențiometru Trimmer 10kΩ
- Condensator de 0,47 uF
- Rezistor de 33kΩ
- Conector DC Power Barrel Jack
- Terminale cu șurub PCB
- IRF540N N-Channel Mosfet IC
- Perfboard
- Set de lipit
- Radiatoare
Diagrama circuitului de testare a capacității bateriei Arduino
Schema completă a circuitului pentru testerul de capacitate al bateriei 18650 este prezentată mai jos. Explicația circuitului este următoarea-
Unitate de calcul și de afișare:
Acest circuit este împărțit în două părți, în primul rând o sursă redusă de 5V pentru ecranul Arduino Nano și 16 × 2 LCD alfanumeric și conexiunile acestora pentru a afișa rezultatele măsurătorilor de curent și tensiune în timp real. Circuitul este alimentat de sursa de alimentare de 12V folosind SMPS sau puteți utiliza o baterie de 12V, iar curentul maxim va fi de aproximativ 60-70mA pentru alimentarea ecranului Arduino și LCD.
Pentru a reduce tensiunea până la 5V, vom folosi un regulator liniar de tensiune care poate dura până la 35V și are nevoie de cel puțin 7,5V sursă de alimentare pentru a furniza o sursă regulată de 5V, iar tensiunea în exces este disipată ca căldură, prin urmare Tensiunea LM7805 Regulator de tensiune IC este mai mare de 12V, apoi luați în considerare adăugarea unui radiator pentru a nu se deteriora. LCD-ul este alimentat cu o sursă de 5V de la 7805 și este conectat la Arduino și funcționează în modul 4 biți. Am adăugat, de asemenea, un potențiometru de ștergere de 10k Ω pentru a controla contrastul afișajului LCD.
Circuit de curent constant de încărcare:
În al doilea rând, circuitul de încărcare a curentului constant bazat pe PWM face ca curentul de sarcină care curge prin rezistor să fie controlabil de către noi și constant, astfel încât să nu se strecoare nici o eroare din cauza variației curentului în timp, pe măsură ce tensiunea celulei scade. Se compune din LM741 OPAMP IC și MOSFET N-Channel IRF540N, care controlează curentul care curge prin MOSFET pornind și oprind MOSFET în funcție de nivelul de tensiune stabilit de noi.
Op-amplificatorul funcționează în modul comparator,deci în acest mod. ieșirea amplificatorului opțional va fi mare ori de câte ori tensiunea pinului neinversibil al amplificatorului opțional este mai mare decât pinul inversor. În mod similar, dacă tensiunea la pinul inversor al op-amplificatorului este mai mare decât pinul care nu inversează, ieșirea amplificatorului opțional va fi trasă în jos. În circuitul dat, nivelul de tensiune a pinului neinversibil este controlat de pinul D9 PWM al Arduino NANO, care comută la o frecvență de 500Hz, care este apoi trecut prin filtrul de circuit RC cu trecere joasă cu valoare de rezistență 33kΩ și condensator cu capacitate de 0,47 uF, pentru a furniza un semnal DC aproape constant la pinul care nu se inversează. Pinul inversor este conectat la rezistorul de sarcină, care citește tensiunea peste rezistor și GND comun. Pinul de ieșire al OPAMP este conectat la terminalul de poartă al MOSFET-ului pentru a-l activa sau dezactiva.OPAMP va încerca să facă tensiunile la ambele terminale egale prin comutarea MOSFET-ului conectat, astfel încât curentul care curge prin rezistor să fie proporțional cu valoarea PWM setată la pinul D9 al NANO. În acest proiect, curentul maxim, mi-am limitat circuitul la 1,3A, ceea ce este rezonabil, deoarece celula pe care o am este de 10A ca valoare nominală a curentului său maxim
Măsurarea tensiunii:
Tensiunea maximă a unei celule Li-Ion complet încărcate este de 4,1V până la 4,3V, care este mai mică decât limita de tensiune de 5V a pinilor de intrare analogici ai Arduino Nano, care are mai mult de 10kΩ rezistență internă, astfel încât să putem conecta direct Celulați la oricare dintre pinii de intrare analogici fără să vă faceți griji cu privire la curentul care curge prin ei. Deci, în acest proiect, trebuie să măsurăm tensiunea celulei, astfel încât să putem determina dacă celula se află în domeniul de funcționare corect al tensiunii și dacă este complet descărcată sau nu.
De asemenea, trebuie să măsurăm curentul care curge prin rezistor, pentru că nu putem folosi șuntul curent, deoarece complexitatea circuitului va crește și creșterea rezistenței în calea de încărcare va reduce rata de descărcare a celulei. Folosirea rezistențelor de șunt mai mici va necesita un circuit suplimentar de amplificare pentru a face citirea tensiunii care vine de la acesta, lizibilă de către Arduino.
Deci, citim direct tensiunea pe rezistorul de sarcină și apoi folosind Legea lui Ohm împărțim tensiunea obținută de valoarea rezistorului de sarcină pentru a obține curentul care curge prin el. Terminalul negativ al rezistorului este conectat direct la GND, deci putem presupune în siguranță că tensiunea pe care o citim pe rezistor este căderea de tensiune din rezistor.
Program Arduino pentru măsurarea capacității bateriei
Acum, după finalizarea circuitului hardware, trecem la programarea Arduino. Acum, dacă nu aveți Arduino IDE instalat pe computer, ce faceți aici! Accesați site-ul oficial Arduino și descărcați și instalați Arduino IDE sau puteți codifica și în orice alt editor, dar acesta este un subiect pentru o altă zi, deocamdată rămânem la Arduino IDE. Acum folosim Arduino Nano, deci asigurați-vă că ați selectat placa Arduino Nano accesând TOOLS> BOARDS și selectând ARDUINO NANO acolo, selectați acum procesorul corect pe care îl are nano accesând TOOLS> PROCESSORși cât timp sunteți acolo, selectați și portul la care este conectat Arduino de pe computer. Folosim Arduino pentru a conduce LCD-ul alfanumeric 16 × 2 conectat la acesta și pentru a măsura tensiunea celulei și curentul care curge prin rezistorul de încărcare, așa cum s-a explicat în secțiunea anterioară. Ecran LCD alfanumeric. Puteți sări peste această secțiune pentru a obține codul complet gătit și servit la sfârșitul paginii, dar purtați cu noi în timp ce împărțim codul în secțiuni mici și încercăm să explicăm.
Acum că fișierul antet este definit, trecem la declararea variabilelor, vom folosi în cod pentru a calcula tensiunea și curentul. De asemenea, trebuie să definim pinii pe care îi folosim pentru a conduce LCD-ul și pinii pe care îi vom folosi pentru a da ieșire PWM și pentru a citi și tensiunile analogice provenite de la celulă și rezistor în această secțiune.
#include
Acum vine la partea de configurare, dacă doriți să vă păstrați Arduino conectat la computer tot timpul și să monitorizați progresul utilizând Serial Monitor și să inițializați ecranul LCD aici. De asemenea, va afișa un mesaj de bun venit „Circuitul de testare a capacității bateriei” pe ecran timp de 3 secunde.
void setup () {Serial.begin (9600); lcd.inceput (16, 2); lcd.setCursor (0, 0); // Setați cursorul pe prima coloană și primul rând. lcd.print („Capacitatea bateriei”); lcd.setCursor (0,1); lcd.print ("Tester Circuit"); întârziere (3000); lcd.clear (); }
Acum nu este nevoie să declarăm pinul Arduino PWM ca ieșire, deoarece funcția AnalogWrite pe care o vom folosi în bucla noastră principală se ocupă de această parte. Trebuie să definiți valoarea PWM care să fie scrisă pe acel pin din cod. Selectați cu atenție valoarea PWM în funcție de curentul de descărcare necesar în aplicația dvs. Prea multă valoare PWM va avea ca rezultat un curent ridicat, cu o cădere de tensiune ridicată în celula Li-Ion și o valoare PWM prea mică va duce la un timp de descărcare ridicat al celulei. În funcția buclă principală, vom citi tensiunile de pe pinii A0 și A1, deoarece Arduino are un ADC de 10 biți la bord, prin urmare ar trebui să obținem valori de ieșire digitală variind de la 0-1023, pe care va trebui să le redimensionăm la Interval 0-5V prin multiplicarea acestuia cu 5.0 / 1023.0. Asigurați-vă că măsurați corect tensiunea dintre pinii 5V și GND ai Arduino Nano utilizând un voltmetru sau un multimetru calibrat, deoarece de cele mai multe ori tensiunea reglementată nu este exact 5,0V și chiar o mică diferență în această tensiune de referință ar duce la erori. în citirile de tensiune, măsurați tensiunea corectă și înlocuiți 5.0 în multiplicatorul dat mai sus.
Acum, pentru a explica logica codului, măsurăm continuu tensiunea celulei și dacă tensiunea celulei depășește limita superioară specificată de noi în cod, atunci mesajul de eroare este afișat pe LCD pentru a vă informa dacă celula este suprasolicitat sau este ceva în neregulă cu conexiunea și alimentarea pinului de poartă MOSFET este oprită astfel încât să nu poată circula curent prin rezistorul de sarcină. Este crucial să încărcați complet celula mai întâi înainte de a o conecta la placa de testare a capacității, astfel încât să puteți calcula capacitatea sa totală de încărcare.
analogWrite (MOSFET_Pin, PWM_VALUE); // citiți intrarea pe pinul analogic 0: int sensorValue_voltage_Cell = analogRead (A0); // Convertiți citirea analogică (care merge de la 0 - 1023) la o tensiune (0 - 5V): tensiune plutitoare = senzorValor_voltaj_Celula * (5.08 / 1023.0); Serial.print ("VOLTAGE:"); Serial.println (tensiune); // Aici tensiunea este tipărită pe Serial Monitor lcd.setCursor (0, 0); // Setați cursorul pe prima coloană și primul rând. lcd.print ("Tensiune:"); // Imprimați citirea tensiunii pe ecran lcd.print (tensiune); întârziere (100); int sensorValue_Shunt_Resistor = analogRead (A1); float voltage1 = sensorValue_Shunt_Resistor * (5.08 / 1023.0); curent plutitor = tensiune1 / rezistor; Serial.print ("Curent:"); Serial.println (curent); lcd.setCursor (0, 1);// Setați cursorul pe prima coloană și pe al doilea rând (numărarea începe de la 0!). lcd.print ("Curent:"); lcd.print (curent);
Acum, dacă tensiunea celulei se încadrează în limitele de tensiune superioară și inferioară specificate de noi, atunci Nano va citi valoarea curentului prin metoda specificată mai sus și o va înmulți cu timpul trecut în timpul măsurătorilor și o va stoca în variabila de capacitate pe care am definit-o mai devreme în unități mAh. În tot acest timp, valorile curentului și tensiunilor în timp real sunt afișate pe ecranul LCD atașat și, dacă doriți, le puteți vedea și pe monitorul serial. Procesul de descărcare a celulei va continua până când tensiunea celulei ajunge sub limita inferioară specificată de noi în program și apoi capacitatea totală a celulei este afișată pe ecranul LCD și fluxul de curent prin rezistor este oprit prin tragerea porții MOSFET fixează jos.
else if (tensiune> BAT_LOW && tensiune <BAT_HIGH) {// Verificați dacă tensiunea bateriei se încadrează în limita de siguranță milisPassed = millis () - previousMillis; mA = curent * 1000,0; Capacitate = Capacitate + (mA * (millisPassed / 3600000.0)); // 1 oră = 3600000ms pentru a-l converti în unități mAh precedentMilis = milis (); întârziere (1000); lcd.clear (); }
Îmbunătățiri ale preciziei
Este, din toate punctele de vedere, un mod suficient de bun de a citi tensiunea și curentul, dar nu este perfect. Relația dintre tensiunea reală și tensiunea ADC măsurată nu este liniară și acest lucru va însemna o anumită eroare în măsurătorile tensiunilor și curenților.
Dacă doriți să creșteți acuratețea rezultatului, atunci trebuie să trasați valorile ADC obținute prin aplicarea diferitelor surse de tensiune cunoscute pe un grafic și apoi să determinați ecuația multiplicatoare din acesta utilizând orice metodă doriți. În acest fel, precizia va fi îmbunătățită și veți ajunge foarte aproape de rezultatele reale.
De asemenea, MOSFET-ul pe care l-am folosit nu este un MOSFET la nivel logic, deci are nevoie de mai mult de 7V pentru a porni complet canalul curent și dacă îi aplicăm 5V direct, citirile curente ar fi inexacte. Dar puteți utiliza un MOSFET N-Channel IRL520N cu nivel logic pentru a elimina utilizarea unei surse de 12V și pentru a lucra direct cu nivelurile logice de 5V pe care le aveți cu Arduino.
Construirea și testarea circuitului
Acum, pe măsură ce am proiectat și testat diferite secțiuni ale circuitului nostru pe o placă de măsurare și după ce ne-am asigurat că toate funcționează conform intenției, folosim un Perfboard pentru a lipi toate componentele împreună, deoarece este o metodă mult mai profesională și mai fiabilă pentru a testa circuitul. Dacă doriți, vă puteți crea propriul PCB pe AutoCAD Eagle, EasyEDA sau Proteus ARES sau orice alt software care vă place. Arduino Nano, 16 × 2 LCD alfanumeric și LM741 OPAMP sunt montate pe Female Bergstik, astfel încât să poată fi refolosite ulterior.
Am furnizat o alimentare de 12V printr-un conector DC Barrel Jack pentru circuitul de curent de încărcare constantă și apoi, cu ajutorul LM7805, sunt furnizate 5V pentru ecranul Nano și LCD. Acum alimentați circuitul și reglați potul de tundere pentru a seta nivelul de contrast al ecranului LCD, ar trebui să vedeți mesajul de întâmpinare pe ecranul LCD până acum și apoi dacă nivelul de tensiune al celulei se află în domeniul de lucru, atunci curentul -tensiunea și curentul de la baterie vor fi afișate acolo.
Acesta este un test foarte de bază pentru a calcula capacitatea celulei pe care o utilizați și poate fi îmbunătățit prin preluarea datelor și stocarea acestora într-un fișier Excel pentru a efectua procesarea și vizualizarea datelor prin metode grafice. În lumea actuală bazată pe date, această curbă de descărcare a celulei poate fi utilizată pentru a construi modele predictive precise ale bateriei pentru a simula și a vedea răspunsul bateriei în condiții de încărcare fără testarea reală, utilizând software precum NI LabVIEW, MATLAB Simulink etc. și vă așteaptă multe alte aplicații. Puteți găsi funcționarea completă a acestui proiect în videoclipul de mai jos. Dacă aveți întrebări despre acest proiect, vă rugăm să le scrieți în secțiunea de comentarii de mai jos sau să folosiți forumurile noastre. Du-te și distrează-te cu el și, dacă vrei, te putem ghida în secțiunea de comentarii de mai jos despre cum să procedezi mai departe de aici. Până atunci Adios !!!