Indholdsfortegnelse:

Mikrocontrollerbaseret smart batterioplader: 9 trin (med billeder)
Mikrocontrollerbaseret smart batterioplader: 9 trin (med billeder)

Video: Mikrocontrollerbaseret smart batterioplader: 9 trin (med billeder)

Video: Mikrocontrollerbaseret smart batterioplader: 9 trin (med billeder)
Video: 💦Blackview BV9200 ЧЕСТНЫЙ ОБЗОР ПРОТИВОУДАРНОГО 2024, Juli
Anonim
Mikrocontrollerbaseret smart batterioplader
Mikrocontrollerbaseret smart batterioplader
Mikrocontrollerbaseret smart batterioplader
Mikrocontrollerbaseret smart batterioplader
Mikrocontrollerbaseret smart batterioplader
Mikrocontrollerbaseret smart batterioplader

Kredsløbet, du er ved at se, er en smart batterioplader baseret på ATMEGA8A med automatisk afbrydelse. Forskellige parametre vises via en LCD under forskellige opladningstilstande. Kredsløbet vil også lave lyd via en summer ved opladningens afslutning.

Jeg byggede opladeren grundlæggende til at oplade mit 11.1v/4400maH Li-ion batteri. Firmwaren er dybest set skrevet til at oplade denne særlige batteritype. Du kan uploade din egen opladningsprotokol for at opfylde dine behov for at oplade andre batterityper.

Som du ved, er smarte batteriopladere let tilgængelige på markederne. Men som elektronisk entusiast er det altid at foretrække for mig at bygge min egen frem for at købe en, der vil have statiske/uforanderlige funktioner. I dette modul har jeg planer om at opgradere i fremtiden, så jeg har efterladt plads med hensyn til det.

Da jeg først købte mit tidligere 11.1v/2200mah Li-ion batteri, søgte jeg efter DIY batteriopladere med smart kontrol på internettet. Men jeg fandt meget begrænsede ressourcer. Så da lavede jeg en batterioplader baseret på LM317 og det fungerede rigtig godt for mig. Men da mit tidligere batteri døde over tid (uden grund), købte jeg et andet Li-ion batteri på 11.1v/4400mah. Men denne gang var den tidligere opsætning utilstrækkelig til at oplade mit nye batteri. krav, studerede jeg på nettet og kunne designe min egen smarte oplader.

Jeg deler dette, da jeg tror, at der er mange hobbyister/entusiaster derude, der virkelig brænder for at arbejde med strømelektronik og mikrokontroller og også har brug for at bygge en egen smart oplader.

Lad os tage et hurtigt kig på, hvordan du oplader et Li-ion-batteri.

Trin 1: Oplad protokol for et Li-ion batteri

For at oplade Li-ion-batteri skal visse betingelser være opfyldt. Hvis vi ikke opretholder betingelserne, vil enten batteriet blive underopladet, eller det vil blive tændt (hvis det er overopladet) eller vil blive permanent beskadiget.

Der er en meget god hjemmeside til at vide alt, hvad der er nødvendigt om forskellige batterityper, og selvfølgelig kender du navnet på webstedet, hvis du er fortrolig med at arbejde med batterier … Ja, jeg taler om batteryuniversity.com.

Her er linket for at kende de nødvendige detaljer for at oplade et Li-ion batteri.

Hvis du er doven nok til at læse alle disse teorier, er kernen som følger.

1. Fuld opladning af et 3.7v Li-ion batteri er 4.2v. I vores tilfælde betyder 11.1v Li-ion batteri 3 x 3.7v batteri. Ved fuld opladning skal batteriet nå 12.6v, men af sikkerhedsmæssige årsager, vi vil oplade den op til 12,5v.

2. Når batteriet er ved at nå sin fulde opladning, falder strømmen fra batteriet fra opladeren til så lavt som 3% af den nominelle batterikapacitet. For eksempel er batterikapaciteten på min cell-pack 4400mah. Så når batteriet er fuldt opladet, vil den strøm, der trækkes af batteriet, nås som næsten 3% -5% af 4400ma, dvs. mellem 132 til 220ma. For sikkert at stoppe opladningen, stoppes opladningen, når den trukne strøm vil gå under 190ma (næsten 4% af nominel kapacitet).

3. Den samlede opladningsproces er opdelt i to hoveddele 1-Konstant strøm (CC-tilstand), 2-Konstant spænding (CV-tilstand). (Der er også topping-opladningstilstand, men vi implementerer det ikke i vores oplader som oplader underretter brugeren ved fuld opladning ved alarmering, så skal batteriet afbrydes fra opladeren)

CC -tilstand -

I CC -tilstand oplader opladeren batteriet med 0,5c eller 1c opladningshastighed. Hvad i helvede er det 0,5c/1c ???? For at være enkel, hvis din batterikapacitet er for eksempel 4400mah, så i CC -tilstand, 0,5c vil være 2200ma og 1c vil være 4400ma ladestrøm. 'c' står for opladning/afladningshastighed. Nogle batterier understøtter også 2c, dvs. i CC -tilstand, du kan indstille ladestrømmen op til 2xbatterikapacitet, men det er vanvittigt !!!!!

Men for at være sikker, vil jeg vælge ladestrøm på 1000ma for 4400mah batteri, dvs. 0,22c. I denne tilstand overvåger opladeren strømmen trukket af batteriet uafhængigt af opladningsspændingen. E Opladeren vil opretholde 1A ladestrøm ved at øge /reducere udgangsspændingen, indtil batteriets opladning når 12,4v.

CV -tilstand -

Nu når batterispændingen når til 12,4v, vil opladeren opretholde 12,6 volt (uafhængigt af strømmen trukket af batteriet) ved dens udgang. Nu stopper opladeren opladningscyklussen afhængigt af to ting. Hvis batterispændingen krydser 12,5v og også hvis ladestrømmen falder til under 190ma (4% af den nominelle batterikapacitet som tidligere forklaret), stoppes opladningscyklussen, og der lyder en summer.

Trin 2: Skematisk og forklaring

Lad os nu se på kredsløbets arbejde. Skematikken er vedhæftet i pdf -format i BIN.pdf -filen.

Kredsløbets indgangsspænding kan være 19/20v. Jeg har brugt en gammel bærbar oplader til at få 19v.

J1 er et terminalstik til at forbinde kredsløbet til indgangsspændingskilden. Q1, D2, L1, C9 danner en bukkonverter. Hvad i helvede er det ??? Dette er dybest set en DC til DC nedtrapningsomformer. I denne type af konverter, kan du opnå den ønskede udgangsspænding ved at variere driftscyklussen. Hvis du vil vide mere om bukkomformere, skal du besøge denne side. men for at være ærlig, er de helt forskellige fra teori. For at evaluere korrekte værdier af L1 & C9 for mine krav, det tog 3 dages prøve & fejl. Hvis du vil oplade forskellige batterier, så kan det være muligt, at disse værdier kommer til at ændre sig.

Q2 er drivertransistoren til strøm Mosfet Q1. R1 er en forspændingsmodstand for Q1. Vi vil fodre pwm -signalet i Q2's base for at styre udgangsspændingen. C13 er en afkoblingshætte.

Nu sendes outputtet derefter til Q3. Et spørgsmål kan stilles, at "Hvad er brugen af Q3 her ??". Svaret er ret simpelt, det fungerer som en simpel switch. When når vi måler batteriets spænding, vi vil lukke Q3 for at afbryde opladningsspændingsudgangen fra buck -omformeren. Q4 er driveren til Q3 med en forspændingsmodstand R3.

Bemærk, at der er en diode D1 i stien. Hvad dioden gør her i stien ?? Dette svar er også meget enkelt. Når kredsløbet vil blive afbrudt fra indgangseffekten, mens batteriet er tilsluttet udgangen, vil strømmen fra batteriet strøm i omvendt vej via kropsdioderne på MOSFET Q3 & Q1 og dermed får U1 og U2 batterispændingen ved deres indgange og driver kredsløbet fra batterispændingen. For at undgå dette bruges D1.

D1-udgangen føres derefter til den aktuelle sensorindgang (IP+). Dette er en hall-effektbasestrømsensor, dvs. den aktuelle følende del og udgangsdelen er isoleret. Den aktuelle sensorudgang (IP-) føres derefter til Her danner R5, RV1, R6 et spændingsdelerkredsløb til måling af batterispænding/udgangsspænding.

Atmega8's ADC bruges her til at måle batterispænding og strøm. ADC kan måle max 5v. Men vi måler max 20v (med noget frihøjde). For at reducere spændingen til ADC -området, en 4: 1 spændingsdeler bruges. Gryden (RV1) bruges til at finjustere/kalibrere. Jeg vil diskutere det senere. C6 afkobler hætten.

Output fra ACS714 nuværende sensor føjes også til atmega8s ADC0 pin. Via denne ACS714 sensor måler vi strømmen. Jeg har et breakout board fra pololu af 5A version og fungerer rigtig godt. Jeg vil tale om i næste trin på hvordan måles strømmen.

LCD'et er en normal 16x2 lcd. LCD'en, der bruges her, er konfigureret i 4 bit -tilstand, da pin -antallet på atmega8 er begrænset. RV2 er lysstyrkejusteringspotten til LCD'et.

Atmega8 er klokket til 16mhz med en ekstern krystal X1 med to afkoblingshætter C10/11. ADC -enheden på atmega8 drives af Avcc -stiften via en 10uH induktor. C7, C8 er afkoblingshætter forbundet til Agnd. Placer dem som tæt som muligt til Avcc og Aref tilsvarende, mens der laves PCB. Bemærk, at Agnd -stiften ikke er vist i kredsløbet. Agnd -stiften vil blive forbundet til jorden.

Jeg har konfigureret ADC'en for atmega8 til at bruge ekstern Vref, dvs. vi vil levere referencespændingen via Aref -stiften. Hovedårsagen bag dette for at opnå maksimal læsningsnøjagtighed. Den interne 2,56v referencespænding er ikke så meget stor i avrs. Derfor konfigurerede jeg det eksternt. Nu er her en ting at bemærke. 7805 (U2) leverer kun ACS714 -sensoren og Aref -stiften på atmega8. Dette er for at opretholde optimal nøjagtighed. ACS714 giver en stabil 2,5v udgangsspænding, når der er ingen strømgennemstrømning igennem det. Men for eksempel, hvis forsyningsspændingen på ACS714 vil blive sænket (siger 4,7v), så vil udgangsspændingen for ingen strøm (2,5v) også blive sænket, og det vil skabe upassende/fejlagtig strømaflæsning. Også som vi måler spændingen i forhold til Vref, så skal referencespændingen på Aref være fejlfri og stabil. Derfor har vi brug for en stabil 5v.

Hvis vi ville drive ACS714 & Aref fra U1, der leverer atmega8 og lcd, ville der være et væsentligt spændingsfald ved U1's udgang, og ampere- og spændingsaflæsning ville være forkert. Derfor bruges U2 her til at fjerne fejlen ved kun at levere en stabil 5v til Aref og ACS714.

Der trykkes på S1 for at kalibrere spændingsaflæsningen. 2 er reserveret til fremtidig brug. Du kan enten tilføje/ikke tilføje denne knap i henhold til dit valg.

Trin 3: Funktion …

Fungerer…
Fungerer…
Fungerer…
Fungerer…
Fungerer…
Fungerer…

Ved at blive tændt, vil atmega8 tænde for bukkomformeren ved at give 25% pwm -output ved Q2's base. Til gengæld vil Q2 derefter køre Q1, og buck -konverter vil blive startet. Q3 vil blive afbrudt for at afbryde buck -konverterens output og batteriet.atmega8 læser derefter batterispændingen via modstandsdeleren. Hvis der ikke er tilsluttet et batteri, viser atmega8 en meddelelse "Indsæt batteri" via 16x2 lcd og venter på batteriet. Hvis der derefter tilsluttes et batteri, vises atmega8 vil kontrollere spændingen. Hvis spændingen er lavere end 9v, viser atmega8 "Defekt batteri" på 16x2 lcd.

Hvis et batteri med mere end 9v findes, vil opladeren først gå ind i CC -tilstand og tænde for output mosfet Q3. Lader -tilstand (CC) opdateres for at blive vist med det samme. Hvis batterispændingen findes mere end 12,4v, så mega8 forlader straks CC -tilstanden og går ind i CV -tilstand. Hvis batterispændingen er mindre end 12,4v, vil mega8 opretholde 1A ladestrøm ved at øge/reducere udgangsspændingen fra bukkomformeren ved at variere pwm's arbejdscyklus. Ladestrømmen vil blive aflæst af ACS714 -strømføleren. Buck -udgangsspændingen, ladestrømmen, PWM -driftscyklussen opdateres periodisk i lcd'en.

. Batterispændingen kontrolleres ved at slukke for Q3 efter hvert 500ms interval. Batterispændingen opdateres straks til lcd'en.

Hvis batterispændingen bliver mere end 12,4 volt under opladning, forlader mega8 CC -tilstanden og går ind i CV -tilstand. Tilstandsstatus opdateres straks til lcd'en.

Derefter opretholder mega8 udgangsspændingen på 12,6 volt ved at variere bukkens driftscyklus. Her bliver batterispændingen kontrolleret efter hvert 1s interval. Så snart batterispændingen er større end 12,5v, så vil den blive kontrolleret hvis den trukne strøm er under 190ma. Hvis begge betingelser er opfyldt, stoppes opladningscyklussen ved permanent at slukke for Q3, og en summer vil lyde ved at tænde Q5. Også mega8 vil vise "Charge complete" via lcd.

Trin 4: Påkrævede dele

Dele påkrævet
Dele påkrævet

Nedenfor er angivet de nødvendige dele for at fuldføre projektet. Se datablade for pinout. Kun afgørende deldatabladlink leveres

1) ATMEGA8A x 1. (datablad)

2) ACS714 5A strømføler fra Pololu x 1 (jeg anbefaler stærkt at bruge sensoren fra Pololu, da de er bedst nøjagtige blandt alle andre sensorer jeg har brugt. Du kan finde den her). Pinout er beskrevet på billedet.

3) IRF9540 x 2. (datablad)

4) 7805 x 2 (anbefalet af Toshiba genuinespare, da de giver den mest stabile 5v output). (Datablad)

5) 2n3904 x 3. (datablad)

6) 1n5820 schottky x 2. (datablad)

7) 16x2 LCD x 1. (datablad)

8) 330uH/2A strøminduktor x 1 (anbefalet af coilmaster)

9) 10uH induktor x 1 (lille)

10) Modstande -(Alle modstande er 1% MFR -type)

150R x 3

680R x 2

1k x 1

2k2 x 1

10k x 2

22k x 1

5k pot x 2 (printkortmonteringstype)

11) Kondensatorer

Bemærk: Jeg brugte ikke C4. Det er ikke nødvendigt at bruge det, hvis du bruger strømforsyning til bærbar computer/reguleret strømforsyning som 19v strømkilde

100uF/25v x 3

470uF/25v x 1

1000uF/25v x 1

100n x 8

22p x 2

12) PCB -montering kortvarig trykkontakt x 2

13) 20v summer x 1

14) 2 -polet terminalblokstik x 2

15) Skab (jeg brugte et skab som dette.). Du kan bruge hvad du vil.

16) 19v bærbar strømforsyning (jeg ændrede en HP bærbar strømforsyning, du kan bruge enhver form for strømforsyning, som du vil. Hvis du vil bygge en, skal du besøge mine disse instruktioner.)

17) Mellemstore kølelegeme til U1 & Q1. Du kan bruge denne type. Oller du kan henvise til mine kredsløbsbilleder. Men sørg for at bruge kølelegeme til dem begge.

18) Bananstik - Kvinde (sort og rød) x 1 + han (sort og rød) (afhængigt af dit behov for stik)

Trin 5: Tid til at beregne ……

Beregning af spændingsmåling:

Den maksimale spænding, vi vil måle ved hjælp af atmega8 adc er 20v. Men atmega8's adc kan måle max på 5v. Så for at lave20v inden for 5v område, bruges en 4: 1 spændingsdeler her (som 20v/4 = 5v). Så vi kunne implementere det ved blot at bruge to modstande, men i vores tilfælde har jeg tilføjet en gryde mellem to faste modstande, så vi manuelt kan justere nøjagtigheden ved at dreje potten. Opløsningen på ADC er 10bit dvs. adc vil repræsentere 0v til 5v som 0 til 1023 decimaltal eller 00h til 3FFh. ('h' står for hex -tal). Referencen er indstillet til 5v eksternt via Aref -stiften.

Så den målte spænding = (adc -læsning) x (Vref = 5v) x (modstandsdelingsfaktor, dvs. 4 i dette tilfælde) / (maks. Adc -læsning dvs. 1023 for 10bit adc).

Antag, at vi får en adc -aflæsning på 512. Så vil den målte spænding være -

(512 x 5 x 4) / 1023 = 10v

Aktuel måleberegning:

ACS714 vil give 2,5v stabil udgang ved udpinden, når der ikke strømmer strøm fra IP+ mod IP-. Det vil give 185mv/A over 2,5v, dvs. hvis 3A strøm strømmer gennem kredsløbet, vil acs714 give 2,5v+(0,185 x 3) v = 3,055v, når den er ude.

Så den aktuelle måleformel er som følger -

Målt strøm = (((adc læsning)*(Vref = 5v)/1023) -2,5) /0,185.

for eksempel, adc -læsningen er 700, så vil den målte strøm være - (((700 x 5)/1023) - 2,5) /0,185 = 4,98A.

Trin 6: Softwaren

Softwaren er kodet i Winavr ved hjælp af GCC. Jeg har moduleret koden, dvs. jeg har oprettet forskellige biblioteker som adc -bibliotek, lcd -bibliotek osv. Adc -biblioteket indeholder de nødvendige kommandoer til opsætning og interaktion med adc. Lcd -biblioteket indeholder alle de funktioner til at køre 16x2 lcd. Du kan også bruge lcd_updated _library.c, da startsekvensen for lcd'en ændres i dette bibliotek. Hvis du vil bruge det opdaterede bibliotek, skal du omdøbe det til lcd.c

Main.c-filen indeholder de vigtigste funktioner. Opladningsprotokollen for li-ion er skrevet her. Definer venligst ref_volt i main.c ved at måle output fra U2 (7805) med et præcist multimeter for at få nøjagtige aflæsninger som beregningerne er baseret på det.

Du kan simpelthen brænde.hex -filen direkte i din mega8 for at omgå hovedpine.

For dem, der ønsker at skrive en anden opladningsprotokol, har jeg lagt nok kommentarer til, at selv et barn kan forstå, hvad der foregår for hver linieudførelse. Bare du skal skrive din egen protokol for forskellige batterityper. Hvis du bruger Li- ion med forskellig spænding, skal du kun ændre parametrene. (Selvom dette ikke er testet for anden li-ion/anden batteritype. Du skal selv regne det ud).

Jeg anbefaler kraftigt ikke at bygge dette kredsløb, hvis dette er dit første projekt, eller du er ny inden for mikrokontroller/strømelektronik.

Jeg har uploadet hver eneste fil, da den er i det originale format undtagen Makefile, da den skaber et problem at åbne. Jeg har uploadet den i.txt -format. Kopier bare indholdet og indsæt det i en ny Makefile og opbyg hele projektet. Voila …. du er klar til at brænde hex -filen.

Trin 7: Nok af teori….. lad os tage det

Nok med teori … lad os tage det
Nok med teori … lad os tage det
Nok med teori … lad os tage det
Nok med teori … lad os tage det
Nok med teori … lad os tage det
Nok med teori … lad os tage det
Nok med teori … lad os tage det
Nok med teori … lad os tage det

Her er billederne af min prototype fra breadboardet til færdiggjort i pcb. Gå gennem noterne på billederne for at vide mere. Billederne er arrangeret i serie fra start til slut.

Trin 8: Før første opladningscyklus ……. Kalibrer !!

Inden du oplader et batteri ved hjælp af opladeren, skal du kalibrere det først. Ellers vil det ikke være i stand til at oplade batteriet/overoplade det.

Der er to typer kalibrering 1) Spændingskalibrering. 2) Aktuel kalibrering. Trinene er som følger for at kalibrere.

Mål først U2's udgangsspænding. Definer den derefter i hovedc. Som ref_volt. Min var 5,01. Ændr den i henhold til din måling. Dette er det vigtigste nødvendige trin for spænding og strømkalibrering. For strømkalibrering er der ingenting alt andet er nødvendigt. Alt bliver taget hånd om af selve softwaren

Nu da du har brændt hex -filen efter at have defineret ref volt i main.c, dræb enhedens strøm.

. Mål nu batterispændingen, som du vil oplade ved hjælp af et multimeter, og tilslut batteriet til enheden.

Tryk nu på knappen S1, og hold den nede, og tænd for kredsløbet, mens knappen trykkes ned. Efter en kort forsinkelse på ca. 1 sek. Skal du slippe knappen S1. Bemærk, at enheden ikke vil gå ind i kalibreringstilstand, hvis du først tænder for kredsløbet, og tryk derefter på S1.

Nu kan du se på displayet, at kredsløbet er gået ind i kalibreringstilstand. En "cal -tilstand" vises på LCD'en sammen med batterispændingen. Match nu batterispændingen, der vises på LCD'en, med din multimeteraflæsning ved at dreje puljen. Når du er færdig, skal du trykke på S1 -kontakten igen, holde den i cirka et sekund og slippe den. Du vil være ude af kalibreringstilstanden. Nulstil igen opladeren ved at slukke og tænde den.

Ovenstående proces kan også udføres uden et batteri tilsluttet. Du skal tilslutte en ekstern strømkilde til udgangsterminalen (J2). Når du er gået i kalibreringstilstand, skal du kalibrere ved hjælp af gryden. Men denne gang skal du først afbryde den eksterne strømkilde og derefter trykke på S1 for at komme ud af kalibreringstilstanden. Dette er nødvendigt for først at afbryde den eksterne strømkilde for at undgå enhver form for fejl i nogen enheder.

Trin 9: Tænd efter kalibrering … nu er du klar til at rocke

Tænder efter kalibrering … nu er du klar til at rocke
Tænder efter kalibrering … nu er du klar til at rocke
Tændes efter kalibrering … nu er du klar til at rocke
Tændes efter kalibrering … nu er du klar til at rocke
Tændes efter kalibrering … nu er du klar til at rocke
Tændes efter kalibrering … nu er du klar til at rocke

Når kalibreringen er fuldført, kan du nu starte opladningsprocessen. Tilslut batteriet først, og tænd derefter for enheden. Resten bliver varetaget af opladeren.

Mit kredsløb fungerer 100% og testes. Men hvis du bemærker noget, så lad mig det vide. Du er også velkommen til at kontakte for spørgsmål.

Glad bygning.

Rgds // Sharanya

Anbefalede: