Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Erori
  • Controler de încărcare solar Arduino PWM. Un dispozitiv de buget bazat pe Arduino pentru nevăzători (hardware deschis)

Controler de încărcare solar Arduino PWM. Un dispozitiv de buget bazat pe Arduino pentru nevăzători (hardware deschis)



Inducția magnetică este o tehnologie pe care probabil ți-o amintești de la orele de fizică din liceu. Pentru a transmite puterea fără fir, aveți nevoie de două bobine: bobina emițător și bobina receptor. Curentul alternativ din bobina emițătorului generează un câmp magnetic care induce o tensiune în bobina receptorului. Această tensiune poate fi folosită pentru a alimenta un dispozitiv mobil sau pentru a încărca o baterie.


Inductoarele, pe care le puteți realiza manual, vor fi elemente la fel de importante. Aceste bobine simple sunt înfășurate din fire de cupru și sunt numite bobine de miez de aer. Realizarea unei astfel de înfășurări pentru scopul nostru este foarte simplă. Găsiți un cilindru rotund cu un diametru de aproximativ 5 centimetri și înfășurați firul în jurul lui, astfel încât fiecare tură să nu se suprapună cu o altă tură, dar în același timp să fie cât mai aproape de o altă tură. Un cilindru rotund poate fi, de exemplu, un tub din PVC. Poate fi necesar să utilizați bandă adezivă sau bandă adezivă în 2-3 locuri pentru a menține structura stabilă.


Pe lângă Arduino și inductori, avem nevoie de: un tranzistor NPN de tip 2N3055, o punte de diode 1A (ansamblu diodă, au patru fire), un LED, un rezistor de 100 ohmi, doi condensatori de 47 nF, o baterie de 9 V pentru a alimenta Arduino și, de asemenea, de preferință două plăci pentru prototipare. Schema de conectare a componentelor pentru crearea unui dispozitiv de transmisie de date fără fir este prezentată în figura de mai jos.



Circuitul poate fi testat cu codul Arduino simplu de mai jos.


void setup () (pinMode (13, OUTPUT);) void loop () (digitalWrite (13, HIGH); întârziere (0,5); digitalWrite (13, LOW); întârziere (0,5);)

Cu toate acestea, un dispozitiv simplu de transmisie a puterii fără fir poate fi realizat fără un Arduino. Practic, putem folosi doar un singur tranzistor 2N2222. Conectați cablul de bază la primul capăt al bobinei și colectorul la celălalt capăt al bobinei. Pinul emițătorului este conectat la baterie. Ca rezultat, o construcție atât de simplă poate arăta astfel:




& nbsp & nbsp & nbsp Vă mulțumim pentru interesul acordat site-ului proiectului de informare.
& nbsp & nbsp & nbsp
& nbsp & nbsp & nbspPuteți susține proiectul nostru donând orice sumă pentru dezvoltarea lui.

Controler de încărcare solar Arduino PWM
Cum să faci un controler de încărcare solar PWM foarte mic, simplu și ieftin cu Arduino Pro Mini pentru instalații de 12V off-grid. PCB-ul are aceeași dimensiune ca și mini-placa Pro, astfel încât acestea pot fi prinse împreună. PCB plănuiește o placă prototip universal.

Cablajul și utilizarea acestui controler de încărcare solar Arduino este foarte simplă - există 2 fire de intrare de la panoul solar (+ și -) și 2 cabluri de ieșire pentru a merge la bateria cu plumb acid. Baza panoului solar și bateria sunt conectate împreună. Orice sarcină trebuie conectată direct la bornele bateriei, iar controlerul de încărcare se va ocupa automat de restul.

Arduino măsoară în mod regulat tensiunea bateriei de plumb și acid în funcție de o anumită valoare, trece la MOSFET pentru a încărca bateria de la panoul solar și oprește MOSFET-ul când bateria este complet încărcată. Când sarcina atrage energie din baterie, controlerul detectează o cădere de tensiune și începe imediat să încarce bateria din nou. În timpul nopții, când panoul solar nu mai produce, controlerul așteaptă până când panoul începe să iasă din nou.


Firul pozitiv către panoul solar necesită o diodă de protecție Schottky care să fie instalată direct pe cablu (învelită într-un tub termocontractabil). Acesta nu este inclus în PCB-ul principal, deoarece este mai ușor de înlocuit și de răcire în același timp. Puteți face cu ușurință placa puțin mai lungă pentru a se potrivi într-un alt tip de diodă.

Descrierea schemei și a funcției:

Funcția se bazează pe un MOSFET IRF3205 cu canal N în partea superioară a circuitului. Acest lucru necesită o tensiune de poartă mai mare de 12 V pentru a deschide corect MOSFET-ul. Pentru a elimina necesitatea unui driver MOSFET extern, acesta este condus de o pompă de încărcare creată cu diode, 2 condensatoare și doi pini de ieșire Arduino PWM (3 și 11). Pinul A1 măsoară tensiunea bateriei, iar pinul 9 controlează ciclul MOSFET ON / OFF. LED-ul integrat Arduino Pro Mini conectat la pinul 13 este utilizat pentru a afișa ciclul curent al semnalului PWM.

Regulatorul de tensiune și toți condensatorii din jur (C6, C5 și C4) ar putea fi eliminate, deoarece există un regulator inclus în Arduino Pro Mini. Cu toate acestea, pentru că am folosit o placă de clonă ieftină, nu vreau să mă bazez pe capacitatea acesteia de a suporta tensiuni mai mari decât 12V pentru perioade mai lungi de timp. LP2950 este foarte ieftin și eficient până la 30 de volți, așa că oricum merită să îl aveți la bord.


Lista de piese: LP2950ACZ-5.0 Tranzistori cu regulator de tensiune redusă 2N3904 2N3906 x 2 MOSFET N-Channel IRF3205 Rezistori 82K (1%) 20K (1%) 220K x3 (0,4W este suficient) 4K7 (0,414N este suficient) Diode 0,414N este suficient P6KE33CA 90SQ035 (sau orice diodă Schottky similară 35V minim 9A) Condensatori 47N / 50V x2 ceramică 220P / 100V ceramică 1M / 50V (1000nF) ceramică 4M7 / 10V tantal 1M / 35V tantal x

Schema și codul acestui controler de încărcare sunt de Julian Ilette, el este inspirația din spatele acestui lucru inteligent. Toate acestea sunt doar documentație sofisticată și un design PCB potrivit pentru a se potrivi perfect cu placa Arduino Pro Mini. Împărtășește un videoclip cu un regulator de încărcare Arduino MPPT mai eficient, dar construcția lui este mult mai complicată și proiectul nu este încă finalizat. Dacă puteți îmbunătăți codul sau construcția în vreun fel, vă rugăm să împărtășiți îmbunătățirile dvs. în comentarii.

Echipa Electro-Labs a prezentat nu doar un proiect interesant, ci și util în viața de zi cu zi pentru Arduino. În acest proiect, a fost dezvoltat un scut programabil pentru Arduino, care acționează ca un încărcător pentru bateriile cu litiu. Scutul include un afișaj LCD și o interfață cu buton care permit utilizatorului să ajusteze tensiunea de la 2V la 10V și curentul de la 50mA la 1,1A. Dispozitivul oferă, de asemenea, capacitatea de a monitoriza procesul de încărcare.

Scutul se bazează pe cipul LT1510 și este controlat de Arduino Uno. Un ecran LCD simplu și accesibil Nokia 5110 este folosit ca afișaj. Este conectat prin interfața SPI și este alimentat de la o tensiune de 3,3 V. Deoarece pinii I/O ai arduino funcționează la 5V, se recomandă conectarea modulului LCD prin rezistențe conectate în serie la liniile de semnal. Sunt disponibili doi conectori pentru conectarea bateriilor Li-Ion. Patru butoane de control sunt conectate la pinii A2-A5 ai Arduino. Tensiunea bateriei și curentul de încărcare sunt monitorizate prin pinii analogici A0 și A1. Detaliile conversiei A/D sunt explicate în codul sursă al proiectului. Două LED-uri SMD sunt utilizate pentru a indica funcționarea dispozitivului.

Diagrama schematică a proiectului a fost dezvoltată în SoloCapture din pachetul SoloPCBtools. Scutul poate funcționa fără controlul microcontrolerului. Când Arduino nu este programat, încărcătorul are o tensiune implicită de întrerupere de 4,2 V și un curent de încărcare maxim de 1,1 A. PCB-ul este proiectat de SoloPSB. Designul PCB și programul SoloPSB în sine pot fi descărcate de pe electro-labs.com. Dimensiunile scutului sunt potrivite cu locația sa pe Arduino Uno. LED-urile, interfața cu buton, afișajul LCD și conectorii bateriei sunt amplasate în partea de sus pentru confort. Toate celelalte elemente sunt situate pe spatele scutului.

Ecranul LCD este programat să afișeze patru pagini care permit utilizatorului să introducă parametrii de încărcare și să monitorizeze procesul de încărcare. Pe prima pagină, utilizatorul poate seta tensiunea de întrerupere și curentul maxim de încărcare, poate merge la pagina de stare a bateriei și poate începe încărcarea. Butoanele sus și jos sunt folosite pentru a naviga prin opțiuni, iar butoanele din dreapta și din stânga sunt folosite pentru a modifica parametrii și a selecta opțiuni. A doua pagină arată starea bateriei. În el puteți vedea tensiunea curentă a bateriei. A treia pagină arată tensiunea și curentul de încărcare. Cu butonul din stânga sau din dreapta de pe această pagină, puteți opri procesul de încărcare și puteți reveni la pagina de setare a parametrilor. Când tensiunea bateriei atinge valoarea setată, încărcătorul se oprește și afișează mesajul „Charge Complete”. Pentru a ieși, apăsați tasta din stânga.

Arduino și circuitele de încărcare adăugate pot fi folosite pentru a monitoriza și controla încărcarea bateriilor NiMH, de exemplu:

Dispozitiv terminat

Bateriile reîncărcabile sunt o modalitate excelentă de a vă alimenta electronicele portabile. Ele vă pot economisi mulți bani atunci când sunt încărcate corespunzător. Pentru a profita la maximum de bateriile tale, acestea trebuie să fie încărcate corespunzător. Aceasta înseamnă că aveți nevoie de un încărcător bun. Puteți cheltui tone de bani cumpărând un încărcător gata făcut sau vă puteți bucura să faceți unul singur. În acest articol, vom vedea cum puteți crea un încărcător controlat Arduino.

În primul rând, este important să rețineți că nu există o metodă de încărcare universală care să funcționeze pentru toate bateriile. Diferite tipuri de baterii folosesc procese chimice diferite pentru a le face să funcționeze. Ca rezultat, diferite tipuri de baterii trebuie încărcate în moduri diferite. Nu vom putea acoperi toate tipurile de baterii reîncărcabile și metode de încărcare în acest articol. Prin urmare, de dragul simplității, ne vom concentra pe cel mai comun tip de baterie reîncărcabilă de dimensiune AA, bateria cu nichel metal hidrură (NiMH).

Componente

Lista de piese de la stânga la dreapta:

  • rezistenta puternica 10 Ohm (minim 5 wati);
  • rezistor de 1 MΩ;
  • condensator 1 μF;
  • tranzistor MOSFET IRF510;
  • senzor de temperatură TMP36;
  • sursa de alimentare de 5 volti;

Cum să încărcați bateriile NiMH AA

Creșterea ratei de încărcare crește riscul de deteriorare a bateriei.

Există multe modalități de a încărca bateriile NiMH. Metoda pe care o utilizați depinde în principal de cât de repede doriți să încărcați bateria. Rata de încărcare este măsurată în raport cu capacitatea bateriei. Dacă bateria ta are o capacitate de 2500mAh și o încarci cu 2500mA, atunci o încarci la o rată de 1C. Dacă încărcați aceeași baterie cu 250mA, atunci o încărcați la o rată de C / 10.

Când încărcați rapid bateria (peste C / 10), trebuie să monitorizați cu atenție tensiunea și temperatura bateriei pentru a evita supraîncărcarea. Acest lucru poate deteriora grav bateria. Cu toate acestea, atunci când încărcați lent bateria (sub C / 10), este mult mai puțin probabil să vă deteriorați bateria dacă o reîncărcați accidental. Prin urmare, metodele de încărcare lentă sunt în general considerate mai sigure și vă vor ajuta să prelungiți durata de viață a bateriei. Prin urmare, în încărcătorul nostru DIY, vom folosi o rată de încărcare C / 10.

Circuit de încărcare

Pentru acest încărcător, baza este circuitul pentru controlul sursei de alimentare folosind Arduino. Circuitul este alimentat de o sursă de tensiune de 5 volți, cum ar fi un adaptor de curent alternativ sau o sursă de alimentare a computerului. Cele mai multe porturi USB nu sunt potrivite pentru acest proiect din cauza limitărilor actuale. Sursa de 5V încarcă bateria printr-un rezistor puternic de 10 ohmi și un MOSFET puternic. MOSFET-ul stabilește cantitatea de curent care curge prin baterie. Rezistorul este adăugat ca o modalitate ușoară de a controla curentul. Monitorizarea curentului se face prin conectarea fiecărui pin al rezistenței la pinii de intrare analogic ai Arduino și măsurarea tensiunii pe fiecare parte. MOSFET-ul este condus de pinul de ieșire PWM al Arduino. Impulsurile semnalului de modulație a lățimii impulsului sunt netezite la o tensiune constantă printr-un filtru pe un rezistor de 1 MΩ și un condensator de 1 μF. Acest circuit permite Arduino să urmărească și să controleze curentul care trece prin baterie.


senzor de temperatura

Senzorul de temperatură servește la prevenirea supraîncărcării bateriei și la asigurarea siguranței.

Ca măsură suplimentară de precauție, la încărcător a fost adăugat un senzor de temperatură TMP36 pentru a monitoriza temperatura bateriei. Acest senzor generează o tensiune liniară cu temperatura. Prin urmare, spre deosebire de termistori, nu necesită calibrare sau echilibrare. Senzorul este instalat într-un orificiu găurit în carcasa suportului bateriei și lipit în orificiu astfel încât să fie apăsat pe baterie atunci când este instalat în suport. Pinii senzorului se conectează la șina de 5V, la carcasă și la pinul de intrare analogic al Arduino.

Suport pentru baterie AA înainte și după instalare pe placa

Codul


Codul pentru acest proiect este destul de simplu. Variabilele de la începutul codului sursă vă permit să reglați încărcătorul introducând valori pentru capacitatea bateriei și rezistența exactă a rezistenței de putere. Au fost adăugate și variabilele prag sigure. Tensiunea maximă admisă a bateriei este setată la 1,6 volți. Temperatura maximă a bateriei este setată la 35 de grade Celsius. Timpul maxim de încărcare este setat la 13 ore. Dacă oricare dintre aceste praguri de siguranță este depășită, încărcătorul se oprește.

În corpul programului, puteți vedea că sistemul măsoară constant tensiunile la bornele rezistenței puternice. Acesta este folosit pentru a calcula tensiunea pe baterie și curentul care trece prin aceasta. Curentul este comparat cu o valoare țintă, care este C / 10. Dacă curentul calculat diferă de valoarea țintă cu mai mult de 10 mA, sistemul va ajusta automat valoarea de ieșire pentru a o corecta.

Arduino folosește o interfață serială pentru a afișa toate datele curente. Dacă doriți să controlați funcționarea încărcătorului, puteți conecta Arduino la portul USB al computerului, dar acest lucru nu este necesar, deoarece Arduino este alimentat de sursa de 5V a încărcătorului.

Capacitate baterie int = 2500; // valoarea capacității bateriei în mAh rezistență float = 10,0; // rezistența măsurată a rezistenței de putere int cutoffVoltage = 1600; // tensiunea maximă a bateriei (în mV) care nu trebuie depășită float cutoffTemperatureC = 35; // temperatura maximă a bateriei care nu trebuie depășită (în grade C) // float cutoffTemperatureF = 95; // temperatura maximă a bateriei care nu trebuie depășită (în grade F) cutoffTime lung = 46800000; // timp maxim de încărcare de 13 ore, care nu trebuie depășit int outputPin = 9; // firul semnalului de ieșire este conectat la pinul digital 9 int outputValue = 150; // valoarea semnalului PWM de ieșire int analogPinOne = 0; // primul senzor de tensiune este conectat la pinul analogic 0 float valueProbeOne = 0; // variabilă pentru a stoca valoarea pe analogPinOne float voltageProbeOne = 0; // tensiune calculată la analogPinOne int analogPinTwo = 1; // al doilea senzor de tensiune este conectat la pinul analogic 1 float valueProbeTwo = 0; // variabilă pentru a stoca valoarea pe analogPinTwo float voltageProbeTwo = 0; // tensiune calculată la analogPinTwo int analogPinThree = 2; // al treilea senzor de tensiune este conectat la pinul analogic 2 float valueProbeThree = 0; // variabilă pentru a stoca valoarea pe analogPinThree float tmp36Voltage = 0; // tensiune calculată la analogPinThree float temperatureC = 0; // temperatura calculată a senzorului în grade C // temperatură floatF = 0; // temperatura senzorului calculată în grade F float voltageDifference = 0; // diferența dintre tensiunile pe analogPinOne și analogPinTwo float batteryVoltage = 0; // tensiunea bateriei calculată float current = 0; // curent calculat care curge prin sarcină în (mA) float targetCurrent = batteryCapacity / 10; // curentul de ieșire țintă (în mA) este setat la // C / 10 sau 1/10 din curentul de plutire a capacității baterieiEroare = 0; // diferența dintre curenții țintă și actuali (în mA) void setup () (Serial.begin (9600); // setarea interfeței seriale pinMode (outputPin, OUTPUT); // setați pinul ca ieșire) void loop () (analogWrite) (outputPin, outputValue); // scrieți valoarea de ieșire pe pinul de ieșire Serial.print ("Ieșire:"); // arată valorile de ieșire pentru control pe computer Serial.println (outputValue); valueProbeOne = analogRead ( analogPinOne); // citește valoarea de intrare la prima sondă voltageProbeOne = (valueProbeOne * 5000) / 1023; // se calculează tensiunea la prima sondă în milivolți Serial.print ("Voltage Probe One (mV):"); // arată tensiunea la prima sondă Serial.println ( voltageProbeOne); valueProbeTwo = analogRead (analogPinTwo); // citește valoarea de intrare pe a doua sondă voltageProbeTwo = (valueProbeTwo * 5000) / 1023; // se calculează tensiunea pe a doua sondă în milivolti Serial.print ("Sonda de tensiune doi (mV):" ); // arată tensiunea la a doua sondă Serial.println (voltageProbeTwo); BatteryVoltage = 5000 - voltageProbeTwo; // calculează tensiunea bateriei Serial.print ("Tensiune baterie (mV):"); // arată tensiunea bateriei Serial.println (batteryVoltage); curent = (voltageProbeTwo - voltageProbeOne) / rezistență; // se calculează curentul de încărcare Serial.print ("Curentul țintă (mA):"); // arată curentul țintă Serial.println (Current țintă); Serial.print ("Curentul bateriei (mA):"); // arată curentul actual Serial.println (curent); currentError = targetCurrent - curent; // diferența dintre curenții țintă și măsurați Serial.print ("Eroare curentă (mA):"); // afișează eroarea de setare curentă Serial.println (currentError); valueProbeThree = analogRead (analogPinThree); // citește valoarea de intrare a celei de-a treia sonde, tmp36Voltage = valueProbeThree * 5. 0; // convertind-o la tensiune tmp36Voltage / = 1024.0; temperaturaC = (tmp36Tensiune - 0,5) * 100; // transformare bazată pe o dependență de 10 mV pe grad cu o deplasare de 500 mV // ((tensiune - 500 mV) înmulțit cu 100) Serial.print ("Temperatura (grade C)"); // arata temperatura in grade Celsius Serial.println (temperatureC); / * temperaturaF = (temperatura C * 9,0 / 5,0) + 32,0; // convertiți în grade Fahrenheit Serial.print ("Temperatura (grade F)"); Serial.println (temperaturaF); * / Serial.println (); // linii goale suplimentare pentru a facilita citirea datelor la depanarea Serial.println (); if (abs (currentError)> 10) // dacă eroarea de setare a curentului este suficient de mare, atunci reglați tensiunea de ieșire (outputValue = outputValue + currentError / 10; if (outputValue)< 1) // выходное значение никогда не может быть ниже 0 { outputValue = 0; } if(outputValue >254) // valoarea de ieșire nu poate fi niciodată mai mare de 255 (outputValue = 255;) analogWrite (outputPin, outputValue); // scrieți o nouă valoare de ieșire) if (temperatureC> cutoffTemperatureC) // opriți încărcarea dacă temperatura bateriei a depășit pragul de siguranță (outputValue = 0; Serial.print ("Max Temperature Exceeded");) / * if (temperatureF> cutoffTemperatureF) // opriți încărcarea dacă temperatura bateriei depășește pragul de siguranță (outputValue = 0;) * / if (batteryVoltage> cutoffVoltage) // opriți încărcarea dacă tensiunea bateriei depășește pragul de siguranță (outputValue = 0; Serial.print ("Max Voltage Exceeded") );) if (millis ()> cutoffTime) // opriți încărcarea dacă timpul de încărcare a depășit pragul (outputValue = 0; Serial.print ("Max Charge Time Exceeded");) delay (10000); // întârzie cu 10 secunde înainte de următoarea iterație a buclei)

Versiunea descărcabilă a codului sursă poate fi găsită la linkul de mai jos.

Top articole similare