Arduino-ohjatun laturin luominen. Arduino PWM aurinkolatausohjain

Arduino PWM aurinkolatausohjain
Kuinka tehdä erittäin pieni, yksinkertainen ja halpa PWM-aurinkolatausohjain Arduinolla Pro Mini 12V off-grid -asennuksiin. Koko painettu piirilevy vastaa Pro-miniboardin kokoa, joten ne voidaan kiinnittää yhteen. PCB-suunnitelmat yleiselle prototyyppilevylle.

Tämän yhdistäminen ja käyttö Arduino ohjain aurinkovaraus hyvin yksinkertainen - paneelista on 2 tulojohtoa aurinkopaneelit(+ ja -) ja 2 lähtöä johtavat lyijyakkuun. Aurinkopaneelin pohja ja akut on yhdistetty toisiinsa. Kuorma on kytkettävä suoraan akun napoihin ja latausohjain hoitaa loput automaattisesti.

Arduino mittaa säännöllisesti lyijyakun jännitettä tietyn arvon mukaan, kytkee MOSFETin lataamaan akun aurinkopaneelista ja sammuttaa MOSFETin, kun akku on latautunut täyteen. Kun kuorma ottaa virtaa akusta, säädin havaitsee jännitteen laskun ja alkaa välittömästi ladata akkua uudelleen. Yön aikana kun aurinkopaneeli lopettaa tuotannon, ohjain odottaa, kunnes paneeli alkaa taas tuottaa tulosta.


Aurinkopaneelin positiivinen johto vaatii suojaavan Schottky-diodin, joka on asennettu suoraan kaapeliin (kääritty sisään lämpökutisteputki). Tämä ei sisälly pääpiirilevyyn, koska se helpottaa sen vaihtamista ja jäähdytystä samanaikaisesti. Voit helposti tehdä levystä hieman pidemmän sopimaan erityyppiselle diodille.

Piirin ja toiminnon kuvaus:

Toiminto perustuu N-kanavaiseen MOSFET-transistoriin IRF3205 piirin yläpuolella. Tämä vaatii yli 12 V:n hilajännitteen, jotta MOSFET käynnistyy oikein. Ulkoisen MOSFET-ohjaimen välttämiseksi sitä ohjaa latauspumppu, joka on luotu diodilla, 2 kondensaattorilla ja kahdella Arduino PWM -lähtönastalla (3 ja 11). Nasta A1 mittaa akun jännitettä ja nasta 9 ohjaa MOSFET ON/OFF -jaksoa. Arduino Pro Napaan 13 kytkettyä mini-LED:tä käytetään näyttämään PWM-signaalin nykyinen jakso.

Jännitteensäädin ja kaikki ympärillä olevat kondensaattorit (C6, C5 ja C4) voitaisiin poistaa, koska Arduino Pro Mini sisältää säätimen. Koska käytin halpaa kloonilevyä, en kuitenkaan halua luottaa sen kykyyn tukea enemmän korkea jännite, kuin 12V enemmän pitkiä ajanjaksoja aika. LP2950 on erittäin halpa ja tehokas 30 volttiin asti, joten se kannattaa ottaa mukaan joka tapauksessa.


Osaluettelo: Jännitteensäädin alhainen virrankulutus LP2950ACZ-5.0 Transistorit 2N3904 2N3906 x 2 N-kanava MOSFET IRF3205 Vastukset 82K (1%) 20K (1%) 220K x3 (0.4W riittää) 4K7 (0.4W riittää) Diodit 1N3510483 35V vähintään 9A) Kondensaattorit 47N/50V x2 keraaminen 220P/100V keraaminen 1M/50V (1000nF) keraaminen 4M7/10V tantaali 1M/35V tantaali x 2

Tämän latausohjaimen piiri ja koodi on Julian Ilett, hän on tämän näppärän asian takana. Kaikki tämä on vain hienostunutta dokumentaatiota ja sopivaa piirilevyrakennetta, joka sopii täydellisesti Arduino Pro Mini -levyyn. Hän jakaa videon tehokkaammasta Arduino MPPT -lataussäätimestä, mutta sen rakenne on paljon monimutkaisempi eikä projekti ole vielä valmis. Jos voit parantaa koodia tai suunnittelua millään tavalla, jaa parannukset kommentteihin.



Magneettinen induktio on tekniikka, jonka luultavasti muistat lukion fysiikan luokasta. varten langaton lähetys energiaa tarvitset kaksi käämiä: lähetinkelan ja vastaanotinkelan. Vaihtovirta lähetinkelassa synnyttää magneettikentän, joka indusoi jännitteen vastaanotinkelaan. Tätä jännitettä voidaan käyttää virtalähteenä mobiililaite tai ladata akkua.


Ei vähempää tärkeitä elementtejä Siellä on induktoreita, jotka voit tehdä itse. Nämä yksinkertaiset kelat on kierretty kuparilangoista ja niitä kutsutaan ilmasydänkeloiksi. Tällaisen käämin luominen tarkoitukseemme on hyvin yksinkertaista. Etsi pyöreä sylinteri, jonka halkaisija on noin 5 senttimetriä, ja kierrä lanka sen ympärille niin, että jokainen kierros ei mene toisen kierroksen päälle, mutta on samalla mahdollisimman lähellä toista kierrosta. Pyöreä sylinteri voi olla esimerkiksi PVC-putki. Saatat joutua käyttämään ilmastointiteippiä tai teippiä 2-3 paikassa, jotta rakenne pysyy vakaana.


Arduinon ja induktorien lisäksi tarvitsemme: yhden NPN-transistorin tyyppi 2N3055, yhden 1A diodisillan (diodikokoonpano, niissä on neljä napaa), yhden LEDin, yhden 100 ohmin vastuksen, kaksi 47 nF kondensaattoria, 9 V akkua Arduino virtalähde, ja myös mieluiten kaksi pöytää prototyyppien tekemiseen. Kaavio komponenttien liittämisestä langattoman tiedonsiirtolaitteen luomiseksi on esitetty alla olevassa kuvassa.



Piiriä voidaan testata käyttämällä yksinkertainen koodi Arduinolle alla.


void setup() ( pinMode(13,OUTPUT); ) void loop() ( digitalWrite(13,HIGH); viive(0.5); digitalWrite(13,LOW); viive(0.5); )

Yksinkertainen langaton tehonsiirtolaite voidaan kuitenkin tehdä ilman Arduinoa. Periaatteessa voimme käyttää vain yhtä 2N2222-transistoria. Liitä sen pohjaliitin kelan ensimmäiseen päähän ja sen kollektori kelan toiseen päähän. Lähettimen tappi on kytketty akkuun. Lopulta tämä yksinkertainen muotoilu saattaa näyttää tältä:




   Kiitos mielenkiinnostasi tietoprojekti verkkosivusto.
   Jos haluat kiinnostavan ja hyödyllisiä materiaaleja ilmestyi useammin ja mainoksia oli vähemmän,
   Voit tukea projektiamme lahjoittamalla minkä tahansa summan sen kehittämiseen.

Arduinoa ja sen lisättyä latauspiiriä voidaan käyttää NiMH-akkujen latauksen valvontaan ja ohjaamiseen seuraavasti:

Valmis laite

Ladattavat akut ovat hienolla tavalla tehostaaksesi sinua kannettava elektroniikka. Ne voivat säästää paljon rahaa, kun oikea lataus. Jotta voit vastaanottaa enimmäistuotto sinun paristot, ne on ladattava oikein. Tämä tarkoittaa, että tarvitset hyvän laturin. Voit käyttää paljon rahaa valmiin laturin ostamiseen tai voit pitää hauskaa valmistamalla sellaisen itse. Tässä artikkelissa tarkastellaan, kuinka voit luoda Arduinon ohjaaman laturin.

Ensinnäkin on tärkeää huomata, että ei ole universaali menetelmä laturi, joka sopii kaikille akuille. Erityyppiset akut käyttävät erilaisia ​​kemiallisia prosesseja saadakseen ne toimimaan. Tuloksena, eri tyyppejä Akut on ladattava eri tavalla. Emme voi kattaa kaikkia akkutyyppejä ja lataustapoja tässä artikkelissa. Joten yksinkertaisuuden vuoksi keskitymme yleisimpään AA-kokoiseen akkutyyppiin, nikkelimetallihydridiakkuun (NiMH).

Lisätarvikkeet

Luettelo komponenteista vasemmalta oikealle:

  • tehokas 10 ohmin vastus (vähintään 5 wattia);
  • vastus 1 MOhm;
  • kondensaattori 1 uF;
  • MOSFET-transistori IRF510;
  • lämpötila-anturi TMP36;
  • virtalähde 5 volttia;

Kuinka ladata NiMH AA-akkuja

Latausnopeuden lisääminen lisää akun vaurioitumisriskiä.

Maksutapoja on monia NiMH akut. Käyttämäsi menetelmä riippuu pääasiassa siitä, kuinka nopeasti haluat ladata akun. Latausnopeus mitataan suhteessa akun kapasiteettiin. Jos akkusi kapasiteetti on 2500 mAh ja lataat sitä 2500 mA:lla, lataat sitä 1 C:n nopeudella. Jos lataat samaa akkua 250 mA:lla, lataat sen nopeudella C/10.

Aikana nopea lataus akku (yli C/10 nopeuksilla), sinun on tarkkailtava huolellisesti akun jännitettä ja lämpötilaa ylilatauksen välttämiseksi. Tämä voi vahingoittaa akkua vakavasti. Kuitenkin, kun lataat akkua hitaasti (nopeudella alle C/10), vaurioitat akkua paljon vähemmän, jos lataat sen vahingossa yli. Siksi hitaita latausmenetelmiä pidetään yleensä turvallisempana, ja ne auttavat pidentämään akun käyttöikää. Siksi käytämme kotitekoisessa laturissamme latausnopeutta C/10.

Latauspiiri

Tätä varten laturi Perustana on piiri virtalähteen ohjaamiseksi käyttäen Arduinoa. Piiri saa virran 5 voltin lähteestä, esimerkiksi sovittimesta vaihtovirta tai tietokoneyksikkö ravitsemus. Suurin osa USB:stä portit eivät sovellu tästä projektista nykyisten rajoitusten vuoksi. 5 V lähde lataa akkua tehokkaan 10 ohmin vastuksen ja tehokkaan MOSFET-transistorin kautta. MOSFET-transistori asettaa akun läpi kulkevan virran määrän. Vastus lisätään yksinkertaisena tapana ohjata virtaa. Virran määrää valvotaan kytkemällä jokainen vastuksen nasta Arduinon analogisiin tulonastoihin ja mittaamalla jännite kummaltakin puolelta. MOSFET-transistoria ohjataan Arduinon PWM-lähtönastalla. Signaalipulssit pulssinleveysmodulaatio tasoitettu DC jännite suodatin 1 MΩ vastuksella ja 1 μF kondensaattorilla. Tämä kaava sallii Arduinon valvoa ja ohjata akun läpi kulkevaa virtaa.


lämpösensori

Lämpötila-anturia käytetään estämään akun ylilataaminen ja varmistamaan turvallisuus.

Kuten lisätoimenpide Varotoimenpiteenä laturiin on lisätty lämpötila-anturi TMP36 valvomaan akun lämpötilaa. Tämä anturi tuottaa jännitteen, joka vaihtelee lineaarisesti lämpötilan mukaan. Siksi, toisin kuin termistorit, se ei vaadi kalibrointia tai tasapainotusta. Anturi asennetaan paristotelineen runkoon porattuun reikään ja liimataan reikään niin, että se painaa akkua vasten, kun se asennetaan pidikkeeseen. Anturin nastat on kytketty 5V väylään, koteloon ja Arduinon analogiseen tulonastan.

AA-paristoteline ennen ja jälkeen asennuksen päälle leipälauta

Koodi


Tämän projektin koodi on melko yksinkertainen. Lähdekoodin alussa olevien muuttujien avulla voit määrittää laturin syöttämällä akun kapasiteetin ja tehovastuksen tarkan resistanssin arvot. Turvallisia kynnysmuuttujia on myös lisätty. Suurin sallittu akun jännite on asetettu 1,6 volttiin. Akun maksimilämpötila on asetettu 35 celsiusasteeseen. Suurin latausaika on asetettu 13 tuntiin. Jos jokin näistä turvarajoista ylittyy, laturi sammuu.

Ohjelman rungossa voit nähdä, että järjestelmä mittaa jatkuvasti jännitettä tehokkaan vastuksen liittimissä. Tätä käytetään laskemaan akun jännitearvot ja sen läpi kulkeva virta. Virtaa verrataan tavoitearvoon, joka on C/10. Jos laskettu virta poikkeaa tavoitearvo yli 10 mA, järjestelmä säätää automaattisesti lähtöarvoa sen korjaamiseksi.

Arduino käyttää sarjaliitäntää kaikkien nykyisten tietojen näyttämiseen. Jos haluat seurata laturisi toimintaa, voit yhdistää Arduinon USB-portti tietokoneeseen, mutta tämä ei ole välttämätöntä, koska Arduino saa virtansa 5 V:n jännitelähteestä laturista.

Sisäakun kapasiteetti = 2500; // akun kapasiteetin arvo mAh kelluvuusvastus = 10,0; // Tehokkaan vastuksen mitattu resistanssi int cutoffVoltage = 1600; // akun maksimijännite (mV), jota ei saa ylittää float cutoffTemperatureC = 35; // Maksimilämpötila akku, jota ei saa ylittää (C-asteina) //float cutoffTemperatureF = 95; // akun enimmäislämpötila, jota ei saa ylittää (astetta F) pitkä cutoffTime = 46800000; // maksimiaika latausaika 13 tuntia, jota ei saa ylittää int outputPin = 9; // lähtösignaalin johto on kytketty digitaaliseen nastaan ​​9 in outputValue = 150; // lähtö PWM-signaalin arvo int analogPinOne = 0; // ensimmäinen jänniteanturi on kytketty analogiseen nastan 0 float valueProbeOne = 0; // muuttuja arvon tallentamiseksi analogPinOne float voltageProbeOne = 0; // laskettu jännite analogPinOne int analogPinTwo = 1; // toinen jänniteanturi on kytketty analogiseen nastan 1 float valueProbeTwo = 0; // muuttuja arvon tallentamiseksi analogPinTwo float voltageProbeTwo = 0; // laskettu jännite analogPinTwo int analogPinThree = 2; // kolmas jänniteanturi on kytketty analogiseen nastaan ​​2 float valueProbeThree = 0; // muuttuja arvon tallentamiseksi analogPinThree floatiin tmp36Voltage = 0; // laskettu jännite analogissaPinThree kelluva lämpötilaC = 0; // laskettu anturin lämpötila asteina C //kellukelämpötilaF = 0; // laskettu anturin lämpötila asteina F float jänniteEro = 0; // ero analogPinOne- ja analogPinTwo-kellukeakun jännitteiden välillä Jännite = 0; // laskettu akun jännite kelluva virta = 0; // kuorman läpi kulkeva laskettu virta (mA) float targetCurrent = akun kapasiteetti / 10; // tavoitelähtövirta (mA) on asetettu arvoon // C/10 tai 1/10 akun kapasiteetista float current Error = 0; // ero tavoite- ja todellisten virtojen välillä (mA) void setup() ( Serial.begin(9600); // asennus sarjaliitäntä pinMode(lähtöPin, OUTPUT); // aseta nasta lähdöksi ) void loop() ( analogWrite(outputPin, outputValue); // kirjoita lähtöarvo lähtönastan Serial.print("Output: "); // näytä lähtöarvot valvontaa varten tietokoneessa Serial.println (arvoProbeOne = analogRead(analogPinOne) // lue ensimmäisen anturin jännite ProbeOne = (valueProbeOne*5000)/1023; print("Voltage Probe One (mV): " // näytä ensimmäisen anturin jännite Serial.println(voltageProbeOne = analogiRead(analogPinTwo); *5000)/1023 // laskea toisen anturin jännite millivolteina Serial.print("Voltage Probe Two (mV):" // näytä toisen anturin jännite Serial.println(voltageProbeTwo); 5000 - voltageProbeTwo // laskea akun jännite Serial.print("Akun jännite ( mV): " // näytä akun jännite Serial.println(akkujännite); virta = (voltageProbeTwo - voltageProbeOne) / vastus; // laskea latausvirta Serial.print("Tavoitevirta (mA): "); // näytä kohdevirta Serial.println(targetCurrent); Serial.print("Akun virta (mA): "); // näytä nykyinen Serial.println(current); currentError = targetCurrent - nykyinen; // ero tavoite- ja mitattujen virtojen välillä Serial.print("Virtavirhe (mA): "); // näytä nykyinen asetusvirhe Serial.println(currentError); valueProbeThree = analoginenRead(analoginenPinThree); // lue kolmannen anturin tuloarvo, tmp36Voltage = valueProbeThree * 5.0; // sen muuntaminen jännitteeksi tmp36Voltage /= 1024.0; lämpötilaC = (tmp36Voltage - 0,5) * 100 ; // muunnos perustuu 10 mV:n riippuvuuteen astetta kohden 500 mV:n siirtymällä // ((jännite - 500 mV) kerrottuna 100:lla) Serial.print("Lämpötila (C astetta) "); // näytä lämpötila Celsius-asteina Serial.println(temperatureC); /* lämpötila F = (lämpötilaC * 9,0 / 5,0) + 32,0; //muuntaa Fahrenheit-asteiksi Serial.print("Lämpötila (astetta F) "); Serial.println(lämpötilaF); */ Serial.println(); // lisää tyhjiä rivejä tietojen lukemisen helpottamiseksi virheenkorjauksen aikana Serial.println(); if(abs(currentError) > 10) // jos nykyinen asetusvirhe on tarpeeksi suuri, säädä ulostulojännite( outputArvo = outputValue + currentError / 10; if(outputArvo< 1) // выходное значение никогда не может быть ниже 0 { outputValue = 0; } if(outputValue >254) // lähtöarvo ei voi koskaan olla suurempi kuin 255 ( outputArvo = 255; ) analogWrite(lähtöPin, lähtöArvo); // kirjoita uusi lähtöarvo ) if(temperatureC > cutoffTemperatureC) // lopeta lataaminen, jos akun lämpötila ylittää turvallisen kynnysarvon ( outputArvo = 0; Serial.print("Max Temperature Exceeded"); ) /* if(temperatureF > cutoffTemperatureF) / / lopeta lataaminen, jos akun lämpötila ylittää turvallisen kynnysarvon ( outputArvo = 0; ) */ if(batteryVoltage > cutoffVoltage) // lopeta lataaminen, jos akun jännite ylittää turvallisen kynnysarvon ( outputArvo = 0; Serial.print("Max Voltage Exceeded" ); ) if(millis() > cutoffTime) // lopeta lataus, jos latausaika on ylittänyt kynnyksen ( outputValue = 0; Serial.print("Max Charge Time Exceeded"); ) delay(10000); // viive 10 sekuntia ennen silmukan seuraavaa iteraatiota)

Löydät ladattavan version lähdekoodista alla olevasta linkistä.

Electro-Labs-tiimi esitteli blogissaan Arduino-projektin, joka ei ole vain mielenkiintoinen, vaan myös hyödyllinen jokapäiväisessä elämässä. Tässä projektissa Arduinolle kehitettiin ohjelmoitava suoja, joka toimii litiumakkujen laturina. Suoja sisältää LCD-näyttö ja painikeliitäntä, jonka avulla käyttäjä voi säätää jännitettä 2 V:sta 10 V:iin ja virtaa 50 mA:sta 1,1 A:iin. Laite tarjoaa myös mahdollisuuden ohjata latausprosessia.

Suoja perustuu LT1510-siruun ja sitä ohjaa Arduino Uno. Näyttönä on yksinkertainen ja edullinen Nokia 5110 LCD. Se yhdistää kautta SPI-liitäntä ja se saa virtansa 3,3V jännitteestä. Koska arduinon I/O-nastat toimivat 5 V jännitteellä, yhdistä sitten LCD-moduuli Suositellaan signaalilinjoihin sarjaan kytkettyjen vastusten kautta. Liittää Li-Ion akut Saatavilla on kaksi liitintä. Neljä ohjauspainiketta on kytketty Arduinon nastoihin A2-A5. Akun jännitettä ja latausvirtaa ohjataan analogisilla nastoilla A0 ja A1. Yksityiskohdat analogia-digitaalimuunnos selitetty sisään lähdekoodi hanke. Kaksi SMD LED käytetään osoittamaan laitteen toimintaa.

Projektin kaavio on kehitetty SoloCapturessa SoloPCBtools-paketista. Suoja voi toimia ilman mikrokontrolleriohjausta. Kun Arduino ei vilku, laturin oletusarvoinen katkaisujännite on 4,2 V ja enimmäislatausvirta 1,1 A. Piirilevy on suunniteltu SoloPSB:llä. Painetun piirilevyn suunnittelu ja itse SoloPSB-ohjelma voidaan ladata osoitteesta electro-labs.com. Suojuksen mitat valitaan sen sijainnin mukaan Arduino Unossa. LED-valot, painikeliitäntä, LCD-näyttö ja akkuliittimet sijaitsevat yläosassa mukavuuden vuoksi. Kaikki muut elementit sijaitsevat kääntöpuoli kilpi.

LCD-näyttö on ohjelmoitu näyttämään neljä sivua, joiden avulla käyttäjä voi syöttää latausparametreja ja ohjata latausprosessia. Ensimmäisellä sivulla käyttäjä voi asettaa katkaisujännitteen ja enimmäislatausvirran, siirtyä akun tilasivulle ja aloittaa latauksen. Ylös- ja alanäppäimillä siirrytään vaihtoehdoista toiseen, ja oikealla ja vasemmalla painikkeella muutetaan parametreja ja valitaan vaihtoehtoja. Toisella sivulla näkyy akun tila. Siinä näet akun nykyisen jännitteen. Kolmannella sivulla näkyy latausjännite ja -virta. Vasen tai oikealla painikkeella Tällä sivulla voit lopettaa latausprosessin ja palata parametrien asetussivulle. Kun akun jännite saavuttaa aseta arvo, laturi pysähtyy ja näyttää viestin "Lataus valmis". Poistu painamalla vasenta näppäintä.