Inhoudsopgave:

Op microcontroller gebaseerde slimme batterijlader - Ajarnpa
Op microcontroller gebaseerde slimme batterijlader - Ajarnpa

Video: Op microcontroller gebaseerde slimme batterijlader - Ajarnpa

Video: Op microcontroller gebaseerde slimme batterijlader - Ajarnpa
Video: Review of 18650 4 channel Lithium Battery Capacity Tester, Charger and Discharge | WattHour 2024, November
Anonim
Op microcontroller gebaseerde slimme batterijlader
Op microcontroller gebaseerde slimme batterijlader
Op microcontroller gebaseerde slimme batterijlader
Op microcontroller gebaseerde slimme batterijlader
Op microcontroller gebaseerde slimme batterijlader
Op microcontroller gebaseerde slimme batterijlader

Het circuit dat u gaat zien, is een slimme batterijlader op basis van ATMEGA8A met automatische uitschakeling. Verschillende parameters worden weergegeven via een LCD tijdens verschillende laadtoestanden. Ook zal het circuit geluid maken via een zoemer wanneer het opladen is voltooid.

Ik heb de oplader gebouwd om mijn 11.1v/4400maH Li-ion-batterij op te laden. De firmware is in feite geschreven om dit specifieke batterijtype op te laden. U kunt uw eigen oplaadprotocol uploaden om aan uw behoeften te voldoen om andere batterijtypes op te laden.

Zoals u weet, zijn slimme batterijladers gemakkelijk verkrijgbaar op de markt. Maar als elektronische liefhebber heeft het altijd de voorkeur dat ik er zelf een bouw in plaats van er een te kopen die statische/onveranderlijke functies heeft. In deze module heb ik plannen om upgrade in de toekomst, dus ik heb daar ruimte over gelaten.

Toen ik mijn vorige 11.1v / 2200mah Li-ion-batterij voor het eerst kocht, zocht ik op internet naar doe-het-zelf-batterijladers met slimme bediening. Maar ik vond zeer beperkte middelen. Dus voor die tijd maakte ik een batterijlader op basis van LM317 en het werkte echt goed voor mij. Maar omdat mijn vorige batterij na verloop van tijd stierf (zonder reden), kocht ik een andere Li-ion-batterij van 11,1 v / 4400 mah. Maar deze keer was de vorige installatie onvoldoende om mijn nieuwe batterij op te laden. Om aan mijn vereiste, ik heb wat op internet gestudeerd en kon mijn eigen slimme oplader ontwerpen.

Ik deel dit omdat ik denk dat er veel hobbyisten / liefhebbers zijn die echt gepassioneerd zijn over het werken aan vermogenselektronica en microcontrollers en die ook een eigen slimme oplader willen bouwen.

Laten we eens kijken hoe je een Li-ion batterij oplaadt.

Stap 1: Oplaadprotocol voor een Li-ionbatterij

Om Li-ionbatterijen op te laden, moet aan bepaalde voorwaarden worden voldaan. Als we de voorwaarden niet handhaven, wordt de batterij ofwel te weinig opgeladen of wordt ze in brand gestoken (indien overladen) of permanent beschadigd.

Er is een hele goede website om alles te weten over verschillende soorten batterijen en natuurlijk ken je de naam van de website als je bekend bent met het werken met batterijen… Ja, ik heb het over batteryuniversity.com.

Hier is de link om de nodige details te weten om een Li-ion batterij op te laden.

Als je lui genoeg bent om al die theorieën te lezen, dan is de essentie als volgt.

1. Volledige lading van een 3.7v Li-ion-batterij is 4.2v. In ons geval betekent 11.1v Li-ion-batterij 3 x 3.7v-batterij. Voor volledige lading moet de batterij 12.6v bereiken, maar om veiligheidsredenen laadt het op tot 12.5v.

2. Wanneer de batterij bijna volledig is opgeladen, daalt de stroom die door de batterij van de lader wordt getrokken tot zo laag als 3% van de nominale batterijcapaciteit. De batterijcapaciteit van mijn mobiele pakket is bijvoorbeeld 4400 mAh. Dus wanneer de batterij volledig is opgeladen, zal de stroom die door de batterij wordt getrokken, worden bereikt als bijna 3% -5% van 4400 ma, dat wil zeggen tussen 132 en 220 ma. Om het opladen veilig te stoppen, wordt het opladen gestopt wanneer de getrokken stroom lager wordt 190ma (bijna 4% van de nominale capaciteit).

3. Het totale laadproces is verdeeld in twee hoofddelen 1-Constante stroom (CC-modus), 2-Constante spanning (CV-modus). (Er is ook een oplaadmodus, maar we zullen dat niet in onze oplader implementeren als de oplader zal de gebruiker op de hoogte stellen wanneer de batterij volledig is opgeladen door een alarm af te geven, dan moet de batterij worden losgekoppeld van de oplader)

CC-modus -

In de CC-modus laadt de lader de batterij op met een laadsnelheid van 0,5 c of 1 c. Wat is in godsnaam 0,5 c/1 c???? Om simpel te zijn, als uw batterijcapaciteit bijvoorbeeld 4400 mAh is, dan in CC-modus, 0,5 c zal 2200ma zijn en 1c zal 4400ma laadstroom zijn. 'c' staat voor laad-/ontlaadsnelheid. Sommige batterijen ondersteunen ook 2c, dwz in CC-modus kun je de laadstroom instellen tot 2x de batterijcapaciteit, maar dat is krankzinnig!!!!!

Maar om veilig te zijn, zal ik een laadstroom van 1000ma kiezen voor een 4400mah-batterij, dat wil zeggen 0.22c. In deze modus zal de oplader de stroom die door de batterij wordt getrokken, onafhankelijk van de laadspanning bewaken. /verlagen van de uitgangsspanning totdat de batterijlading 12.4v bereikt.

CV-modus -

Nu de batterijspanning 12,4 V bereikt, zal de lader 12,6 volt (onafhankelijk van de stroom die door de batterij wordt getrokken) aan zijn uitgang houden. Nu stopt de lader de laadcyclus afhankelijk van twee dingen. Als de batterijspanning 12,5 V kruist en ook als de laadstroom onder 190 ma daalt (4% van de nominale batterijcapaciteit zoals eerder uitgelegd), dan wordt de laadcyclus gestopt en klinkt er een zoemer.

Stap 2: Schema en uitleg

Laten we nu eens kijken naar de werking van het circuit. Het schema is in pdf-formaat bijgevoegd in het BIN.pdf-bestand.

De ingangsspanning van het circuit kan 19/20v zijn. Ik heb een oude laptoplader gebruikt om 19v te krijgen.

J1 is een terminalconnector om het circuit aan te sluiten op de ingangsspanningsbron. Q1, D2, L1, C9 vormt een buck-converter. Wat is dat in vredesnaam? Dit is in feite een DC naar DC step-down converter. In dit type van converter, kunt u de gewenste uitgangsspanning bereiken door de duty cycle te variëren. Als u meer wilt weten over buck-converters, bezoek dan deze pagina. Maar om eerlijk te zijn, ze zijn totaal anders dan de theorie. Om de juiste waarden van L1 & C9 voor mijn eisen, het duurde 3 dagen van trial & error. Als je verschillende batterijen gaat opladen, kan het zijn dat deze waarden gaan veranderen.

Q2 is de stuurtransistor voor vermogens-mosfet Q1. R1 is een voorspanningsweerstand voor Q1. We zullen het pwm-signaal in de basis van Q2 voeden om de uitgangsspanning te regelen. C13 is een ontkoppelingskap.

Nu wordt de uitvoer vervolgens naar Q3 gevoerd. Er kan een vraag worden gesteld: "Wat is het nut van Q3 hier??". Het antwoord is vrij eenvoudig, het werkt als een eenvoudige schakelaar. Wanneer we de spanning van de batterij zullen meten, zullen we Q3 uitschakelen om de laadspanningsuitgang van de buck-converter los te koppelen. Q4 is de driver voor Q3 met een voorspanningsweerstand R3.

Merk op dat er een diode D1 in het pad zit. Wat doet de diode hier in het pad?? Dit antwoord is ook heel eenvoudig. Wanneer het circuit wordt losgekoppeld van de ingangsstroom terwijl de batterij aan de uitgang is aangesloten, zal de stroom van de batterij stromen in het omgekeerde pad via de body-diodes van de MOSFET Q3 & Q1 en dus krijgen de U1 en U2 de batterijspanning aan hun ingangen en voeden ze het circuit van de batterijspanning. Om dit te voorkomen, wordt D1 gebruikt.

De uitgang van de D1 wordt dan naar de huidige sensoringang (IP+) gevoerd. Dit is een hall-effect basisstroomsensor, dwz het stroommeetgedeelte en het uitgangsgedeelte zijn geïsoleerd. De stroomsensoruitgang (IP-) wordt vervolgens naar de batterij. Hier vormen R5, RV1, R6 een spanningsdelercircuit om de batterijspanning / uitgangsspanning te meten.

De ADC van de atmega8 wordt hier gebruikt om de batterijspanning en -stroom te meten. De ADC kan maximaal 5v meten.: 1 spanningsdeler wordt gebruikt. De pot (RV1) wordt gebruikt voor fijnafstemming / kalibratie. Ik zal het later bespreken. C6 is de ontkoppelingsdop.

De uitgang van de ACS714-stroomsensor wordt ook naar de ADC0-pin van atmega8 gevoerd. Via deze ACS714-sensor zullen we de stroom meten. Ik heb een breakout-bord van pololu van de 5A-versie en werkt echt geweldig. Ik zal er in de volgende fase over praten hoe de stroom te meten.

Het LCD-scherm is een normaal 16x2 lcd-scherm. Het lcd-scherm dat hier wordt gebruikt, is geconfigureerd in 4-bits modus omdat het aantal pinnen van atmega8 beperkt is. RV2 is de helderheidsaanpassingspot voor het LCD-scherm.

De atmega8 is geklokt op 16 mhz met een extern kristal X1 met twee ontkoppelingskappen C10/11. De ADC-eenheid van de atmega8 wordt gevoed via de Avcc-pin via een 10uH-inductor. C7, C8 zijn ontkoppelingskappen die zijn aangesloten op Agnd. Plaats ze als zo dicht mogelijk bij de Avcc en Aref dienovereenkomstig tijdens het maken van PCB. Merk op dat de Agnd-pin niet wordt weergegeven in het circuit. De Agnd-pin wordt verbonden met aarde.

Ik heb de ADC van de atmega8 geconfigureerd om externe Vref te gebruiken, dwz we zullen de referentiespanning leveren via de Aref-pin. De belangrijkste reden hierachter om een maximale leesnauwkeurigheid te bereiken. De interne 2,56v-referentiespanning is niet zo geweldig in avrs. Daarom heb ik het extern geconfigureerd. Nu is hier iets op te merken. De 7805 (U2) levert alleen de ACS714-sensor en de Aref-pin van atmega8. Dit is om optimale nauwkeurigheid te behouden. De ACS714 geeft een stabiele 2,5 V-uitgangsspanning wanneer er loopt geen stroom doorheen. Maar als bijvoorbeeld de voedingsspanning van de ACS714 wordt verlaagd (zeg 4,7 v), dan wordt de nulstroomuitgangsspanning (2,5 v) ook verlaagd en ontstaat er een ongepaste / foutieve stroomaflezing. Ook omdat we de spanning meten met betrekking tot Vref, moet de referentiespanning op Aref foutloos en stabiel zijn. Daarom hebben we een stabiele 5v nodig.

Als we de ACS714 & Aref zouden voeden vanaf de U1 die de atmega8 en het lcd voedt, dan zou er een aanzienlijke spanningsval zijn bij de uitgang van U1 en zouden de ampère- en spanningsmeting onjuist zijn. Daarom wordt U2 hier gebruikt om de fout te elimineren door alleen een stabiele 5v te leveren aan Aref en ACS714.

S1 wordt ingedrukt om de spanningsmeting te kalibreren. S2 is gereserveerd voor toekomstig gebruik. U kunt deze knop naar keuze toevoegen/niet toevoegen.

Stap 3: Werking…

Functionerend…
Functionerend…
Functionerend…
Functionerend…
Functionerend…
Functionerend…

Bij het opstarten zal de atmega8 de buck-converter inschakelen door 25% pwm-uitvoer te geven aan de basis van de Q2. Op zijn beurt zal Q2 dan Q1 aansturen en de buck-converter wordt gestart. Q3 wordt uitgeschakeld om de output van de buck-converter los te koppelen en de batterij. De atmega8 leest dan de batterijspanning uit via de weerstandsdeler. Als er geen batterij is aangesloten, geeft de atmega8 via 16x2 lcd een melding "Insert battery" en wacht op de batterij. Als er dan een batterij is aangesloten, wordt de atmega8 zal de spanning controleren. Als de spanning lager is dan 9v, zal de atmega8 "Defecte batterij" weergeven op het 16x2 lcd-scherm.

Als een batterij met meer dan 9v wordt gevonden, gaat de lader eerst naar de CC-modus en schakelt de output mosfet Q3 in. De oplaadmodus (CC) wordt bijgewerkt om onmiddellijk weer te geven. Als de batterijspanning meer dan 12,4 v wordt gevonden, de mega8 verlaat onmiddellijk de CC-modus en gaat naar de CV-modus. Als de batterijspanning lager is dan 12,4 V, zal de mega8 1A laadstroom behouden door de uitgangsspanning van de buck-converter te verhogen/verlagen door de duty-cycle van de pwm te variëren. De laadstroom wordt gelezen door de ACS714-stroomsensor. De buck-uitgangsspanning, laadstroom, PWM-werkcyclus wordt periodiek bijgewerkt op het lcd-scherm.

. De batterijspanning wordt gecontroleerd door Q3 na elke 500 ms interval uit te schakelen. De batterijspanning wordt onmiddellijk bijgewerkt naar het lcd-scherm.

Als de batterijspanning tijdens het opladen meer dan 12,4 volt krijgt, verlaat de mega8 de CC-modus en gaat naar de CV-modus. De modusstatus wordt onmiddellijk bijgewerkt naar het lcd-scherm.

Dan zal de mega8 de uitgangsspanning van 12,6 volt handhaven door de duty cycle van de buck te variëren. Hier wordt de batterijspanning na elk interval van 1 s gecontroleerd. Zodra de batterijspanning groter is dan 12,5 v, wordt deze gecontroleerd als de getrokken stroom lager is dan 190 ma. Als aan beide voorwaarden is voldaan, wordt de laadcyclus gestopt door Q3 permanent uit te schakelen en klinkt er een zoemer door Q5 in te schakelen. Ook toont mega8 "Opladen voltooid" via het lcd-scherm.

Stap 4: Benodigde onderdelen

Benodigde onderdelen
Benodigde onderdelen

Hieronder vindt u de benodigde onderdelen om het project te voltooien. Raadpleeg de datasheets voor pinout. Alleen cruciale onderdelen datasheet link verstrekt

1) ATMEGA8A x 1.(gegevensblad)

2) ACS714 5A-stroomsensor van Pololu x 1 (ik raad ten zeerste aan om de sensor van Pololu te gebruiken, omdat deze de meest nauwkeurige is van alle andere sensoren die ik heb gebruikt. Je kunt hem hier vinden). Pinout wordt beschreven in de afbeelding.

3) IRF9540 x 2. (gegevensblad)

4) 7805 x 2 (aanbevolen door Toshiba origineel reserveonderdeel omdat ze de meest stabiele 5v-uitvoer geven). (gegevensblad)

5) 2n3904 x 3. (gegevensblad)

6) 1n5820 schottky x 2. (gegevensblad)

7) 16x2 LCD x 1. (gegevensblad)

8) 330uH/2A stroominductor x 1 (aanbevolen door coilmaster)

9) 10uH spoel x 1 (klein)

10) Weerstanden - (Alle weerstanden zijn van het MFR-type van 1%)

150R x 3

680R x 2

1k x 1

2k2 x 1

10k x 2

22k x 1

5k pot x 2 (pcb-montagetype)

11) Condensatoren

Opmerking: ik heb C4 niet gebruikt. Het is niet nodig om het te gebruiken als u een laptopvoeding / gereguleerde voeding als 19v-voedingsbron gebruikt

100uF/25v x 3

470uF/25v x 1

1000uF/25v x 1

100n x 8

22p x 2

12) PCB-montage tijdelijke drukschakelaar x 2"

13) 20v zoemer x 1

14) 2-pins aansluitblokconnector x 2

15) Kast (ik heb zo'n kast gebruikt.). Je kunt gebruiken wat je maar wilt.

16) 19v-laptopvoeding (ik heb een hp-laptopvoeding aangepast, je kunt elk type voeding gebruiken zoals je wilt. Als je er een wilt bouwen, bezoek dan mijn deze instructables.)

17) Middelgrote koellichaam voor U1 & Q1. U kunt dit type gebruiken. Of u kunt verwijzen naar mijn circuitfoto's. Maar zorg ervoor dat u voor beide een koellichaam gebruikt.

18) Banaanconnector - vrouwelijk (zwart en rood) x 1 + mannelijk (zwart en rood) (afhankelijk van uw behoefte aan connectoren)

Stap 5: Tijd om te berekenen……

Berekening spanningsmeting:

De maximale spanning, die we zullen meten met behulp van de atmega8 adc is 20v. Maar de adc van atmega8 kan maximaal 5v meten. Dus om 20v binnen het bereik van 5v te maken, wordt hier een 4:1-spanningsdeler gebruikt (als 20v/4=5v). Dus we zouden dat kunnen implementeren door simpelweg twee weerstanden te gebruiken, maar in ons geval heb ik een potmeter toegevoegd tussen twee vaste weerstanden, zodat we de nauwkeurigheid handmatig kunnen aanpassen door aan de pot te draaien. De resolutie van de ADC is 10 bit, dat wil zeggen de adc vertegenwoordigt de 0v tot 5v als 0 tot 1023 decimale getallen of 00h tot 3FFh.('h' staat voor hexadecimale getallen). De referentie wordt extern ingesteld op 5v via de Aref-pin.

Dus de gemeten spanning = (adc-waarde) x (Vref = 5v) x (weerstandsdelerfactor, d.w.z. 4 in dit geval) / (max. adc-waarde, d.w.z. 1023 voor 10bit adc).

Stel dat we een adc-waarde van 512 krijgen. Dan is de gemeten spanning -

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

Huidige meting berekening:

De ACS714 geeft een stabiele output van 2,5 V aan de uit-pin wanneer er geen stroom van IP+ naar IP- zal vloeien. 2.5v+(0.185 x 3)v = 3.055v op de pin.

Dus de huidige meetformule is als volgt -

Gemeten stroom=(((adc uitlezing)*(Vref=5v)/1023)-2.5)/0.185.

bijvoorbeeld, de adc-waarde is 700, dan is de gemeten stroom - (((700 x 5)/1023) - 2,5)/0,185 = 4,98A.

Stap 6: De software

De software is gecodeerd in Winavr met behulp van GCC. Ik heb de code gemodulariseerd, dwz ik heb verschillende bibliotheken gemaakt, zoals adc-bibliotheek, lcd-bibliotheek enz. De adc-bibliotheek bevat de nodige opdrachten voor het instellen en interactie met de adc. De lcd-bibliotheek bevat alle functies om de 16x2 lcd aan te sturen. U kunt ook lcd_updated _library.c gebruiken omdat de opstartvolgorde van de lcd in deze bibliotheek wordt gewijzigd. Als u de bijgewerkte bibliotheek wilt gebruiken, hernoem deze dan met lcd.c

Het main.c-bestand bevat de belangrijkste functies. Het oplaadprotocol voor li-ion is hier geschreven. Definieer de ref_volt in de main.c door de uitvoer van U2(7805) te meten met een nauwkeurige multimeter om nauwkeurige metingen te krijgen als berekeningen zijn erop gebaseerd.

U kunt het.hex-bestand eenvoudig rechtstreeks in uw mega8 branden om de hoofdpijn te omzeilen.

Voor degenen die nog een oplaadprotocol willen schrijven, heb ik genoeg opmerkingen geplaatst waardoor zelfs een kind kan begrijpen wat er aan de hand is voor elke lijnuitvoering. U hoeft alleen uw eigen protocol te schrijven voor verschillende batterijtypes. Als u Li- ion van verschillende spanning, hoeft u alleen de parameters te wijzigen. (Hoewel dit niet is getest voor andere li-ion / ander batterijtype. U moet het zelf uitzoeken).

Ik raad ten zeerste aan om dit circuit niet te bouwen, als dit je eerste project is of als microcontroller/vermogenselektronica nieuw voor je is.

Ik heb elk bestand geüpload in de originele indeling, behalve de Makefile omdat het problemen veroorzaakt om te openen. Ik heb het geüpload in.txt-indeling. Kopieer de inhoud en plak deze in een nieuwe Makefile en bouw het hele project. Voila….u bent klaar om het hex-bestand te branden.

Stap 7: Genoeg theorie…..laten we het bouwen

Genoeg theorie…..laten we het doen
Genoeg theorie…..laten we het doen
Genoeg theorie…..laten we het doen
Genoeg theorie…..laten we het doen
Genoeg theorie…..laten we het doen
Genoeg theorie…..laten we het doen
Genoeg theorie…..laten we het doen
Genoeg theorie…..laten we het doen

Hier zijn de foto's van mijn prototype van breadboard tot gefinaliseerd in pcb. Ga door de aantekeningen van de foto's om meer te weten. De foto's zijn serieel gerangschikt van begin tot eind.

Stap 8: Vóór de eerste oplaadcyclus … Kalibreer !!

Voordat u een batterij oplaadt met de oplader, moet u deze eerst kalibreren. Anders kan de batterij niet worden opgeladen/overladen.

Er zijn twee soorten kalibratie 1) Spanningskalibratie. 2) Huidige kalibratie. De stappen zijn als volgt om te kalibreren.

Meet eerst de uitgangsspanning van de U2. Definieer deze vervolgens in main.c als ref_volt. Mine was 5.01. Wijzig het volgens uw meting. Dit is de belangrijkste noodzakelijke stap voor kalibratie van spanning en stroom. Voor huidige kalibratie, niets anders is nodig. Alles wordt geregeld door de software zelf

Nu je het hex-bestand hebt gebrand nadat je de ref volt in main.c hebt gedefinieerd, schakel je de kracht van het apparaat uit.

Meet nu de accuspanning die u gaat opladen met behulp van een multimeter en sluit de accu aan op het apparaat.

Druk nu op de S1-knop en houd deze ingedrukt en schakel het circuit in terwijl de knop wordt ingedrukt. Laat de knop S1 na een korte vertraging van ongeveer 1 s los. S1.

Nu kunt u op het display zien dat het circuit in de kalibratiemodus is gezet. Er wordt een "cal-modus" weergegeven op het lcd-scherm samen met de batterijspanning. Stem nu de batterijspanning op het lcd-scherm af op uw multimeter-uitlezing door aan de pot te draaien. Als u klaar bent, drukt u nogmaals op de S1-schakelaar, houdt u deze ongeveer een seconde vast en laat u deze los. U bent uit de kalibratiemodus. Reset de oplader opnieuw door hem uit en aan te zetten.

Het bovenstaande proces kan ook worden uitgevoerd zonder dat er een batterij is aangesloten. U moet een externe voedingsbron aansluiten op de uitgangsterminal (J2). Nadat u in de kalibratiemodus bent gegaan, kalibreert u met behulp van de pot. Maar deze keer koppelt u eerst de externe voedingsbron los en drukt u vervolgens op S1 om uit de kalibratiemodus te komen. Dit is nodig om eerst de externe voedingsbron los te koppelen om elk type storing van eenheden te voorkomen.

Stap 9: Inschakelen na kalibratie … nu bent u klaar om te rocken

Inschakelen na kalibratie … nu bent u klaar om te rocken
Inschakelen na kalibratie … nu bent u klaar om te rocken
Inschakelen na kalibratie … nu bent u klaar om te rocken
Inschakelen na kalibratie … nu bent u klaar om te rocken
Inschakelen na kalibratie … nu bent u klaar om te rocken
Inschakelen na kalibratie … nu bent u klaar om te rocken

Nu de kalibratie is voltooid, kunt u het laadproces starten. Sluit eerst de batterij aan en schakel vervolgens het apparaat in. De oplader zorgt voor de rest.

Mijn circuit is 100% werkend en getest. Maar als je iets opmerkt, laat het me dan weten. Neem ook gerust contact op voor eventuele vragen.

Gelukkig gebouw.

Rgds//Sharanya

Aanbevolen: