Indholdsfortegnelse:

Digital batteridrevet strømforsyning: 7 trin (med billeder)
Digital batteridrevet strømforsyning: 7 trin (med billeder)

Video: Digital batteridrevet strømforsyning: 7 trin (med billeder)

Video: Digital batteridrevet strømforsyning: 7 trin (med billeder)
Video: KRAFTIGT multimeter UNI-T UT171B køb i dag, eller hvilket er bedre? 2024, November
Anonim
Digital batteridrevet strømforsyning
Digital batteridrevet strømforsyning
Digital batteridrevet strømforsyning
Digital batteridrevet strømforsyning
Digital batteridrevet strømforsyning
Digital batteridrevet strømforsyning
Digital batteridrevet strømforsyning
Digital batteridrevet 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?

I denne instruktive vil jeg vise dig, hvordan du bygger præcis det: et digitalt batteridrevet strømforsyning, som er arduino -kompatibelt og kan styres via pc'en via USB.

For et stykke tid siden byggede jeg en strømforsyning fra en gammel ATX PSU, og selvom det fungerer godt, ville jeg intensivere mit spil med en digital strømforsyning. Som allerede sagt er den drevet af batterier (2 litiumceller for at være præcis), og den kan maksimalt levere 20 V ved 1 A; hvilket er rigeligt til de fleste af mine projekter, der kræver en præcis strømforsyning.

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

  • 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
  • Brug af håndlodbare komponenter for at holde projektet tilgængeligt
  • Drevet af ATMEGA328P, programmeret med Arduino IDE
  • PC -kommunikation via Java -applikation over mikro -USB
  • Drives af 2 beskyttede 18650 litiumionceller
  • Bananstik med 18 mm afstand til kompatibilitet med BNC -adaptere

specifikationer

  • 0 - 1A, trin på 1 mA (10 bit DAC)
  • 0 - 20V, trin på 20 mV (10 bit DAC) (ægte 0V -drift)
  • Spændingsmåling: 20 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 $ 135, med alle engangskomponenter. Batterierne er den dyreste del ($ 30 for 2 celler), da de er beskyttede 18650 litiumceller. Det er muligt at sænke omkostningerne betydeligt, hvis der ikke er behov for batteridrift. Ved at udelade batterierne og opladningskredsløbet falder prisen til omkring $ 100. 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 med batterier falde til $ 100 og $ 70 uden. 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 (C9 & R26). Dette producerer en analog spænding - mellem 0 og 5 V - proportional med den ønskede udgangsspænding. Da vores outputområde er 0 - 20 V, bliver vi nødt til at forstærke dette signal med en faktor 4. Dette gøres ved hjælp af den ikke -inverterende opamp -konfiguration af U3C. Forstærkningen til den indstillede pin bestemmes af R23 // R24 // R25 og R34. Disse modstande er 0,1% tolerante for at minimere fejl. R39 og R36 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 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 U3D. Hvis strømmen er for høj, vil denne tænde en LED og også trække den indstillede linje for LT3080 til jorden (via Q2) 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 modstande R7 - R16. Disse i alt 1 ohm; årsagen til ikke at bruge 1R i første omgang er todelt: 1 modstand skulle have en højere effektværdi (den skal spredes mindst 1 W), og ved at bruge 10 1% modstande parallelt får vi en højere præcision end med en enkelt 1 % modstand. En god video om hvorfor dette virker kan findes her: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Når strøm strømmer gennem disse modstande, skaber det et spændingsfald, som vi kan måle, og det er placeret før LT3080, da spændingsfaldet over det ikke bør påvirke udgangsspændingen. Spændingsfaldet måles med en differentialforstærker (U3B) med en forstærkning på 2. Dette resulterer i et spændingsområde på 0 - 2 V (mere om det senere), derfor spændingsdeleren ved PWM -signalet i strømmen. Bufferen (U3A) er der for at sikre, at strømmen, der strømmer ind i modstandene R21, R32 og R33, 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 R41) 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. Zenerdioden D3 bruges til at spænde udgangsspændingen, hvis den går over 22 V, og modstandsdeleren sænker udgangsspændingsområdet fra 0 - 20 V til 0 - 2 V (ADC_Vout). Desværre er disse kredsløb ved output fra LT3080, hvilket betyder, at deres strøm vil bidrage til den outputstrøm, vi ønsker at måle. Heldigvis er disse strømme konstante, hvis spændingen forbliver konstant; så vi kan kalibrere strømmen, når belastningen først afbrydes.

Opladningspumpe

Den negative spænding, som vi nævnte før, genereres af et underligt lille kredsløb: ladningspumpen. For dens drift, vil jeg henvise til her: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Den fodres med en 50% PWM af mikrokontrolleren (PWM)

Boost -konverter

Lad os nu se på indgangsspændingen i vores hovedblok: Vboost. Vi ser, at det er 8 - 24V, men vent, 2 litiumceller i serie giver maksimalt 8,4 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 24 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.

Batteriopladning

Dette fører os til den reelle indgangsspænding: batterierne! Da vi bruger beskyttede celler, skal vi simpelthen sætte dem i serie, og vi er færdige! Det er vigtigt at bruge beskyttede celler her for at undgå overstrøm eller overdiskcharge og dermed beskadigelse af cellerne. Igen bruger vi en spændingsdeler til at måle batterispændingen og tabe den til et brugbart område. Nu til den interessante del: opladningskredsløbet. Vi bruger BQ2057WSN -chippen til dette formål: i kombination med TIP32CG danner den dybest set selv en lineær strømforsyning. Denne chip oplader cellerne via en passende CV CC -bane. Da mine batterier ikke har en temperatursonde, skal denne indgang være bundet til halvdelen af batterispændingen. Dette afslutter spændingsreguleringsdelen af strømforsyningen.

5V regulator

Arduinoens 5 V forsyningsspænding er lavet med denne simple spændingsregulator. Det er dog ikke den mest præcise 5 V -udgang, men dette vil blive løst nedenfor.

2,048 V spændingsreference

Denne lille chip giver en meget præcis 2,048 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 V. Mikrokontroller Hjernen i dette projekt er ATMEGA328P, det er den samme chip, der bruges i Arduino Uno. Vi gik allerede over de fleste styresignaler, men der er ikke desto mindre nogle interessante tilføjelser. De roterende encodere er forbundet til de 2 eneste eksterne afbrydelsesstifter på arduinoen: PD2 og PD3. Dette er nødvendigt for en pålidelig softwareimplementering. Kontakterne nedenunder bruger en intern pullup -modstand. Så er der denne mærkelige spændingsdeler på chip -valglinjen i potentiometeret (Pot). En spændingsdeler på en udgang, hvad er det godt for; kan du sige. Som tidligere nævnt er 5 V -forsyningen ikke helt nøjagtig. Det ville derfor være godt at måle dette præcist og justere PWM -signalets driftscyklus i overensstemmelse hermed. 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 chip -valglinjen.

Display driver

Til displayet ønskede jeg en almindeligt tilgængelig - og billig - hitachi lcd -skærm. De drives af 6 ben, men da jeg ikke havde nogen ben tilbage, havde jeg brug for en anden løsning. Et vagtregister til undsætning! 74HC595 giver mig mulighed for at bruge SPI -linjen til at styre displayet, og behøver derfor kun 1 ekstra chip -valglinje.

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. Dette gøres ved hjælp af en FTDI -chip, der er forbundet til en mikro -USB -port for nem tilslutning.

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
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.

Det første trin er lodning af SMD -komponenterne. De fleste af dem er lette at lave i hånden, undtagen fra FTDI -chippen og mikro -USB -stikket. Derfor kan du undgå at lodde disse 2 komponenter selv, og i stedet bruge et FTDI -breakout -bord. Jeg leverede header pins, hvor dette kan loddes på.

Når SMD -arbejdet er udført, kan du gå videre til alle gennemgående hulkomponenter. Disse er meget ligetil. Til chipsene vil du måske bruge stikkontakter i stedet for at lodde dem direkte på brættet. Det er at foretrække at bruge en ATMEGA328P med Arduino bootloader, ellers bliver du nødt til at uploade den ved hjælp af ICSP -headeren (vist her).

Den eneste del, der kræver lidt mere opmærksomhed, er lcd -skærmen, da den skal monteres i en vinkel. Lod nogle mandlige vinklede overskrifter på den med plaststykket vendt mod undersiden af skærmen. Dette giver mulighed for en god placering af skærmen på printkortet. Derefter kan det loddes på plads ligesom enhver anden gennemgående komponent.

Det eneste, der er tilbage at gøre, er at tilføje 2 ledninger, som tilsluttes bananterminalerne på frontpladen.

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 specifikt designet PCB'et omkring denne hammond -sag, 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 skruer, kontakter osv. Jeg gjorde dette i hånden, men hvis du har adgang til en CNC, ville det være en mere præcis mulighed. Jeg lavede hullerne i henhold til skematikken og bankede på skruehullerne.

Det er en god idé at tilføje nogle silkepuder nu og holde dem på plads med en lille dråbe superlim. Disse vil isolere LT3080 og TIP32 fra bagpladen, mens de stadig tillader varmeoverførsel. Glem dem ikke! Når du skruer chipsene på bagpanelet, skal du bruge en glimmerskive for at sikre isolering!

Vi kan nu fokusere på frontpanelet, der bare glider på plads. Vi kan nu tilføje bananstikkene og knapperne til de roterende encodere.

Med begge paneler på plads kan vi nu indsætte enheden i sagen, tilføje batterierne og lukke det hele. Sørg for at bruge beskyttede batterier, du vil ikke have, at cellerne eksploderer!

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 ATMEGA328P, 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. Læs serielle data fra java
  2. Afstemningsknapper
  3. Mål spænding
  4. Mål strøm
  5. Mål strøm med INA219
  6. Send serielle data til java
  7. Konfigurer boostconvertor
  8. Få batteriopladning
  9. Opdateringsskærm

De roterende encodere håndteres af en afbrydelsesrutine for at få dem så lydhøre som muligt.

Koden kan nu uploades til kortet via mikro -USB -porten (hvis chippen har en bootloader). Board: Arduino pro eller pro mini Programmerer: AVR ISP / AVRISP MKII

Nu kan vi tage et kig på samspillet mellem Arduino og pc'en.

Trin 6: 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 7: Succes

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

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

Jeg skal også takke nogle mennesker for deres støtte:

  • Projektet var baseret på EEVBLOGs uSupply -projekt og hans Rev C -skema. Så en særlig tak til David L. Jones for at frigive sine skemaer under en open source -licens og dele al sin viden.
  • En stor tak til Johan Pattyn for at producere prototyperne til dette projekt.
  • Også Cedric Busschots og Hans Ingelberts fortjener æren for hjælpen med fejlfinding.

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, skal du stemme på mig i strømforsyningskonkurrencen, jeg ville virkelig sætte pris på det! Https: //www.instructables.com/contest/powersupply/

Strømforsyningskonkurrence
Strømforsyningskonkurrence
Strømforsyningskonkurrence
Strømforsyningskonkurrence

Anden pris i konkurrencen om strømforsyning

Anbefalede: