- Miksi tarvitsemme akkukapasiteettitestin?
- Tarvittavat komponentit
- Arduino-akun kapasiteettitestaajan piirikaavio
- Arduino-ohjelma akun kapasiteetin mittaamiseksi
- Tarkkuuden parannukset
- Piirin rakentaminen ja testaaminen
Teknologian myötä elektroniset laitteemme ja laitteemme ovat yhä pienempiä toimivammilla ja monimutkaisemmilla sovelluksilla. Tämän monimutkaisuuden lisääntyessä myös piirin tehontarve on kasvanut ja pyrimme tekemään laitteesta mahdollisimman pieni ja kannettava, tarvitsemme akun, joka pystyy tarjoamaan suurta virtaa pitkäksi aikaa ja samalla aikaa, painaa paljon vähemmän, jotta laite pysyy kannettavana. Jos haluat tietää enemmän paristoista, voit myös lukea tämän artikkelin akun perustermeistä.
Lyijyhappoakut, Ni-Cd-paristot ja Ni-MH-akut monista erilaisista käytettävissä olevista paristotyypeistä eivät sovi, koska ne joko painavat enemmän tai eivät pysty tarjoamaan sovelluksemme edellyttämää virtaa, joten meille jää litiumioniakut joka voi tuottaa suurta virtaa pitäen painon matalana ja koon pienenä. Aikaisemmin olemme rakentaneet myös 18650-akkulaturin ja tehostinmoduulin sekä IoT-pohjaisen akunvalvontajärjestelmän, voit tarkistaa ne, jos olet kiinnostunut.
Miksi tarvitsemme akkukapasiteettitestin?
Markkinoilla on monia akkumyyjiä, jotka myyvät halpoja litiumioniakkujen versioita väittäen outoja eritelmiä erittäin alhaisella hinnalla, joka on liian hyvä ollakseen totta. Kun ostat nämä kennot, joko ne eivät toimi lainkaan tai jos ne toimivat, latauskapasiteetti tai nykyinen virtaus on niin alhainen, että ne eivät voi toimia lainkaan sovelluksen kanssa. Joten miten testata litiumakku, jos kenno ei ole yksi näistä halpista pudotuksista? Yksi menetelmistä on mitata avoimen piirin jännite ilman kuormaa ja kuormitusta, mutta tämä ei ole lainkaan luotettavaa.
Joten aiomme rakentaa 18650- akkukapasiteettitestin Li-Ion 18650 -kennolle, joka purkaa täysin ladatun 18650-kennon vastuksen läpi samalla kun mitataan vastuksen läpi virtaava virta sen kapasiteetin laskemiseksi. Jos et saa vaadittua akkukapasiteettia kennon jännitteen ollessa määriteltyjen rajojen sisällä, kyseinen kenno on viallinen eikä sitä pidä käyttää, koska kennon lataustila kuluu hyvin nopeasti kuormitettuna, mikä luo paikallisvirta, jos sitä käytetään akkussa, mikä aiheuttaa lämmön ja mahdollisesti tulipalon. Joten hyppäämme suoraan siihen.
Tarvittavat komponentit
- Arduino Nano
- 16 × 2-merkkinen LCD-näyttö
- LM741 OPAMP-IC
- 2,2Ω, 5 watin vastus
- 7805 positiivisen jännitteen säätimen IC
- 12 V: n virtalähde
- 10 kΩ: n trimmeripotentiometri
- 0,47uF kondensaattori
- 33kΩ vastus
- DC-virtaliittimen liitin
- Piirilevyn ruuviliittimet
- IRF540N N-Channel Mosfet IC
- Perfboard
- Juotossarja
- Jäähdytyslevyt
Arduino-akun kapasiteettitestaajan piirikaavio
18650-akkukapasiteettitestin täydellinen kytkentäkaavio on esitetty alla. Piirin selitys on seuraava-
Laskennallinen ja näyttöyksikkö:
Tämä piiri on jaettu edelleen kahteen osaan, ensin on matala 5 V: n syöttö Arduino nanolle ja 16 × 2 aakkosnumeeriselle LCD-näytölle ja niiden liitännöille nykyisten ja jännitemittausten tulosten näyttämiseksi reaaliajassa. Piiri saa virtansa 12 V: n virtalähteestä SMPS: n avulla tai voit käyttää 12 V: n akkua, ja maksimin virta on noin 60-70 mA virran saamiseksi Arduinolle ja LCD-näytölle.
Jännitteen alentamiseksi 5 V: ksi käytämme lineaarista jännitesäätölaitetta, joka voi kestää jopa 35 V ja tarvitsee vähintään 7,5 V: n syöttöjännitteen säännellyn 5 V: n virran saamiseksi ja ylijännite häviää lämpönä, jos syöttösi jännite LM7805 Jännitesäätimen IC on yli 12 V, harkitse sitten jäähdytyselementin lisäämistä, jotta se ei vahingoitu. LCD-näyttö saa virtansa 5 V: n virtalähteestä 7805: stä, ja se on kytketty Arduinoon ja toimii 4-bittisessä tilassa. Olemme myös lisänneet 10 k Ω: n pyyhinpotentiometrin LCD-näytön kontrastin säätämiseksi.
Jatkuvan kuormituksen virtapiiri:
Toinen on PWM-pohjainen vakiovirtainen kuormituspiiri, jotta vastuksen läpi kulkeva kuormitusvirta saadaan ohjattavaksi ja vakiona siten, että virran vaihtelusta johtuen ei tapahdu virhettä ajan mittaan kennon jännitteen laskiessa. Se koostuu LM741 OPAMP IC: stä ja IRF540N N-Channel MOSFET: stä, joka ohjaa MOSFET: n läpi kulkevaa virtaa kytkemällä MOSFET päälle ja pois päältä asettamamme jännitetason mukaan.
Op-amp toimii vertailutilassa,joten tässä tilassa. op-amp: n lähtö on korkea aina, kun op-amp: n ei-invertoivan nastan jännite on suurempi kuin kääntyvä tappi. Vastaavasti, jos jännite op-vahvistimen käänteisessä tapissa on suurempi kuin ei-invertoiva tappi, op-vahvistimen ulostulo vedetään alas. Annetussa virtapiirissä ei-invertoivaa tapin jännitetasoa ohjaa Arduino NANO: n D9 PWM -nasta, joka kytkee 500 Hz: n taajuudella, joka sitten johdetaan alipäästöisen RC-piirisuodattimen, jonka vastusarvo on 33 kΩ, ja kondensaattorin, jonka kapasitanssi on 0,47. uF, jotta saadaan lähes vakio tasasignaali ei-invertoivaan tapiin. Kääntötappi on kytketty kuormitusvastukseen, joka lukee vastuksen ja yhteisen GND: n jännitteen. OPAMP: n lähtötappi on kytketty MOSFET: n porttipäätteeseen kytkeäksesi sen päälle tai pois päältä.OPAMP yrittää saada molempien liittimien jännitteet tasaisiksi vaihtamalla kytkettyä MOSFETiä, jotta vastuksen läpi virtaava virta on verrannollinen NANO: n D9-nastalle asettamaasi PWM-arvoon. Tässä projektissa enimmäisvirta, olen rajoittanut piirini arvoon 1.3A, mikä on kohtuullista, koska kenno, jolla minulla on, on 10A suurimmaksi virraksi
Jännitteen mittaus:
Tyypillisen täysin ladatun litiumionikennon maksimijännite on 4,1 - 4,3 V, joka on pienempi kuin Arduino Nanon analogisten tulotappien 5 V: n jänniteraja, jossa on yli 10 kΩ: n sisäinen vastus, jotta voimme suoraan Solu mihin tahansa analogisen tulonastaan huolimatta niiden läpi virtaavasta virrasta. Joten tässä projektissa meidän on mitattava kennon jännite, jotta voimme määrittää, onko kenno oikealla jännitteen toiminta-alueella ja onko se täysin purkautunut vai ei.
Meidän on mitattava myös vastuksen läpi virtaava virta, jotta emme voi käyttää nykyistä shunttia, koska piirin monimutkaisuus kasvaa ja lisääntyvä vastus kuormituspolussa vähentää solun purkautumisnopeutta. Pienempien shuntivastusten käyttäminen vaatii ylimääräisen vahvistinpiirin, jotta siitä tulevan jännitteen lukeminen olisi luettavissa Arduinolle.
Joten luemme suoraan kuormitusvastuksen jännitteen ja jaamme sitten Ohmin lakia käyttämällä kuormitusvastuksen arvolla saatu jännite saadaksemme sen läpi virtaavan virran. Vastuksen negatiivinen napa on kytketty suoraan GND: hen, joten voimme turvallisesti olettaa, että vastuksella lukema jännite on vastuksen jännitehäviö.
Arduino-ohjelma akun kapasiteetin mittaamiseksi
Laitteistopiirin viimeistelyn jälkeen siirrymme Arduino-ohjelmointiin. Nyt, jos tietokoneellasi ei ole asennettuna Arduino IDE: tä, mitä teet täällä! Siirry viralliselle Arduino-verkkosivustolle ja lataa ja asenna Arduino IDE tai voit koodata myös missä tahansa muussa editorissa, mutta se on toisen päivän aihe, nyt pidämme kiinni Arduino IDE: stä. Nyt käytämme Arduino Nanoa, joten varmista, että olet valinnut Arduino Nano -taulun siirtymällä kohtaan TYÖKALUT> TAULUKOT ja valitsemalla siellä ARDUINO NANO. Valitse nyt oikea nanojesi prosessori siirtymällä kohtaan TYÖKALUT> PROSESSORIja kun olet siellä, valitse myös portti, johon Arduino on kytketty tietokoneellesi. Käytämme Arduinoa siihen liitetyn 16 × 2 aakkosnumeerisen nestekidenäytön ajamiseksi ja kuormavastuksen läpi kulkevan kennon jännitteen ja virran mittaamiseksi edellisessä osassa kuvatulla tavalla aloitamme koodimme ilmoittamalla otsikkotiedostot ajamaan 16 × 2 Aakkosnumeerinen LCD-näyttö. Voit ohittaa tämän osan, jotta saat täysin kypsennetyn ja tarjoillun koodin sivun loppuun, mutta ole mukana, kun jaamme koodin pieniksi osiksi ja yritämme selittää.
Nyt kun otsikkotiedosto on määritelty, siirrymme muuttujien ilmoittamiseen, jota käytämme koodissa jännitteen ja virran laskemiseen. Meidän on myös määriteltävä nastat, joita käytämme nestekidenäytön ohjaamiseen, ja nastat, joita käytämme antamaan PWM-lähtöä ja lukemaan kennosta ja vastuksesta tulevat analogiset jännitteet myös tässä osiossa.
#sisältää
Nyt tulossa asennusosaan, Jos haluat pitää Arduino-tietokoneesi kytkettynä koko ajan ja seurata edistymistä Serial Monitorilla ja alustaa LCD-näyttö täällä. Se näyttää myös tervetuloviestin "Akun kapasiteetin testaajapiiri" 3 sekunnin ajan.
void setup () {Sarja.alku (9600); lcd.begin (16, 2); lcd.setCursor (0, 0); // Aseta kohdistin ensimmäiseen sarakkeeseen ja ensimmäiseen riviin. lcd.print ("Akun kapasiteetti"); lcd.setCursor (0,1); lcd.print ("testaajapiiri"); viive (3000); lcd.clear (); }
Nyt meidän ei tarvitse ilmoittaa Arduino PWM -nastaa tuotokseksi, koska AnalogWrite- toiminto, jota aiomme käyttää pääsilmukassamme, huolehtii tästä osasta. Sinun on määritettävä PWM-arvo, joka kirjoitetaan kyseiseen tapiin koodiin. Valitse PWM-arvo huolellisesti sovelluksessasi vaaditun purkausvirran mukaan. Liian suuri PWM-arvo johtaa korkeaan virtaan suurella jännitehäviöllä Li-Ion-kennossa ja liian pieni PWM-arvo johtaa korkeaan kennon purkautumisaikaan. Pääkierto-toiminnossa luemme nastojen A0 ja A1 jännitteet, koska Arduinolla on 10-bittinen ADC aluksella, joten meidän pitäisi saada digitaaliset lähtöarvot välillä 0-1023, jotka meidän on skaalattava takaisin 0–5 V: n alue kertomalla se arvolla 5,0 / 1023,0. Varmista, että mitat Arduino Nanon 5 V: n ja GND-nastojen välisen jännitteen oikein kalibroidulla jännitemittarilla tai yleismittarilla, koska useimmiten säännelty jännite ei ole aivan 5,0 V ja jopa pieni ero tässä vertailujännitteessä johtaisi virheisiin mittaa oikea jännite ja korvaa 5,0 yllä olevassa kertoimessa.
Koodin logiikan selittämiseksi mitataan jatkuvasti kennon jännitettä ja jos kennon jännite ylittää koodissa määrittelemämme ylärajan, virheviesti näytetään nestekidenäytössä, jotta voit tietää, onko kenno ylikuormitettu tai liitännässä on jotain vikaa ja virta MOSFET-porttitappiin lopetetaan, jotta virta ei pääse virtaamaan vastusvastuksen läpi. On ehdottoman tärkeää, että lataat solun kokonaan ennen kuin liität sen kapasiteettitestilaitteeseen, jotta voit laskea sen kokonaislatauskapasiteetin.
analogWrite (MOSFET_Pin, PWM_VALUE); // lue analogisen nastan 0 tulo: int sensorValue_voltage_Cell = analogRead (A0); // Muunna analoginen lukema (joka vaihtelee välillä 0-1023) jännitteeksi (0-5V): kellujännite = sensorValue_voltage_Cell * (5.08 / 1023.0); Sarjaprintti ("JÄNNITE:"); Serial.println (jännite); // Tässä jännite tulostetaan Serial Monitor lcd.setCursor (0, 0); // Aseta kohdistin ensimmäiseen sarakkeeseen ja ensimmäiseen riviin. lcd.print ("Jännite:"); // Tulosta jännitteen lukema näytölle lcd.print (jännite); viive (100); int sensorValue_Shunt_Resistor = analoginen luku (A1); uimurijännite1 = sensorValue_Shunt_Resistor * (5,08 / 1023,0); kelluvavirta = jännite1 / vastus; Serial.print ("Nykyinen:"); Sarja.println (nykyinen); lcd.setCursor (0, 1);// Aseta kohdistin ensimmäiseen sarakkeeseen ja toiseen riviin (laskenta alkaa 0: sta!). lcd.print ("Nykyinen:"); lcd.print (nykyinen);
Jos kennojännite on meille määritettyjen ylä- ja alajännitealueiden sisällä, Nano lukee nykyisen arvon edellä määritellyllä menetelmällä ja kertoo sen mittausten aikana kuluneeseen aikaan ja tallentaa sen aiemmin määriteltyyn kapasiteettimuuttujaan mAh-yksikköinä. Koko tämän ajan reaaliaikaiset virta- ja jännitearvot näytetään liitetyllä LCD-näytöllä, ja jos haluat, voit nähdä ne myös sarjamoduulissa. Solun purkamisprosessi jatkuu, kunnes kennon jännite saavuttaa alle ohjelmassa määrittelemämme alarajan ja sitten kennon kokonaiskapasiteetti näkyy nestekidenäytössä ja virta vastuksen läpi pysäytetään vetämällä MOSFET-porttia tappi matala.
else if (jännite> BAT_LOW && jännite <BAT_HIGH) {// Tarkista, onko akun jännite turvallisen rajan sisällä millisPassed = millis () - previousMillis; mA = virta * 1000,0; Kapasiteetti = Kapasiteetti + (mA * (millisPassed / 3600000.0)); // 1 tunti = 3600000ms sen muuntamiseksi mAh-yksiköiksi previousMillis = millis (); viive (1000); lcd.clear (); }
Tarkkuuden parannukset
Se on kaikin keinoin tarpeeksi hyvä tapa lukea jännitettä ja virtaa, mutta se ei ole täydellinen. Todellisen jännitteen ja mitatun ADC-jännitteen suhde ei ole lineaarinen, ja tämä merkitsee jonkin verran virtaa jännitteiden ja virtojen mittauksissa.
Jos haluat lisätä tuloksen tarkkuutta, sinun on piirrettävä ADC-arvot, jotka saat käyttämällä erilaisia tunnettuja jännitelähteitä kaavioon, ja määritettävä sen jälkeen kertojayhtälö millä tahansa haluamallasi menetelmällä. Näin tarkkuutta parannetaan, ja tulet hyvin lähelle todellisia tuloksia.
Myöskään käyttämämme MOSFET ei ole loogisen tason MOSFET, joten se tarvitsee yli 7 V: n virran kytkemiseksi nykyiseen kanavaan kokonaan ja jos käytämme 5 V suoraan siihen, nykyiset lukemat olisivat epätarkkoja. Mutta voit käyttää logiikkatasoa IRL520N N-Channel MOSFET poistaaksesi 12 V: n virtalähteen käytön ja työskennellessäsi suoraan 5 V: n logiikkatasojen kanssa, jotka sinulla on Arduinolla.
Piirin rakentaminen ja testaaminen
Suunnitellessamme ja testatessamme piirin eri osia leipälaudalla ja varmistettuamme, että ne kaikki toimivat tarkoitetulla tavalla, käytämme Perfboardia kaikkien komponenttien juotettavaksi, koska se on paljon ammattimaisempi ja luotettavampi tapa testata piiri. Halutessasi voit suunnitella oman piirilevyn AutoCAD Eagle-, EasyEDA- tai Proteus ARES -laitteeseen tai mihin tahansa muuhun haluamaasi ohjelmistoon. Arduino Nano, 16 × 2 aakkosnumeerinen LCD-näyttö ja LM741 OPAMP on asennettu Female Bergstikiin, jotta niitä voidaan käyttää myöhemmin uudelleen.
Olen toimittanut 12 V: n virran DC-tynnyriliittimen kautta jatkuvan kuormituksen virtapiirille ja sitten LM7805: n avulla 5 V Nano- ja LCD-näytölle. Kytke nyt virta virtapiiriin ja säädä trimmeripottia asettamaan nestekidenäytön kontrastitaso, sinun pitäisi nähdä tervetuloviesti LCD-näytössä jo nyt ja jos kennon jännitetaso on toiminta-alueella, nykyinen -akun jännite ja virta näytetään siellä.
Tämä on hyvin perustesti käyttämäsi solun kapasiteetin laskemiseksi, ja sitä voidaan parantaa ottamalla tiedot ja tallentamalla ne Excel-tiedostoon tietojen jälkikäsittelyyn ja visualisointiin graafisilla menetelmillä. Nykyisessä datavetoisessa maailmassa tätä solun purkautumiskäyrää voidaan käyttää rakentamaan tarkkoja ennakoivia akkumalleja simuloimaan ja näkemään akun vaste latautuneessa tilassa ilman todellisia testejä käyttämällä ohjelmistoja, kuten NI LabVIEW, MATLAB Simulink jne. ja paljon muita sovelluksia odottaa sinua. Löydät tämän projektin täydellisen toiminnan alla olevasta videosta. Jos sinulla on kysyttävää tästä projektista, kirjoita ne alla olevaan kommenttiosioon tai käytä foorumeitamme. Mene ja pidä hauskaa sen kanssa, ja jos haluat, voimme opastaa sinua alla olevissa kommenttiosioissa siitä, miten edetä täältä. Siihen asti Adios !!!