Indholdsfortegnelse:

Digital USB C -drevet Bluetooth -strømforsyning: 8 trin (med billeder)
Digital USB C -drevet Bluetooth -strømforsyning: 8 trin (med billeder)

Video: Digital USB C -drevet Bluetooth -strømforsyning: 8 trin (med billeder)

Video: Digital USB C -drevet Bluetooth -strømforsyning: 8 trin (med billeder)
Video: This may be the best car hack! 2024, Juli
Anonim
Digital USB C strømforsynet Bluetooth strømforsyning
Digital USB C strømforsynet Bluetooth strømforsyning
Digital USB C strømforsynet Bluetooth strømforsyning
Digital USB C strømforsynet Bluetooth strømforsyning
Digital USB C strømforsynet Bluetooth strømforsyning
Digital USB C strømforsynet Bluetooth strømforsyning
Digital USB C strømforsynet Bluetooth strømforsyning
Digital USB C strømforsynet Bluetooth strømforsyning

Har du nogensinde ønsket en strømforsyning, som du kan bruge på farten, selv uden en stikkontakt i nærheden? Og ville det ikke være fedt, hvis det også var meget præcist, digitalt og kontrollerbart via pc og din telefon?

I denne instruktive vil jeg vise dig, hvordan du opbygger præcis det: en digital strømforsyning, der drives via USB C. Den er arduino -kompatibel og kan styres via pc'en via USB eller via din telefon via Bluetooth.

Dette projekt er en udvikling af min tidligere strømforsyning, som var batteridrevet og har display og knapper. Tjek det ud her! Jeg ville dog gå mindre, så derfor lavede jeg dette!

Strømforsyningen kan drives fra en USB C batteribank eller telefonoplader. Dette giver mulighed for op til 15W strøm, hvilket er nok til at drive mest laveffektelektronik! For at få et godt brugergrænseflade på sådan en lille enhed inkluderede jeg Bluetooth og en Android -app til kontrolelementerne. Dette gør denne strømforsyning ultraportabel!

Jeg vil vise hele designprocessen, og alle projektfiler kan findes på min GitHub -side:

Lad os komme igang!

Trin 1: Funktioner og omkostninger

Funktioner og omkostninger
Funktioner og omkostninger

Funktioner

  • Drives af USB C
  • Styres via Android -app via Bluetooth
  • Styres via Java via USB C
  • Konstant spænding og konstant strømtilstand
  • Bruger en lineær regulator med lav støj, efterfulgt af en preregulator til sporing for at minimere effekttab
  • Drevet af ATMEGA32U4, programmeret med Arduino IDE
  • Kan drives af en USB C batteribank for at gøre den bærbar
  • USB C og Apple oplader registrering
  • Bananstik med 18 mm afstand til kompatibilitet med BNC -adaptere

specifikationer

  • 0 - 1A, trin på 1 mA (10 bit DAC)
  • 0 - 25V, trin på 25 mV (10 bit DAC) (ægte 0V drift)
  • Spændingsmåling: 25 mV opløsning (10 bit ADC)
  • Nuværende måling: <40mA: 10uA opløsning (ina219) <80mA: 20uA opløsning (ina219) <160mA: 40uA opløsning (ina219) <320mA: 80uA opløsning (ina219)> 320mA: 1mA opløsning (10 bit ADC)

Koste

Den komplette strømforsyning kostede mig omkring $ 100, med alle engangskomponenter. Selvom dette kan virke dyrt, leverer strømforsyninger med langt mindre ydeevne og funktioner ofte mere end dette. Hvis du ikke har noget imod at bestille dine komponenter fra ebay eller aliexpress, vil prisen falde til omkring $ 70. Det tager længere tid for delene at komme ind, men det er en levedygtig mulighed.

Trin 2: Skematisk og teori om drift

Skematisk og teori om drift
Skematisk og teori om drift

For at forstå kredsløbets funktion skal vi se på skematikken. Jeg opdelte det i funktionelle blokke, sådan at det er lettere at forstå; Jeg vil således også forklare betjeningen trin for trin. Denne del er ganske dybtgående og kræver en god elektronikviden. Hvis du bare vil vide, hvordan du opbygger kredsløbet, kan du springe til det næste trin.

Hovedblok

Operationen er baseret på LT3080 -chippen: det er en lineær spændingsregulator, der kan nedbringe spændinger baseret på et styresignal. Dette styresignal vil blive genereret af en mikrokontroller; hvordan dette gøres, vil blive forklaret i detaljer senere.

Spændingsindstilling

Kredsløbet omkring LT3080 genererer de passende styresignaler. Først vil vi se på, hvordan spændingen er indstillet. Spændingsindstillingen fra mikrokontrolleren er et PWM -signal (PWM_Vset), som filtreres af et lavpasfilter (C23 & R32). Dette producerer en analog spænding - mellem 0 og 5 V - proportional med den ønskede udgangsspænding. Da vores outputområde er 0 - 25 V, bliver vi nødt til at forstærke dette signal med en faktor 5. Dette gøres ved hjælp af den ikke -inverterende opamp -konfiguration af U7C. Forstærkningen til den indstillede pin bestemmes af R31 og R36. Disse modstande er 0,1% tolerante for at minimere fejl. R39 og R41 er ligegyldige her, da de er en del af feedback -loop.

Nuværende indstilling

Denne sætnål kan også bruges til den anden indstilling: aktuel tilstand. Vi vil måle strømstrømmen og slukke for udgangen, når denne overstiger den ønskede strøm. Derfor starter vi igen med et PWM -signal (PWM_Iset), genereret af mikrokontrolleren, som nu lavpasfiltreres og dæmpes til at gå fra et 0 - 5 V område til et 0 - 2,5 V område. Denne spænding sammenlignes nu med spændingsfaldet over den aktuelle følelsesmodstand (ADC_Iout, se nedenfor) af komparator -konfigurationen af opamp U1B. Hvis strømmen er for høj, vil dette tænde en LED, og også trække den indstillede linje for LT3080 til jorden (via Q1) og dermed slukke for udgangen. Målingen af strømmen og generering af signalet ADC_Iout udføres som følger. Udgangsstrømmen strømmer gennem modstand R22. Når strøm strømmer gennem denne modstand, skaber det et spændingsfald, som vi kan måle, og det placeres foran LT3080, da spændingsfaldet over det ikke bør påvirke udgangsspændingen. Spændingsfaldet måles med en differentialforstærker (U7B) med en forstærkning på 5. Dette resulterer i et spændingsområde på 0 - 2,5 V (mere om det senere), derfor spændingsdeleren ved PWM -signalet i strømmen. Bufferen (U7A) er der for at sikre, at strømmen, der strømmer ind i modstandene R27, R34 og R35, ikke går gennem den aktuelle følelsesmodstand, hvilket ville påvirke dens aflæsning. Bemærk også, at dette skal være en skinne-til-skinne opamp, fordi indgangsspændingen ved den positive indgang er lig med forsyningsspændingen. Den ikke -inverterende forstærker er kun til kursusmåling, men for meget præcise målinger har vi INA219 -chippen ombord. Denne chip giver os mulighed for at måle meget små strømme og adresseres via I2C.

Yderligere ting

Ved output fra LT3080 har vi nogle flere ting. Først og fremmest er der en strømvask (LM334). Dette tegner en konstant strøm på 677 uA (indstillet af modstand R46) for at stabilisere LT3080. Det er dog ikke forbundet til jord, men til VEE, en negativ spænding. Dette er nødvendigt for at LT3080 kan fungere ned til 0 V. Når den er tilsluttet jorden, vil den laveste spænding være omkring 0,7 V. Dette virker lavt nok, men husk på, at dette forhindrer os i at slukke for strømforsyningen helt. Desværre er dette kredsløb ved udgangen fra LT3080, hvilket betyder, at dets strøm vil bidrage til den udgangsstrøm, vi ønsker at måle. Heldigvis er den konstant, så vi kan kalibrere for denne strøm. Zenerdioden D7 bruges til at spænde udgangsspændingen, hvis den går over 25 V, og modstandsdeleren sænker udgangsspændingsområdet fra 0 - 25 V til 0 - 2,5 V (ADC_Vout). Bufferen (U7D) sikrer, at modstandene ikke trækker strøm fra udgangen.

Opladningspumpe

Den negative spænding, som vi nævnte før, genereres af et underligt lille kredsløb: ladningspumpen. Den fodres med en 50% PWM af mikrokontrolleren (PWM).

Boost -konverter

Lad os nu se på indgangsspændingen i vores hovedblok: VCC. Vi ser, at det er 5 - 27V, men vent, USB giver maksimalt 5 V? Ja, og derfor er vi nødt til at øge spændingen med en såkaldt boost -konverter. Vi kunne altid øge spændingen til 27 V, uanset hvilken output vi ønsker; dette ville dog spilde meget strøm i LT3080, og tingene ville blive toasty hot! Så i stedet for at gøre det, vil vi øge spændingen til lidt mere end udgangsspændingen. Cirka 2,5 V højere er passende for at tage højde for spændingsfaldet i den aktuelle forstandsmodstand og frafaldsspændingen for LT3080. Spændingen indstilles af modstande på boost -konverterens udgangssignal. For at ændre denne spænding i farten bruger vi et digitalt potentiometer, MCP41010, som styres via SPI.

USB C

Dette fører os til den reelle indgangsspænding: USB -porten! Grunden til at bruge USB C (USB type 3.1 for at være præcis, USB C er bare stikstik) er, fordi den tillader en strøm på 3A ved 5V, det er allerede en del strøm. Men der er en fangst, enheden skal være kompatibel for at trække denne strøm og 'forhandle' med værtenheden. I praksis gøres dette ved at forbinde to 5,1 k nedrivningsmodstande (R12 og R13) til CC1- og CC2 -linjen. For USB 2 -kompatibilitet er dokumentationen mindre klar. Kort sagt: du tegner den strøm du ønsker, så længe værten kan levere den. Dette kan kontrolleres ved at overvåge USB -busspændingen: Når spændingen falder under 4,25V, trækker enheden for meget strøm. Dette registreres af komparatoren U1A og deaktiverer output. Det sender også et signal til mikrokontrolleren for at indstille den maksimale strøm. Som en bonus er der tilføjet modstande for at understøtte påvisning af oplader -id'et for æble- og samsung -opladere.

5V regulator

Arduinoens 5 V forsyningsspænding kommer normalt direkte fra USB. Men da USB -spændingen kan variere mellem 4,5 og 5,5 V i henhold til USB -specifikationen, er dette ikke præcist nok. Derfor bruges en 5V regulator, som kan generere 5V fra lavere og højere spændinger. Alligevel er denne spænding ikke frygtelig præcis, men dette løses ved et kalibreringstrin, hvor PWM -signalets driftscyklus justeres i overensstemmelse hermed. Denne spænding måles af spændingsdeleren dannet af R42 og R43. Men da jeg ikke havde flere gratis input, var jeg nødt til at få en pin til at trække dobbelt pligt. Når strømforsyningen starter, sættes denne pin først som et input: den måler forsyningsskinnen og kalibrerer sig selv. Dernæst indstilles det som en output, og det kan drive chipvalglinjen i potentiometeret.

2,56 V spændingsreference

Denne lille chip giver en meget præcis 2,56 V spændingsreference. Dette bruges som reference for de analoge signaler ADC_Vout, ADC_Iout, ADC_Vbatt. Derfor havde vi brug for spændingsdelere for at bringe disse signaler ned til 2,5 V.

FTDI

Den sidste del af denne strømforsyning er forbindelsen til den grusomme omverden. Til dette skal vi konvertere de serielle signaler til USB -signaler. Heldigvis gøres dette af ATMEGA32U4, det er den samme chip, der bruges i Arduino Micro.

Bluetooth

Bluetooth-delen er meget enkel: Et Bluetooth-modul på hylden tilføjes og tager sig af alt for os. Da det er logisk niveau er 3,3V (VS 5V for mikrokontrolleren) bruges en spændingsdeler til niveauforskydning af signalet.

Og det er alt, hvad der skal til!

Trin 3: PCB og elektronik

PCB og elektronik
PCB og elektronik
PCB og elektronik
PCB og elektronik
PCB og elektronik
PCB og elektronik

Nu hvor vi forstår, hvordan kredsløbet fungerer, kan vi begynde at bygge det! Du kan simpelthen bestille printkortet online fra din foretrukne producent (min koster omkring $ 10), gerber -filerne kan findes på min GitHub, sammen med materialebekræftelsen. Montering af printkortet er så i bund og grund et spørgsmål om lodning af komponenterne på plads i henhold til silketrykket og materialebilledet.

Mens min tidligere strømforsyning kun havde gennemgående huller, gjorde størrelsesbegrænsningen for min nye dette umuligt. De fleste komponenter er stadig relativt lette at lodde, så vær ikke bange. Som en illustration: en af mine venner, der aldrig havde loddet før, formåede at udfylde denne enhed!

Det er nemmest at lave komponenterne på forsiden først, derefter på bagsiden og afslutte med hullerne i hullerne. Når dette gøres, vil PCB'en ikke vingle ved lodning af de vanskeligste komponenter. Den sidste komponent, der skal loddes, er Bluetooth -modulet.

Alle komponenter kan loddes, bortset fra de 2 bananstik, som vi monterer i næste trin!

Trin 4: Etui og samling

Etui og samling
Etui og samling
Etui og samling
Etui og samling
Etui og samling
Etui og samling

Med printet lavet, kan vi gå videre til sagen. Jeg har specielt designet PCB'et omkring en aluminium 20x50x80mm sag (https://www.aliexpress.com/item/Aluminum-PCB-Instr…), så det anbefales ikke at bruge en anden sag. Du kan dog altid 3D -udskrive en sag med de samme dimensioner.

Det første trin er at forberede slutpanelet. Vi bliver nødt til at bore nogle huller til bananstikkene. Jeg gjorde dette i hånden, men hvis du har adgang til en CNC, ville det være en mere præcis mulighed. Sæt bananstikkene i disse huller og lod dem på printkortet.

Det er en god idé at tilføje nogle silkepuder nu og holde dem på plads med en lille dråbe superlim. Disse giver mulighed for varmeoverførsel mellem LT3080 og LT1370 og sagen. Glem dem ikke!

Vi kan nu fokusere på frontpanelet, som bare skruer på plads. Med begge paneler på plads kan vi nu indsætte samlingen i sagen og lukke det hele. På dette tidspunkt er hardwaren færdig, nu er der kun tilbage at blæse noget liv i den med softwaren!

Trin 5: Arduino -kode

Arduino kode
Arduino kode

Hjernen i dette projekt er ATMEGA32U4, som vi vil programmere med Arduino IDE. I dette afsnit vil jeg gennemgå den grundlæggende betjening af koden, detaljerne kan findes som kommentarer inde i koden.

Koden løber grundlæggende gennem disse trin:

  1. Send data til app
  2. Læs data fra app
  3. Mål spænding
  4. Mål strøm
  5. Afstemningsknap

USB -overstrømmen håndteres af en afbrydelsesrutine for at få den så lydhør som muligt.

Inden chippen kan programmeres over USB, skal bootloaderen brændes. Dette gøres via ISP/ICSP -porten (3x2 hanhovederne) gennem en ISP -programmør. Valgmulighederne er AVRISPMK2, USBTINY ISP eller en arduino som ISP. Sørg for, at kortet får strøm, og tryk på knappen 'brænd bootloader'.

Koden kan nu uploades til kortet via USB C -porten (da chippen har en bootloader). Board: Arduino Micro Programmer: AVR ISP / AVRISP MKII Nu kan vi tage et kig på samspillet mellem Arduino og pc'en.

Trin 6: Android App

Android App
Android App

Vi har nu en fuldt funktionsdygtig strømforsyning, men ingen måde at kontrollere den på endnu. Meget irriterende. Så vi laver en Android -app til at styre strømforsyningen via Bluetooth.

Appen er lavet med MIT app -opfinderprogrammet. Alle filer kan inkluderes for at klone og ændre projektet. Download først MIT AI2 -app til din telefon. Importér derefter.aia -filen på AI -webstedet. Dette giver dig også mulighed for at downloade appen på din egen telefon ved at vælge "Byg> App (angiv QR -kode til.apk)"

For at bruge appen skal du vælge en Bluetooth-enhed fra listen: den vises som HC-05-modul. Når den er tilsluttet, kan alle indstillinger ændres, og strømforsyningens output kan aflæses.

Trin 7: Java -kode

Java -kode
Java -kode

Til logning af data og styring af strømforsyningen via pc'en lavede jeg en java -applikation. Dette giver os mulighed for nemt at styre tavlen gennem en GUI. Ligesom med Arduino -koden vil jeg ikke gå ind på alle detaljer, men give et overblik.

Vi starter med at lave et vindue med knapper, tekstfelter osv. grundlæggende GUI -ting.

Nu kommer den sjove del: tilføjelse af USB -porte, som jeg brugte jSerialComm -biblioteket til. Når en port er valgt, vil java lytte efter indgående data. Vi kan også sende data til enheden.

Desuden gemmes alle indgående data i en csv -fil til senere databehandling.

Når vi kører.jar -filen, skal vi først vælge den rigtige port i rullemenuen. Efter tilslutning begynder data at komme ind, og vi kan sende vores indstillinger til strømforsyningen.

Selvom programmet er temmelig grundlæggende, kan det være meget nyttigt at styre det via en pc og logge dets data.

Trin 8:

Billede
Billede
Billede
Billede
Billede
Billede

Efter alt dette arbejde har vi nu en fuldt funktionel strømforsyning!

Vi kan nu nyde vores eget hjemmelavede strømforsyning, som vil være praktisk, når vi arbejder på andre fantastiske projekter! Og vigtigst af alt: vi har lært mange ting undervejs.

Hvis du kunne lide dette projekt, kan du stemme på mig i lommestørrelsen og mikrokontroller -konkurrencen, jeg ville virkelig sætte pris på det!

Anbefalede: