- Kodėl mums reikalingas akumuliatoriaus talpos testeris?
- Būtini komponentai
- „Arduino“ akumuliatoriaus talpos tikrintuvo grandinės schema
- „Arduino“ programa, skirta matuoti akumuliatoriaus talpą
- Tikslumo patobulinimai
- Grandinės sukūrimas ir bandymas
Atsiradus technologijoms, mūsų elektroniniai prietaisai ir prietaisai tampa vis mažesni, naudojant funkcionalesnes ir sudėtingesnes programas. Padidėjus tokiam sudėtingumui, padidėjo ir grandinės energijos poreikis. Siekdami, kad įrenginys būtų kuo mažesnis ir kuo nešiojamesnis, mums reikia akumuliatoriaus, kuris ilgą laiką ir tuo pačiu metu galėtų teikti didelę srovę. laiko, sverkite daug mažiau, kad prietaisas liktų nešiojamas. Jei norite sužinoti daugiau apie baterijas, taip pat galite perskaityti šį straipsnį apie pagrindines baterijų terminologijas.
Iš daugelio skirtingų tipų baterijų švino rūgšties, Ni-Cd ir Ni-MH baterijos nėra tinkamos, nes jos sveria daugiau arba negali suteikti reikalingos srovės, todėl mums lieka ličio jonų baterijos. kuris gali užtikrinti didelę srovę išlaikant mažą svorį ir kompaktišką. Anksčiau mes taip pat sukūrėme 18650 akumuliatorių įkroviklį ir papildymo modulį bei daiktų internetą naudojančią akumuliatorių stebėjimo sistemą. Jei norite, galite juos patikrinti.
Kodėl mums reikalingas akumuliatoriaus talpos testeris?
Rinkoje yra daugybė akumuliatorių pardavėjų, parduodančių pigias ličio jonų baterijų versijas, tvirtinančias keistas specifikacijas su labai maža kaina, kuri yra per gera, kad būtų tiesa. Pirkdami šias ląsteles, jie apskritai neveikia arba, jei veikia, įkrovimo galia arba dabartinis srautas yra toks mažas, kad jie apskritai negali dirbti su programa. Taigi, kaip išbandyti ličio bateriją, jei elementas nėra vienas iš šių pigių išjungimų? Vienas iš būdų yra matuoti atviros grandinės įtampą be apkrovos ir apkrovos, tačiau tai visiškai nepatikima.
Taigi mes sukursime ličio jonų 18650 elementų 18650 akumuliatorių talpos testerį, kuris iškraus visiškai įkrautą 18650 elementą per rezistorių, matuodamas srovę, tekančią per rezistorių, kad apskaičiuotų jo talpą. Jei negaunate reikalaujamo akumuliatoriaus talpos, kol elemento įtampa neviršija nurodytų ribų, ta ląstelė yra sugedusi ir neturėtumėte to naudoti, nes elemento įkrovos būsena išseks labai greitai, kai bus sukurta apkrova, sukuriant vietinė srovė, jei naudojama akumuliatoriaus pakete, dėl ko gali įkaisti ir galbūt kilti gaisras. Taigi pereikime tiesiai į jį.
Būtini komponentai
- „Arduino Nano“
- 16 × 2 simbolių LCD ekranas
- LM741 OPAMP IC
- 2,2Ω, 5 vatų rezistorius
- 7805 teigiamo įtampos reguliatoriaus IC
- 12 V maitinimo šaltinis
- 10kΩ žoliapjovės potenciometras
- 0.47uF kondensatorius
- 33kΩ rezistorius
- DC maitinimo vamzdžio lizdo jungtis
- PCB varžtų terminalai
- IRF540N N kanalo „Mosfet IC“
- Perfboard
- Litavimo rinkinys
- Radiatoriai
„Arduino“ akumuliatoriaus talpos tikrintuvo grandinės schema
Visa 18650 akumuliatoriaus talpos tikrintuvo grandinės schema parodyta žemiau. Grandinės paaiškinimas yra toks-
Skaičiavimo ir vaizdavimo vienetas:
Ši grandinė yra dar padalyta į dvi dalis, pirmiausia yra mažas 5 V maitinimas „Arduino Nano“ ir 16 × 2 raidinis ir skaitmeninis LCD ekranas ir jų jungtys, kad būtų galima realiuoju laiku parodyti srovės ir įtampos matavimų rezultatus. Grandinę maitina 12 V maitinimo šaltinis, naudojant SMPS, arba galite naudoti 12 V bateriją, taip pat maksimali srovė bus apie 60–70 mA, kad būtų galima tiekti „Arduino“ ir LCD ekranus.
Norėdami sumažinti įtampą iki 5 V, naudosime linijinį įtampos reguliatorių, kuris gali užtrukti iki 35 V ir kuriam reikia mažiausiai 7,5 V įvesties maitinimo šaltinio, kad būtų užtikrintas reguliuojamas 5 V maitinimas, o perteklinė įtampa išsisklaido kaip šiluma, taigi, jei jūsų įvestis įtampa LM7805 Įtampos reguliatoriaus IC yra didesnė nei 12 V, tada apsvarstykite galimybę pridėti šilumos kriauklę, kad ji nesugadintų. Skystųjų kristalų ekranas maitinamas 5V maitinimo šaltiniu iš 7805 ir yra prijungtas prie „Arduino“ ir veikia 4 bitų režimu. Mes taip pat pridėjome 10k Ω valytuvų potenciometrą, kad valdytume LCD ekrano kontrastą.
Nuolatinės apkrovos srovės grandinė:
Antra, PWM pagrindu veikianti pastovios srovės apkrovos grandinė, kad per rezistorių tekanti apkrovos srovė būtų mūsų valdoma ir pastovi, kad neliktų klaidų, esančių dėl srovės kitimo su laiku, kai elemento įtampa mažėja. Jis susideda iš LM741 OPAMP IC ir IRF540N N kanalo MOSFET, kurie valdo srovę, tekančią per MOSFET, įjungdami ir išjungdami MOSFET pagal mūsų nustatytą įtampos lygį.
Op-amp veikia lyginamuoju režimu,taigi šiuo režimu. op-amp išvestis bus didelė, kai op-amp neinvertuojančio kaiščio įtampa bus didesnė už invertuojančio kaiščio įtampą. Panašiai, jei įtampa ties op-amp invertuojančiu kaiščiu yra didesnė už ne-inverting pin, op-amp išvestis bus ištraukta žemyn. Nurodytoje grandinėje neinvertuojančio kaiščio įtampos lygį valdo „Arduino NANO“ D9 PWM kaištis, kuris persijungia 500Hz dažniu, kuris tada perduodamas per žemo dažnio RC grandinės filtrą, kurio atsparumo vertė yra 33kΩ, ir kondensatorių, kurio talpa 0,47 uF, kad beveik nekintamas nuolatinės srovės signalas būtų neinvertuojančiame kaište. Invertuojantis kaištis yra prijungtas prie apkrovos rezistoriaus, kuris nuskaito rezistoriaus įtampą ir bendrą GND. OPAMP išvesties kaištis yra prijungtas prie MOSFET vartų terminalo, kad jį įjungtumėte arba išjungtumėte.OPAMP stengsis, kad abiejų jo gnybtų įtampa būtų vienoda, perjungiant prijungtą MOSFET, todėl srovė, tekanti per rezistorių, bus proporcinga PWM vertei, kurią nustatėte NANO D9 kaištyje. Šiame projekte maksimali srovė yra 1,3A, o tai yra protinga, nes mano turima ląstelė yra 10A
Įtampos matavimas:
Maksimali įprasto visiškai įkrauto ličio jonų elemento įtampa yra nuo 4,1 V iki 4,3 V, o tai yra mažesnė nei „Arduino Nano“ analoginių įvesties kaiščių 5 V įtampos riba, kurioje yra daugiau nei 10kΩ vidinė varža, kad galėtume tiesiogiai prijungti Naršykite prie bet kurio iš analoginio įvesties kaiščių, nesijaudindami dėl per juos tekančios srovės. Taigi šiame projekte turime išmatuoti elemento įtampą, kad galėtume nustatyti, ar elementas yra teisingame įtampos diapazone ir ar jis visiškai išsikrovęs, ar ne.
Mes taip pat turime išmatuoti srovę, tekančią per rezistorių, kad negalėtume naudoti srovės šunto, nes grandinės sudėtingumas padidės, o padidėjus atsparumui apkrovos kelyje sumažės elemento išleidimo greitis. Norint naudoti mažesnius šuntinius rezistorius, reikės papildomos stiprintuvo grandinės, kad iš jo gaunama įtampa būtų nuskaitoma „Arduino“.
Taigi mes tiesiogiai nuskaitome įtampą per apkrovos rezistorių ir tada naudodami Ohmo dėsnį padalijame įtampą, gautą iš apkrovos rezistoriaus vertės, kad gautume srovę. Neigiamas rezistoriaus gnybtas yra tiesiogiai prijungtas prie GND, todėl galime drąsiai manyti, kad įtampa, kurią mes skaitome ant rezistoriaus, yra įtampos kritimas rezistoriuje.
„Arduino“ programa, skirta matuoti akumuliatoriaus talpą
Baigę aparatūros grandinę, pereiname prie „Arduino“ programavimo. Dabar, jei jūsų kompiuteryje nėra įdiegta „Arduino IDE“, ką čia darote! Eikite į oficialią „Arduino“ svetainę ir atsisiųskite ir įdiekite „Arduino IDE“, arba galite koduoti ir bet kuriame kitame redaktoriuje, tačiau tai yra kitos dienos tema, kol kas mes laikomės „Arduino IDE“. Dabar mes naudojame „Arduino Nano“, todėl įsitikinkite, kad pasirinkote „Arduino Nano“ plokštę, eidami į ĮRANKIAI> LENTELĖS ir ten pasirinkdami „ ARDUINO NANO“, dabar pasirinkite tinkamą „Nano“ procesorių eidami ĮRANKIAI> PROCESORIUSo būdami ten taip pat pasirinkite kompiuterio prievadą, prie kurio prijungtas „Arduino“. Mes naudojame „Arduino“, kad galėtume valdyti prie jo prijungtą raidinį ir skaitmeninį 16 × 2 skystųjų kristalų ekraną ir matuoti elemento įtampą ir srovę, tekančią per apkrovos rezistorių, kaip paaiškinta ankstesniame skyriuje, mes pradedame savo kodą, deklaruodami antraštės failus į 16 × 2 diską Raidinis ir skaitmeninis LCD ekranas. Galite praleisti šią skiltį, kad gautumėte visiškai paruoštą ir patiektą kodą puslapio pabaigoje, tačiau laikykitės mūsų, kol mes padalijame kodą į mažas dalis ir bandome paaiškinti.
Dabar, kai antraštės failas yra apibrėžtas, mes einame deklaruoti kintamuosius, kuriuos naudosime kode įtampai ir srovei apskaičiuoti. Be to, šiame skyriuje turime apibrėžti kaiščius, kuriuos naudojame skystųjų kristalų ekranui valdyti, ir kaiščius, kuriuos naudosime, kad gautume PWM išvestį ir nuskaitytume analogines įtampas, gaunamas iš elemento ir rezistoriaus.
# įtraukti
Dabar eikite į sąrankos dalį. Jei norite, kad „Arduino“ visą laiką būtų prijungtas prie kompiuterio, stebėkite pažangą naudodami „Serial Monitor“ ir inicializuokite LCD ekraną čia. Taip pat ekrane 3 sekundes bus rodomas pasveikinimo pranešimas „Baterijos talpos tikrintuvo grandinė“.
negaliojanti sąranka () {Serial.begin (9600); lcd.begin (16, 2); lcd.setCursor (0, 0); // Nustatykite žymeklį pirmame stulpelyje ir pirmoje eilutėje. lcd.print („Baterijos talpa“); lcd.setCursor (0,1); lcd.print („Testerio grandinė“); vėlavimas (3000); lcd.clear (); }
Dabar mums nereikia deklaruoti „Arduino PWM“ kaiščio kaip išvesties, nes „ AnalogWrite“ funkcija, kurią ketiname naudoti pagrindinėje kilpoje, rūpinasi šia dalimi. Jūs turite apibrėžti PWM reikšmę, kuri bus įrašyta ant to kodo kodo. Atidžiai pasirinkite PWM vertę pagal jūsų programoje reikalaujamą išleidimo srovę. Per didelė PWM reikšmė lems didelę srovę, o ličio jonų elemente sumažės didelė įtampa, o per mažą PWM vertę - ilgas elemento iškrovimo laikas. Pagrindinėje ciklo funkcijoje mes nuskaitysime kaiščių A0 ir A1 įtampą, nes „Arduino“ laive yra 10 bitų ADC, todėl turėtume gauti skaitmenines išvesties reikšmes nuo 0-1023, kurias turėsime grąžinti į 0–5 V diapazonas, padauginus jį iš 5,0 / 1023,0. Įsitikinkite, kad teisingai išmatuojote įtampą tarp „Arduino Nano“ 5V ir GND kaiščių naudodami kalibruotą voltmetrą ar multimetrą, nes dažniausiai reguliuojama įtampa nėra tiksliai 5,0 V ir net nedidelis šios atskaitos įtampos skirtumas sukeltų klaidų įtampos rodmenyse išmatuokite teisingą įtampą ir aukščiau pateiktame daugiklyje pakeiskite 5,0.
Dabar, norėdami paaiškinti kodo logiką, mes nuolat matuojame elemento įtampą ir, jei elemento įtampa viršija viršutinę mūsų nurodytą kodo ribą, tada LCD ekrane rodomas klaidos pranešimas, leidžiantis jums žinoti, ar ląstelė yra perkrauta arba yra kažkas ne taip dėl ryšio ir maitinimas į MOSFET vartų kaištį sustabdomas, kad srovė negalėtų tekėti per apkrovos rezistorių. Labai svarbu, kad prieš prijungdami ją prie talpos tikrintuvo plokštės, prieš tai visiškai įkraukite savo ląstelę, kad galėtumėte apskaičiuoti bendrą jos įkrovimo pajėgumą.
analogWrite (MOSFET_Pin, PWM_VALUE); // perskaitykite įvestį analoginiame kaištyje 0: int sensorValue_voltage_Cell = analogRead (A0); // Konvertuokite analoginį rodmenį (kuris eina nuo 0 iki 1023) į įtampą (0 - 5 V): plūdinė įtampa = sensorValue_voltage_Cell * (5,08 / 1023,0); Serial.print („ĮTampa:“); Serial.println (įtampa); // Čia įtampa spausdinama ant „Serial Monitor“ lcd.setCursor (0, 0); // Nustatykite žymeklį pirmame stulpelyje ir pirmoje eilutėje. lcd.print ("Įtampa:"); // Atspausdinkite įtampos rodmenis ekrane lcd.print (įtampa); vėlavimas (100); int sensorValue_Shunt_Resistor = analogRead (A1); plūdinė įtampa1 = sensorValue_Shunt_Resistor * (5,08 / 1023,0); plūdinė srovė = įtampa1 / rezistorius; Serial.print („Dabartinis:“); Serial.println (dabartinis); lcd.setCursor (0, 1);// Nustatykite žymeklį ant pirmo stulpelio ir antros eilutės (skaičiavimas prasideda nuo 0!). lcd.print ("Dabartinis:"); lcd.print (dabartinis);
Dabar, jei elemento įtampa neviršija mūsų nurodytos viršutinės ir apatinės įtampos ribų, tada „Nano“ nuskaitys dabartinę vertę aukščiau nurodytu metodu ir padaugins ją iš matavimo metu praleisto laiko ir išsaugos ją anksčiau apibrėžtame talpos kintamajame mAh vienetais. Per šį laiką realiuoju laiku esančios srovės ir įtampos vertės rodomos pridedamame LCD ekrane, o jei norite, jas galite pamatyti ir nuosekliojo monitoriaus ekrane. Elemento iškrovimo procesas tęsis tol, kol elemento įtampa pasieks žemesnę nei apatinė riba, kurią nurodėme programoje, o tada LCD ekrane bus rodoma bendra elemento talpa ir srovės srautas per rezistorių bus sustabdytas traukiant MOSFET kaištis žemas.
else if (įtampa> BAT_LOW && įtampa <BAT_HIGH) {// Patikrinkite, ar akumuliatoriaus įtampa neviršija saugios ribos millisPassed = millis () - previousMillis; mA = srovė * 1000,0; Talpa = talpa + (mA * (milisPassed / 3600000.0)); // 1 valanda = 3600000ms konvertuoti ją į mAh vienetus ankstesnisMillis = milis (); vėlavimas (1000); lcd.clear (); }
Tikslumo patobulinimai
Tai, be abejo, yra pakankamai geras būdas įtampai ir srovei nuskaityti, tačiau nėra tobulas. Santykis tarp faktinės įtampos ir išmatuotos nuolatinės įtampos įtampos nėra tiesinis, ir tai reikš tam tikrą įtampos ir srovės matavimo klaidą.
Jei norite padidinti rezultato tikslumą, turite grafike suskaičiuoti ADC reikšmes, kurias gaunate taikydami įvairius žinomus įtampos šaltinius, tada naudodamiesi bet kokiu jums patinkančiu metodu nustatykite daugiklio lygtį. Tokiu būdu tikslumas bus pagerintas, ir jūs labai priartėsite prie tikrųjų rezultatų.
Be to, mūsų naudojamas MOSFET nėra loginio lygio MOSFET, todėl norint visiškai įjungti dabartinį kanalą, reikia daugiau nei 7 V įtampos, o jei 5 V įtvirtinsime tiesiai prie jo, dabartiniai rodmenys būtų netikslūs. Bet jūs galite naudoti loginio lygio IRL520N N-Channel MOSFET, kad pašalintumėte 12 V maitinimo šaltinį ir tiesiogiai dirbtumėte su 5 V logikos lygiais, kuriuos turite su „Arduino“.
Grandinės sukūrimas ir bandymas
Kai mes suprojektavome ir išbandėme skirtingus grandinės skyrius ant duonos lentos ir įsitikinę, kad visi jie veikia pagal paskirtį, mes naudojame „Perfboard“, kad lituotume visus komponentus, nes tai yra daug profesionalesnis ir patikimesnis būdas patikrinti grandinę. Jei norite, galite sukurti savo PCB „AutoCAD Eagle“, „EasyEDA“, „Proteus ARES“ ar bet kurioje kitoje jums patinkančioje programinėje įrangoje. „Arduino Nano“, 16 × 2 raidinis ir skaitmeninis LCD ekranas ir „LM741 OPAMP“ yra sumontuoti ant „Female Bergstik“, kad vėliau juos būtų galima pakartotinai naudoti.
Aš tiekiau 12 V maitinimą per nuolatinės apkrovos srovės grandinės nuolatinės apkrovos jungties jungtį, tada LM7805 pagalba pateikiamas 5 V „Nano“ ir LCD ekranas. Dabar įjunkite grandinę ir sureguliuokite žoliapjovės puodą, kad nustatytumėte LCD ekrano kontrasto lygį. Dabar LCD ekrane turėtumėte pamatyti pasveikinimo pranešimą, o tada, jei elemento įtampos lygis yra darbo diapazone, tada srovė - ten bus rodoma įtampa ir srovė iš akumuliatoriaus.
Tai yra labai paprastas bandymas apskaičiuoti naudojamo langelio talpą. Jį galima patobulinti paimant duomenis ir išsaugojus juos „Excel“ faile, kad būtų galima apdoroti duomenis ir vizualizuoti grafiniais metodais. Šiandieniniame duomenų valdomame pasaulyje šią ląstelių iškrovimo kreivę galima panaudoti kuriant tikslius nuspėjamuosius akumuliatoriaus modelius, kad būtų galima imituoti ir matyti akumuliatoriaus atsaką esant įkrovai, be realaus bandymo naudojant programinę įrangą, pvz., NI LabVIEW, MATLAB Simulink ir kt. ir jūsų laukia daug daugiau programų. Pilną šio projekto darbą galite rasti žemiau esančiame vaizdo įraše. Jei turite klausimų apie šį projektą, parašykite juos žemiau esančiame komentarų skyriuje arba naudokitės mūsų forumais. Eik ir linksminkis su juo ir, jei norite, mes galime jums padėti toliau pateiktame komentarų skyriuje, kaip toliau elgtis toliau. Iki tada Adios !!!