Përmbajtje:

Një tjetër testues i kapacitetit të baterisë: 6 hapa
Një tjetër testues i kapacitetit të baterisë: 6 hapa

Video: Një tjetër testues i kapacitetit të baterisë: 6 hapa

Video: Një tjetër testues i kapacitetit të baterisë: 6 hapa
Video: si ta bejme te shpejte iphone. 2024, Korrik
Anonim
Një tjetër testues i kapacitetit të baterisë
Një tjetër testues i kapacitetit të baterisë
Një tjetër testues i kapacitetit të baterisë
Një tjetër testues i kapacitetit të baterisë

Pse një testues kapaciteti më shumë

Kam lexuar shumë udhëzime të ndryshme për ndërtimin e testuesve, por asnjë prej tyre nuk duket se i përshtatet nevojave të mia. Doja të isha në gjendje të testoja edhe më shumë sesa thjesht të këndoja qelizat NiCd/NiMH ose Luan. Doja të isha në gjendje të provoja një bateri të veglave të energjisë pa e marrë atë për t'u ndarë më parë. Kështu, vendosa të kisha një vështrim më të afërt në këtë çështje dhe të krijoja një nga imja. Një gjë çon në një tjetër dhe më në fund vendosa të shkruaj një udhëzues vetë. Unë gjithashtu vendosa të mos hyj në të gjitha detajet se si të ndërtojmë në të vërtetë testuesin, sepse të gjithë mund të vendosin për zgjedhje të caktuara, si ajo e madhësisë së rezistencës për të përdorur ose nëse një PCB është i nevojshëm ose është Veroboard i mjaftueshëm dhe gjithashtu ka një ton udhëzuesish se si instaloni shqiponjën ose si të bëni një PCB. Me fjalë të tjera, unë do të përqendrohem në skemat dhe kodin dhe si të kalibroj testuesin.

Hapi 1: Historia - Versioni 1

Historia - Versioni 1
Historia - Versioni 1

Më sipër është versioni i parë me mbështetjen e hyrjes 10V të përmendur më poshtë (R12 & R17 & Q11 & Q12).

Versioni i parë është marrë pak a shumë nga një udhëzues nga deba168 (për fat të keq nuk mund ta gjej të udhëzueshëm për të siguruar një lidhje). Vetëm disa ndryshime të vogla u bënë. Në këtë version kisha një rezistencë ngarkese 10 ohm të kontrolluar nga një mosfet. Sidoqoftë, kjo solli disa probleme. Gjatë testimit të një qelize NiCd ose NiMH, koha e nevojshme u mat lehtësisht në orë nëse jo ditë. Një bateri 1500mAh zgjati mbi 12 orë (rryma ishte vetëm 120mA). Nga ana tjetër, versioni i parë mund të testojë vetëm bateri nën 10V. Dhe një bateri e ngarkuar plotësisht 9.6V mund të jetë në të vërtetë deri në 11.2V e cila nuk mund të testohet për shkak të kufirit 10V. Diçka duhej bërë. Së pari, unë vetëm shtova disa mosfet dhe rezistencë për të bërë që ndarësit e tensionit të jenë në gjendje të lejojnë më shumë se 10V. Por kjo nga ana tjetër solli një problem tjetër. Një bateri 14.4V e ngarkuar plotësisht mund të ketë tp 16.8V e cila me rezistencë 10 ohm nënkuptonte rrymë 1.68A dhe natyrisht një shpërndarje të energjisë nga rezistenca e ngarkesës prej gati 30W. Pra, me tension të ulët kohë të gjatë testimi dhe me tension të lartë rrymë shumë të lartë. Shtë e qartë se nuk ishte një zgjidhje adekuate dhe nevojitej zhvillim i mëtejshëm.

Hapi 2: Versioni 2

Doja një zgjidhje ku rryma do të qëndronte në kufij të caktuar pavarësisht tensionit të baterisë. Një zgjidhje do të ishte përdorimi i PWM dhe vetëm një rezistencë, por unë preferova të kisha një zgjidhje pa rrymë pulsuese ose të kisha nevojën për të shpërndarë nxehtësinë mosfet. Kështu, krijova një zgjidhje me 10 slote tensioni, secila 2V e gjerë, duke përdorur 10 rezistorë 3.3ohm dhe një mosfet për secilin rezistencë.

Hapi 3: Kështu doli

Kështu doli
Kështu doli

Dikush mund të argumentojë se humbja e tensionit mbi mosfet është e papërfillshme sepse rezistenca e mosfetit është aq e ulët, por zgjedhjen e mosfetit ia kam lënë lexuesit dhe kështu rezistenca mund të shkojë edhe mbi 1 ohm ku fillon të çështje Në versionin e parë, zgjedhja e mosfetit të duhur do të hiqte nevojën për matjen e pikave më të ulëta, por në versionin 2 vendosa të mat tensionin vetëm mbi një rezistencë, gjë që e bën të rëndësishme që të kemi dy pika matëse. Dhe arsyeja pas zgjedhjes ishte thjeshtësia në instalimet elektrike të Veroboard. Kjo shton një gabim saktësie pasi tensioni i matur në një rezistencë është dukshëm më i vogël se matja mbi të gjithë rezistorët. Në përzgjedhjen e komponentëve vendosa të përdor atë që ose tashmë e kisha në dispozicion ose atë që mund ta merrja lehtë. Kjo çoi në BOM -in e mëposhtëm:

  • Arduino Pro Mini 5V! E RORTNDSISHME! Kam përdorur versionin 5V dhe gjithçka bazohet në të
  • Ekran OLED 128x64 I2C
  • Rezistenca 10 x 5W 3.3 Ohm
  • 3 x 2n7000 mosfetë
  • 10 x mosfetë IRFZ34N
  • Rezistenca 6 x 10 kOhm
  • 2 rezistente 5 x kOhm
  • Kondensator 16V 680uF
  • 1 tifoz i vjetër CPU

Unë nuk kam shtuar sa vijon në skemat

  • rezistencat tërheqëse në linjat I2C, të cilat vura re e bënë ekranin më të qëndrueshëm
  • linjat e energjisë
  • kondensator në linjën 5V e cila gjithashtu stabilizoi ekranin

Ndërsa testova, vura re se rezistorët e ngarkesës do të nxeheshin mjaft, veçanërisht nëse të gjithë do të ishin në përdorim. Temperatura u ngrit në mbi 100 gradë Celsius (që është mbi 212 gradë Fahrenheit) dhe nëse i gjithë sistemi do të mbyllet në një kuti duhet të sigurohet një lloj ftohjeje. Rezistencat që kam përdorur janë 3.3 ohm / 5W dhe rryma maksimale duhet të ndodhë me rreth 2V për rezistencë duke dhënë 2V / 3.3 = 0.61A e cila rezulton në 1.21W. Përfundova duke shtuar një tifoz të thjeshtë në kuti. Kryesisht sepse më ka ndodhur të kem një tifoz të vjetër të CPU -së.

Funksionaliteti skematik

Quiteshtë mjaft e drejtpërdrejtë dhe vetë -shpjeguese. Bateria që do të testohet është e lidhur me serinë e rezistorëve dhe tokëzimit. Pikat e matjes së tensionit janë lidhja e baterisë dhe rezistenca e parë. Ndarësit e tensionit përdoren pastaj për të ulur tensionin në një nivel që i përshtatet më mirë Arduino. Një dalje dixhitale përdoret për të zgjedhur gamën 10V ose 20V të ndarësve. Çdo rezistencë në ngarkesë mund të bazohet individualisht duke përdorur mosfetë, të cilat drejtohen drejtpërdrejt nga Arduino. Dhe së fundi, ekrani është i lidhur me kunjat Arduino I2C. Nuk ka shumë për të thënë në lidhje me skemën J

Hapi 4: Kodi

Kodi
Kodi

Më sipër mund të shihet funksionaliteti i përafërt i kodit. Le të hedhim një vështrim më të afërt në kodin (skedarët arduino ino janë bashkangjitur). Ekzistojnë një numër funksionesh dhe më pas lak kryesor.

Lak kryesor

Kur matja është gati, rezultatet shfaqen, dhe ekzekutimi përfundon atje. Nëse matja nuk është bërë ende, atëherë së pari kontrollohet se cili lloj baterie është zgjedhur dhe pastaj tensioni në të gjithë hyrjen. Nëse voltazhi tejkalon 0.1V, duhet të ketë të paktën një lloj baterie të lidhur. Në këtë rast, një nënrutinë thirret të përpiqet të kuptojë se sa qeliza ka në bateri për të vendosur se si të testohet. Numri i qelizave është pak a shumë informacion i cili mund të përdoret më mirë, por, në këtë version, ai raportohet vetëm përmes ndërfaqes serike. Nëse gjithçka është mirë procesi i shkarkimit fillon dhe në çdo raund të lakut kryesor llogaritet kapaciteti i baterisë. Në fund të lakut kryesor ekrani është i mbushur me vlera të njohura.

Procedura për të treguar rezultatet

Funksioni showResults thjesht vendos linjat që do të shfaqen në ekran dhe gjithashtu vargun që do të dërgohet në ndërfaqen serike.

Procedura për matjen e tensioneve

Në fillim të funksionit matet Vcc e Arduino. Neededshtë e nevojshme që të jeni në gjendje të llogaritni tensionet e matura duke përdorur hyrje analoge. Pastaj tensioni i baterisë matet duke përdorur intervalin 20V për të qenë në gjendje të vendosni se cilin varg të përdorni. Pastaj llogaritet edhe tensioni i baterisë edhe ai i rezistencës. Matjet e tensionit të baterisë përfitojnë nga klasa DividerInput e cila ka metoda leximi dhe tension për të dhënë leximin e papërpunuar ose tensionin e llogaritur të hyrjes analoge në fjalë.

Procedura për zgjedhjen e vlerave të përdorura

Në funksionin selectUsedValues numri i qelizave supozohet dhe kufijtë e lartë dhe të ulët për baterinë vendosen të përdoren me procedurën e shkarkimit. Gjithashtu matja është shënuar si e filluar, Kufijtë për këtë procedurë janë vendosur në fillim të variablave globale. Megjithëse ato mund të jenë konstante, dhe ato gjithashtu mund të përcaktohen brenda procedurës pasi ato nuk përdoren globalisht. Por hej gjithmonë ka diçka për të përmirësuar:)

Procedura për llogaritjen e kapacitetit të baterisë

Funksioni i shkarkimit kujdeset për numërimin e vërtetë të kapacitetit të baterisë. Ai merr kufijtë e ulët dhe të lartë të tensioneve për baterinë nën testim si parametra. Vlera e lartë nuk përdoret në këtë version, por vlera e ulët përdoret për të vendosur kur të ndaloni testimin. Në fillim të funksionit, numri i rezistencave për t'u përdorur zbulohet duke përdorur një funksion të krijuar për këtë qëllim. Funksioni kthen numrin e rezistencës dhe në të njëjtën kohë fillon shkarkimin dhe rivendos numëruesin. Pastaj tensionet maten dhe përdoren së bashku me vlerën e njohur të rezistencës për të llogaritur rrymën. Tani që ne e dimë tensionin dhe rrymën dhe koha nga ajo ka qenë që nga matja e fundit, ne mund të llogarisim kapacitetin. Në fund të procesit të shkarkimit tensioni i baterisë krahasohet me kufirin e ulët dhe nëse ka zbritur nën limit faza e shkarkimit ndalet, mosfetë mbyllen dhe matja shënohet si e gatshme.

Procedura për gjetjen e numrit të rezistencave për t'u përdorur

Në funksionin selectNumOfResistors bëhet një krahasim i thjeshtë i tensionit me vlerat e paracaktuara dhe me rezultatin vendoset numri i rezistorëve që do të përdoren. Mosfet e përshtatshme hapet për të kapërcyer disa nga rezistencat. Slotet e tensionit janë zgjedhur në mënyrë që rryma maksimale në çdo kohë gjatë shkarkimit të qëndrojë pak mbi 600mA (2V/3.3Ohm = 606mA). Funksioni kthen numrin e rezistorëve të përdorur. Për shkak se ventilatori nxirret nga e njëjta linjë si mosfeti i parë, ai duhet të hapet gjithmonë kur shkarkimi po vazhdon.

Hapi 5: Kalibrimi i njehsorit

Kalibrimi i njehsorit
Kalibrimi i njehsorit

Për të bërë kalibrin e njehsorit krijova një aplikacion tjetër (bashkangjitur). Ai përdor të njëjtin harduer. Në fillim vlerat ndarëse të korrigjimit vendosen të gjitha në 1000.

const int divCorrectB10V = 1000; // shumëzuesi i korrigjimit të ndarësit në intervalin 10V const int divCorrectionR10V = 1000; // shumëzuesi i korrigjimit të ndarësit në intervalin 10V const int divCorrectB20V = 1000; // shumëzuesi i korrigjimit të ndarësit në rangun 20V const int divCorrectR20V = 1000; // shumëzuesi i korrigjimit të ndarësit në rangun 20V

në funksionin readVcc () voltazhi që rezulton Vcc zvogëlohet në vendosjen e vlerës në rreshtin e fundit të funksionit para kthimit. Zakonisht mund të gjeni në internet një vlerë prej 1126400L që do të përdoret në llogaritjen. Vura re që rezultati nuk ishte i saktë.

Procesi i kalibrimit:

  1. Ngarkoni aplikacionin e matjes në Arduino.
  2. Ju mund të shihni në Arduino (dhe në daljen serike dhe nëse ventilatori po rrotullohet) nëse ngarkesa është e ndezur. Nëse është kthyer ktheni çelësin e përzgjedhjes së llojit të baterisë.
  3. Rregulloni vlerën në readuVCC () për të pasur rezultatin e duhur. Merrni vlerën që jep funksioni (e cila është në milivolt) dhe ndani vlerën e gjatë me të. Ju do të merrni vlerën e papërpunuar të referencës së brendshme. Tani matni tensionin aktual të furnizimit në milivolt me një multimetër dhe shumëzojeni atë me vlerën e llogaritur më parë dhe merrni vlerën e re të korrigjuar të gjatë. Në rastin tim, funksioni u kthye 5288mV kur Vcc aktual ishte 5.14V. Duke llogaritur 1126400/5288*5140 = 1094874 të cilat i përfundova me provë. Vendosni vlerën e re në kod dhe ngarkojeni përsëri në Arduino.
  4. Rregullimi i vlerave korrigjuese të ndarësit të rezistencës së hyrjes analoge ndodh duke përdorur një burim energjie të rregullueshëm i cili përdoret për të ushqyer hyrjen e njehsorit. Më e thjeshtë është të përdorni tensione nga 1V në 20V me hapa 1V dhe të regjistroni rezultatet në një spreadsheet. Në tabelë merret mesatarja. Vlerat e korrigjuara llogariten me formulën e mëposhtme: "vlera e papërpunuar*diapazoni*Vcc/Vin" ku vlera e papërpunuar është vlera në 10VdivB, 10VdivR, 20VdivB ose 20VdivR në varësi të asaj korrigjimi që do të llogaritet.

Shihni tabelën si më dukej mua. Mesataret llogariten vetëm nga vlerat që do të jenë në rang dhe ato vlera vendosen më pas në aplikacionin aktual të njehsorit.

Si kjo

const int divCorrectB10V = 998; // ndarës i korrigjimit të ndarësit në intervalin 10V const int divCorrectionR10V = 1022; // ndarës i korrigjimit të ndarësit në intervalin 10V const int divCorrectB20V = 1044; // ndarës korrigjimi ndarës në rangun 20V const int divCorrectionR20V = 1045; // ndarësi i korrigjimit të ndarësit në rangun 20V

Rregullimi i vlerës së rezistencës mund të bëhet duke siguruar njëfarë tensioni në hyrje (p.sh. 2V), duke ndërruar çelësin e llojit të shkopit (për të ngarkuar) dhe matur rrymën që hyn dhe tensionin në rezistencën e parë dhe duke e ndarë tensionin me rrymën Me Për mua 2V dha 607mA e cila jep 2/0.607 = 3.2948 ohms të cilat i rrumbullakosa në 3.295 ohms. Pra, tani kalibrimi është bërë.

Hapi 6: SH NOTNIMI I fundit

Një shënim i rëndësishëm këtu. Imshtë e domosdoshme që të gjitha lidhjet të jenë në gjendje të mirë nga bateria tek rezistorët. Unë kisha një lidhje të keqe dhe po pyesja veten pse mora 0.3V më pak volt në rrjetin e rezistencës sesa në baterinë. Kjo do të thoshte që procesi i matjes përfundoi pothuajse menjëherë me qeliza NiCd 1.2V sepse kufiri i poshtëm prej 0.95V u arrit shpejt.

Recommended: