INHOUDSOPGAWE:

Mikrokontroleerder -gebaseerde slimlaaier: 9 stappe (met foto's)
Mikrokontroleerder -gebaseerde slimlaaier: 9 stappe (met foto's)

Video: Mikrokontroleerder -gebaseerde slimlaaier: 9 stappe (met foto's)

Video: Mikrokontroleerder -gebaseerde slimlaaier: 9 stappe (met foto's)
Video: I Went to a RUSSIAN ELECTRIC TRANSPORT Expo 2024, November
Anonim
Mikrokontroleerder -gebaseerde slim batterylaaier
Mikrokontroleerder -gebaseerde slim batterylaaier
Mikrokontroleerder -gebaseerde slim batterylaaier
Mikrokontroleerder -gebaseerde slim batterylaaier
Mikrokontroleerder -gebaseerde slim batterylaaier
Mikrokontroleerder -gebaseerde slim batterylaaier

Die stroombaan wat u op die punt staan te sien, is 'n slim batterylaaier gebaseer op ATMEGA8A met outomatiese onderbreking. Verskillende parameters word via verskillende LCD -toestelle tydens verskillende laaistoestande gewys.

Ek het die laaier basies gebou om my 11.1v/4400maH Li-ion-battery te laai. Die firmware is basies geskryf om hierdie spesifieke batterytipe te laai. U kan u eie laaiprotokol laai om aan u behoeftes om ander batterytipes te laai, te voldoen.

Soos u weet, is slim batterylaaiers geredelik beskikbaar in die markte, maar as 'n elektroniese entoesias, is dit altyd die beste vir my om my eie te bou eerder as om een te koop wat statiese/onveranderlike funksies het. In hierdie module het ek planne om opgradeer in die toekoms, so ek het ruimte daaroor.

Toe ek my vorige 11.1v/2200mah Li-ion-battery koop, soek ek na selfoonlaaiers met slim beheer op die internet, maar ek vind baie beperkte hulpbronne. baie goed vir my. Maar omdat my vorige battery mettertyd dood is (sonder rede), het ek 'n ander Li-ion battery van 11.1v/4400mah gekoop. Maar hierdie keer was die vorige opstelling onvoldoende om my nuwe battery te laai. Ek het 'n bietjie op die internet gestudeer en ek kon my eie slimlaaier ontwerp.

Ek deel dit omdat ek dink dat daar baie stokperdjies/entoesiaste is wat baie passievol is om aan elektriese elektronika en mikrobeheerder te werk en ook 'n behoefte het om 'n eie slim laaier te bou.

Kom ons kyk vinnig hoe u 'n Li-ion-battery laai.

Stap 1: Laai protokol vir 'n Li-ion battery

Om 'n Li-ion-battery te laai, moet aan sekere voorwaardes voldoen word. As ons nie die voorwaardes handhaaf nie, word die battery te min gelaai, óf dit word aan die brand gesteek (as dit te veel gelaai word) of dit sal permanent beskadig word.

Daar is 'n baie goeie webwerf om alles wat nodig is oor verskillende soorte batterye te weet, en u ken natuurlik die naam van die webwerf as u vertroud is met die werk aan batterye … Ja, ek praat van batteryuniversity.com.

Hier is die skakel om die nodige besonderhede te ken om 'n Li-ion battery te laai.

As u lui genoeg is om al die teorieë te lees, is die essensie soos volg.

1. Die volle lading van 'n 3.7v Li-ion battery is 4.2v. In ons geval beteken 11.1v Li-ion battery 3 x 3.7v battery. Vir volle lading moet die battery 12.6v bereik, maar om veiligheidsredes laai dit tot 12.5v.

2. As die battery op die punt is om die volle lading te bereik, daal die stroom wat deur die battery uit die laaier getrek word tot so laag as 3% van die nominale batterykapasiteit. Byvoorbeeld, die batterykapasiteit van my selfoon is 4400mah. As die battery vol gelaai is, word die stroom wat deur die battery getrek word, bereik tot byna 3% -5% van 4400ma, dws tussen 132 en 220ma. Om die lading veilig te stop, word die laai gestaak wanneer die getekende stroom onder 190ma (byna 4% van die nominale kapasiteit).

3. Die totale laaiproses is verdeel in twee hoofdele: 1-konstante stroom (CC-modus), 2-konstante spanning (CV-modus). sal die gebruiker in kennis stel van die volle laai deur alarm te maak, dan moet die battery van die laaier ontkoppel word)

CC -modus -

In die CC -modus laai die laaier die battery met 'n laagsnelheid van 0,5c of 1c. Nou wat de hel is 0,5c/1c ???? Om eenvoudig te wees, as u batterykapasiteit ongeveer 4400mah is, dan in CC -modus, 0,5c sal 2200ma wees en 1c sal laadstroom wees van 4400ma. 'c' staan vir laai-/ontladingsnelheid. Sommige batterye ondersteun ook 2c, dws in CC -modus, u kan die laadstroom instel tot 2x batterykapasiteit, maar dit is kranksinnig !!!!!

Maar om veilig te wees, kies ek 'n laadstroom van 1000ma vir 'n 4400mah -battery, dws 0.22c. /verlaag die uitsetspanning totdat die batterylading tot 12,4v bereik.

CV -modus -

Aangesien die batteryspanning tot 12,4v bereik, hou die laaier 12,6 volt (onafhanklik van die stroom wat deur die battery getrek word) by sy uitgang. Nou sal die laaier die laaisiklus stop, afhangende van twee dinge. en ook as die laadstroom onder 190ma daal (4% van die nominale batterykapasiteit soos voorheen uiteengesit), dan word die laaisiklus gestaak en 'n gonser klink.

Stap 2: Skematiese en verduideliking

Kom ons kyk nou na die werking van die stroombaan. Die skema is in pdf -formaat aangeheg in die BIN.pdf -lêer.

Die ingangsspanning van die kring kan 19/20v wees. Ek het 'n ou skootrekenaarlaaier gebruik om 19v te kry.

J1 is 'n terminale aansluiting om die stroombaan aan die ingangsspanningsbron te koppel. Q1, D2, L1, C9 vorm 'n boksomskakelaar. Wat de hel is dit ??? van die omskakelaar, kan u die gewenste uitgangsspanning bereik deur die dienssiklus te verander. As u meer wil weet oor bokomskakelaars, besoek dan hierdie bladsy. maar om eerlik te wees, verskil dit heeltemal van die teorie. C9 vir my vereistes, dit het drie dae van proef en fout geneem. As u verskillende batterye gaan laai, kan dit moontlik wees dat hierdie waardes gaan verander.

Q2 is die dryftransistor vir die krag Mosfet Q1. R1 is 'n voorspanningsweerstand vir Q1. Ons sal die pwm -sein in die basis van Q2 voed om die uitsetspanning te beheer. C13 is 'n ontkoppelingskap.

Nou word die uitset dan na Q3 gevoer. 'N Vraag kan gevra word: "Wat is die nut van Q3 hier ??". Die antwoord is redelik eenvoudig, dit werk soos 'n eenvoudige skakelaar. Wanneer ons die spanning van die battery sal meet, sal ons Q3 afskakel om die laaispanningsuitset van die boksomskakelaar te ontkoppel. Q4 is die drywer vir Q3 met 'n voorspanningsweerstand R3.

Let daarop dat daar 'n diode D1 in die pad is. Wat die diode hier in die pad doen ?? Hierdie antwoord is ook baie eenvoudig. Wanneer die kring van die ingangskrag ontkoppel word terwyl die battery by die uitgang aansluit, sal die stroom van die battery vloei in die omgekeerde baan via die liggaamsdiodes van die MOSFET Q3 & Q1 en dus sal die U1 en U2 die batteryspanning by hul insette kry en die kring van die batteryspanning aanskakel. Om dit te vermy, word D1 gebruik.

Die uitset van die D1 word dan na die huidige sensorinvoer (IP+) gevoer. Dit is 'n gang-effek basis sensor, dws die huidige sensing deel en die uitset gedeelte word geïsoleerd. Die huidige sensor uitset (IP-) word dan na die Hier vorm R5, RV1, R6 'n spanningsverdelerkring om die batteryspanning/uitsetspanning te meet.

Die ADM van die atmega8 word hier gebruik om die batteryspanning en -stroom te meet. Die ADC kan 'n maksimum van 5v. meet, maar ons sal 'n maksimum van 20v meet (met 'n sekere hoogte). Om die spanning na die ADC -reeks te verminder, word 'n 4: 1 spanningsverdeler word gebruik. Die pot (RV1) word gebruik om die kalibrasie te verfyn. Ek sal dit later bespreek. C6 is om die dop te ontkoppel.

Die uitset van die ACS714 -sensorsensor word ook gevoer na die ADC0 -pen van atmega8. Met hierdie ACS714 -sensor sal ons die stroom meet. Ek het 'n uitbreekbord van pololu van die 5A -weergawe en werk baie goed. Ek sal in die volgende fase daaroor praat hoe om die stroom te meet.

Die LCD is 'n normale 16x2 lcd. Die lcd wat hier gebruik word, is opgestel in 'n 4 bis -modus, aangesien die speldtelling van atmega8 beperk is. RV2 is die helderheidsaanpassingspot vir die LCD.

Die atmega8 word geklok op 16mhz met 'n eksterne kristal X1 met twee ontkoppelingsdoppies C10/11. Die ADC -eenheid van die atmega8 word via die Avcc -pen deur 'n 10uH -induktor aangedryf. C7, C8 is ontkoppelingskappe wat met Agnd verbind is. Plaas hulle as na aan die Avcc en Aref ooreenstemmend terwyl u PCB maak. Let op dat die Agnd -pen nie in die kring getoon word nie.

Ek het die ADC van die atmega8 gekonfigureer om eksterne Vref te gebruik, dws ons sal die verwysingspanning verskaf via die Aref -pen. Die hoofrede hiervoor is om die maksimum moontlike leesnauwkeurigheid te bereik. Daarom het ek dit ekstern gekonfigureer. Hier is 'n ding om op te let. Die 7805 (U2) verskaf slegs die ACS714 -sensor en die Aref -pen van atmega8. Dit is om optimale akkuraatheid te handhaaf. Die ACS714 gee 'n stabiele uitgangsspanning van 2.5v daar is geen stroomvloei daardeur nie, maar as die voedingspanning van die ACS714 verlaag word (sê 4.7v), sal die uitstroomspanning (2.5v) ook verlaag word en dit sal onvanpaste/foutiewe stroomlesing veroorsaak. As ons die spanning met betrekking tot Vref meet, moet die verwysingsspanning op Aref foutvry en stabiel wees. Daarom benodig ons 'n stabiele 5v.

As ons die ACS714 & Aref van die U1 wat die atmega8 en die lcd verskaf, van krag sal voorsien, dan is daar 'n aansienlike spanningsval by U1 se uitset, en die ampere en spanningslesing is verkeerd. Daarom word U2 hier gebruik om die fout uit te skakel deur slegs 'n stabiele 5v aan Aref en ACS714 te verskaf.

Daar word op S1 gedruk om die spanningslesing te kalibreer.

Stap 3: Werk …

Werkend …
Werkend …
Werkend …
Werkend …
Werkend …
Werkend …

As die atmega8 aangeskakel word, word die boksomskakelaar aangeskakel deur 25% pwm -uitset op die basis van die tweede kwartaal te gee. Op sy beurt sal Q2 dan Q1 dryf en sal die boksomskakelaar begin word. en die battery. Die atmega8 lees dan die batteryspanning via die weerstandsverdeler. As geen battery gekoppel is nie, dan wys die atmega8 'n boodskap "Plaas battery" via 16x2 lcd en wag vir die battery. As 'n battery dan aangeheg word, sal die atmega8 sal die spanning kontroleer. As die spanning laer is as 9v, sal die atmega8 'Foutiewe battery' op die 16x2 lcd wys.

As 'n battery met meer as 9v gevind word, sal die laaier eers in die CC -modus ingaan en die output mosfet Q3 aanskakel. Laaiermodus (CC) sal opgedateer word om onmiddellik weer te gee. As die batteryspanning meer as 12.4v word, dan die mega8 verlaat onmiddellik die CC -modus en gaan in die CV -modus. As die batteryspanning minder as 12,4v is, sal die mega8 1A laadstroom onderhou deur die uitsetspanning van die boksomskakelaar te verhoog/te verminder deur die werksiklus van die pwm te wissel Die laadstroom sal gelees word deur die ACS714 huidige sensor.

. Die batteryspanning sal nagegaan word deur Q3 uit te skakel na elke 500ms interval. Die batteryspanning word onmiddellik opgedateer na die lcd.

As die batteryspanning meer as 12,4 volt word tydens die laai, verlaat die mega8 die CC -modus en gaan dit in die CV -modus. Modustatus word onmiddellik opgedateer na die lcd.

Dan behou die mega8 die uitgangsspanning van 12,6 volt deur die werksiklus van die bok te verander. Hier sal die batteryspanning na elke 1 sekonde se interval nagegaan word. as die getekende stroom onder 190ma is. As aan albei die voorwaardes voldoen word, word die laaisiklus gestaak deur Q3 permanent af te skakel en sal 'n zoemer klink deur Q5 aan te skakel. Ook mega8 sal "Laai voltooi" via die lcd wys.

Stap 4: Onderdele benodig

Onderdele benodig
Onderdele benodig

Hieronder is die vereiste onderdele vir die voltooiing van die projek. Raadpleeg die gegewensblaaie vir die uiteensetting.

1) ATMEGA8A x 1. (datablad)

2) ACS714 5A huidige sensor van Pololu x 1 (ek beveel sterk aan om die sensor van Pololu te gebruik, aangesien hulle die beste akkuraat is onder alle ander sensors wat ek gebruik het. U kan dit hier vind). Pinout word in die prent beskryf.

3) IRF9540 x 2. (datablad)

4) 7805 x 2 (aanbeveel deur Toshiba genuinespare, aangesien dit die stabielste 5V -uitset lewer). (Datablad)

5) 2n3904 x 3. (datablad)

6) 1n5820 schottky x 2. (datablad)

7) 16x2 LCD x 1. (datablad)

8) 330uH/2A kraginduktor x 1 (aanbeveel deur coilmaster)

9) 10uH induktor x 1 (klein)

10) Weerstands -(Alle weerstande is 1% MFR -tipe)

150R x 3

680R x 2

1k x 1

2k2 x 1

10k x 2

22k x 1

5k pot x 2 (PCB -tipe)

11) Kapasitors

Nota: ek het nie C4 gebruik nie. Dit is nie nodig om dit te gebruik as u 'n skootrekenaarvoeding/'n gereguleerde kragbron as 'n 19V -kragbron gebruik nie

100uF/25v x 3

470uF/25v x 1

1000uF/25v x 1

100n x 8

22p x 2

12) kortstondige drukknop x2 op die printplaat

13) 20v Buzzer x 1

14) 2 -polige aansluitblok -aansluiting x 2

15) Kabinet (ek het 'n kabinet soos hierdie gebruik.) U kan gebruik wat u wil.

16) 19v -kragtoevoer vir 'n skootrekenaar (ek het 'n skootrekenaarvoedingstelsel van HP aangepas, u kan enige tipe kragbron gebruik soos u wil. As u een wil bou, besoek dan my instruksies.)

17) Koelbak van medium grootte vir U1 en Q1. Jy kan hierdie tipe gebruik. Of jy kan na my stroombaanfoto's verwys. Maar maak seker dat jy 'n hittebak gebruik vir albei.

18) Piesangverbinder - vroulik (swart en rooi) x 1 + manlik (swart en rooi) (afhangende van die behoefte aan verbindings)

Stap 5: Tyd om te bereken ……

Spanning meting berekening:

Die maksimum spanning wat ons sal meet met behulp van die atmega8 adc is 20v. Maar die adc van atmega8 kan 'n maksimum van 5v meet. Om 20v binne 5v -bereik te maak, word hier 'n 4: 1 spanningsverdeler gebruik (as 20v/4 = 5v). Dus kan ons dit implementeer deur eenvoudig twee weerstande te gebruik, maar in ons geval het ek 'n pot tussen twee vaste weerstande bygevoeg sodat ons die akkuraatheid met die hand kan aanpas deur die pot te draai. sal die 0v tot 5v verteenwoordig as 0 tot 1023 desimale getalle of 00h tot 3FFh. ('h' staan vir heksgetalle). Die verwysing word ekstern op 5v gestel via die Aref -pen.

Dus is die gemete spanning = (adc -lesing) x (Vref = 5v) x (resistorverdelingsfaktor, d.w.s. 4 in hierdie geval) / (maksimum adc -lesing, d.w.s. 1023 vir 10bit adc).

Gestel ons kry 'n adc -lesing van 512. Dan sal die gemete spanning -

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

Huidige meting berekening:

Die ACS714 sal 'n stabiele uitset van 2.5v lewer by die uitpen wanneer geen stroom van IP+ na IP- sal vloei nie. Dit sal 185mv/A oor die 2.5v gee, dit wil sê, as 3A-stroom deur die stroombaan vloei, sal die acs714 gee 2.5v+(0.185 x 3) v = 3.055v by die uitpen.

Die huidige meetformule is dus soos volg -

Gemete stroom = (((adc lees)*(Vref = 5v)/1023) -2.5) /0.185.

die adc -lesing is byvoorbeeld 700, dan is die gemete stroom - (((700 x 5)/1023) - 2.5) /0.185 = 4.98A.

Stap 6: Die sagteware

Die sagteware is in Winavr gekodeer met behulp van GCC. Ek het die kode gemodulariseer, dws ek het verskillende biblioteke soos ADC -biblioteek, LCD -biblioteek, ens geskep. funksies om die 16x2 lcd te bestuur. U kan ook die lcd_updated _library.c gebruik, aangesien die opstartvolgorde van die lcd in hierdie biblioteek gewysig word. As u die bygewerkte biblioteek wil gebruik, hernoem dit dan met lcd.c

Die main.c-lêer bevat die belangrikste funksies. Die laaiprotokol vir li-ion word hier geskryf. Definieer die ref_volt in die main.c deur die uitset van U2 (7805) te meet met 'n presiese multimeter om akkurate metings te kry as die berekeninge is daarop gebaseer.

U kan die.hex -lêer direk in u mega8 verbrand om die hoofpyn te omseil.

Vir diegene wat 'n ander heffingsprotokol wil skryf, het ek genoeg kommentaar gelewer waarmee selfs 'n kind kan verstaan wat aangaan vir elke reëluitvoering. Jy moet net jou eie protokol vir die verskillende batterytipes skryf. As jy Li- gebruik io van verskillende spanning, moet u slegs die parameters verander. (Alhoewel dit nie getoets word vir 'n ander tipe li-ion/ander batterye nie, moet u dit self uitwerk).

Ek beveel sterk aan om hierdie stroombaan nie te bou nie, as dit u eerste projek is, of as u nog nie 'n nuwe mikrobeheerder/kragelektronika is nie.

Ek het elke lêer opgelaai omdat dit oorspronklik is, behalwe die Makefile, aangesien dit 'n probleem skep om oop te maak. Ek het dit in.txt -formaat opgelaai. Kopieer net die inhoud en plak dit in 'n nuwe Makefile en bou die hele projek. Voila …. Jy is gereed om die hex -lêer te verbrand.

Stap 7: Genoeg van die teorie … laat ons dit buld

Genoeg van die teorie….. laat ons dit buld
Genoeg van die teorie….. laat ons dit buld
Genoeg van die teorie….. laat ons dit buld
Genoeg van die teorie….. laat ons dit buld
Genoeg van die teorie….. laat ons dit buld
Genoeg van die teorie….. laat ons dit buld
Genoeg van die teorie….. laat ons dit buld
Genoeg van die teorie….. laat ons dit buld

Hier is die foto's van my prototipe van broodbord tot afgehandel in pcb. Gaan deur die aantekeninge van die foto's om meer te weet. Die foto's is in reekse gerangskik van begin tot einde.

Stap 8: Voor die eerste laaisiklus …. Kalibreer !!

Voordat u 'n battery met die laaier laai, moet u dit eers kalibreer, anders kan u die battery nie laai/oorlaai nie.

Daar is twee soorte kalibrasie 1) Spanningskalibrasie. 2) Huidige kalibrasie. Stappe is soos volg om te kalibreer.

Meet eers die uitgangsspanning van die U2. Definieer dit dan in die hoofstroom c as ref_volt. Myne was 5,01. Verander dit volgens u meting. Dit is die belangrikste stap vir spanning en stroomkalibrasie. Vir huidige kalibrasie, niks alles word deur die sagteware self versorg

Terwyl u die hex -lêer verbrand het nadat u die ref volt in main.c gedefinieer het, maak die krag van die eenheid dood.

. Meet nou die batteryspanning wat u sal laai met 'n multimeter en koppel die battery aan die eenheid.

Druk nou op die S1 -knoppie en hou dit ingedruk en skakel die stroombaan aan terwyl die knoppie ingedruk word. Laat die knoppie S1 na 'n kort vertraging los. Let daarop dat die eenheid nie in die kalibreringsmodus sal ingaan as u eers die stroombaan aanskakel nie, en druk dan op S1.

Nou kan u op die skerm sien dat die kring in die kalibreringsmodus ingeskakel is. 'N "Cal -modus" sal saam met die batteryspanning in die lcd vertoon word. Pas nou die batteryspanning wat op die lcd aangedui word met u multimeterlesing aan deur die pot te draai Nadat u klaar is, druk weer op die S1 -skakelaar, hou dit ongeveer 'n sekonde ingedruk en laat dit los.

Bogenoemde proses kan ook uitgevoer word sonder dat 'n battery gekoppel is. U moet 'n eksterne kragbron aansluit op die uitgangsklem (J2). Kalibreer met behulp van die pot nadat u in die kalibreringsmodus ingegaan het, maar hierdie keer moet u eers die eksterne kragbron ontkoppel en dan druk S1 om uit die kalibreringsmodus te kom. Dit is nodig om eers die eksterne kragbron te ontkoppel om enige tipe fout van enige eenhede te voorkom.

Stap 9: Skakel na kalibrasie aan … nou is u gereed om te rock

Skakel na kalibrasie aan … nou is jy gereed om te rock
Skakel na kalibrasie aan … nou is jy gereed om te rock
Skakel na kalibrasie aan … nou is jy gereed om te rock
Skakel na kalibrasie aan … nou is jy gereed om te rock
Skakel na kalibrasie aan … nou is jy gereed om te rock
Skakel na kalibrasie aan … nou is jy gereed om te rock

Aangesien die kalibrasie voltooi is, kan u die laaiproses begin. Heg eers die battery aan en skakel die eenheid aan. Die laaier sorg vir die res.

My kring werk 100% en word getoets. Maar as u iets agterkom, laat weet my asseblief. Kontak ons gerus vir enige navrae.

Gelukkige gebou.

Rgds // Sharanya

Aanbeveel: