Cuprins:

Alimentare Bluetooth digitală alimentată prin USB C: 8 pași (cu imagini)
Alimentare Bluetooth digitală alimentată prin USB C: 8 pași (cu imagini)

Video: Alimentare Bluetooth digitală alimentată prin USB C: 8 pași (cu imagini)

Video: Alimentare Bluetooth digitală alimentată prin USB C: 8 pași (cu imagini)
Video: ESP32 Tutorial 3 - Resistor, LED, Bredboard and First Project: Hello LED -ESP32 IoT Learnig kit 2024, Iulie
Anonim
Alimentare digitală cu alimentare prin USB C Bluetooth
Alimentare digitală cu alimentare prin USB C Bluetooth
Alimentare digitală cu alimentare prin USB C Bluetooth
Alimentare digitală cu alimentare prin USB C Bluetooth
Alimentare digitală cu alimentare prin USB C Bluetooth
Alimentare digitală cu alimentare prin USB C Bluetooth
Alimentare digitală cu alimentare prin USB C Bluetooth
Alimentare digitală cu alimentare prin USB C Bluetooth

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 și telefon?

În acest instructiv vă voi arăta cum să construiți exact asta: o sursă de alimentare digitală, care este alimentată prin USB C. Este compatibilă cu arduino și poate fi controlată prin PC prin USB sau prin telefonul dvs. prin Bluetooth.

Acest proiect este o evoluție a alimentării mele anterioare, care funcționa pe baterie și are afișaj și butoane. Verifică-l aici! Cu toate acestea, am vrut să mă micșorez, așa că de aceea am făcut asta!

Alimentarea poate fi alimentată de la o baterie USB C sau un încărcător de telefon. Acest lucru permite o putere de până la 15 W, care este suficientă pentru a alimenta majoritatea dispozitivelor electronice cu putere redusă! Pentru a avea o interfață de utilizare bună pe un dispozitiv atât de mic, am inclus Bluetooth și o aplicație Android pentru comenzi, ceea ce face ca această alimentare să fie ultra portabilă!

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

  • Alimentat de USB C
  • Controlat prin aplicația Android prin Bluetooth
  • Controlat prin Java prin USB C
  • 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
  • Alimentat de ATMEGA32U4, programat cu Arduino IDE
  • Poate fi alimentat de o baterie USB C pentru a o face portabilă
  • Detectarea încărcătorului USB C și Apple
  • 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 - 25V, trepte de 25 mV (10 biți DAC) (funcționare adevărată 0V)
  • Măsurarea tensiunii: rezoluție 25 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 (10 biți ADC)

Cost

Furnizarea completă de energie m-a costat în jur de 100 USD, cu toate componentele unice. 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 ar scădea la aproximativ 70 USD. 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 (C23 și R32). 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 - 25 V, va trebui să amplificăm acest semnal cu un factor de 5. Acest lucru se realizează prin configurația opamp care nu inversează U7C. Câștigul la pinul stabilit este determinat de R31 și R36. Aceste rezistențe sunt 0,1% tolerante, pentru a minimiza erorile. R39 și R41 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 acum este filtrat cu pas redus și atenuat pentru a merge de la un interval de 0 - 5 V la un interval de 0 - 2,5 V. Această tensiune este acum comparată cu căderea de tensiune pe rezistența de detectare a curentului (ADC_Iout, vezi mai jos) prin configurația comparativă a opamp U1B. Dacă curentul este prea mare, acesta va porni un led și, de asemenea, va trage linia setată a LT3080 la masă (prin Q1), oprind astfel ieșirea. Măsurarea curentului și generarea semnalului ADC_Iout se face după cum urmează. Curentul de ieșire curge prin rezistorul R22. Când curentul curge prin acest rezistor, acesta creează o cădere de tensiune, pe care o putem măsura, și este plasat înaintea LT3080, deoarece căderea de tensiune peste el nu ar trebui să influențeze tensiunea de ieșire. Căderea de tensiune este măsurată cu un amplificator diferențial (U7B) cu un câștig de 5. Acest lucru are ca rezultat un interval de tensiune de 0 - 2,5 V (mai multe despre asta mai târziu), de unde divizorul de tensiune la semnalul PWM al curentului. Tamponul (U7A) este acolo pentru a vă asigura că curentul care curge în rezistențele R27, R34 și R35 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 R46), 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ă. Din păcate, acest circuit este la ieșirea de pe LT3080, ceea ce înseamnă că curentul său va contribui la curentul de ieșire pe care dorim să îl măsurăm. Din fericire, este constantă, astfel încât să putem calibra pentru acest curent. Dioda zener D7 este utilizată pentru a fixa tensiunea de ieșire dacă depășește 25 V, iar divizorul rezistorului scade domeniul tensiunii de ieșire de la 0 - 25 V la 0 - 2,5 V (ADC_Vout). Tamponul (U7D) asigură că rezistențele nu trag curent din ieșire.

Încarcă pompa

Tensiunea negativă pe care am menționat-o anterior este generată de un mic circuit curios: pompa de încărcare. Este alimentat de un PWM de 50% al microcontrolerului (PWM).

Convertor Boost

Să aruncăm o privire la tensiunea de intrare a blocului nostru principal: VCC. Vedem că este de 5 - 27V, dar așteaptă, USB dă maximum 5 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 27 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.

USB C

Acest lucru ne conduce la tensiunea reală de intrare: portul USB! Motivul utilizării USB C (USB tip 3.1 pentru a fi exact, USB C este doar tipul conectorului) se datorează faptului că permite un curent de 3A la 5V, care este deja destul de puțină. Dar există o problemă, dispozitivul trebuie să fie conform pentru a atrage acest curent și a „negocia” cu dispozitivul gazdă. În practică, acest lucru se realizează prin conectarea a două rezistențe de descărcare 5.1k (R12 și R13) la linia CC1 și CC2. Pentru compatibilitatea USB 2, documentația este mai puțin clară. Pe scurt: desenezi orice curent vrei, atâta timp cât gazda îți poate furniza. Acest lucru poate fi verificat prin monitorizarea tensiunii magistralei USB: una, tensiunea scade sub 4.25V, dispozitivul atrage prea mult curent. Acest lucru este detectat de comparatorul U1A și va dezactiva ieșirea. De asemenea, trimite un semnal către microcontroler pentru a seta curentul maxim. Ca bonus, au fost adăugate rezistențe pentru a sprijini detectarea ID-ului încărcătorului încărcătoarelor Apple și Samsung.

Regulator 5V

Tensiunea de alimentare de 5 V a arduino-ului provine în mod normal de la USB. Dar, deoarece tensiunea USB poate varia între 4,5 și 5,5 V în conformitate cu specificațiile USB, acest lucru nu este suficient de precis. Prin urmare, se utilizează un regulator de 5V, care poate genera 5V de la tensiuni mai mici și mai mari. Totuși, această tensiune nu este extrem de precisă, dar aceasta este rezolvată printr-o etapă de calibrare în care ciclul de funcționare al semnalului PWM este ajustat în consecință. Această tensiune e este măsurată de divizorul de tensiune format din R42 și R43. 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 potențiometrului.

Referință tensiune 2,56 V

Acest cip mic oferă o referință de tensiune foarte precisă de 2,56 V. Aceasta este utilizată ca referință pentru semnalele analogice ADC_Vout, ADC_Iout, ADC_Vbatt. De aceea, aveam nevoie de divizoare de tensiune pentru a reduce aceste semnale la 2,5 V.

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. Din fericire, acest lucru este realizat de ATMEGA32U4, acesta este același cip care este utilizat în Arduino Micro.

Bluetooth

Partea Bluetooth este foarte simplă: se adaugă un modul Bluetooth disponibil și se ocupă de toate pentru noi. Deoarece nivelul său logic este de 3,3 V (VS 5 V pentru microcontroler) se folosește un divizor de tensiune pentru a schimba nivelul semnalului.

Ș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

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.

În timp ce sursa mea de putere anterioară avea doar componente orificiale trecătoare, constrângerea de dimensiune pentru noul meu a făcut acest lucru imposibil. Majoritatea componentelor sunt încă relativ ușor de lipit, deci nu vă fie teamă. Ca ilustrare: un prieten de-al meu care nu mai lipise niciodată a reușit să populeze acest dispozitiv!

Este mai ușor să faceți mai întâi componentele din față, apoi din spate și să terminați cu componentele orificiului. Când faceți acest lucru, PCB-ul nu se va clătina atunci când lipiți cele mai dificile componente. Ultima componentă care trebuie lipită este modulul Bluetooth.

Toate componentele pot fi lipite, cu excepția celor 2 mufe de banane, pe care le vom monta în pasul următor!

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-ul în jurul unei carcase din aluminiu de 20x50x80mm (https://www.aliexpress.com/item/Aluminum-PCB-Instr…), 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ă facem niște găuri pentru cricurile pentru banane. Am făcut asta manual, dar dacă aveți acces la un CNC, aceasta ar fi o opțiune mai precisă. Introduceți cricurile pentru banane în aceste găuri și lipiți-le pe PCB.

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 permite transferul de căldură între LT3080 și LT1370 și carcasă. Nu-i uita!

Acum ne putem concentra pe panoul frontal, care doar se înșurubează în poziție. Cu ambele panouri în poziție, putem introduce acum ansamblul în carcasă și închide totul. Î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 ATMEGA32U4, 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. Trimiteți date către aplicație
  2. Citiți datele din aplicație
  3. Măsurați tensiunea
  4. Măsurați curentul
  5. Buton sondaj

Supracurentul USB este gestionat de o rutină de servicii de întrerupere pentru a-l avea cât mai receptiv posibil.

Înainte ca cipul să poată fi programat prin USB, bootloader-ul ar trebui să fie ars. Acest lucru se face prin portul ISP / ICSP (antetele masculine 3x2) printr-un programator ISP. Opțiunile sunt AVRISPMK2, USBTINY ISP sau un arduino ca ISP. Asigurați-vă că placa primește alimentare și apăsați butonul „Burn Bootloader”.

Codul poate fi acum încărcat pe placa prin portul USB C (deoarece cipul are un bootloader). Placă: Arduino Micro Programmer: AVR ISP / AVRISP MKII Acum putem arunca o privire asupra interacțiunii dintre Arduino și PC.

Pasul 6: aplicația Android

Aplicația Android
Aplicația Android

Acum avem o sursă de putere complet funcțională, dar nu avem nicio modalitate de a o controla încă. Foarte enervant. Deci, vom crea o aplicație Android pentru a controla alimentarea prin Bluetooth.

Aplicația a fost realizată cu programul inventator de aplicații MIT. Toate fișierele pot fi incluse pentru a clona și modifica proiectul. Mai întâi, descărcați aplicația însoțitoare MIT AI2 pe telefon. Apoi, importați fișierul.aia pe site-ul AI. Acest lucru vă permite, de asemenea, să descărcați aplicația pe propriul telefon, alegând „Construiți> Aplicație (furnizați codul QR pentru.apk)”

Pentru a utiliza aplicația, selectați un dispozitiv Bluetooth din listă: acesta va apărea ca modul HC-05. Când sunteți conectat, toate setările pot fi modificate și ieșirea alimentării poate fi citită.

Pasul 7: 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 8:

Imagine
Imagine
Imagine
Imagine
Imagine
Imagine

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

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 buzunar și microcontroler, aș aprecia cu adevărat!

Recomandat: