Cuprins:

Alimentare digitală cu baterie: 7 pași (cu imagini)
Alimentare digitală cu baterie: 7 pași (cu imagini)

Video: Alimentare digitală cu baterie: 7 pași (cu imagini)

Video: Alimentare digitală cu baterie: 7 pași (cu imagini)
Video: Ce înseamna semnul tau din nastere 2024, Noiembrie
Anonim
Alimentare digitală cu baterie
Alimentare digitală cu baterie
Alimentare digitală cu baterie
Alimentare digitală cu baterie
Alimentare digitală cu baterie
Alimentare digitală cu baterie
Alimentare digitală cu baterie
Alimentare digitală cu baterie

Ați dorit vreodată o sursă de energie pe care să o puteți folosi din mers, chiar și fără o priză de perete în apropiere? Și nu ar fi grozav dacă ar fi, de asemenea, foarte precis, digital și controlabil prin PC?

În acest instructiv vă voi arăta cum să construiți exact asta: o sursă de alimentare digitală cu baterie, care este compatibilă cu arduino și poate fi controlată prin intermediul computerului prin USB.

Cu ceva timp în urmă, am construit o sursă de alimentare dintr-un alimentator ATX vechi și, deși funcționează excelent, am vrut să-mi intensific jocul cu o sursă de alimentare digitală. După cum sa spus deja, este alimentat de baterii (2 celule de litiu, mai exact) și poate furniza maximum 20 V la 1 A; ceea ce este o mulțime pentru majoritatea proiectelor mele care necesită o putere de alimentare precisă.

Voi arăta întregul proces de proiectare și toate fișierele de proiect pot fi găsite pe pagina mea GitHub:

Să începem!

Pasul 1: Caracteristici și cost

Caracteristici și cost
Caracteristici și cost

Caracteristici

  • Moduri de tensiune constantă și curent constant
  • Folosește un regulator liniar cu zgomot redus, precedat de un prereglator de urmărire pentru a minimiza disiparea puterii
  • Utilizarea componentelor care pot fi vândute pentru a menține proiectul accesibil
  • Alimentat de ATMEGA328P, programat cu Arduino IDE
  • Comunicare PC prin intermediul aplicației Java prin micro USB
  • Alimentat de 2 celule 18650 Lithium Ion protejate
  • Mufe banane distanțate de 18 mm pentru compatibilitate cu adaptoarele BNC

Specificații

  • 0 - 1A, pași de 1 mA (10 biți DAC)
  • 0 - 20V, trepte de 20 mV (10 biți DAC) (funcționare adevărată 0V)
  • Măsurarea tensiunii: rezoluție 20 mV (10 biți ADC)
  • Măsurare curentă:

    • <40mA: rezoluție 10uA (ina219)
    • <80mA: rezoluție 20uA (ina219)
    • <160mA: rezoluție 40uA (ina219)
    • <320mA: rezoluție 80uA (ina219)
    • > 320mA: rezoluție 1mA (ADC pe 10 biți)

Cost

Furnizarea completă de energie m-a costat în jur de 135 USD, cu toate componentele unice. Bateriile sunt partea cea mai scumpă (30 USD pentru 2 celule), deoarece sunt celule de litiu protejate 18650. Este posibil să reduceți semnificativ costul dacă nu este necesară funcționarea bateriei. Prin omiterea bateriilor și a circuitelor de încărcare, prețul scade la aproximativ 100 USD. Deși acest lucru poate părea scump, alimentarea cu puteri cu mult mai puține performanțe și caracteristici costă adesea mai mult decât aceasta.

Dacă nu vă deranjează să vă comandați componentele de pe ebay sau aliexpress, prețul bateriilor va scădea la 100 USD și 70 USD fără. Piesele intră mai mult, dar este o opțiune viabilă.

Pasul 2: Schema și teoria funcționării

Schema și teoria funcționării
Schema și teoria funcționării

Pentru a înțelege funcționarea circuitului, va trebui să ne uităm la schemă. L-am împărțit în blocuri funcționale, astfel încât să fie mai ușor de înțeles; Voi explica, de asemenea, operațiunea pas cu pas. Această parte este destul de profundă și necesită o bună cunoaștere a electronicii. Dacă doriți doar să știți cum să construiți circuitul, puteți trece la pasul următor.

Bloc principal

Operațiunea se bazează în jurul cipului LT3080: este un regulator de tensiune liniar, care poate reduce tensiunile, pe baza unui semnal de control. Acest semnal de control va fi generat de un microcontroler; modul în care se face acest lucru, va fi explicat în detaliu mai târziu.

Setarea tensiunii

Circuitul din jurul LT3080 generează semnale de control adecvate. În primul rând, vom arunca o privire asupra modului în care este setată tensiunea. Setarea tensiunii de la microcontroler este un semnal PWM (PWM_Vset), care este filtrat de un filtru low-pass (C9 și R26). Aceasta produce o tensiune analogică - între 0 și 5 V - proporțională cu tensiunea de ieșire dorită. Deoarece domeniul nostru de ieșire este de 0 - 20 V, va trebui să amplificăm acest semnal cu un factor de 4. Acest lucru se realizează prin configurația opamp care nu inversează U3C. Câștigul la pinul stabilit este determinat de R23 // R24 // R25 și R34. Aceste rezistențe sunt 0,1% tolerante, pentru a minimiza erorile. R39 și R36 nu contează aici, deoarece fac parte din bucla de feedback.

Setari curente

Acest pin setat poate fi utilizat și pentru a doua setare: modul curent. Vrem să măsurăm extragerea curentă și să oprim ieșirea atunci când aceasta depășește curentul dorit. Prin urmare, începem din nou printr-un semnal PWM (PWM_Iset), generat de microcontroler, care este acum filtrat cu pas redus și atenuat pentru a trece de la un interval de 0 - 5 V la un interval de 0 - 2 V. Această tensiune este acum comparată cu căderea de tensiune pe rezistorul de detectare a curentului (ADC_Iout, vezi mai jos) prin configurația comparativă a opamp U3D. Dacă curentul este prea mare, acesta va porni un led și, de asemenea, va trage linia setată a LT3080 la masă (prin Q2), oprind astfel ieșirea. Măsurarea curentului și generarea semnalului ADC_Iout se face după cum urmează. Curentul de ieșire curge prin rezistențele R7 - R16. Acestea totalizează 1 ohm; motivul pentru care nu se utilizează 1R în primul rând este dublu: 1 rezistor ar trebui să aibă o putere mai mare (trebuie să disipeze cel puțin 1 W) și, folosind 10 rezistențe 1% în paralel, obținem o precizie mai mare decât cu un singur rezistor de 1%. Un videoclip bun despre motivul pentru care funcționează poate fi găsit aici: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Când curentul curge prin aceste rezistențe, creează o cădere de tensiune, pe care o putem măsura, și este plasat înaintea LT3080, deoarece căderea de tensiune peste acesta nu ar trebui să influențeze tensiunea de ieșire. Căderea de tensiune este măsurată cu un amplificator diferențial (U3B) cu un câștig de 2. Acest lucru duce la un interval de tensiune de 0 - 2 V (mai multe despre asta mai târziu), de unde divizorul de tensiune la semnalul PWM al curentului. Tamponul (U3A) este acolo pentru a vă asigura că curentul care curge în rezistențele R21, R32 și R33 nu trece prin rezistorul de sens curent, ceea ce ar influența citirea acestuia. De asemenea, rețineți că acesta ar trebui să fie un opamp șină-șină, deoarece tensiunea de intrare la intrarea pozitivă este egală cu tensiunea de alimentare. Amplificatorul fără inversare este doar pentru măsurarea cursului, deși, pentru măsurători foarte precise, avem la bord cipul INA219. Acest cip ne permite să măsurăm curenți foarte mici și este adresat prin I2C.

Lucruri suplimentare

La ieșirea LT3080, mai avem câteva lucruri. În primul rând, există o chiuvetă curentă (LM334). Aceasta atrage un curent constant de 677 uA (setat de rezistorul R41), pentru a stabiliza LT3080. Cu toate acestea, nu este conectat la masă, ci la VEE, o tensiune negativă. Acest lucru este necesar pentru a permite LT3080 să funcționeze până la 0 V. Când este conectat la masă, cea mai mică tensiune ar fi de aproximativ 0,7 V. Acest lucru pare suficient de scăzut, dar rețineți că acest lucru ne împiedică să oprim complet alimentarea cu energie electrică. Dioda zener D3 este utilizată pentru a fixa tensiunea de ieșire dacă depășește 22 V, iar divizorul rezistorului scade domeniul tensiunii de ieșire de la 0 - 20 V la 0 - 2 V (ADC_Vout). Din păcate, aceste circuite sunt la ieșirea de pe LT3080, ceea ce înseamnă că curentul lor va contribui la curentul de ieșire pe care dorim să îl măsurăm. Din fericire, acești curenți sunt constanți dacă tensiunea rămâne constantă; astfel încât să putem calibra curentul atunci când sarcina este mai întâi deconectată.

Încarcă pompa

Tensiunea negativă pe care am menționat-o anterior este generată de un mic circuit curios: pompa de încărcare. Pentru funcționarea sa, m-aș referi aici: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Este alimentat de un PWM de 50% al microcontrolerului (PWM)

Convertor Boost

Să aruncăm o privire acum asupra tensiunii de intrare a blocului nostru principal: Vboost. Vedem că este de 8 - 24V, dar așteptați, 2 celule de litiu în serie dau maximum 8,4 V? Într-adevăr, și de aceea trebuie să creștem tensiunea, cu așa-numitul convertor de impuls. Am putea întotdeauna crește tensiunea la 24 V, indiferent de ieșirea dorită; cu toate acestea, acest lucru ar pierde multă putere în LT3080 și lucrurile ar deveni foarte fierbinți! Deci, în loc să facem acest lucru, vom crește tensiunea cu puțin mai mult decât tensiunea de ieșire. Este adecvat aproximativ 2,5 V mai mare, pentru a ține cont de căderea de tensiune a rezistorului de curent și de tensiunea de cădere a LT3080. Tensiunea este setată de rezistențe pe semnalul de ieșire al convertorului de impuls. Pentru a modifica această tensiune din mers, folosim un potențiometru digital, MCP41010, care este controlat prin SPI.

Încărcare baterie

Acest lucru ne conduce la tensiunea reală de intrare: bateriile! Deoarece folosim celule protejate, trebuie pur și simplu să le punem în serie și am terminat! Este important să folosiți celule protejate aici, pentru a evita supracurentul sau supra-descărcarea și, astfel, deteriorarea celulelor. Din nou, folosim un divizor de tensiune pentru măsurarea tensiunii bateriei și coborârea ei într-un domeniu utilizabil. Acum trecem la partea interesantă: circuitele de încărcare. Folosim cipul BQ2057WSN în acest scop: în combinație cu TIP32CG, el formează în sine o alimentare liniară. Acest cip încarcă celulele printr-o traiectorie CV CC adecvată. Deoarece bateriile mele nu au sondă de temperatură, această intrare ar trebui să fie legată de jumătate din tensiunea bateriei. Aceasta încheie partea de reglare a tensiunii din sursa de alimentare.

Regulator 5V

Tensiunea de alimentare de 5 V a arduino-ului este realizată cu acest regulator de tensiune simplu. Cu toate acestea, nu este cea mai precisă ieșire de 5 V, dar acest lucru va fi rezolvat mai jos.

Referință tensiune 2.048 V

Acest mic cip oferă o referință de tensiune de 2.048 V foarte precisă. Aceasta este utilizată ca referință pentru semnalele analogice ADC_Vout, ADC_Iout, ADC_Vbatt. De aceea, aveam nevoie de divizoare de tensiune pentru a aduce aceste semnale la 2 V. Microcontroler Creierul acestui proiect este ATMEGA328P, acesta este același cip care este utilizat în Arduino Uno. Am trecut deja peste majoritatea semnalelor de control, dar există totuși câteva adăugiri interesante. Codificatoarele rotative sunt conectate la cei 2 pini de întrerupere externi ai arduino-ului: PD2 și PD3. Acest lucru este necesar pentru o implementare software fiabilă. Comutatoarele de dedesubt folosesc un rezistor de tragere intern. Apoi, există acest divizor de tensiune ciudat pe linia de selectare a cipului potențiometrului (Pot). Un divizor de tensiune pe o ieșire, la ce servește atât de bine; Ai putea spune. Așa cum am menționat anterior, alimentarea cu 5 V nu este teribil de precisă. Ar fi, așadar, bine să măsurăm acest lucru cu precizie și să ajustăm ciclul de funcționare al semnalului PWM în consecință. Dar, din moment ce nu mai aveam date de intrare gratuite, a trebuit să fac un știft care să ducă taxe duble. Când alimentarea cu energie electrică pornește, acest pin este setat mai întâi ca intrare: măsoară șina de alimentare și se calibrează singură. Apoi, este setat ca ieșire și poate conduce linia de selectare a cipului.

Driver de afișare

Pentru afișaj, am dorit un ecran LCD hitachi disponibil în mod obișnuit - și ieftin. Sunt conduse de 6 pini, dar, din moment ce nu mai aveam pini, aveam nevoie de o altă soluție. Un registru de trecere la salvare! 74HC595 îmi permite să folosesc linia SPI pentru a controla afișajul, având nevoie doar de o linie suplimentară de selectare a cipurilor.

FTDI

Ultima parte a acestei surse de energie este legătura cu lumea crudă din exterior. Pentru aceasta, trebuie să convertim semnalele seriale în semnale USB. Acest lucru este realizat de un cip FTDI, care este conectat la un port micro USB pentru o conexiune ușoară.

Și asta este tot ce există!

Pasul 3: PCB și electronice

PCB și electronice
PCB și electronice
PCB și electronice
PCB și electronice
PCB și electronice
PCB și electronice
PCB și electronice
PCB și electronice

Acum, că înțelegem cum funcționează circuitul, putem începe să îl construim! Puteți pur și simplu comanda PCB online de la producătorul dvs. preferat (al meu costă în jur de 10 USD), fișierele Gerber pot fi găsite pe GitHub, împreună cu lista de materiale. Asamblarea PCB-ului este, în esență, o chestiune de lipire a componentelor în loc în funcție de serigrafie și factura de materiale.

Primul pas este lipirea componentelor SMD. Majoritatea sunt ușor de realizat manual, cu excepția cipului FTDI și a conectorului micro USB. Prin urmare, puteți evita lipirea personală a celor 2 componente și puteți folosi în schimb o placă de separare FTDI. Am furnizat știfturi pentru antet unde acestea pot fi lipite.

Când lucrarea SMD este terminată, puteți trece la toate prin componentele găurilor. Acestea sunt foarte simple. Pentru cipuri, este posibil să doriți să utilizați prize în loc să le lipiți direct pe placă. Este de preferat să utilizați un ATMEGA328P cu bootloader Arduino, altfel va trebui să îl încărcați folosind antetul ICSP (prezentat aici).

Singura parte care are nevoie de mai multă atenție este ecranul LCD, deoarece trebuie montat într-un unghi. Lipiți niște anteturi înclinate masculine, cu piesa de plastic orientată spre partea inferioară a ecranului. Acest lucru va permite o bună plasare a ecranului pe PCB. După aceea, poate fi lipit la loc la fel ca orice altă componentă de gaură.

Singurul lucru rămas de făcut este să adăugați 2 fire, care se vor conecta la bornele banane de pe placa frontală.

Pasul 4: carcasă și asamblare

Carcasă și asamblare
Carcasă și asamblare
Carcasă și asamblare
Carcasă și asamblare
Carcasă și asamblare
Carcasă și asamblare

Cu PCB-ul făcut, putem trece la carcasă. Am proiectat în mod special PCB în jurul acestei carcase Hammond, deci nu este recomandată utilizarea unei alte carcase. Cu toate acestea, puteți întotdeauna să imprimați 3D o carcasă cu aceleași dimensiuni.

Primul pas este pregătirea panoului final. Va trebui să forăm niște găuri pentru șuruburi, comutatoare etc. Am făcut acest lucru manual, dar dacă aveți acces la un CNC, ar fi o opțiune mai precisă. Am făcut găurile conform schemei și am bătut gaurile șuruburilor.

Este o idee bună să adăugați acum niște tampoane de mătase și să le țineți la loc cu o mică picătură de super lipici. Acestea vor izola LT3080 și TIP32 de pe placa din spate, permițând în același timp transferul de căldură. Nu le uitați! Când înșurubați așchii de panoul din spate, utilizați o mașină de spălat mica pentru a vă asigura izolarea!

Acum ne putem concentra pe panoul frontal, care doar glisează în poziție. Acum putem adăuga cricurile pentru banane și butoanele pentru codificatoarele rotative.

Cu ambele panouri în poziție, putem introduce acum ansamblul în carcasă, adăuga bateriile și închide totul. Asigurați-vă că utilizați baterii protejate, nu doriți ca celulele să explodeze!

În acest moment, hardware-ul este terminat, acum nu mai rămâne decât să le aruncăm viață cu software-ul!

Pasul 5: Cod Arduino

Cod Arduino
Cod Arduino

Creierul acestui proiect este ATMEGA328P, pe care îl vom programa cu Arduino IDE. În această secțiune, voi parcurge funcționarea de bază a codului, detaliile pot fi găsite ca comentarii în interiorul codului.

Codul parcurge practic acești pași:

  1. Citiți datele seriale din java
  2. Butoane sondaj
  3. Măsurați tensiunea
  4. Măsurați curentul
  5. Măsurați curentul cu INA219
  6. Trimiteți date seriale în java
  7. Configurați boostconvertor
  8. Încărcați bateria
  9. Actualizați ecranul

Codificatoarele rotative sunt gestionate de o rutină de service de întrerupere pentru a le avea cât mai receptive posibil.

Codul poate fi acum încărcat pe placa prin portul micro USB (dacă cipul are un bootloader). Placă: Arduino pro sau pro mini Programator: AVR ISP / AVRISP MKII

Acum putem arunca o privire asupra interacțiunii dintre Arduino și PC.

Pasul 6: Cod Java

Cod Java
Cod Java

Pentru înregistrarea datelor și controlul alimentării cu energie prin intermediul PC-ului, am creat o aplicație Java. Acest lucru ne permite să controlăm cu ușurință placa printr-o GUI. Ca și în cazul codului Arduino, nu voi intra în toate detaliile, dar voi oferi o imagine de ansamblu.

Începem prin a face o fereastră cu butoane, câmpuri de text etc; lucruri de bază GUI.

Acum vine partea distractivă: adăugarea porturilor USB, pentru care am folosit biblioteca jSerialComm. Odată selectat un port, Java va asculta orice date primite. De asemenea, putem trimite date către dispozitiv.

În plus, toate datele primite sunt salvate într-un fișier CSV, pentru tratarea ulterioară a datelor.

Când rulăm fișierul.jar, ar trebui să alegem mai întâi portul potrivit din meniul derulant. După conectare, datele vor începe să vină și putem trimite setările noastre la alimentarea cu energie electrică.

Deși programul este destul de simplu, poate fi foarte util să îl controlați prin intermediul unui computer și să înregistrați datele.

Pasul 7: Succes

Succes!
Succes!
Succes!
Succes!
Succes!
Succes!

După toată această muncă, avem acum o sursă de putere complet funcțională!

De asemenea, trebuie să mulțumesc unor persoane pentru sprijinul acordat:

  • Proiectul s-a bazat pe proiectul uSupply al EEVBLOG și pe schema sa Rev C. Așadar, o mulțumire specială lui David L. Jones pentru lansarea schemelor sale sub licență open source și pentru partajarea tuturor cunoștințelor sale.
  • O mulțumire imensă lui Johan Pattyn pentru producerea prototipurilor acestui proiect.
  • De asemenea, Cedric Busschots și Hans Ingelberts merită credit pentru ajutorul cu soluționarea problemelor.

Acum ne putem bucura de propria noastră sursă de energie de casă, care va fi utilă în timp ce lucrăm la alte proiecte minunate! Și cel mai important: am învățat multe lucruri pe parcurs.

Dacă ți-a plăcut acest proiect, te rog să mă votezi la concursul de alimentare, aș aprecia cu adevărat! Https: //www.instructables.com/contest/powersupply/

Concurs de alimentare cu energie electrică
Concurs de alimentare cu energie electrică
Concurs de alimentare cu energie electrică
Concurs de alimentare cu energie electrică

Premiul II la Concursul de alimentare cu energie electrică

Recomandat: