Innholdsfortegnelse:

Batterikontroll med temperatur og valg av batteri: 23 trinn (med bilder)
Batterikontroll med temperatur og valg av batteri: 23 trinn (med bilder)

Video: Batterikontroll med temperatur og valg av batteri: 23 trinn (med bilder)

Video: Batterikontroll med temperatur og valg av batteri: 23 trinn (med bilder)
Video: [Camper van DIY#3] Умереть с помощью Legetolex ~ Как для начинающих комфортно слушать Боба Марли 2024, Juli
Anonim
Image
Image
Endre fra grunnprosjekt
Endre fra grunnprosjekt

Batterikapasitetstester.

Med denne enheten kan du kontrollere kapasiteten på 18650 batteri, syre og annet (det største batteriet jeg testet Det er 6v Acid batteri 4, 2A). Resultatet av testen er i milliampere/timer.

Jeg lager denne enheten fordi jeg trenger den for å sjekke det falske Kina -batteriet.

For sikkerhets skyld la jeg til, ved hjelp av en termistor, temperaturen på strømmotstanden og batteriet for å forhindre at det blir for varmt, med dette trikset kan jeg sjekke 6v syrebatteri uten brann på brettet (i utladningssyklusen går jeg til varmstrømsmotstand) og enheten venter 20 sekunder for å redusere temperaturen).

Jeg velger en liten mikrokontroller atmega328 -kompatibel nano (eBay).

All koden er her.

Trinn 1: Endre fra grunnprosjekt

Jeg stjal ideen fra prosjektet til OpenGreenEnergy, og jeg gjorde styret om for å legge til funksjoner, så nå blir jeg mer generell.

v0.1

  • VCC av Arduino blir nå automatisk beregnet;
  • Lagt til variabel for å endre innstilling på en mer behagelig måte.
  • Lagt til prosentandel av utslipp
  • Lagt temperatur på batteri og effektmotstand

v0.2

  • Lagt til mulighet for valg av batteri
  • Opprettet prototypekort (se skjematisk), med skjermen, knappen og høyttaleren utenfor brettet fordi jeg i fremtiden vil lage en pakke.
  • Lagt til styring av temperaturgrensen til effektmotstanden, slik at jeg kan blokkere prosessen når temperaturen stiger utover 70 ° (over denne temperatureffektmotstanden reduseres).

v0.3

Kommer snart et styre fra denne tjenesten

Trinn 2: V0.2 i styret

V0.2 i styret
V0.2 i styret

I v0.2 for å støtte forskjellige typer batterier, opprettet jeg en struktur som må fylles med batterinavn, min spenning og maks spenning (jeg trenger hjelp til å fylle den: P).

// Struktur av batteriets typebruk Batteritype {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 }};

Nå bruker jeg et sett med 10k motstander for spenningsdeleren for å lese dobbel temperatur på analog inngang. Hvis du vil ha støtte for endringsspenning, må du endre denne verdien (forklar bedre neste):

// Batterispenningsmotstand

#define BAT_RES_VALUE_GND 10.0 #define BAT_RES_VALUE_VCC 10.0 // Spenningsmotstand mot effektmotstand #definer RES_RES_VALUE_GND 10.0 #definer RES_RES_VALUE_VCC 10.0

Hvis du ikke bruker termistor, setter du denne til false:

#define USING_BATTERY_TERMISTOR true

#define USING_RESISTO_TERMISTOR true

Hvis du bruker en annen i2c -skjerm, må du skrive om denne metoden:

void draw (ugyldig)

I prosjektet kan du finne frittskjemaer, bilder og mer.

Trinn 3: Brødbrett: I2c Character Display Controller utvidet

Breadboard: I2c Character Display Controller utvidet
Breadboard: I2c Character Display Controller utvidet

Jeg brukte en generisk tegnvisning, og jeg bygde i2c -kontrolleren og brukte den med mitt tilpassede bibliotek.

Men hvis du vil, kan du ta en vanlig i2c -kontroller (mindre enn 1 €) med et standardbibliotek, koden forblir den samme. All visningskode er i tegnefunksjon, slik at du kan endre det uten å endre andre ting.

Bedre forklart her.

Trinn 4: Brødbrett: Tegnvisning med I2c integrert

Breadboard: Tegnvisning med I2c integrert
Breadboard: Tegnvisning med I2c integrert

Det samme skjemaet uten i2c -kontrollert utvidet.

Trinn 5: Realisering

For å måle spenning bruker vi prinsippet om en spenningsdeler (mer informasjon på Wikipedia).

I enkle ord er denne koden multiplikatorfaktoren for måling av batterispenning.

batResValueGnd / (batResValueVolt + batResValueGnd)

Jeg satte inn de 2 motstandene til batResValueVolt og batResValueGnd -verdien etter og før den analoge lesetråden.

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

sample1 er den gjennomsnittlige analoge avlesningen;

vcc referanse Arduino spenning;

1023.0 er referanse maksimal verdi for analog lesing (Arduino analog les går fra 0 til 1023).

For å få strøm trenger du spenning etter og før motstand.

Når du har måle spenningen etter og før effektmotstanden, kan du beregne milliampere som bruker batteriet.

MOSFET brukes til å starte og stoppe batteridrift fra strømmotstanden.

For sikkerhets skyld satte jeg inn 2 termistorer for å overvåke batteriets og motstandstemperaturen.

Trinn 6: Utvidbarhet

Utvidbarhet
Utvidbarhet
Utvidbarhet
Utvidbarhet

Jeg prøver å lage et prototypebrett som kan utvides, men foreløpig bruker jeg bare et minimalt sett med pinner (i fremtiden legger jeg til lysdioder og andre knapper).

Hvis du vil ha støttespenning større enn 10v, må du endre motstandsverdien til batteri og motstand i henhold til formelen

(BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)

i skjemaet Motstandsspenning

Motstandsspenning GND 1/2/(Motstandsspenning 2/2 + Motstandsspenning GND 1/2)

Rosa er nedlodding

Trinn 7: Liste over deler

Mengde Deltype Egenskaper

  • 2 5 mm skrue Terminal PCB -festeskrue Terminalblokk 8A 250V LW SZUS (eBay)
  • 1 Arduino Pro Mini -klon (kompatibel Nano) (eBay)
  • 1 grunnleggende FET P-kanal IRF744N eller IRLZ44N (eBay)
  • 11 10kΩ Motstandsmotstand 10kΩ (eBay)
  • 2 temperatursensor (termistor) 10kΩ; (eBay)
  • * Generisk mannlig topptekstform ♂ (hann); (eBay)
  • * Generisk kvinnelig topptekstform ♀ (hunn); (eBay)
  • 1 PerfBoard board Prototype board 24x18 (eBay)
  • 10R, 10W

    strømmotstand (eBay) Jeg finner min i en gammel crt -TV.

Trinn 8: Styret: Tilbakestill, Gnd E -knappen for å velge batteri

Brett: Tilbakestill, Gnd E -knapp for å velge batteri
Brett: Tilbakestill, Gnd E -knapp for å velge batteri

I venstre del av pinnene finner du knappen og summeren.

Jeg bruker 3 knapper:

  1. en for å bytte batteritype;
  2. en for å starte utladning av valgt batteri;
  3. så bruker jeg reset pin til å starte alt på nytt og aktivere ny operasjon.

All pinne er allerede trukket ned, så du må aktivere med VCC

Tilbakestill aktiveres med GND

Rosa er nedlodding

Trinn 9: Brett: I2c og strømforsyningspinner

Brett: I2c og strømforsyningspinner
Brett: I2c og strømforsyningspinner

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

Rosa er nedlodding

Trinn 10: Brett: termistor og målespenning

Brett: Termistor og målespenning
Brett: Termistor og målespenning

Til høyre er det pinner for å lese termistorverdien, en for effektresistor eller termistor og den andre for (mannlige/kvinnelige pinner for å feste) batteritermistor.

Så er det analoge pinner som måler differensialspenning etter og før effektmotstand.

Rosa er nedlodding

Trinn 11: Brett: Motstand mot måling av spenning

Brett: Motstand mot måling av spenning
Brett: Motstand mot måling av spenning
Brett: Motstand mot måling av spenning
Brett: Motstand mot måling av spenning

Her kan du se motstanden som tillater å støtte spenning dobbelt enn arduino pin (10v), du må endre denne for å støtte mer spenning.

Rosa er nedlodding

Trinn 12: Loddetrinn: Alle pinner

Loddetrinn: Alle pinner
Loddetrinn: Alle pinner
Loddetrinn: Alle pinner
Loddetrinn: Alle pinner

For det første legger jeg til alle pinner og lodder det.

Trinn 13: Loddetrinn: Nedtrekksmotstand og termistor

Loddetrinn: Pulldown -motstand og termistor
Loddetrinn: Pulldown -motstand og termistor
Loddetrinn: Pulldown -motstand og termistor
Loddetrinn: Pulldown -motstand og termistor

Deretter legger jeg til all nedtrekksresitor (for knapper) og i2c -kontakt (display).

Deretter er termistoren til motstandsmotstanden Det er veldig viktig, med surt batteri som blir for varmt.

Trinn 14: Loddetrinn: MOSFET, motstand mot spenningskontroll

Loddetrinn: MOSFET, motstand mot spenningskontroll
Loddetrinn: MOSFET, motstand mot spenningskontroll
Loddetrinn: MOSFET, motstand mot spenningskontroll
Loddetrinn: MOSFET, motstand mot spenningskontroll

Nå må vi sette inn mosfet for å aktivere utladning og motstand for å kontrollere spenning.

2 motstand for spenning før effektmotstand 2 motstand for spenning etter effektmotstand, når du har denne spenningen kan du beregne milliampere forbruk.

Trinn 15: Kode

Mikrokontrolleren er kompatibel nano, så du må angi IDE for å laste opp en Arduino Nano.

For å jobbe må du laste ned kode fra github -depotet mitt.

Enn du må legge til 3 bibliotek:

  1. Wire: standard arduino -bibliotek for i2c -protokoll;
  2. Termistor Library herfra ikke biblioteket du finner i arduino IDE, men min versjon;
  3. LiquidCrystal_i2c: hvis du bruker utvidet/tilpasset versjon av i2c -adapter (min versjon) må du laste ned biblioteket herfra, hvis du bruker standardkomponenten kan du ta biblioteket fra arduino IDE, men alt er bedre forklart her.

Jeg tester ikke LCD med standardbibliotek, det virker som om de kan byttes ut, men hvis det er et problem, kan du kontakte meg.

Trinn 16: Resultat etter montering

Image
Image
Resultat etter montering
Resultat etter montering
Resultat etter montering
Resultat etter montering

Grunnplaten er på bildet, så kan vi teste den.

Trinn 17: Velg først batteritype

Velg først batteritype
Velg først batteritype

Som beskrevet har vi et verdikart med konfigurasjon av batteri.

// Struktur av batteriets typebruk Batteritype {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 }};

Trinn 18: Start utladning

Start utladning
Start utladning
Start utladning
Start utladning

Klikk på den andre knappen for å starte utladningen.

I displayet kan du se nåværende milliampere, milliampere/timer, prosentandel utladning, batterispenning og temperatur på effektmotstand og batteri.

Trinn 19: Unntak: Batteri fjernet

Image
Image
Unntak: Temperaturvarsling
Unntak: Temperaturvarsling

Hvis du fjerner utladingsprosessen for batteriet, stopper den når du setter den inn på nytt med den siste verdien.

Trinn 20: Unntak: Temperaturvarsling

Unntak: Temperaturvarsling
Unntak: Temperaturvarsling
Unntak: Temperaturvarsling
Unntak: Temperaturvarsling
Unntak: Temperaturvarsling
Unntak: Temperaturvarsling

Hvis temperaturen (batteri eller motstand) blir varm, går utladningsprosessen på pause.

#define BATTERY_MAX_TEMP 50

#define RESISTANCE_MAX_TEMP 69 // 70 ° på datablad (Derating motstander) #definer TEMP_TO_REMOVE_ON_MAX_TEMP 20

Standardverdien for maks temperatur er 50 ° for batteri og 69 for effektmotstand.

Som du kan se på kommentaren påvirkes kraftmotstanden av derating når den går over 70 °.

Hvis varsel øker, start TEMP_TO_REMOVE_ON_MAX_TEMP sekunder med pause for å sette lav temperatur.

Trinn 21: Test Amperage

Test strømstyrke
Test strømstyrke

Resultatet av strømstyrketesten er bra.

Trinn 22: Pakke

Med separert komponent er pakkeresultatet enkelt å realisere.

I en eske må det utføres et rektangel for LCD, hullene for trykknapper og en ekstern kvinnelig fat for å levere spenning fra strømforsyningen.

Trykknapp trenger ikke nedtrekksmotstand fordi jeg legger den allerede om bord.

Når jeg har litt tid lager jeg og legger den ut.

Anbefalt: