Sisukord:

Veel üks aku mahtuvuse tester: 6 sammu
Veel üks aku mahtuvuse tester: 6 sammu

Video: Veel üks aku mahtuvuse tester: 6 sammu

Video: Veel üks aku mahtuvuse tester: 6 sammu
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, November
Anonim
Veel üks aku mahtuvuse tester
Veel üks aku mahtuvuse tester
Veel üks aku mahtuvuse tester
Veel üks aku mahtuvuse tester

Milleks veel üks võimsustestija

Lugesin läbi palju erinevaid testerite koostamise juhiseid, kuid ükski neist ei tundu minu vajadustele vastavat. Tahtsin testida ka enamat kui lihtsalt NiCd/NiMH või Lion rakke. Tahtsin, et saaksin katsetada elektritööriista akut, ilma et oleksin seda eelnevalt osa võtnud. Niisiis, otsustasin asja lähemalt uurida ja kujundada oma. Üks asi viib teiseni ja otsustasin lõpuks ise juhendi kirjutada. Samuti otsustasin mitte tutvuda testeri tegeliku ehitamise üksikasjadega, sest igaüks saab otsustada teatud valikute üle, näiteks millise suurusega takistit kasutada või kas on vaja PCB -d või kas see on piisavalt Veroboard ja seal on ka palju juhiseid, kuidas kotka installimine või trükkplaadi valmistamine. Teisisõnu keskendun skeemidele ja koodile ning testeri kalibreerimisele.

Samm: ajalugu - versioon 1

Ajalugu - versioon 1
Ajalugu - versioon 1

Eespool on esimene versioon, millele on allpool mainitud üle 10 V sisendtoe (R12 & R17 & Q11 & Q12).

Esimese versiooni võttis enam -vähem juhendilt deba168 (kahjuks ei leia ma tema juhendit lingi andmiseks). Tehti vaid mõned väiksemad muudatused. Selles versioonis oli mul üks 10 oomi koormustakisti, mida juhtis mosfet. See tõi aga kaasa mõningaid probleeme. Ühe NiCd või NiMH raku testimisel oli vajaliku aja mõõtmine tundides, kui mitte päevades. 1500 mAh aku kestis üle 12 tunni (voolutugevus oli vaid 120 mA). Teisest küljest sai esimeses versioonis testida ainult alla 10 V akusid. Täislaetud 9,6 V aku võib tegelikult olla kuni 11,2 V, mida ei saanud 10 V piiri tõttu testida. Midagi oli vaja teha. Esiteks lisasin ma lihtsalt paar mosfetti ja takistit, et pingejagurid saaksid lubada rohkem kui 10 V. Kuid teisest küljest tõi see esile veel ühe probleemi. Täielikult laetud 14,4 V aku võib olla kuni 16,8 V tp, mis 10 oomise takistiga tähendas 1,68 A voolu ja loomulikult peaaegu 30 W koormustakisti võimsuse hajumist. Niisiis, madala pingega liiga pikk katseaeg ja kõrgepinge liiga kõrge vool. Ilmselgelt ei olnud see adekvaatne lahendus ja seda oli vaja edasi arendada.

2. samm: versioon 2

Tahtsin lahendust, kus vool püsiks teatud piirides olenemata aku pingest. Üks lahendus oleks olnud kasutada PWM -i ja ainult ühte takistit, kuid ma eelistasin, et mul oleks lahendus ilma pulseeriva vooluta või oleks vaja hajutada mosfeti soojust. Seega lõin 10 pingepesaga lahenduse, millest igaüks oli 2 V lai, kasutades 10 3,3 oomi takistit ja iga takisti jaoks mosfeti.

3. samm: see osutus nii

Nii see välja kukkus
Nii see välja kukkus

Võiks väita, et pingekadu üle mosfeti on tühine, kuna mosfeti takistus on nii madal, kuid olen jätnud mosfeti valiku lugejale ja seega võib takistus minna isegi üle 1 oomi, kus see hakkab asja. Esimese versiooni korral valiks õige mosfeti valimise vajadus madalama punkti mõõtmise järele, kuid versioonis 2 otsustasin mõõta ainult ühe takisti pinget, mis muudab oluliseks kahe mõõtepunkti olemasolu. Ja valiku põhjuseks oli Veroboardi juhtmestiku lihtsus. See lisab täpsusviga, kuna ühe takisti mõõdetud pinge on oluliselt väiksem kui kõigi takistite mõõtmine. Komponentide valimisel otsustasin kasutada seda, mis mul juba käepärast oli või mida sain hõlpsasti hankida. See tõi kaasa järgmise BOM -i:

  • Arduino Pro Mini 5V! TÄHTIS! Kasutasin 5V versiooni ja kõik põhineb sellel
  • 128x64 I2C OLED -ekraan
  • 10 x 5W 3,3 oomi takistid
  • 3 x 2n7000 mosfetti
  • 10 x IRFZ34N mosfetti
  • 6 x 10 kOhm takistid
  • 2 x 5 kOhm takistid
  • 16V 680uF kondensaator
  • 1 vana CPU ventilaator

Ma ei ole skeemidele lisanud järgmist

  • tõmbetakistid I2C liinidel, mis märkasin, et muutis ekraani stabiilsemaks
  • elektriliinid
  • kondensaator 5V liinis, mis stabiliseeris ka ekraani

Katsetamise ajal märkasin, et koormustakistid lähevad üsna kuumaks, eriti kui need kõik oleksid kasutusel. Temperatuur tõsteti üle 100 kraadi Celsiuse järgi (mis on üle 212 kraadi Fahrenheiti) ja kui kogu süsteem tuleb kasti sulgeda, peaks olema ette nähtud mingi jahutus. Minu kasutatavad takistid on 3,3 oomi / 5 W ja maksimaalne vool peaks toimuma umbes 2 V takisti kohta, andes 2 V / 3,3 = 0,61A, mille tulemuseks on 1,21 W. Lõpuks lisasin kasti lihtsa ventilaatori. Peamiselt seetõttu, et mul juhtus olema mõni vana protsessori ventilaator.

Skeemiline funktsionaalsus

See on üsna sirgjooneline ja iseenesestmõistetav. Katsetatav aku on ühendatud takistite ja maandusega. Pinge mõõtmispunktid on aku ühendus ja esimene takisti. Pingejagureid kasutatakse siis pinge langetamiseks tasemele, mis sobib paremini Arduinoga. Ühte digitaalset väljundit kasutatakse 10V või 20V vaheseinte valimiseks. Iga koormuse takisti saab eraldi maandada, kasutades Arduino poolt otse juhitavaid mosfette. Ja lõpuks on ekraan ühendatud Arduino I2C tihvtidega. Skeemilise J kohta pole palju öelda

4. samm: kood

Kood
Kood

Eespool on näha koodi ligikaudne funktsionaalsus. Vaatame siis koodi lähemalt (arduino ino failid on manuses). On mitmeid funktsioone ja seejärel põhisilmus.

Peamine silmus

Kui mõõtmine on valmis, kuvatakse tulemused ja täitmine lõpeb sellega. Kui mõõtmine pole veel tehtud, kontrollitakse kõigepealt, milline aku tüüp on valitud, ja seejärel sisendpinge. Kui pinge ületab 0,1 V, peab olema ühendatud vähemalt mingi aku. Sel juhul kutsutakse alamprogramm proovima välja selgitada, mitu akut akus on, et otsustada, kuidas testida. Lahtrite arv on enam -vähem teave, mida saaks paremini kasutada, kuid selles versioonis teatatakse sellest ainult jadaliidese kaudu. Kui kõik on korras, käivitatakse tühjenemisprotsess ja iga vooluahela peal arvutatakse aku maht. Põhiahela lõpus kuvatakse ekraanil teadaolevad väärtused.

Tulemuste näitamise kord

Funktsioon showResults määrab lihtsalt ekraanil kuvatavad read ja ka jadaliidesesse saadetava stringi.

Pingete mõõtmise protseduur

Funktsiooni alguses mõõdetakse Arduino Vcc. Seda on vaja, et oleks võimalik arvutada analoogsisendite abil mõõdetud pingeid. Seejärel mõõdetakse aku pinget 20 V vahemiku abil, et otsustada, millist vahemikku kasutada. Seejärel arvutatakse nii aku pinge kui ka takisti pinge. Aku pinge mõõtmisel kasutatakse ära klassi DividerInput, millel on lugemis- ja pingemeetodid, et anda kõnealuse analoogsisendi töötlemata näitaja või arvutatud pinge.

Kasutatud väärtuste valimise protseduur

Funktsioonis selectUsedValues arvatakse ära rakkude arv ning aku kõrged ja madalad piirid on seatud tühjendusprotseduurile. Samuti on mõõtmine tähistatud kui alustatud. Selle protseduuri piirmäärad on määratud globaalsete muutujate alguses. Kuigi need võivad olla konstantsed ja neid saab määratleda ka protseduuri sees, kuna neid ei kasutata kogu maailmas. Aga hei, alati on midagi parandada:)

Aku mahtuvuse arvutamise kord

Tühjenemisfunktsioon hoolitseb aku mahu tegeliku loendamise eest. See kontrollib parameetritena aku pingete madalaid ja kõrgeid piire. Kõrge väärtust selles versioonis ei kasutata, kuid madala väärtuse põhjal otsustatakse, millal testimine lõpetada. Funktsiooni alguses selgitatakse kasutatavate takistite arv välja selleks otstarbeks loodud funktsiooni abil. Funktsioon tagastab takistite arvu ja käivitab samal ajal tühjenemise ja nullib loenduri. Seejärel mõõdetakse pingeid ja kasutatakse voolu arvutamiseks koos teadaoleva takisti väärtusega. Nüüd, kui me teame pinget ja voolu ning sellest möödunud aega on möödunud viimasest mõõtmisest, saame võimsust arvutada. Tühjendusprotsessi lõpus võrreldakse aku pinget madala piirväärtusega ja kui see on alla piiri jõudnud, tühjeneb faas peatub, suletakse vooluvõrgud ja mõõtmine märgitakse valmisolekuks.

Kasutatavate takistite arvu leidmise kord

Funktsioonis selectNumOfRististors tehakse pinge lihtne võrdlus eelseadistatud väärtustega ja selle tulemusel otsustatakse kasutatavate takistite arv. Mõne takisti vahelejätmiseks avatakse sobiv mosfet. Pingepesad on valitud nii, et maksimaalne vool tühjenemise ajal jääb veidi üle 600 mA (2 V/3,3 Ohm = 606 mA). Funktsioon tagastab kasutatud takistite arvu. Kuna ventilaator käivitatakse samast liinist nagu esimene mosfet, tuleb see tühjendamise ajal alati avada.

Samm: arvesti kalibreerimine

Arvesti kalibreerimine
Arvesti kalibreerimine

Arvesti kalibreerimiseks lõin teise rakenduse (lisatud). See kasutab sama riistvara. Alguses on kõik parandusjaguri väärtused seatud väärtusele 1000.

const int divCorrectionB10V = 1000; // jagaja korrektsiooni kordaja vahemikus 10V const int divCorrectionR10V = 1000; // jagaja korrektsiooni kordaja vahemikus 10V const int divCorrectionB20V = 1000; // jagaja korrektsiooni kordaja vahemikus 20V const int divCorrectionR20V = 1000; // jagaja korrektsiooni kordaja vahemikus 20V

funktsioonis readVcc () sõltub sellest tulenev Vcc pinge väärtuse määramisel funktsiooni viimasel real enne tagasipöördumist. Tavaliselt leiate Internetist arvutamiseks kasutatava väärtuse 1126400L. Ma märkasin, et tulemus ei olnud õige.

Kalibreerimisprotsess:

  1. Laadige mõõtmisrakendus Arduinole.
  2. Arduinos (ja jadaväljundis ning ventilaatori pöörlemises) näete, kas koormus on sisse lülitatud. Kui see on, keerake aku tüübi valiku lülitit.
  3. Õige tulemuse saamiseks reguleerige readuVCC () väärtust. Võtke funktsiooni antud väärtus (mis on millivoltides) ja jagage sellega pikk väärtus. Saate sisemise viite toorväärtuse. Mõõda nüüd multimeetriga tegelik toitepinge millivoltides ja korruta see eelnevalt arvutatud väärtusega ning saad uue parandatud pika väärtuse. Minu puhul andis funktsioon tagasi 5288 mV, kui tegelik Vcc oli 5,14 V. Arvutades 1126400/5288*5140 = 1094874, mille ma prooviga lõpule viisin. Sisestage uus väärtus koodi ja laadige see uuesti Arduinosse.
  4. Analoogsisendi takisti jagaja korrigeerimisväärtuste reguleerimine toimub reguleeritava toiteallika abil, mida kasutatakse arvesti sisendi toitmiseks. Lihtsaim on kasutada pingeid vahemikus 1V kuni 20V 1V sammuga ja salvestada tulemused arvutustabelisse. Arvutustabelis võetakse keskmine. Parandatud väärtused arvutatakse järgmise valemi abil: „toores_väärtus*vahemik*Vcc/Vin”, kus toores_väärtus on väärtus 10VdivB, 10VdivR, 20VdivB või 20VdivR sõltuvalt sellest, milline parandus arvutatakse.

Vaadake arvutustabelit, kuidas see mulle tundus. Keskmised arvutatakse ainult vahemikus olevate väärtuste põhjal ja need väärtused määratakse seejärel tegelikus arvestirakenduses.

Nagu nii

const int divKorrektsioonB10V = 998; // jagaja korrektsiooni jagaja vahemikus 10V const int divCorrectionR10V = 1022; // jagaja korrektsiooni jagaja vahemikus 10V const int divCorrectionB20V = 1044; // jagaja korrektsiooni jagaja vahemikus 20V const int divCorrectionR20V = 1045; // jagaja korrektsiooni jagaja vahemikus 20V

Takisti väärtust saab reguleerida, andes sisendile teatud pinge (st 2 V), lülitades kurika tüübi lüliti (koormuse saamiseks) ja mõõtes voolu ja esimese takisti pinget ning jagades pinge vooluga. Minu jaoks andis 2V 607 mA, mis annab 2/0,607 = 3,2948 oomi, mille ümardasin 3,295 oomini. Nii et nüüd on kalibreerimine tehtud.

6. samm: viimane märkus

Siinkohal üks oluline märkus. On hädavajalik, et kõik ühendused oleksid heas seisukorras, alates akust kuni takistiteni. Mul oli üks halb ühendus ja ma mõtlesin, miks sain takisti võrku 0,3 V vähem volte kui aku. See tähendas, et mõõtmisprotsess lõppes peaaegu kohe 1,2 V NiCd -elementidega, kuna alumine piir 0,95 V saavutati kiiresti.

Soovitan: