- Material som krävs
- Arduino DC elektronisk belastningsdiagram
- PCB-design och Gerber-fil
- Beställa din PCB från AllPCB
- Arduino-kod för justerbar DC-belastning
- Testar vår justerbara DC-belastning
Om du någonsin har arbetat med batterier, SMPS-kretsar eller andra strömförsörjningskretsar skulle det ofta ha inträffat att du måste testa din strömkälla genom att ladda den för att kontrollera hur den fungerar under olika laddningsförhållanden. En enhet som vanligtvis används för att utföra denna typ av test kallas en konstantström DC-belastning, vilket gör att vi kan justera utgångsströmmen för din strömkälla och sedan hålla den konstant tills den justeras igen ändras. I den här handledningen lär vi oss hur man bygger vår egen justerbara elektroniska belastning med Arduino, som kan ta en maximal ingångsspänning på 24V och dränera ström så hög som 5A. För detta projekt har vi använt PCB-kort som tillverkas av AllPCB, en porslinbaserad professionell leverantör av PCB-tillverkning och montering.
I vår tidigare handledning för spänningsstyrd strömkälla har vi förklarat hur man använder en operationsförstärkare med en MOSFET och använder en spänningsstyrd strömkällkrets. Men i denna handledning kommer vi att använda den kretsen och skapa en digitalt styrd strömkälla. Uppenbarligen kräver en digitalt styrd strömkälla en digital krets och för att tjäna ändamålet används en Arduino NANO. Arduino NANO kommer att tillhandahålla nödvändiga kontroller för DC-belastningen.
Kretsen består av tre delar. Den första delen är Arduino Nano-sektionen, den andra delen är den digitala till analoga omvandlaren och den tredje delen är en ren analog krets där en dubbel operationsförstärkare i ett enda paket används som styr lastsektionen. Detta projekt är inspirerat av ett inlägg på Arduino, men kretsen ändras för mindre komplexitet med grundläggande funktioner för alla att bygga den.
Vår elektroniska belastning är utformad för att ha följande in- och utgångssektioner.
- Två ingångsbrytare för att öka och minska belastningen.
- En LCD-skärm som visar inställd belastning, faktisk belastning och lastspänning.
- Den maximala belastningsströmmen är begränsad till 5A.
- Den maximala ingångsspänningen är 24V för lasten.
Material som krävs
De komponenter som krävs för att bygga en likströmselektronisk belastning listas nedan.
- Arduino nano
- LCD-skärm med 16x2 tecken
- Två fatuttag
- Mosfet IRF540N
- Mcp4921
- Lm358
- 5watt shuntmotstånd.1 ohm
- 1k
- 10k - 6st
- Kylfläns
- .1uF 50v
- 2k - 2st
Arduino DC elektronisk belastningsdiagram
I nedanstående schema har operationsförstärkaren två sektioner. En är att styra MOSFET och den andra är att förstärka den avkända strömmen. Du kan också kolla in videon längst ner på den här sidan som förklarar kretsens fullständiga funktion. Den första sektionen har R12, R13 och MOSFET. R12 används för att minska belastningseffekten på återkopplingssektionen och R13 används som Mosfet-grindmotstånd.
Ytterligare två motstånd R8 och R9 används för att känna av matningsspänningen för strömförsörjningen som kommer att stressas av denna dummybelastning. Enligt spänningsdelarens regel stöder dessa två motstånd maximalt 24V. Mer än 24 V producerar en spänning som inte passar Arduino-stiften. Så var försiktig så att du inte ansluter strömförsörjning som har mer än 24V utspänning.
Motståndet R7 är det faktiska belastningsmotståndet här. Det är ett 5 Watt,.1 Ohm motstånd. Enligt kraftlagen stöder den maximalt 7A (P = I 2 R), men för den säkra sidan är det klokare att begränsa belastningsströmmen maximalt 5A. Därför kan för närvarande maximalt 24V, 5A belastning ställas in av denna dummybelastning.
En annan sektion av förstärkaren är konfigurerad som en förstärkningsförstärkare. Det ger 6x vinst. Under strömflödet visas ett spänningsfall. Till exempel, när 5A ström strömmar genom motståndet kommer spänningsfallet att vara 5V över.1 Ohms shuntmotstånd (V = I x R) enligt ohmens lag. Den icke-inverterande förstärkaren förstärker den till x6, därför kommer 3V att vara utgången från förstärkarens andra del. Denna utgång kommer att kännas av Arduino nano analog ingångsstift och strömmen kommer att beräknas.
Den första delen av förstärkaren är konfigurerad som en spänningsföljarkrets som styr MOSFET enligt ingångsspänningen och får önskad återkopplingsspänning på grund av belastningsströmmen som strömmar genom shuntmotståndet.
MCP4921 är den digitala till analoga omvandlaren. DAC använder SPI-kommunikationsprotokollet för att hämta digitala data från vilken mikrokontroller som helst och tillhandahålla analog spänningsutgång beroende på den. Denna spänning är ingången till op-amp. Vi har tidigare också lärt oss hur man använder denna MCP4921 DAC med PIC.
På den andra sidan finns det en Arduino Nano som kommer att tillhandahålla digitala data till DAC via SPI-protokoll och styra belastningen, och visar också data i 16x2 teckenvisning. Ytterligare två saker används, det vill säga knappen för minskning och ökning. Istället för att ansluta till en digital stift är den ansluten i de analoga stiften. Därför kan man ändra det till en annan typ av omkopplare som t.ex. skjutreglage eller analog kodare. Genom att ändra koden kan man också tillhandahålla råa analoga data för att kontrollera belastningen. Detta undviker också problemet med switchavstängning.
Slutligen, genom att öka belastningen, kommer Arduino nano att tillhandahålla lastdata till DAC i digitalt format, DAC kommer att tillhandahålla analoga data till operationsförstärkaren, och operationsförstärkaren kommer att styra MOSFET enligt ingångsspänningen på operationsförstärkaren. Slutligen, beroende på belastningsströmmen genom shuntmotståndet, kommer ett spänningsfall att visas som ytterligare förstärks av den andra kanalen i LM358 och kommer av Arduino nano. Detta kommer att visas på teckenfönstret. Samma sak kommer att hända när användaren trycker på minskningsknappen.
PCB-design och Gerber-fil
Eftersom denna krets har en hög strömbana är det ett klokare val att använda rätt PCB-designtaktik för att ta bort oönskade felfall. Således är ett kretskort utformat för denna DC-belastning. Jag har använt Eagle PCB Design Software för att designa min PCB. Du kan välja vilken PCB Cad-programvara som helst. Det slutgiltiga designade kretskortet i CAD-programvaran visas i bilden nedan,
En viktig faktor att märka vid utformningen av denna kretskort är att använda ett tjockt kraftplan för korrekt strömflöde över hela kretsen. Det finns också slipas sy VIAS (slumpmässiga vior i jordplanet) som används för korrekt jordflöde i båda skikten till toppen och botten.
Du kan också ladda ner Gerber-filen på denna PCB från länken nedan och använda den för tillverkning.
- Ladda ner justerbar elektronisk DC-last Gerber-fil
Beställa din PCB från AllPCB
När du är redo med din Gerber-fil kan du använda den för att göra din PCB tillverkad. På tal om vilket tar sponsorn till den här artikeln ALLPCB upp, som är kända för sina högkvalitativa PCB och ultrasnabb leverans. Förutom PCB-tillverkning tillhandahåller AllPCB ocksåPCB-montering och inköp av komponenter.
För att få din PCB-beställning från dem, besök allpcb.com och registrering. Ange sedan måtten på din PCB och önskad mängd på startsidan enligt nedan. Klicka sedan på Citera nu.
Nu kan du ändra de andra parametrarna på din PCB som antal lager, maskfärg, tjocklek etc. På höger sida kan du välja land och önskat fraktalternativ. Detta visar dig ledtiden och det totala beloppet som ska betalas. Jag har valt DHL och mitt totala belopp är $ 26, men om du är första gången kund kommer priserna att gå ner i kassan. Klicka sedan på Lägg till i kundvagn och klicka sedan på utcheckning nu.
Nu kan du klicka på ladda upp din Gerber-fil genom att klicka på "Upload Gerber" och sedan klicka på köp.
På nästa sida kan du ange din leveransadress och kontrollera det slutliga pris du måste betala för din PCB. Du kan sedan granska din beställning och sedan klicka på skicka för att göra betalningen.
När din beställning har bekräftats kan du luta dig tillbaka och relä så att din PCB kommer fram till din tröskel. Jag fick min beställning efter några dagar och då var förpackningen snygg som visas nedan.
Kvaliteten på kretskortet var bra som alltid som du själv kan se på bilderna nedan. Brädans över- och undersida visas nedan.
När du väl har fått ditt bräde kan du fortsätta med att montera alla komponenter. Mitt färdiga bräda ser ungefär så här ut nedan.
Därefter kan du ladda upp koden och slå på modulen för att kontrollera hur den fungerar. Den fullständiga koden för detta projekt ges längst ner på denna sida. Förklaringen till koden är som följer.
Arduino-kod för justerbar DC-belastning
Koden är ganska enkel. Först inkluderade vi SPI- och LCD-rubrikfiler samt ställde in maximal logisk spänning, chipvalsstift etc.
#omfatta
Detta avsnitt består av obligatoriska programflödesrelaterade deklarationer av heltal och variabler. Vi ställer också in de associerade kringutrustningspinnarna med Arduino Nano.
const int slaveSelectPin = 10; // Chip select pin int number = 0; int-ökning = A2; // Öka stift int minskning = A3; // minska stift int current_sense = A0; // strömavkänningsstift int voltage_sense = A1; // spänningsavkänningsstift int-tillstånd1 = 0; int-tillstånd2 = 0; int Set = 0; float volt = 0; float load_current = 0.0; float load_voltage = 0.0; flytström = 0,0; flottörspänning = 0,0; LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // LCD-stift
Detta används för installation av LCD och SPI. Dessutom är stiftanvisningarna inställda här.
ogiltig installation () { pinMode (slaveSelectPin, OUTPUT); pinMode (öka, INPUT); pinMode (minskning, INPUT); pinMode (current_sense, INPUT); pinMode (voltage_sense, INPUT); // initialisera SPI: SPI.begin (); // ställa in LCD: s antal kolumner och rader: lcd.begin (16, 2); // Skriv ut ett meddelande till LCD-skärmen. lcd.print ("Digital Load"); lcd.setCursor (0, 1); lcd.print ("Circuit Digest"); fördröjning (2000); }
Den används för att konvertera DAC-värdet.
ogiltigt convert_DAC (osignerat int-värde) { / * Stegstorlek = 2 ^ n, därför 12bit 2 ^ 12 = 4096 För 5V-referens blir steget 5/4095 = 0,0012210012210012V eller 1mV (ungefär) * / osignerad int-behållare; osignerad int MSB; osignerad int LSB; / * Steg: 1, lagrade 12-bitarsdata i behållaren Antag att data är 4095, i binär 1111 1111 1111 * / container = värde; / * Steg: 2 Skapa Dummy 8 bitar. Så genom att dela 256 fångas övre 4 bitar i LSB LSB = 0000 1111 * / LSB = behållare / 256; / * Steg: 3 Skicka konfigurationen med stansning av 4-bitarsdata. LSB = 0011 0000 ELLER 0000 1111. Resultatet är 0011 1111 * / LSB = (0x30) - LSB; / * Steg: 4 Behållaren har fortfarande 21-bitarsvärdet. Extrahera de nedre åtta bitarna. 1111 1111 OCH 1111 1111 1111. Resultatet är 1111 1111 vilket är MSB * / MSB = 0xFF & container; / * Steg: 4 Skicka 16 bitars data genom att dela i två byte. * / digitalWrite (slaveSelectPin, LOW); fördröjning (100); SPI.transfer (LSB); SPI.transfer (MSB); fördröjning (100); // ta SS-stiftet högt för att avmarkera chipet: digitalWrite (slaveSelectPin, HIGH); }
Detta avsnitt används för aktuella avkänningsrelaterade operationer.
float read_current (void) { load_current = 0; för (int a = 0; a <genomsnitt; a ++) { load_current = load_current + analogRead (current_sense); } belastningsström = belastningsström / genomsnitt; load_current = (load_current * MAX_VOLT) / 1024; load_current = (load_current / opamp_gain) / load_resistor; return load_current; }
Detta används för att läsa av lastspänningen.
float read_voltage (void) { load_voltage = 0; för (int a = 0; a <genomsnitt; a ++) { load_voltage = load_voltage + analogRead (voltage_sense); } load_voltage = load_voltage / genomsnitt; load_voltage = ((load_voltage * MAX_VOLT) /1024.0) * 6; return load_voltage; }
Detta är själva slingan. Här mäts omkopplingssteg och data skickas till DAC. Efter överföring av data mäts det aktuella strömflödet och lastspänningen. Båda värdena skrivs slutligen ut på LCD-skärmen.
void loop () { state1 = analogRead (öka); if (state1> 500) { delay (50); state1 = analogRead (öka); om (tillstånd1> 500) { volt = volt + 0,02; } } state2 = analogRead (minskning); if (state2> 500) { delay (50); state2 = analogRead (minskning); if (state2> 500) { if (volt == 0) { volt = 0; } annat { volt = volt-0,02; } } } antal = volt / 0,0012210012210012; convert_DAC (antal); spänning = lässpänning (); aktuell = läsström (); lcd.setCursor (0, 0); lcd.print ("Set Value"); lcd.print ("="); Set = (volt / 2) * 10000; lcd.print (Set); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("I"); lcd.print ("="); lcd.print (aktuell); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (spänning); lcd.print ("V"); // lcd.print (load_voltage); //lcd.print("mA "); // fördröjning (1000); //lcd.clear (); }
Testar vår justerbara DC-belastning
Den digitala belastningskretsen löds och drivs med en 12V strömkälla. Jag använde mitt 7,4 V litiumbatteri på strömkällans sida och kopplade in en klämmätare för att kontrollera hur den fungerar. Som du kan se när den inställda strömmen är 300mA drar kretsen 300mA från batteriet som också mäts av klämmätaren som 310mA.
Kretsens fullständiga arbete finns i videon som länkas nedan. Hoppas du förstod projektet och gillade att bygga något användbart. Om du har några frågor lämnar du dem i kommentarsektionen eller använder forumen.