Innehållsförteckning:

Digital batteridriven strömförsörjning: 7 steg (med bilder)
Digital batteridriven strömförsörjning: 7 steg (med bilder)

Video: Digital batteridriven strömförsörjning: 7 steg (med bilder)

Video: Digital batteridriven strömförsörjning: 7 steg (med bilder)
Video: MINI CCTV-KAMERA MED BATTERIER OCH SOLPANEL 100 DAGAR UTAN UPPLADNING!!! 2024, November
Anonim
Digital batteridriven strömförsörjning
Digital batteridriven strömförsörjning
Digital batteridriven strömförsörjning
Digital batteridriven strömförsörjning
Digital batteridriven strömförsörjning
Digital batteridriven strömförsörjning
Digital batteridriven strömförsörjning
Digital batteridriven strömförsörjning

Har du någonsin velat ha en strömförsörjning som du kan använda när du är på språng, även utan ett vägguttag i närheten? Och skulle det inte vara coolt om det också var mycket exakt, digitalt och kontrollerbart via PC?

I denna instruerbara kommer jag att visa dig hur du bygger exakt det: ett digitalt batteridriven nätaggregat, som är arduino -kompatibelt och kan styras via datorn via USB.

För ett tag sedan byggde jag en strömförsörjning från en gammal ATX PSU, och även om det fungerar bra, ville jag intensifiera mitt spel med en digital strömförsörjning. Som redan sagt drivs den av batterier (2 litiumceller för att vara exakt), och den kan leverera maximalt 20 V vid 1 A; vilket är gott för de flesta av mina projekt som kräver en exakt strömförsörjning.

Jag kommer att visa hela designprocessen och alla projektfiler finns på min GitHub -sida:

Låt oss börja!

Steg 1: Funktioner och kostnad

Funktioner och kostnad
Funktioner och kostnad

Funktioner

  • Konstant spänning och konstant strömläge
  • Använder en lågbruslinjär regulator, föregången av en spårningsreglerare för att minimera effektförlust
  • Användning av handlödbara komponenter för att hålla projektet tillgängligt
  • Drivs av ATMEGA328P, programmerad med Arduino IDE
  • PC -kommunikation via Java -applikation via mikro -USB
  • Drivs av 2 skyddade 18650 litiumjonceller
  • 18 mm bananpluggar för kompatibilitet med BNC -adaptrar

Specifikationer

  • 0 - 1A, steg om 1 mA (10 bitars DAC)
  • 0 - 20V, steg om 20 mV (10 bitars DAC) (äkta 0V -drift)
  • Spänningsmätning: 20 mV upplösning (10 bitars ADC)
  • Strömmätning:

    • <40mA: 10uA upplösning (ina219)
    • <80mA: 20uA upplösning (ina219)
    • <160mA: 40uA upplösning (ina219)
    • <320mA: 80uA upplösning (ina219)
    • > 320mA: 1mA upplösning (10 bitars ADC)

Kosta

Hela strömförsörjningen kostade mig cirka $ 135, med alla engångskomponenter. Batterierna är den dyraste delen ($ 30 för 2 celler), eftersom de är skyddade 18650 litiumceller. Det är möjligt att sänka kostnaden avsevärt om ingen batteridrift behövs. Genom att utelämna batterierna och laddningskretsarna sjunker priset till cirka $ 100. Även om det kan tyckas dyrt, kostar strömförsörjning med mycket mindre prestanda och funktioner ofta mer än så.

Om du inte har något emot att beställa dina komponenter från ebay eller aliexpress kommer priset med batterier att sjunka till $ 100 och $ 70 utan. Det tar längre tid för delarna att komma in, men det är ett lönsamt alternativ.

Steg 2: Schematisk och teori om drift

Schematisk och teori om drift
Schematisk och teori om drift

För att förstå kretsens funktion måste vi titta på schemat. Jag delade in det i funktionsblock, så att det är lättare att förstå; Jag kommer därför också att förklara operationen steg för steg. Denna del är ganska djupgående och kräver goda elektronikkunskaper. Om du bara vill veta hur du bygger kretsen kan du hoppa till nästa steg.

Huvudblock

Operationen är baserad på LT3080 -chipet: det är en linjär spänningsregulator som kan minska spänningarna baserat på en styrsignal. Denna styrsignal kommer att genereras av en mikrokontroller; hur detta görs, kommer att förklaras i detalj senare.

Spänningsinställning

Kretsarna runt LT3080 genererar lämpliga styrsignaler. Först ska vi titta på hur spänningen är inställd. Spänningsinställningen från mikrokontrollern är en PWM -signal (PWM_Vset), som filtreras av ett lågpassfilter (C9 & R26). Detta ger en analog spänning - mellan 0 och 5 V - proportionell mot den önskade utspänningen. Eftersom vårt utgångsområde är 0 - 20 V måste vi förstärka denna signal med en faktor 4. Detta görs genom den icke inverterande opamp -konfigurationen för U3C. Förstärkningen till inställningsstiftet bestäms av R23 // R24 // R25 och R34. Dessa motstånd är 0,1% toleranta för att minimera fel. R39 och R36 spelar ingen roll här, eftersom de är en del av återkopplingsslingan.

Nuvarande inställning

Denna inställningsstift kan också användas för den andra inställningen: nuvarande läge. Vi vill mäta strömdragningen och stänga av utgången när denna överstiger önskad ström. Därför börjar vi igen med en PWM -signal (PWM_Iset), genererad av mikrokontrollern, som nu är lågpassfiltrerad och dämpad för att gå från ett 0 - 5 V -intervall till ett 0 - 2 V -intervall. Denna spänning jämförs nu med spänningsfallet över strömavkänningsmotståndet (ADC_Iout, se nedan) med komparatorns konfiguration av opamp U3D. Om strömmen är för hög kommer denna att tända en lysdiod och även dra den inställda linjen för LT3080 till marken (via Q2) och därmed stänga av utgången. Mätningen av strömmen och generering av signalen ADC_Iout görs enligt följande. Utströmmen strömmar genom motstånden R7 - R16. Dessa totalt 1 ohm; anledningen till att inte använda 1R i första hand är tvåfaldigt: 1 motstånd skulle behöva ha en högre effekt (det måste spridas minst 1 W), och genom att använda 10 1% motstånd parallellt får vi en högre precision än med ett enda 1 % motstånd. En bra video om varför det fungerar hittar du här: https://www.youtube.com/embed/1WAhTdWErrU&t=1s När strömmen flyter genom dessa motstånd skapar det ett spänningsfall som vi kan mäta, och det är placeras före LT3080, eftersom spänningsfallet över det inte bör påverka utspänningen. Spänningsfallet mäts med en differentialförstärkare (U3B) med en förstärkning på 2. Detta resulterar i ett spänningsintervall på 0 - 2 V (mer om det senare), därav spänningsdelaren vid PWM -signalen för strömmen. Bufferten (U3A) är där för att se till att strömmen som strömmar in i motstånden R21, R32 och R33 inte går genom det nuvarande avkänningsmotståndet, vilket skulle påverka dess avläsning. Observera också att detta bör vara en skena-till-skena opamp, eftersom ingångsspänningen vid den positiva ingången är lika med matningsspänningen. Den icke inverterande förstärkaren är endast för kursmätningen, men för mycket exakta mätningar har vi INA219 -chipet ombord. Detta chip tillåter oss att mäta mycket små strömmar och adresseras via I2C.

Ytterligare saker

Vid utgången av LT3080 har vi några fler saker. Först och främst finns det en nuvarande diskbänk (LM334). Detta drar en konstant ström på 677 uA (inställd av motstånd R41) för att stabilisera LT3080. Den är dock inte ansluten till jord, utan till VEE, en negativ spänning. Detta behövs för att LT3080 ska fungera ner till 0 V. När den är ansluten till jord skulle den lägsta spänningen vara cirka 0,7 V. Detta verkar tillräckligt lågt, men kom ihåg att detta hindrar oss från att stänga av strömförsörjningen helt. Zenerdioden D3 används för att klämma utspänningen om den går över 22 V, och motståndsdelaren sänker utspänningsområdet från 0 - 20 V till 0 - 2 V (ADC_Vout). Tyvärr är dessa kretsar vid utgången från LT3080, vilket innebär att deras ström kommer att bidra till den utström vi vill mäta. Lyckligtvis är dessa strömmar konstanta om spänningen förblir konstant; så att vi kan kalibrera strömmen när lasten kopplas bort först.

Laddningspump

Den negativa spänningen som vi nämnde tidigare genereras av en nyfiken liten krets: laddningspumpen. För dess funktion, skulle jag hänvisa till här: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Den matas av en 50% PWM av mikrokontrollern (PWM)

Boost -omvandlare

Låt oss nu ta en titt på ingångsspänningen i vårt huvudblock: Vboost. Vi ser att det är 8 - 24V, men vänta, 2 litiumceller i serie ger max 8,4 V? Faktum är att det är därför vi måste öka spänningen med en så kallad boost -omvandlare. Vi kan alltid öka spänningen till 24 V, oavsett vilken utgång vi vill ha; detta skulle dock slösa mycket kraft i LT3080 och saker skulle bli jätte heta! Så istället för att göra det, kommer vi att öka spänningen till lite mer än utspänningen. Ungefär 2,5 V högre är lämpligt, för att ta hänsyn till spänningsfallet i det aktuella avkänningsmotståndet och utfallsspänningen för LT3080. Spänningen ställs in av motstånd på boost -omvandlarens utsignal. För att ändra denna spänning i farten använder vi en digital potentiometer, MCP41010, som styrs via SPI.

Batteriladdning

Detta leder oss till den verkliga ingångsspänningen: batterierna! Eftersom vi använder skyddade celler behöver vi helt enkelt sätta dem i serie och vi är klara! Det är viktigt att använda skyddade celler här för att undvika överström eller överladdning, och därmed skada, av cellerna. Återigen använder vi en spänningsdelare för att mäta batterispänningen och släppa ner den till ett användbart område. Nu till den intressanta delen: laddningskretsarna. Vi använder BQ2057WSN -chipet för detta ändamål: i kombination med TIP32CG bildar det i princip en linjär strömförsörjning själv. Detta chip laddar cellerna via en lämplig CV CC -bana. Eftersom mina batterier inte har en temperatursond bör denna ingång vara bunden till halva batterispänningen. Detta avslutar spänningsregleringsdelen av strömförsörjningen.

5V regulator

Arduino 5 V matningsspänning är gjord med denna enkla spänningsregulator. Det är dock inte den mest exakta 5 V -utgången, men detta kommer att lösas nedan.

2,048 V spänningsreferens

Detta lilla chip ger en mycket exakt 2,048 V spänningsreferens. Detta används som referens för de analoga signalerna ADC_Vout, ADC_Iout, ADC_Vbatt. Det var därför vi behövde spänningsdelare för att få ner dessa signaler till 2 V. Mikrokontroller Hjärnan i detta projekt är ATMEGA328P, detta är samma chip som används i Arduino Uno. Vi har redan gått igenom de flesta styrsignaler, men det finns ändå några intressanta tillägg. De roterande kodarna är anslutna till de två enda externa avbrottsstiftarna på arduino: PD2 och PD3. Detta behövs för en tillförlitlig mjukvaruimplementering. Brytarna nedan använder ett internt pullup -motstånd. Sedan finns det denna märkliga spänningsdelare på chipvalslinjen i potentiometern (Pot). En spänningsdelare på en utgång, vad är det bra för; Du kanske säger. Som nämnts tidigare är 5 V -matningen inte riktigt exakt. Det skulle således vara bra att mäta detta exakt och justera PWM -signalens arbetscykel därefter. Men eftersom jag inte hade fler lediga ingångar, var jag tvungen att göra en stiftdragning dubbel. När strömförsörjningen startar, ställs denna stift först in som en ingång: den mäter matningsskenan och kalibrerar sig själv. Därefter är den inställd som en utgång och den kan driva chip -vallinjen.

Display -drivrutin

För displayen ville jag ha en allmänt tillgänglig - och billig - hitachi lcd -skärm. De drivs av 6 stift, men eftersom jag inte hade några stift kvar behövde jag en annan lösning. Ett skiftregister till undsättning! 74HC595 tillåter mig att använda SPI -linjen för att styra displayen, och behöver därför bara 1 extra chip -vallinje.

FTDI

Den sista delen av denna kraftförsörjning är kopplingen till den grymma, omvärlden. För detta måste vi konvertera de seriella signalerna till USB -signaler. Detta görs med ett FTDI -chip, som är anslutet till en mikro -USB -port för enkel anslutning.

Och det är allt som finns!

Steg 3: PCB och elektronik

PCB och elektronik
PCB och elektronik
PCB och elektronik
PCB och elektronik
PCB och elektronik
PCB och elektronik
PCB och elektronik
PCB och elektronik

Nu när vi förstår hur kretsen fungerar kan vi börja bygga den! Du kan helt enkelt beställa kretskortet online från din favorittillverkare (min kostar cirka $ 10). Gerber -filerna finns på min GitHub, tillsammans med materialräkningen. Montering av kretskortet handlar då i princip om att lödda komponenterna på plats enligt silkscreen och materialräkningen.

Det första steget är att lödda SMD -komponenterna. De flesta av dem är lätta att göra för hand, förutom från FTDI -chipet och mikro -USB -kontakten. Därför kan du undvika att lödda de två komponenterna själv och använda en FTDI -utbrottskort istället. Jag gav huvudstiften där detta kan lödas på.

När SMD -arbetet är klart kan du gå vidare till alla genomgående hålskomponenter. Dessa är väldigt enkla. För chipsen kanske du vill använda uttag istället för att lödda dem direkt på brädet. Det är att föredra att använda en ATMEGA328P med Arduino bootloader, annars måste du ladda upp den med ICSP -rubriken (visas här).

Den enda delen som behöver lite mer uppmärksamhet är LCD -skärmen, eftersom den måste monteras i vinkel. Löd några manliga vinklade sidhuvuden på den med plaststycket vänd mot skärmens undersida. Detta möjliggör en bra placering av skärmen på kretskortet. Efter det kan det lödas på plats precis som alla andra genomgående hålskomponenter.

Det enda som återstår att göra är att lägga till 2 ledningar, som ansluts till bananterminalerna på frontplattan.

Steg 4: Fodral och montering

Fodral och montering
Fodral och montering
Fodral och montering
Fodral och montering
Fodral och montering
Fodral och montering

Med kretskortet gjort kan vi gå vidare till fallet. Jag utformade specifikt kretskortet runt detta hammondfodral, så det rekommenderas inte att använda ett annat fodral. Men du kan alltid 3D -skriva ut ett fodral med samma mått.

Det första steget är att förbereda slutpanelen. Vi kommer att behöva borra några hål för skruvar, omkopplare etc. Jag gjorde detta för hand, men om du har tillgång till en CNC skulle det vara ett mer exakt alternativ. Jag gjorde hålen enligt schemat och knackade på skruvhålen.

Det är en bra idé att lägga till några sidenkuddar nu och hålla dem på plats med en liten droppe superlim. Dessa kommer att isolera LT3080 och TIP32 från bakplattan, samtidigt som de tillåter värmeöverföring. Glöm inte dem! När du skruvar spånen på bakpanelen, använd en glimmerbricka för att säkerställa isolering!

Vi kan nu fokusera på frontpanelen, som bara glider på plats. Vi kan nu lägga till banankontakterna och knopparna för de roterande kodarna.

Med båda panelerna på plats kan vi nu sätta in enheten i fodralet, lägga till batterierna och stänga allt. Se till att du använder skyddade batterier, du vill inte att cellerna ska explodera!

Vid denna tidpunkt är hårdvaran klar, nu återstår bara att blåsa lite liv i den med programvaran!

Steg 5: Arduino -kod

Arduino -kod
Arduino -kod

Hjärnan i detta projekt är ATMEGA328P, som vi kommer att programmera med Arduino IDE. I det här avsnittet kommer jag att gå igenom kodens grundläggande funktion, detaljerna kan hittas som kommentarer inuti koden.

Koden går i princip igenom dessa steg:

  1. Läs seriell data från java
  2. Enkätknappar
  3. Mät spänning
  4. Mät ström
  5. Mät ström med INA219
  6. Skicka seriell data till java
  7. Konfigurera boostconvertor
  8. Få batteriladdning
  9. Uppdateringsskärm

De roterande kodarna hanteras av en avbrottsrutin för att få dem så lyhörda som möjligt.

Koden kan nu laddas upp till kortet via mikro -USB -porten (om chipet har en bootloader). Styrelse: Arduino pro eller pro mini Programmerare: AVR ISP / AVRISP MKII

Nu kan vi titta på samspelet mellan Arduino och datorn.

Steg 6: Java -kod

Java -kod
Java -kod

För att logga data och styra strömförsörjningen via datorn gjorde jag en Java -applikation. Detta gör att vi enkelt kan styra kortet genom ett GUI. Precis som med Arduino -koden kommer jag inte att gå in på alla detaljer, men ge en översikt.

Vi börjar med att skapa ett fönster med knappar, textfält etc; grundläggande GUI -grejer.

Nu kommer den roliga delen: att lägga till USB -portarna, för vilka jag använde jSerialComm -biblioteket. När en port väljs kommer java att lyssna efter inkommande data. Vi kan också skicka data till enheten.

Dessutom sparas all inkommande data i en csv -fil för senare databehandling.

När vi kör.jar -filen bör vi först välja rätt port från rullgardinsmenyn. Efter anslutning börjar data komma in, och vi kan skicka våra inställningar till strömförsörjningen.

Även om programmet är ganska grundläggande kan det vara mycket användbart att styra det via en dator och logga data.

Steg 7: Framgång

Framgång!
Framgång!
Framgång!
Framgång!
Framgång!
Framgång!

Efter allt detta arbete har vi nu en fullt fungerande strömförsörjning!

Jag måste också tacka några människor för deras stöd:

  • Projektet baserades på EEVBLOGs uSupply -projekt och hans Rev C -schema. Så ett särskilt tack till David L. Jones för att han släppte sina scheman under en öppen källkodslicens och delade med sig av all sin kunskap.
  • Ett stort tack till Johan Pattyn för att ta fram prototyperna för detta projekt.
  • Även Cedric Busschots och Hans Ingelberts förtjänar kredit för hjälpen med felsökning.

Vi kan nu njuta av vår egen hemgjorda strömförsörjning, som kommer att vara till nytta när vi arbetar med andra fantastiska projekt! Och viktigast av allt: vi har lärt oss många saker på vägen.

Om du gillade det här projektet, vänligen rösta på mig i strömförsörjningstävlingen, jag skulle verkligen uppskatta det! Https: //www.instructables.com/contest/powersupply/

Strömförsörjningstävling
Strömförsörjningstävling
Strömförsörjningstävling
Strömförsörjningstävling

Andra pris i Power Supply Contest

Rekommenderad: