Indholdsfortegnelse:

Batteritjekker med temperatur og valg af batteri: 23 trin (med billeder)
Batteritjekker med temperatur og valg af batteri: 23 trin (med billeder)

Video: Batteritjekker med temperatur og valg af batteri: 23 trin (med billeder)

Video: Batteritjekker med temperatur og valg af batteri: 23 trin (med billeder)
Video: Hvordan reagerer børn, når man fortæller, at der ikke er råd til at holde jul? 2024, November
Anonim
Image
Image
Skift fra basisprojekt
Skift fra basisprojekt

Batterikapacitetstester.

Med denne enhed kan du kontrollere kapaciteten på 18650 batteri, syre og andet (det største batteri jeg testede Det er 6v Acid batteri 4, 2A). Resultatet af testen er i milliampere/timer.

Jeg opretter denne enhed, fordi jeg har brug for det for at kontrollere kapacitets falske Kina batteri.

For en sikkerheds skyld tilføjede jeg ved hjælp af en termistor temperaturen på strømmodstanden og batteriet for at forhindre, at det bliver for varmt, med dette trick kan jeg kontrollere 6v syrebatteri uden at fyre brættet (i løbet af afladningscyklussen skal du gå til varm strømmodstand og enheden venter 20 sekunder for at reducere temperaturen).

Jeg vælger lille mikro controller atmega328 kompatibel nano (eBay).

Al koden er her.

Trin 1: Skift fra basisprojekt

Jeg stjal ideen fra projektet med OpenGreenEnergy, og jeg lavede ombord for at tilføje funktioner, så nu bliver mere generel.

v0.1

  • VCC for Arduino beregnes nu automatisk;
  • Tilføjet variabel for at ændre indstilling på en mere behagelig måde.
  • Tilføjet procentdel af udladning
  • Tilføjet temperatur på batteri og effektmodstand

v0.2

  • Tilføjet mulighed for valg af batteri
  • Oprettet prototypebord (se skematisk), med skærmen, knappen og højttaleren uden for tavlen, fordi jeg i fremtiden gerne vil oprette en pakke.
  • Tilføjet styring af temperaturgrænsen til effektmodstanden, så jeg kan blokere processen, når temperaturen stiger ud over 70 ° (over denne temperatureffektmodstand derating).

v0.3

Kommer snart et board fra denne service

Trin 2: V0.2 i bestyrelsen

V0.2 i bestyrelsen
V0.2 i bestyrelsen

I v0.2 for at understøtte forskellige typer batterier, oprettede jeg en struktur, der skal fyldes med batterinavn, min spænding og maks spænding (jeg har brug for hjælp til at fylde den: P).

// Struktur af batteriets typebestemmelse BatteryType {tegnnavn [10]; float maxVolt; float minVolt; }; #define BATTERY_TYPE_NUMBER 4 BatteryType batteryTypes [BATTERY_TYPE_NUMBER] = {{"18650", 4.3, 2.9}, {"17550", 4.3, 2.9}, {"14500", 4.3, 2.75}, {"6v Acid", 6.50, 5.91 }};

Nu bruger jeg et sæt 10k modstande til spændingsdeleren til at aflæse dobbelt temperatur på analog indgang. Hvis du vil have understøttelse af ændringsspænding, skal du ændre denne værdi (forklar bedre derefter):

// Modstand mod batterispænding

#define BAT_RES_VALUE_GND 10.0 #define BAT_RES_VALUE_VCC 10.0 // Effektmodstand spændingsmodstand #definer RES_RES_VALUE_GND 10.0 #definer RES_RES_VALUE_VCC 10.0

Hvis du ikke bruger termistor, skal du indstille denne til falsk:

#define USING_BATTERY_TERMISTOR sand

#define USING_RESISTO_TERMISTOR sand

Hvis du bruger en anden i2c -skærm, skal du omskrive denne metode:

void draw (void)

I projektet kan du finde fritzende skemaer, fotos og mere.

Trin 3: Breadboard: I2c Character Display Controller udvidet

Breadboard: I2c Character Display Controller udvidet
Breadboard: I2c Character Display Controller udvidet

Jeg brugte en generisk tegnvisning, og jeg byggede i2c -controlleren og brugte den med mit brugerdefinerede bibliotek.

Men hvis du vil, kan du tage en normal i2c -controller (mindre end 1 €) med et standardbibliotek, koden forbliver den samme. Alle visningskoder er i tegnefunktion, så du kan ændre det uden at ændre andre ting.

Bedre forklaret her.

Trin 4: Breadboard: Tegnvisning med I2c integreret

Breadboard: Tegnvisning med I2c integreret
Breadboard: Tegnvisning med I2c integreret

Det samme skema uden i2c kontrolleret udvidet.

Trin 5: Realisering

Til måling af spænding bruger vi princippet om en spændingsdeler (flere oplysninger på Wikipedia).

I enkle ord er denne kode multiplikatorfaktoren til måling af batterispænding.

batResValueGnd / (batResValueVolt + batResValueGnd)

Jeg indsatte de 2 modstande for batResValueVolt og batResValueGnd -værdien efter og før den analoge læsetråd.

batVolt = (sample1 / (1023.0 - ((BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)) * 1023.0))) * vcc;

sample1 er de gennemsnitlige analoge aflæsninger;

vcc reference Arduino spænding;

1023.0 er referencemaksimumværdien for analog læsning (Arduino analog læsning går fra 0 til 1023).

For at få strømstyrke skal du bruge spænding efter og før effektmodstand.

Når du har målet spændingen efter og før effektmodstanden, kan du beregne milliampere, der forbruger batteriet.

MOSFET bruges til at starte og stoppe batteridrænning fra strømmodstand.

For en sikkerheds skyld indsatte jeg 2 termistorer for at overvåge batteriets og modstandstemperaturen.

Trin 6: Udvidelse

Udvidelse
Udvidelse
Udvidelse
Udvidelse

Jeg forsøger at kretere et prototypebord, der kan udvides, men i øjeblikket bruger jeg kun et minimalt sæt stifter (fremover tilføjer jeg lysdioder og andre knapper).

Hvis du vil have understøttelsesspænding større end 10v, skal du ændre batteriets modstandsværdi og modstand i henhold til formlen

(BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)

i skemaet Modstandseffekt spænding

Modstandseffekt spænding GND 1/2/(Modstandseffekt spænding 2/2 + Modstandseffekt spænding GND 1/2)

Pink er nedlodning

Trin 7: Liste over dele

Beløb Deltype Egenskaber

  • 2 5 mm skrueterminal Inden PCB -monteret skrueklemme 8A 250V LW SZUS (eBay)
  • 1 Arduino Pro Mini -klon (kompatibel Nano) (eBay)
  • 1 Grundlæggende FET P-kanal IRF744N eller IRLZ44N (eBay)
  • 11 10kΩ Modstandsmodstand 10kΩ (eBay)
  • 2 temperatursensor (termistor) 10kΩ; (eBay)
  • * Generisk hanhovedform ♂ (han); (eBay)
  • * Generisk kvindelig headerform ♀ (kvinde); (eBay)
  • 1 PerfBoard board Prototype board 24x18 (eBay)
  • 10R, 10W

    strømmodstand (eBay) Jeg finder min i et gammelt crt -tv.

Trin 8: Board: Nulstil, Gnd E -knap for at vælge batteri

Board: Nulstil, Gnd E -knap for at vælge batteri
Board: Nulstil, Gnd E -knap for at vælge batteri

I venstre del af benene kan du finde knappen og summeren.

Jeg bruger 3 knapper:

  1. en til at ændre batteritype;
  2. en til at begynde at aflade det valgte batteri;
  3. derefter bruger jeg reset pin til at genstarte alle og aktivere ny operation.

Alle ben er allerede trukket ned, så du skal aktivere med VCC

Nulstil aktiveres med GND

Pink er nedlodning

Trin 9: Board: I2c og strømforsyningspinde

Board: I2c og strømforsyningspinde
Board: I2c og strømforsyningspinde

Til basen kan du se VCC, GND og SDA, SCL til visning (og andet i fremtiden).

Pink er nedlodning

Trin 10: Bord: Termistor og målespænding

Kort: Termistor og målespænding
Kort: Termistor og målespænding

Til højre er der stifter til aflæsning af termistorværdi, den ene til strømforsyning eller termistor og den anden til (han/hun -ben til at fastgøre) batteritermistor.

Så er der analoge ben, der måler differentialspænding efter og før effektmodstand.

Pink er nedlodning

Trin 11: Board: Modstand mod måling af spænding

Board: Modstand mod måling af spænding
Board: Modstand mod måling af spænding
Board: Modstand mod måling af spænding
Board: Modstand mod måling af spænding

Her kan du se den modstand, der tillader at understøtte spænding dobbelt end arduino pin (10v), du skal ændre denne for at understøtte mere spænding.

Pink er nedlodning

Trin 12: Lodning Trin: Alle pins

Lodningstrin: Alle pins
Lodningstrin: Alle pins
Lodningstrin: Alle pins
Lodningstrin: Alle pins

For det første tilføjer jeg alle stifter og lodder det.

Trin 13: Loddetrin: Pulldown -modstand og termistor

Lodningstrin: Pulldown -modstand og termistor
Lodningstrin: Pulldown -modstand og termistor
Lodningstrin: Pulldown -modstand og termistor
Lodningstrin: Pulldown -modstand og termistor

Derefter tilføjer jeg alle pulldown resitor (til knapper) og i2c -stik (display).

Derefter er strømmodstandstermistoren meget vigtig, idet syrebatteriet bliver for varmt.

Trin 14: Lodningstrin: MOSFET, modstand mod kontrol af spænding

Lodningstrin: MOSFET, modstand mod kontrol af spænding
Lodningstrin: MOSFET, modstand mod kontrol af spænding
Lodningstrin: MOSFET, modstand mod kontrol af spænding
Lodningstrin: MOSFET, modstand mod kontrol af spænding

Nu skal vi indsætte mosfet for at aktivere afladning og modstand mod at kontrollere spænding.

2 modstand for spænding før effektmodstand 2 modstand for spænding efter effektmodstand, når du har denne spænding kan du beregne milliampereforbrug.

Trin 15: Kode

Mikrocontrolleren er kompatibel nano, så du skal indstille din IDE til at uploade en Arduino Nano.

For at arbejde skal du downloade kode fra mit github -lager.

End du skal tilføje 3 bibliotek:

  1. Wire: standard arduino bibliotek til i2c protokol;
  2. Termistorbibliotek herfra ikke det bibliotek, du kan finde i arduino IDE, men min version;
  3. LiquidCrystal_i2c: Hvis du bruger udvidet/brugerdefineret version af i2c -adapter (min version), skal du downloade biblioteket herfra, hvis du bruger standardkomponenten, kan du tage biblioteket fra arduino IDE, men alt er bedre forklaret her.

Jeg tester ikke LCD med standardbibliotek, det forekommer mig, at de er udskiftelige, men hvis der er et problem, blev det gratis at kontakte mig.

Trin 16: Resultat efter samling

Image
Image
Resultat efter samling
Resultat efter samling
Resultat efter samling
Resultat efter samling

Bundkortet er på billedet, så kan vi teste det.

Trin 17: Vælg først batteritype

Vælg først batteritype
Vælg først batteritype

Som beskrevet har vi et værdikort med konfiguration af batteri.

// Struktur af batteriets typebestemmelse BatteryType {tegnnavn [10]; float maxVolt; float minVolt; }; #define BATTERY_TYPE_NUMBER 4 BatteryType batteryTypes [BATTERY_TYPE_NUMBER] = {{"18650", 4.3, 2.9}, {"17550", 4.3, 2.9}, {"14500", 4.3, 2.75}, {"6v Acid", 6.50, 5.91 }};

Trin 18: Start afladning

Start afladning
Start afladning
Start afladning
Start afladning

Klik på den anden knap for at starte afladningen.

I displayet kan du se aktuelle milliampere, milliampere/timer, procentdel af afladning, batterispænding og temperatur på effektmodstand og batteri.

Trin 19: Undtagelser: Batteri fjernet

Image
Image
Undtagelser: Temperaturvarsel
Undtagelser: Temperaturvarsel

Hvis du fjerner batteriets afladning, vil den gå på pause, når du sætter den i igen med den sidste værdi.

Trin 20: Undtagelser: Temperaturvarsel

Undtagelser: Temperaturalarm
Undtagelser: Temperaturalarm
Undtagelser: Temperaturvarsel
Undtagelser: Temperaturvarsel
Undtagelser: Temperaturalarm
Undtagelser: Temperaturalarm

Hvis temperaturen (batteri eller effektmodstand) bliver for varm, afbrydes afladningsprocessen.

#define BATTERY_MAX_TEMP 50

#define RESISTANCE_MAX_TEMP 69 // 70 ° på datablad (Derating -modstande) #define TEMP_TO_REMOVE_ON_MAX_TEMP 20

Standardværdien for max temperatur er 50 ° for batteri og 69 for effektmodstand.

Som du kan se på kommentaren, påvirkes effektmodstanden af derating, når den går over 70 °.

Hvis alarmen hæves, start TEMP_TO_REMOVE_ON_MAX_TEMP sekunders pause for at sætte lav temperatur.

Trin 21: Test strømstyrke

Test strømstyrke
Test strømstyrke

Resultatet af ampertest er godt.

Trin 22: Pakke

Med adskilt komponent er pakkeresultatet let at realisere.

I en kasse skal der laves et rektangel til LCD, hullerne til trykknapper og en ekstern huntønde til at levere spænding fra strømforsyningen.

Trykknap behøver ikke pull-down modstand, fordi jeg tilføjer den allerede om bord.

Når jeg har lidt tid, opretter jeg og sender det.

Anbefalede: