Kazalo:

Še en preizkuševalnik zmogljivosti baterije: 6 korakov
Še en preizkuševalnik zmogljivosti baterije: 6 korakov

Video: Še en preizkuševalnik zmogljivosti baterije: 6 korakov

Video: Še en preizkuševalnik zmogljivosti baterije: 6 korakov
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Julij
Anonim
Še en preizkuševalnik kapacitete baterije
Še en preizkuševalnik kapacitete baterije
Še en preizkuševalnik kapacitete baterije
Še en preizkuševalnik kapacitete baterije

Zakaj še en tester zmogljivosti

Prebral sem veliko različnih navodil za izdelavo testerjev, vendar se zdi, da nobeno od njih ne ustreza mojim potrebam. Želel sem, da bi lahko preizkusil tudi več kot le pojele celice NiCd/NiMH ali Lion. Želel sem preizkusiti baterijo električnega orodja, ne da bi jo najprej razstavil. Zato sem se odločil, da si zadevo podrobneje ogledam in oblikujem svojo. Ena stvar vodi k drugi in končno sem se odločil, da bom sam napisal pouk. Odločil sem se tudi, da ne bom govoril o vseh podrobnostih, kako dejansko sestaviti tester, ker se lahko vsak odloči za določene izbire, na primer, kakšen upor za velikost naj uporabi ali če je potrebno tiskano vezje ali je Veroboard dovolj in obstaja tudi ogromno navodil, kako namestite eagle ali kako narediti tiskano vezje. Z drugimi besedami, osredotočil se bom na sheme in kodo ter kako umeriti tester.

1. korak: Zgodovina - različica 1

Zgodovina - različica 1
Zgodovina - različica 1

Zgoraj je prva različica s spodaj omenjenimi več kot 10V vhodno podporo (R12 & R17 & Q11 & Q12).

Prvo različico je bolj ali manj prevzel deba168 iz navodil (žal ne najdem njegovega navodila, da bi dal povezavo). Le manjše spremembe so bile narejene. V tej različici sem imel en 10 ohmski obremenitveni upor, ki ga je krmilil MOSFET. To pa je prineslo nekaj težav. Pri testiranju ene celice NiCd ali NiMH je bil potreben čas enostavno izmerjen v urah, če ne v dneh. 1500mAh baterija je trajala več kot 12 ur (tok je bil le 120mA). Po drugi strani pa bi lahko prva različica testirala samo baterije pod 10V. Popolnoma napolnjena baterija 9,6 V je lahko dejansko do 11,2 V, česar zaradi omejitve 10 V ni bilo mogoče preizkusiti. Nekaj je bilo treba narediti. Najprej sem dodal le nekaj MOSFET -ov in uporov, da so delilniki napetosti omogočali več kot 10V. Toda to je po drugi strani sprožilo drugo težavo. 14,4 V polno naložena baterija ima lahko tp 16,8 V, kar je z 10 ohmskim uporom pomenilo 1,68A tok in seveda odvajanje moči od obremenitvenega upora skoraj 30 W. Torej, pri nizki napetosti predolg čas preskusa in pri visoki napetosti previsok tok. Očitno to ni bila ustrezna rešitev in potreben je bil nadaljnji razvoj.

2. korak: različica 2

Želel sem rešitev, kjer bi tok ostal v določenih mejah ne glede na napetost akumulatorja. Ena od rešitev bi bila uporaba PWM in samo enega upora, vendar sem raje imel rešitev brez pulzirajočega toka ali pa bi bilo treba odvajati toploto MOSFET. Tako sem ustvaril rešitev z 10 napetostnimi režami, vsaka široka 2 V, z uporabo 10 uporov 3,3 ohma in MOS za vsak upor.

3. korak: Tako se je izkazalo

Tako se je izkazalo
Tako se je izkazalo

Komentarji o vezju Eden bi lahko trdil, da je izguba napetosti nad MOSFET zanemarljiva, ker je upor MOSFET tako nizek, vendar sem izbiro MOSFET prepustil bralcu, zato lahko odpornost preseže celo 1 ohm, kjer začne zadeva. V prvi različici bi pravilni MOSFET odpravil potrebo po merjenju spodnje točke, vendar sem se v različici 2 odločil za merjenje napetosti samo na enem uporu, zaradi česar je pomembno, da dejansko imamo dve merilni točki. Razlog za izbiro je bila preprostost ožičenja Veroboard. To dodaja nekaj napak pri natančnosti, saj je izmerjena napetost na enem uporu bistveno manjša od merjenja na vseh uporih. Pri izbiri komponent sem se odločil, da bom uporabil tisto, kar sem že imel pri roki ali kar sem zlahka dobil. To je privedlo do naslednjih BOM:

  • Arduino Pro Mini 5V! POMEMBNO! Uporabil sem 5V različico in vse temelji na njej
  • 128x64 I2C OLED zaslon
  • 10 x 5 W 3.3 Ohmski upori
  • 3 x 2n7000 MOSFETI
  • 10 x optični vmesniki IRFZ34N
  • 6 x 10 kOhm upori
  • 2 x 5 kOhm upori
  • 16V 680uF kondenzator
  • 1 star ventilator za procesor

V sheme nisem dodal naslednjega

  • vlečni upori na linijah I2C, kar sem opazil, da je zaslon postal bolj stabilen
  • daljnovodi
  • kondenzator v liniji 5V, ki je tudi stabiliziral zaslon

Med preskušanjem sem opazil, da bi se obremenitveni upori precej segreli, še posebej, če bi bili vsi v uporabi. Temperatura se je dvignila na več kot 100 stopinj Celzija (kar je več kot 212 stopinj Fahrenheita) in če želimo celoten sistem zapreti v škatli, je treba zagotoviti nekakšno hlajenje. Upori, ki sem jih uporabil, so 3,3 ohma / 5 W in največji tok bi moral biti pri približno 2 V na upor, kar daje 2 V / 3,3 = 0,61 A, kar ima za posledico 1,21 W. Na koncu sem v škatlo dodal preprost ventilator. Večinoma zato, ker sem imel zraven kakšen stari ventilator za procesor.

Shematska funkcionalnost

Je precej preprost in samoumeven. Baterijo, ki jo je treba preskusiti, povežemo z vrsto uporov in maso. Merilne točke napetosti so priključek akumulatorja in prvi upor. Delitelji napetosti se nato uporabijo za znižanje napetosti na raven, ki bolje ustreza Arduinu. En digitalni izhod se uporablja za izbiro 10V ali 20V razpona delilnikov. Vsak upor v obremenitvi je mogoče posamično ozemljiti z uporabo MOSF, ki jih poganja neposredno Arduino. In končno, zaslon je povezan z zatiči Arduino I2C. O shematičnem J ni veliko za povedati

4. korak: Koda

Kodeks
Kodeks

Zgoraj je razvidna groba funkcionalnost kode. Nato si poglejmo kodo (datoteke arduino ino so priložene). Obstaja več funkcij in nato glavna zanka.

Glavna zanka

Ko je merjenje pripravljeno, se prikažejo rezultati in tam se izvajanje konča. Če meritev še ni izvedena, se najprej preveri, katera vrsta baterije je izbrana, nato pa napetost na vhodu. Če napetost preseže 0,1 V, mora biti priključena vsaj nekakšna baterija. V tem primeru se pokliče podprogram, ki poskuša ugotoviti, koliko celic je v bateriji, da se odloči, kako bo testiral. Število celic je bolj ali manj podatek, ki bi ga bilo bolje uporabiti, vendar se v tej različici poroča samo prek serijskega vmesnika. Če je vse v redu, se začne postopek praznjenja in na vsakem krogu glavne zanke se izračuna zmogljivost baterije. Na koncu glavne zanke je zaslon poseljen z znanimi vrednostmi.

Postopek prikaza rezultatov

Funkcija showResults preprosto nastavi vrstice za prikaz na zaslonu in tudi niz za pošiljanje v serijski vmesnik.

Postopek merjenja napetosti

Na začetku funkcije se meri Vcc Arduina. Potrebni so za izračun napetosti, izmerjenih z analognimi vhodi. Nato se napetost akumulatorja izmeri z območjem 20V, da se lahko odloči, katero območje uporabiti. Nato se izračuna napetost akumulatorja in napetost upora. Meritve napetosti akumulatorja izkoriščajo razred DividerInput, ki ima metode odčitavanja in napetosti za surovo odčitavanje ali izračunano napetost zadevnega analognega vhoda.

Postopek izbire uporabljenih vrednosti

V funkciji selectUsedValues se ugiba število celic, zgornje in spodnje meje baterije pa se uporabijo pri postopku praznjenja. Tudi merjenje je označeno kot začeto. Meje za ta postopek so določene na začetku globalnih spremenljivk. Čeprav so lahko konstantne in jih je mogoče opredeliti tudi znotraj postopka, saj se ne uporabljajo globalno. Hej, vedno se da kaj izboljšati:)

Postopek za izračun kapacitete baterije

Funkcija praznjenja skrbi za dejansko štetje zmogljivosti baterije. Kot parametre dobi nizke in visoke meje napetosti za testirano baterijo. Visoka vrednost se v tej različici ne uporablja, nizka pa se uporablja za odločitev, kdaj naj se testiranje ustavi. Na začetku funkcije se z uporabo funkcije, ustvarjene za ta namen, ugotovi število uporov, ki jih je treba uporabiti. Funkcija vrne število uporov in hkrati začne praznjenje in ponastavi števec. Nato se napetosti izmerijo in uporabijo skupaj z znano vrednostjo upora za izračun toka. Zdaj, ko vemo napetost in tok ter čas od zadnje meritve, lahko izračunamo zmogljivost. Na koncu procesa praznjenja se napetost akumulatorja primerja z nizko mejo in če je padla pod mejo, se faza praznjenja ustavi, MOSF se zaprejo in merjenje označi kot pripravljeno.

Postopek za iskanje števila uporov za uporabo

V funkciji selectNumOfResistors je narejena preprosta primerjava napetosti s prednastavljenimi vrednostmi in na podlagi tega se določi število uporov, ki jih je treba uporabiti. Odpre se ustrezen MOSFET, da preskoči nekatere upore. Napetostne reže so izbrane tako, da bo največji tok kadar koli med praznjenjem ostal nekoliko nad 600mA (2V/3.3Ohm = 606mA). Funkcija vrne število uporabljenih uporov. Ker se ventilator poganja z iste linije kot prvi MOSFET, ga je treba med odvajanjem vedno odpreti.

5. korak: Umerjanje merilnika

Umerjanje merilnika
Umerjanje merilnika

Za umerjanje merilnika sem ustvaril drugo aplikacijo (priloženo). Uporablja isto strojno opremo. Na začetku so vrednosti delilnika popravkov nastavljene na 1000.

const int divCorrectionB10V = 1000; // pomnoževalec popravka delilnika v območju 10V const int divCorrectionR10V = 1000; // pomnoževalnik popravka delilnika v območju 10V const int divCorrectionB20V = 1000; // pomnoževalec popravka delilnika v območju 20V const int divCorrectionR20V = 1000; // pomnoževalec popravka delilnika v območju 20V

v funkciji readVcc () je nastala napetost Vcc odvisna od nastavitve vrednosti v zadnji vrstici funkcije pred vrnitvijo. Običajno lahko na internetu najdete vrednost 1126400L, ki jo lahko uporabite pri izračunu. Opazil sem, da rezultat ni pravilen.

Postopek umerjanja:

  1. Naložite merilno aplikacijo v Arduino.
  2. V Arduinu (in v serijskem izhodu ter če se ventilator vrti) lahko vidite, ali je obremenitev vklopljena. Če je, obrnite stikalo za izbiro vrste baterije.
  3. Prilagodite vrednost v readuVCC (), da dobite pravilen rezultat. Vzemite vrednost, ki jo daje funkcija (v milivoltih) in z njo delite dolgo vrednost. Dobili boste surovo vrednost notranje reference. Zdaj z multimetrom izmerite dejansko napajalno napetost v milivoltih in jo pomnožite s predhodno izračunano vrednostjo in dobite novo popravljeno dolgo vrednost. V mojem primeru je funkcija vrnila 5288mV, ko je bil dejanski Vcc 5,14V. Izračunavanje 1126400/5288*5140 = 1094874, ki sem ga popravil s poskusom. Vnesite novo vrednost v kodo in jo znova naložite v Arduino.
  4. Prilagoditev korekcijskih vrednosti razdelilnika analognega vhodnega upora se izvede z uporabo nastavljivega vira energije, ki se uporablja za napajanje vhoda merilnika. Najenostavnejša je uporaba napetosti od 1 V do 20 V s koraki po 1 V in snemanje rezultatov v preglednico. V preglednici se vzame povprečje. Popravljene vrednosti se izračunajo po naslednji formuli: "raw_value*range*Vcc/Vin", kjer raw_value je vrednost v 10VdivB, 10VdivR, 20VdivB ali 20VdivR, odvisno od tega, kateri popravek je treba izračunati.

Oglejte si preglednico, kako je izgledala zame. Povprečja se izračunajo le iz vrednosti, ki naj bodo v razponu, nato pa se te vrednosti nastavijo v dejanski aplikaciji za merjenje.

Všečkaj to

const int divCorrectionB10V = 998; // delilec popravka delilnika v območju 10V const int divCorrectionR10V = 1022; // delilnik popravka delilnika v območju 10V const int divCorrectionB20V = 1044; // delilec popravka delilnika v območju 20V const int divCorrectionR20V = 1045; // delilnik popravka delilnika v območju 20V

Vrednost upora lahko prilagodite tako, da na vhod vnesete nekaj napetosti (tj. 2V), preklopite stikalo tipa palice (za povečanje obremenitve) in izmerite tok, ki vstopa, in napetost na prvem uporu, ter razdelite napetost s tokom. Zame je 2V dal 607mA, kar daje 2/0.607 = 3.2948 ohmov, ki sem jih zaokrožil na 3.295 ohmov. Zdaj je kalibracija končana.

6. korak: Zadnja OPOMBA

Tukaj je ena pomembna opomba. Nujno je, da so vse povezave v odličnem stanju od akumulatorja do uporov. Imel sem eno slabo povezavo in spraševal sem se, zakaj sem dobil 0,3 V manj voltov v mreži uporov kot v bateriji. To je pomenilo, da se je postopek merjenja skoraj takoj končal z 1,2 V NiCd celicami, ker je bila hitro dosežena spodnja meja 0,95 V.

Priporočena: