Innehållsförteckning:

Digital USB C -driven Bluetooth -strömförsörjning: 8 steg (med bilder)
Digital USB C -driven Bluetooth -strömförsörjning: 8 steg (med bilder)

Video: Digital USB C -driven Bluetooth -strömförsörjning: 8 steg (med bilder)

Video: Digital USB C -driven Bluetooth -strömförsörjning: 8 steg (med bilder)
Video: Everything Wrong With USB-C Cables | Untangled 2024, November
Anonim
Digital USB C -driven Bluetooth -strömförsörjning
Digital USB C -driven Bluetooth -strömförsörjning
Digital USB C -driven Bluetooth -strömförsörjning
Digital USB C -driven Bluetooth -strömförsörjning
Digital USB C -driven Bluetooth -strömförsörjning
Digital USB C -driven Bluetooth -strömförsörjning
Digital USB C -driven Bluetooth -strömförsörjning
Digital USB C -driven Bluetooth -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 och din telefon?

I denna instruerbara kommer jag att visa dig hur du bygger exakt det: en digital strömförsörjning, som drivs över USB C. Den är arduino -kompatibel och kan styras via datorn via USB eller via din telefon via Bluetooth.

Detta projekt är en utveckling av min tidigare strömförsörjning, som var batteridriven och har en display och rattar. Kolla in det här! Jag ville dock bli mindre, så det var därför jag gjorde det här!

Strömförsörjningen kan drivas från en USB C -batteribank eller telefonladdare. Detta möjliggör upp till 15W effekt, vilket är tillräckligt för att driva de flesta lågeffektelektronik! För att få ett bra användargränssnitt på en så liten enhet inkluderade jag Bluetooth och en Android -app för kontrollerna. Detta gör denna strömförsörjning extremt portabel!

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

  • Drivs av USB C
  • Styrs via Android -appen via Bluetooth
  • Styrs via Java via USB C
  • 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
  • Drivs av ATMEGA32U4, programmerad med Arduino IDE
  • Kan drivas av en USB C batteribank för att göra den bärbar
  • USB C och Apple laddare upptäckt
  • 18 mm bananpluggar för kompatibilitet med BNC -adaptrar

Specifikationer

  • 0 - 1A, steg om 1 mA (10 bitars DAC)
  • 0 - 25V, steg om 25 mV (10 bitars DAC) (äkta 0V -drift)
  • Spänningsmätning: 25 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 $ 100, med alla engångskomponenter. Ä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 att sjunka till cirka $ 70. 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 (C23 & R32). 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 - 25 V, måste vi förstärka denna signal med en faktor 5. Detta görs genom den icke inverterande opamp -konfigurationen för U7C. Förstärkningen till inställningsstiftet bestäms av R31 och R36. Dessa motstånd är 0,1% toleranta för att minimera fel. R39 och R41 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,5 V -intervall. Denna spänning jämförs nu med spänningsfallet över det aktuella avkänningsmotståndet (ADC_Iout, se nedan) med komparatorkonfigurationen för opamp U1B. Om strömmen är för hög, kommer detta att slå på en lysdiod och även dra den inställda linjen för LT3080 till marken (via Q1) 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åndet R22. När strömmen strömmar genom detta motstånd skapar det ett spänningsfall som vi kan mäta och 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 (U7B) med en förstärkning på 5. Detta resulterar i ett spänningsintervall på 0 - 2,5 V (mer om det senare), därav spänningsdelaren vid PWM -signalen för strömmen. Bufferten (U7A) är där för att se till att strömmen som strömmar in i motstånden R27, R34 och R35 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 R46) 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. Tyvärr är denna krets vid utgången från LT3080, vilket betyder att dess ström kommer att bidra till den utström vi vill mäta. Lyckligtvis är den konstant så vi kan kalibrera för denna ström. Zenerdioden D7 används för att klämma utspänningen om den går över 25 V, och motståndsdelaren sänker utspänningsområdet från 0 - 25 V till 0 - 2,5 V (ADC_Vout). Bufferten (U7D) säkerställer att motstånden inte drar ström från utgången.

Laddningspump

Den negativa spänningen som vi nämnde tidigare genereras av en nyfiken liten krets: laddningspumpen. 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: VCC. Vi ser att det är 5 - 27V, men vänta, USB ger max 5 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 27 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.

USB C

Detta leder oss till den verkliga ingångsspänningen: USB -porten! Anledningen till att använda USB C (USB typ 3.1 för att vara exakt, USB C är bara anslutningstypen) är att den tillåter en ström på 3A vid 5V, det är redan ganska lite ström. Men det finns en hake, enheten måste vara kompatibel för att dra denna ström och "förhandla" med värdenheten. I praktiken görs detta genom att ansluta två 5,1 k neddragningsmotstånd (R12 och R13) till CC1- och CC2 -ledningen. För USB 2 -kompatibilitet är dokumentationen mindre tydlig. Kort sagt: du ritar vilken ström du vill, så länge värden kan tillhandahålla den. Detta kan kontrolleras genom att övervaka USB -busspänningen: när spänningen sjunker under 4,25V drar enheten för mycket ström. Detta upptäcks av jämföraren U1A och inaktiverar utsignalen. Det skickar också en signal till mikrokontrollern för att ställa in maximal ström. Som en bonus har motstånd lagts till för att identifiera laddnings -ID för Apple- och Samsung -laddare.

5V regulator

Arduino 5 V -matningsspänning kommer normalt direkt från USB -enheten. Men eftersom USB -spänningen kan variera mellan 4,5 och 5,5 V enligt USB -specifikationen är detta inte tillräckligt exakt. Därför används en 5V regulator som kan generera 5V från lägre och högre spänningar. Ändå är denna spänning inte särskilt exakt, men detta löses med ett kalibreringssteg där PWM -signalens arbetscykel justeras i enlighet därmed. Denna e -spänning mäts av spänningsdelaren som bildas av R42 och R43. 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 ställs den in som en utgång och den kan driva chipvalslinjen i potentiometern.

2,56 V spänningsreferens

Detta lilla chip ger en mycket exakt 2,56 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,5 V.

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. Lyckligtvis görs detta av ATMEGA32U4, detta är samma chip som används i Arduino Micro.

Blåtand

Bluetooth-delen är väldigt enkel: en Bluetooth-modul på hyllan läggs till och tar hand om allt åt oss. Eftersom dess logiska nivå är 3,3V (VS 5V för mikrokontrollern) används en spänningsdelare för att nivåskifta signalen.

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

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.

Medan min tidigare strömförsörjning bara hade genomgående hålskomponenter, gjorde storleksbegränsningen för min nya detta omöjligt. De flesta komponenterna är fortfarande relativt lätta att löda, så var inte rädd. Som en illustration: en vän till mig som aldrig hade lödt tidigare lyckades fylla denna enhet!

Det är lättast att göra komponenterna på framsidan först, sedan på baksidan och avsluta med de genomgående hålkomponenterna. När detta görs kommer kretskortet inte att vingla vid lödning av de svåraste komponenterna. Den sista komponenten som ska lödas är Bluetooth -modulen.

Alla komponenter kan lödas, förutom de 2 banankontakterna, som vi monterar i nästa steg!

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 har speciellt utformat kretskortet runt ett aluminium 20x50x80mm fodral (https://www.aliexpress.com/item/Aluminum-PCB-Instr…), 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 banankontakterna. Jag gjorde detta för hand, men om du har tillgång till en CNC skulle det vara ett mer exakt alternativ. Sätt i banankontakterna i dessa hål och löd dem på kretskortet.

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 möjliggör värmeöverföring mellan LT3080 och LT1370 och fodralet. Glöm dem inte!

Vi kan nu fokusera på frontpanelen, som bara skruvar på plats. Med båda panelerna på plats kan vi nu sätta in enheten i fodralet och stänga allt. 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 ATMEGA32U4, 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. Skicka data till appen
  2. Läs data från app
  3. Mät spänning
  4. Mät ström
  5. Omröstningsknapp

USB -överströmmen hanteras av en avbrottsrutin för att få den så lyhörd som möjligt.

Innan chipet kan programmeras via USB bör bootloader brännas. Detta görs via ISP/ICSP -porten (3x2 manliga rubriker) via en ISP -programmerare. Alternativ är AVRISPMK2, USBTINY ISP eller en arduino som ISP. Se till att kortet får ström och tryck på knappen 'bränn bootloader'.

Koden kan nu laddas upp till kortet via USB C -porten (eftersom chipet har en bootloader). Styrelse: Arduino Micro Programmer: AVR ISP / AVRISP MKII Nu kan vi titta på samspelet mellan Arduino och PC.

Steg 6: Android -app

Android App
Android App

Vi har nu en fullt fungerande strömförsörjning, men inget sätt att kontrollera den ännu. Väldigt irriterande. Så vi gör en Android -app för att styra strömförsörjningen via Bluetooth.

Appen har gjorts med programmet MIT app uppfinnare. Alla filer kan inkluderas för att klona och ändra projektet. Ladda först ner MIT AI2 -appen till din telefon. Importera sedan.aia -filen på AI -webbplatsen. Detta låter dig också ladda ner appen på din egen telefon genom att välja "Bygg> App (tillhandahåll QR -kod för.apk)"

För att använda appen, välj en Bluetooth-enhet från listan: den visas som HC-05-modul. När den är ansluten kan alla inställningar ändras och utmatningen från strömförsörjningen kan avläsas.

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

Bild
Bild
Bild
Bild
Bild
Bild

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

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 fickstorleken och mikrokontrolltävlingen, jag skulle verkligen uppskatta det!

Rekommenderad: