Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Gabimet
  • Kontrollues i karikimit diellor Arduino PWM. Një pajisje buxhetore e bazuar në Arduino për të verbërit (hardware i hapur)

Kontrollues i karikimit diellor Arduino PWM. Një pajisje buxhetore e bazuar në Arduino për të verbërit (hardware i hapur)



Induksioni magnetik është një teknologji që ndoshta e mbani mend nga orët e fizikës në shkollën e mesme. Për të transmetuar energjinë me valë, ju nevojiten dy mbështjellje: spiralja e transmetuesit dhe spiralja e marrësit. Rryma alternative në bobinën e transmetuesit gjeneron një fushë magnetike që shkakton një tension në spiralen e marrësit. Ky tension mund të përdoret për të fuqizuar një pajisje celulare ose për të ngarkuar një bateri.


Induktorët, të cilët mund t'i bëni me dorë, do të jenë elementë po aq të rëndësishëm. Këto mbështjellje të thjeshta janë mbështjellë nga telat e bakrit dhe quhen mbështjellje me bërthamë ajri. Bërja e një dredha-dredha të tillë për qëllimin tonë është shumë e thjeshtë. Gjeni një cilindër të rrumbullakët me një diametër rreth 5 centimetra dhe rrotulloni telin rreth tij në mënyrë që çdo kthesë të mos mbivendoset me një kthesë tjetër, por në të njëjtën kohë të jetë sa më afër një kthese tjetër. Një cilindër i rrumbullakët mund të jetë, për shembull, një tub PVC. Mund t'ju duhet të përdorni shirit ngjitës ose shirit në 2-3 vende për ta mbajtur strukturën të qëndrueshme.


Përveç Arduino dhe induktorëve, na duhen: një transistor NPN i tipit 2N3055, një urë diodë 1A (montimi i diodës, ato kanë katër priza), një LED, një rezistencë 100 ohm, dy kondensatorë 47 nF, një bateri 9 V. për të fuqizuar Arduino, dhe gjithashtu mundësisht dy borde për prototipimin. Diagrami i lidhjes së komponentëve për krijimin e një pajisjeje të transmetimit të të dhënave pa tel është paraqitur në figurën më poshtë.



Qarku mund të testohet me kodin e thjeshtë Arduino më poshtë.


konfigurimi i zbrazët () (pinMode (13, OUTPUT);) cikli i zbrazët () (shkrimi dixhital (13, LARTË); vonesë (0.5); Shkrimi dixhital (13, LOW); vonesë (0.5);)

Sidoqoftë, një pajisje e thjeshtë e transmetimit të energjisë pa tel mund të bëhet pa një Arduino. Në thelb, ne mund të përdorim vetëm një transistor 2N2222. Lidheni prizën e saj bazë në skajin e parë të spirales dhe kolektorin në skajin tjetër të spirales. Kunja e emetuesit është e lidhur me baterinë. Si rezultat, një ndërtim kaq i thjeshtë mund të duket si ky:




& nbsp & nbsp & nbspFaleminderit për interesimin tuaj në sitin e projektit të informacionit.
& nbsp & nbsp & nbsp
& nbsp & nbsp & nbspJu mund të mbështesni projektin tonë duke dhuruar çdo shumë për zhvillimin e tij.

Kontrollues i karikimit diellor Arduino PWM
Si të bëni një kontrollues shumë të vogël, të thjeshtë dhe të lirë të ngarkimit diellor PWM me Arduino Pro Mini për instalime 12V jashtë rrjetit. PCB-ja ka të njëjtën madhësi si mini-bordi Pro, kështu që ato mund të mbërthehen së bashku. PCB planifikon për një bord prototip universal.

Lidhja dhe përdorimi i këtij kontrolluesi të ngarkimit diellor Arduino është shumë i thjeshtë - ka 2 tela hyrje nga paneli diellor (+ dhe -) dhe 2 priza daljesh për të shkuar te bateria e acidit të plumbit. Baza e panelit diellor dhe bateria janë të lidhura së bashku. Çdo ngarkesë duhet të lidhet drejtpërdrejt me terminalet e baterisë dhe kontrolluesi i ngarkimit do të trajtojë automatikisht pjesën tjetër.

Arduino mat rregullisht tensionin e baterisë të plumbit dhe acidit sipas një vlere të caktuar, kalon në MOSFET për të ngarkuar baterinë nga paneli diellor dhe fiket MOSFET kur bateria është plotësisht e ngarkuar. Kur ngarkesa merr energji nga bateria, kontrolluesi zbulon një rënie të tensionit dhe menjëherë fillon të karikojë përsëri baterinë. Gjatë natës kur paneli diellor ndalon së prodhuari, kontrolluesi pret derisa paneli të fillojë të dalë sërish.


Teli pozitiv në panelin diellor kërkon që një diodë mbrojtëse Schottky të instalohet drejtpërdrejt në kabllo (të mbështjellë me një tub për tkurrjen e nxehtësisë). Kjo nuk përfshihet në PCB-në kryesore pasi e bën më të lehtë zëvendësimin e saj dhe ftohjen në të njëjtën kohë. Ju lehtë mund ta bëni tabelën pak më të gjatë për t'u përshtatur në një lloj tjetër diodë.

Përshkrimi i skemës dhe funksionit:

Funksioni bazohet në një MOSFET IRF3205 me kanal N në anën e lartë të qarkut. Kjo kërkon një tension të portës më të lartë se 12 V për të hapur MOSFET në mënyrë korrekte. Për të eliminuar nevojën për një drejtues të jashtëm MOSFET, ai drejtohet nga një ngarkesë pompe e krijuar me dioda, 2 kondensatorë dhe dy kunja dalëse Arduino PWM (3 dhe 11). Pin A1 mat tensionin e baterisë dhe pin 9 kontrollon ciklin e MOSFET ON / OFF. Arduino Pro Mini LED i integruar i lidhur me pinin 13 përdoret për të treguar ciklin aktual të sinjalit PWM.

Rregullatori i tensionit dhe të gjithë kondensatorët përreth (C6, C5 dhe C4) mund të eliminohen pasi ekziston një rregullator i përfshirë në Arduino Pro Mini. Megjithatë, për shkak se kam përdorur një bord kloni të lirë, nuk dua të mbështetem në aftësinë e tij për të mbështetur tensione më të larta se 12 V për periudha më të gjata kohore. LP2950 është shumë i lirë dhe efikas deri në 30 volt, kështu që ia vlen ta keni në bord gjithsesi.


Lista e pjesëve: LP2950ACZ-5.0 Tranzistorë rregullator të tensionit të ulët me fuqi të ulët 2N3904 2N3906 x 2 MOSFET me kanal N-Kanal Rezistorë 82K (1%) 20K (1%) 220K x3 (0.4W është e mjaftueshme) 4W8 është e mjaftueshme 4.5 Diodë 4K17N. P6KE33CA 90SQ035 (ose ndonjë diodë e ngjashme Schottky 35V minimale 9A) Kondensatorë 47N / 50V x2 qeramike 220P / 100V qeramike 1M / 50V (1000nF) qeramike 4M7 / 10MV / tantalum x25

Skema dhe kodi i këtij kontrolluesi të ngarkimit është nga Julian Ilette, ai është frymëzimi pas kësaj gjëje të zgjuar. E gjithë kjo është thjesht dokumentacion i sofistikuar dhe një dizajn i përshtatshëm PCB për t'u përshtatur në mënyrë të përsosur me pllakën Arduino Pro Mini. Ai ndan një video të një rregullatori më efikas të ngarkimit Arduino MPPT, por ndërtimi i tij është shumë më i ndërlikuar dhe projekti nuk ka përfunduar ende. Nëse mund të përmirësoni kodin ose ndërtimin në ndonjë mënyrë, ju lutemi ndani përmirësimet tuaja në komente.

Ekipi i Electro-Labs prezantoi jo vetëm një projekt interesant, por edhe të dobishëm në jetën e përditshme për Arduino. Në këtë projekt, u zhvillua një mburojë e programueshme për Arduino, e cila vepron si një karikues për bateritë e litiumit. Mburoja përfshin një ekran LCD dhe një ndërfaqe me buton që lejon përdoruesin të rregullojë tensionin nga 2V në 10V dhe rrymën nga 50mA në 1.1A. Pajisja gjithashtu ofron mundësinë për të monitoruar procesin e karikimit.

Mburoja bazohet në çipin LT1510 dhe kontrollohet nga Arduino Uno. Një LCD i thjeshtë dhe i përballueshëm Nokia 5110 përdoret si ekran. Është i lidhur nëpërmjet ndërfaqes SPI dhe mundësohet nga tensioni 3.3V. Meqenëse kunjat I / O të arduino funksionojnë në 5V, rekomandohet të lidhni modulin LCD përmes rezistorëve të lidhur në seri me linjat e sinjalit. Dy lidhës janë të disponueshëm për lidhjen e baterive Li-Ion. Katër butona kontrolli janë të lidhur me kunjat A2-A5 të Arduino. Tensioni i baterisë dhe rryma e karikimit monitorohen nëpërmjet kunjave analoge A0 dhe A1. Detajet e konvertimit A/D shpjegohen në kodin burimor të projektit. Dy SMD LED përdoren për të treguar funksionimin e pajisjes.

Diagrami skematik i projektit u zhvillua në SoloCapture nga paketa SoloPCBtools. Mburoja mund të funksionojë pa kontroll të mikrokontrolluesit. Kur Arduino nuk është i programuar, karikuesi ka një tension ndërprerës të paracaktuar prej 4,2 V dhe një rrymë maksimale karikimi prej 1,1 A. PCB është projektuar nga SoloPSB. Dizajni i PCB-së dhe vetë programi SoloPSB mund të shkarkohen nga electro-labs.com. Dimensionet e mburojës përputhen me vendndodhjen e saj në Arduino Uno. LED, ndërfaqja me butona, ekrani LCD dhe lidhësit e baterisë janë të vendosura në krye për lehtësi. Të gjithë elementët e tjerë janë të vendosur në anën e pasme të mburojës.

LCD është programuar të shfaqë katër faqe që lejojnë përdoruesin të vendosë parametrat e karikimit dhe të monitorojë procesin e karikimit. Në faqen e parë, përdoruesi mund të vendosë tensionin e ndërprerjes dhe rrymën maksimale të karikimit, të shkojë në faqen e statusit të baterisë dhe të fillojë karikimin. Butonat lart dhe poshtë përdoren për të lundruar nëpër opsione, dhe butonat djathtas dhe majtas përdoren për të ndryshuar parametrat dhe për të zgjedhur opsionet. Faqja e dytë tregon statusin e baterisë. Në të mund të shihni tensionin aktual në bateri. Faqja e tretë tregon tensionin dhe rrymën e karikimit. Me butonin e majtë ose të djathtë në këtë faqe, mund të ndaloni procesin e karikimit dhe të ktheheni në faqen e cilësimeve të parametrave. Kur voltazhi i baterisë arrin vlerën e caktuar, karikuesi ndalon dhe shfaq mesazhin "Charge Complete". Për të dalë, shtypni tastin e majtë.

Arduino dhe qarku i karikimit i shtuar mund të përdoren për të monitoruar dhe kontrolluar karikimin e baterive NiMH, për shembull:

Pajisja e përfunduar

Bateritë e rikarikueshme janë një mënyrë e shkëlqyer për të fuqizuar pajisjet tuaja elektronike portative. Ata mund t'ju kursejnë shumë para kur ngarkohen siç duhet. Në mënyrë që të përfitoni sa më shumë nga bateritë tuaja, ato duhet të ngarkohen siç duhet. Kjo do të thotë që ju duhet një karikues i mirë. Mund të shpenzoni mijëra para duke blerë një karikues të gatshëm, ose mund të kënaqeni duke e bërë vetë. Në këtë artikull, ne do të shikojmë se si mund të krijoni një karikues të kontrolluar Arduino.

Së pari, është e rëndësishme të theksohet se nuk ka asnjë metodë universale të karikimit që funksionon për të gjitha bateritë. Llojet e ndryshme të baterive përdorin procese të ndryshme kimike për t'i bërë ato të funksionojnë. Si rezultat, lloje të ndryshme baterish duhet të ngarkohen në mënyra të ndryshme. Ne nuk do të jemi në gjendje të mbulojmë të gjitha llojet e baterive të rikarikueshme dhe metodat e karikimit në këtë artikull. Prandaj, për hir të thjeshtësisë, ne do të përqendrohemi në llojin më të zakonshëm të baterisë së ringarkueshme me madhësi AA, baterinë hidride metalike të nikelit (NiMH).

Komponentët

Lista e pjesëve nga e majta në të djathtë:

  • rezistencë e fuqishme 10 Ohm (minimumi 5 vat);
  • Rezistencë 1 MΩ;
  • kondensator 1 μF;
  • tranzistor MOSFET IRF510;
  • sensori i temperaturës TMP36;
  • Furnizimi me energji 5 volt;

Si të ngarkoni bateritë NiMH AA

Rritja e shkallës së karikimit rrit rrezikun e dëmtimit të baterisë.

Ka shumë mënyra për të ngarkuar bateritë NiMH. Metoda që përdorni varet kryesisht nga sa shpejt dëshironi të karikoni baterinë. Shkalla e karikimit matet në lidhje me kapacitetin e baterisë. Nëse bateria juaj ka një kapacitet prej 2500 mAh dhe e ngarkoni me 2500 mA, atëherë po e karikoni me një shpejtësi prej 1C. Nëse e ngarkoni të njëjtën bateri me 250 mA, atëherë po e karikoni me një shpejtësi prej C/10.

Kur ngarkoni baterinë shpejt (mbi C / 10), duhet të monitoroni me kujdes tensionin dhe temperaturën e baterisë për të shmangur mbingarkimin. Kjo mund të dëmtojë seriozisht baterinë. Megjithatë, kur e ngarkoni baterinë tuaj ngadalë (nën C / 10), keni shumë më pak gjasa të dëmtoni baterinë nëse e rikarikoni aksidentalisht. Prandaj, metodat e karikimit të ngadaltë përgjithësisht konsiderohen më të sigurta dhe do t'ju ndihmojnë të zgjasni jetën e baterisë. Prandaj, në karikuesin tonë DIY, ne do të përdorim një tarifë karikimi C / 10.

Qarku i karikimit

Për këtë karikues, baza është qarku për kontrollin e furnizimit me energji elektrike duke përdorur Arduino. Qarku mundësohet nga një burim tensioni 5 volt, siç është një përshtatës AC ose furnizimi me energji kompjuteri. Shumica e porteve USB nuk janë të përshtatshme për këtë projekt për shkak të kufizimeve aktuale. Furnizimi 5V e ngarkon baterinë përmes një rezistence të fuqishme 10 ohm dhe një MOSFET të fuqishëm. MOSFET cakton sasinë e rrymës që rrjedh nëpër bateri. Rezistenca shtohet si një mënyrë e thjeshtë për të kontrolluar rrymën. Monitorimi i rrymës bëhet duke lidhur çdo kunj të rezistencës me kunjat e hyrjes analoge të Arduino dhe duke matur tensionin në secilën anë. MOSFET drejtohet nga kunja e daljes PWM e Arduino. Impulset e sinjalit të modulimit të gjerësisë së pulsit zbuten në një tension konstant nga një filtër në një rezistencë 1 MΩ dhe një kondensator 1 μF. Ky qark lejon Arduino të gjurmojë dhe kontrollojë rrymën që rrjedh nëpër bateri.


sensor temperature

Sensori i temperaturës shërben për të parandaluar mbingarkimin e baterisë dhe për të garantuar sigurinë.

Si një masë paraprake shtesë, një sensor i temperaturës TMP36 është shtuar në karikues për të monitoruar temperaturën e baterisë. Ky sensor gjeneron një tension që është linear me temperaturën. Prandaj, ndryshe nga termistorët, nuk kërkon kalibrim ose balancim. Sensori është i instaluar në një vrimë të shpuar në kutinë e mbajtësit të baterisë dhe është ngjitur në vrimë në mënyrë që të shtypet kundër baterisë kur të instalohet në mbajtëse. Kunjat e sensorit lidhen me hekurudhën 5V, me kutinë dhe me kutinë e hyrjes analoge të Arduino.

Mbajtëse baterie AA para dhe pas instalimit në tabelën e bukës

Kodi


Kodi për këtë projekt është mjaft i thjeshtë. Variablat në fillim të kodit burimor ju lejojnë të akordoni karikuesin duke futur vlera për kapacitetin e baterisë dhe rezistencën e saktë të rezistencës së energjisë. Janë shtuar gjithashtu variablat e pragut të sigurt. Tensioni maksimal i lejuar i baterisë është vendosur në 1.6 volt. Temperatura maksimale e baterisë është vendosur në 35 gradë Celsius. Koha maksimale e karikimit është vendosur në 13 orë. Nëse ndonjë prej këtyre kufijve të sigurisë tejkalohet, karikuesi fiket.

Në trupin e programit, mund të shihni se sistemi po matë vazhdimisht tensionet në terminalet e rezistencës së fuqishme. Kjo përdoret për të llogaritur tensionin në të gjithë baterinë dhe rrymën që rrjedh nëpër të. Rryma krahasohet me një vlerë të synuar, e cila është C / 10. Nëse rryma e llogaritur ndryshon nga vlera e synuar me më shumë se 10 mA, sistemi do të rregullojë automatikisht vlerën e daljes për ta korrigjuar atë.

Arduino përdor një ndërfaqe serike për të shfaqur të gjitha të dhënat aktuale. Nëse dëshironi të kontrolloni funksionimin e karikuesit tuaj, mund ta lidhni Arduino me portën USB të kompjuterit tuaj, por kjo nuk është e nevojshme, pasi Arduino mundësohet nga furnizimi 5V i karikuesit.

Kapaciteti i baterisë int = 2500; // vlera e kapacitetit të baterisë në mAh rezistencë notuese = 10.0; // rezistenca e matur e rezistencës së fuqisë int cutoffVoltage = 1600; // Tensioni maksimal i baterisë (në mV) që nuk duhet të tejkalohet ndërprerja e notitTemperaturaC = 35; // temperatura maksimale e baterisë që nuk duhet të tejkalohet (në gradë C) // ndërprerje notueseTemperaturaF = 95; // Temperatura maksimale e baterisë që nuk duhet të tejkalohet (në gradë F) kohë e gjatë e ndërprerjes = 46800000; // Koha maksimale e karikimit prej 13 orësh, e cila nuk duhet të tejkalohet int outputPin = 9; // teli i sinjalit të daljes është i lidhur me pinin dixhital 9 int outputValue = 150; // vlera e sinjalit të daljes PWM int analogPinOne = 0; // sensori i parë i tensionit është i lidhur me pinin analog 0 float valueProbeOne = 0; // variabël për të ruajtur vlerën në analogPinOne voltage floatProbeOne = 0; // Tensioni i llogaritur në analogPinOne int analogPinTwo = 1; // sensori i dytë i tensionit është i lidhur me pinin analog 1 vlera notueseProbeTwo = 0; // ndryshore për të ruajtur vlerën në analogPinTwo voltage floatProbeTwo = 0; // Tensioni i llogaritur në analogPinTwo int analogPinThree = 2; // sensori i tretë i tensionit është i lidhur me pinin analog 2 me vlerë notueseProbeThree = 0; // ndryshore për të ruajtur vlerën në analogPinThree float tmp36Voltage = 0; // Tensioni i llogaritur në temperaturë analogePinThree floatC = 0; // temperatura e llogaritur e sensorit në gradë C // temperatura notueseF = 0; // temperatura e llogaritur e sensorit në gradë F voltage floatDiferenca = 0; // ndryshimi midis tensioneve në baterinë analogPinOne dhe analogPinTwo floatVoltage = 0; // rryma lundruese e llogaritur e tensionit të baterisë = 0; // rryma e llogaritur që rrjedh përmes ngarkesës në (mA) objektivi notuesRryma = Kapaciteti i baterisë / 10; // Rryma e daljes së synuar (në mA) është vendosur në // C / 10 ose 1/10 e rrymës notuese të kapacitetit të baterisë Gabim = 0; // ndryshimi midis rrymës së synuar dhe asaj aktuale (në mA) konfigurimi i zbrazët () (Serial.begin (9600); // vendosja e modalitetit pin të ndërfaqes serike (outputPin, OUTPUT); // vendos pinin si dalje) void loop () (analogWrite (outputPin, outputValue); // shkruani vlerën e daljes në pinin e daljes Serial.print ("Output:"); // tregoni vlerat e daljes për kontroll në kompjuterin Serial.println (outputValue); valueProbeOne = analogRead ( analogPinOne); // lexoni vlerën e hyrjes në voltazhin e sondës së parë. tregoni tensionin në sondën e parë Serial.println ( voltageProbeOne); vleraProbeTwo = analogRead (analogPinTwo); // lexoni vlerën e hyrjes në sondën e dytë voltageProbeTwo = (valueProbeTwo * 5000) / 1023; // llogaritni tensionin e dytë në milivolt Serial.print ("Sonda e tensionit dy (mV):"); // tregoni tensionin në sondën e dytë Serial.println (voltageProbeTwo); bateriVoltage = 5000 - voltageProbeTwo; // llogarit tensionin e baterisë Serial.print ("Tensioni i baterisë (mV):"); // tregoni tensionin e baterisë Serial.println (bateriVoltage); rryma = (voltageProbeTwo - voltageProbeOne) / rezistenca; // llogarit rrymën e ngarkimit Serial.print ("Rryma e synuar (mA):"); // trego objektivin aktual Serial.println (targetCurrent); Serial.print ("Rryma e baterisë (mA):"); // tregoni aktuale aktuale Serial.println (aktual); aktualeGabim = targetAktuale - aktuale; // ndryshimi midis rrymave të synuara dhe të matura Serial.print ("Gabimi aktual (mA):"); // shfaq gabimin aktual të cilësimeve Serial.println (currentError); vleraProbeThree = analogLeximi (analogPinThree); // lexoni vlerën hyrëse të sondës së tretë, tmp36Voltage = valueProbeThree * 5. 0; // duke e kthyer atë në tension tmp36Voltage / = 1024.0; temperaturaC = (tmp36Voltage - 0.5) * 100; // transformim bazuar në një varësi prej 10 mV për shkallë me një zhvendosje prej 500 mV // ((tensioni - 500 mV) shumëzuar me 100) Serial.print ("Temperatura (gradë C)"); // tregoni temperaturën në gradë Celsius Serial.println (temperaturëC); / * temperaturaF = (temperaturaC * 9.0 / 5.0) + 32.0; // konverto në gradë Fahrenheit Serial.print ("Temperaturë (gradë F)"); Serial.println (temperaturëF); * / Serial.println (); // vija bosh shtesë për ta bërë më të lehtë leximin e të dhënave gjatë korrigjimit të gabimeve Serial.println (); nëse (abs (currentError)> 10) // nëse gabimi i konfigurimit aktual është mjaft i madh, atëherë rregulloni tensionin e daljes (outputValue = outputValue + CurrentError / 10; nëse (outputValue< 1) // выходное значение никогда не может быть ниже 0 { outputValue = 0; } if(outputValue >254) // vlera e daljes nuk mund të jetë kurrë më e lartë se 255 (outputValue = 255;) analogWrite (outputPin, outputValue); // shkruani një vlerë të re daljeje) nëse (temperaturë C> ndërprerjeTemperaturëC) // ndaloni karikimin nëse temperatura e baterisë ka tejkaluar kufirin e sigurt (Vlera e daljes = 0; printim serial ("Temperaturë maksimale u tejkalua");) / * nëse (temperaturëF> cutoffTemperatureF) / / ndalo karikimin nëse temperatura e baterisë tejkalon pragun e sigurt (Vlera e daljes = 0;) * / nëse (bateriVoltage> tensioni i ndërprerjes) // ndalo karikimin nëse voltazhi i baterisë tejkalon pragun e sigurt (Vlera dalëse = 0; Serial.print ("Tensioni maksimal i tejkaluar" );) nëse (millis ()> cutoffTime) // ndalo karikimin nëse koha e karikimit ka tejkaluar pragun (outputValue = 0; Serial.print ("Max Charge Time Exceeded");) vonesë (10000); // vonesë 10 sekonda përpara përsëritjes tjetër të ciklit)

Versioni i shkarkueshëm i kodit burim mund të gjendet në lidhjen më poshtë.

Artikujt kryesorë të lidhur