- Nødvendig materiale
- Arduino DC elektronisk lastkretsdiagram
- PCB Design og Gerber File
- Bestille PCB fra AllPCB
- Arduino-kode for justerbar DC-belastning
- Testing av vår justerbare DC-belastning
Hvis du noen gang har jobbet med batterier, SMPS-kretser eller andre strømforsyningskretser, ville det ofte ha skjedd at du må teste strømkilden din ved å laste den inn for å sjekke hvordan den fungerer under forskjellige belastningsforhold. En enhet som ofte brukes til å utføre denne typen test kalles en konstant strøm DC-belastning, som lar oss justere utgangsstrømmen til strømkilden din og deretter holde den konstant til den justeres på nytt. I denne opplæringen lærer vi hvordan vi bygger vår egen justerbare elektroniske belastning ved hjelp av Arduino, som kan ta en maksimal inngangsspenning på 24V og tømme strøm så høyt som 5A. For dette prosjektet har vi brukt PCB-kort som er produsert av AllPCB, en Kina-basert profesjonell leverandør av PCB-produksjon og montering.
I vår forrige spenningsstyrte strømkildeopplæring har vi forklart hvordan du bruker en operasjonsforsterker med en MOSFET og bruker en spenningsstyrt strømkildekrets. Men i denne opplæringen vil vi bruke den kretsen og lage en digitalt kontrollert strømkilde. Åpenbart krever en digitalt kontrollert strømkilde en digital krets, og for å tjene formålet brukes en Arduino NANO. Arduino NANO vil gi nødvendige kontroller for DC-belastningen.
Kretsen består av tre deler. Den første delen er Arduino Nano-seksjonen, den andre delen er den digitale til analoge omformeren, og den tredje delen er en ren analog krets der en dobbel operasjonsforsterker i en enkelt pakke brukes som vil kontrollere lastseksjonen. Dette prosjektet er inspirert av et innlegg på Arduino, men kretsen er endret for mindre kompleksitet med grunnleggende funksjoner for alle å bygge den.
Vår elektroniske last er designet for å ha følgende inngangs- og utgangsseksjoner.
- To inngangsbrytere for å øke og redusere belastningen.
- En LCD-skjerm som viser innstilt belastning, faktisk belastning og belastningsspenning.
- Maksimal belastningsstrøm er begrenset til 5A.
- Maksimal inngangsspenning er 24V for lasten.
Nødvendig materiale
Komponentene som kreves for å bygge en DC elektronisk belastning er oppført nedenfor.
- Arduino nano
- 16x2 tegn LCD
- To fat sokkel
- Mosfet irf540n
- Mcp4921
- Lm358
- 5watt shuntmotstand.1 ohm
- 1k
- 10k - 6stk
- Kjøleribbe
- .1uF 50v
- 2k - 2stk
Arduino DC elektronisk lastkretsdiagram
I nedenstående skjema har operasjonsforsterkeren to seksjoner. Den ene er å kontrollere MOSFET, og den andre er å forsterke den registrerte strømmen. Du kan også sjekke videoen nederst på denne siden som forklarer kretsens fullstendige arbeid. Den første delen har R12, R13 og MOSFET. R12 brukes til å redusere belastningseffekten på tilbakemeldingsseksjonen, og R13 brukes som Mosfet gate-motstand.
Ytterligere to motstander R8 og R9 brukes til å registrere forsyningsspenningen til strømforsyningen som vil bli stresset av denne dummybelastningen. I henhold til spenningsdelerregelen støtter disse to motstandene maksimalt 24V. Mer enn 24V vil produsere en spenning som ikke passer for Arduino-pinnene. Så vær forsiktig så du ikke kobler til strømforsyningen som har mer enn 24V utgangsspenning.
Motstanden R7 er den faktiske lastmotstanden her. Det er en 5 Watt,.1 Ohm motstand. I henhold til kraftloven vil den støtte maksimalt 7A (P = I 2 R), men for den sikre siden er det klokere å begrense laststrømmen maksimalt 5A. Derfor kan for øyeblikket maksimum 24V, 5A belastning stilles inn av denne dummybelastningen.
En annen del av forsterkeren er konfigurert som en forsterkningsforsterker. Det vil gi 6x gevinst. Under strømmen vil det oppstå et spenningsfall. For eksempel, når 5A strøm strømmer gjennom motstanden, vil spenningsfallet være 0,5V over 0,1 Ohms shuntmotstand (V = I x R) i henhold til ohmsloven. Den ikke-inverterende forsterkeren vil forsterke den til x6, derfor vil 3V være utgangen fra den andre delen av forsterkeren. Denne utgangen vil bli registrert av Arduino nano analog inngangspinne, og strømmen vil bli beregnet.
Den første delen av forsterkeren er konfigurert som en spenningsfølgerkrets som vil kontrollere MOSFET i henhold til inngangsspenningen og få ønsket tilbakemeldingsspenning på grunn av belastningsstrømmen som strømmer gjennom shuntmotstanden.
MCP4921 er Digital til Analog-omformeren. DAC bruker SPI-kommunikasjonsprotokollen for å hente digitale data fra en hvilken som helst mikrokontrollerenhet og gi analog spenningsutgang avhengig av den. Denne spenningen er inngangen til op-amp. Vi har tidligere også lært å bruke denne MCP4921 DAC med PIC.
På den andre siden er det en Arduino Nano som vil gi de digitale dataene til DAC via SPI-protokoll og kontrollere belastningen, og viser også dataene i 16x2 tegnvisning. Ytterligere to ting brukes, det vil si redusere og øke knappen. I stedet for å koble til en digital pin, er den koblet til de analoge pinnene. Derfor kan man endre det til en annen type brytere som glidebryter eller analog koder. Ved å endre koden kan man også gi rå analoge data for å kontrollere belastningen. Dette unngår også avbryterproblemet.
Til slutt, ved å øke belastningen, vil Arduino nano gi lastedata til DAC i digitalt format, DAC vil gi analoge data til operasjonsforsterkeren, og operasjonsforsterkeren vil kontrollere MOSFET i henhold til inngangsspenningen til operasjonsforsterkeren.. Til slutt, avhengig av belastningsstrømmen gjennom shuntmotstanden, vises et spenningsfall som ytterligere vil bli forsterket av den andre kanalen til LM358 og komme av Arduino nano. Dette vises på tegnskjermen. Det samme vil skje når brukeren trykker på reduseringsknappen.
PCB Design og Gerber File
Siden denne kretsen har en høy strømbane, er det et klokere valg å bruke riktig PCB-designtaktikk for å fjerne uønskede feiltilfeller. Dermed er et PCB designet for denne DC-belastningen. Jeg har brukt Eagle PCB Design Software til å designe PCB. Du kan velge hvilken som helst PCB Cad-programvare. Det endelige designede kretskortet i CAD-programvaren vises i bildet nedenfor,
En viktig faktor å merke seg under utformingen av denne PCB-en er å bruke et tykt kraftplan for riktig strømføring over hele kretsen. Det er også males syr VIAS (vilkår vias i jordplanet) som brukes for riktig grunn strømning i begge lagene til topp og bunn.
Du kan også laste ned Gerber-filen på denne PCB-en fra lenken nedenfor og bruke den til fabrikasjon.
- Last ned justerbar elektronisk DC-last Gerber-fil
Bestille PCB fra AllPCB
Når du er klar med Gerber-filen din, kan du bruke den til å lage din PCB. Når vi snakker om det, kommer sponsoren til denne artikkelen ALLPCB, som er kjent for sine høykvalitets PCB-er og ultrasnelle frakt. Bortsett fra PCB-produksjon, tilbyr AllPCB ogsåPCB-montering og sourcing av komponenter.
For å få PCB-bestillingen fra dem, besøk allpcb.com og påmelding. Deretter angir du målene på PCB-en og den nødvendige mengden på startsiden som vist nedenfor. Klikk deretter på Sitat nå.
Nå kan du endre de andre parametrene på PCB-en din, som antall lag, maskefarge, tykkelse osv. På høyre side kan du velge land og foretrukket fraktalternativ. Dette viser deg ledetiden og det totale beløpet som skal betales. Jeg har valgt DHL og mitt totale beløp er $ 26, men hvis du er første gang kunde, vil prisene gå ned i kassen. Klikk deretter på Legg i handlekurven, og klikk deretter på sjekk ut nå.
Nå kan du klikke på last opp Gerber-filen din ved å klikke på "Last opp Gerber" og deretter klikke på kjøp.
På neste side kan du angi leveringsadressen og sjekke den endelige prisen du må betale for PCB. Du kan deretter gjennomgå bestillingen din og deretter klikke på send for å utføre betalingen.
Når bestillingen er bekreftet, kan du lene deg tilbake og videresende til PCB-en din kommer til døren. Jeg mottok bestillingen min etter noen dager, og da var emballasjen pen som vist nedenfor.
Kvaliteten på PCB var som alltid god som du selv kan se på bildene nedenfor. Over- og undersiden av brettet er vist nedenfor.
Når du har fått brettet ditt, kan du fortsette med å montere alle komponentene. Mitt ferdige brett ser ut som dette vist nedenfor.
Deretter kan du laste opp koden og slå på modulen for å sjekke hvordan den fungerer. Den komplette koden for dette prosjektet er gitt nederst på denne siden. Forklaringen på koden er som følger.
Arduino-kode for justerbar DC-belastning
Koden er ganske enkel. Først inkluderte vi SPI- og LCD-headerfiler, så vel som å angi maksimal logisk spenning, chipvalgstifter osv.
#inkludere
Denne delen består av nødvendige programflytrelaterte erklæringer om heltall og variabler. Vi setter også tilknyttede periferiprodukter med Arduino Nano.
const int slaveSelectPin = 10; // Chip select pin int number = 0; int økning = A2; // Øk pin int-reduksjon = A3; // redusere pin int current_sense = A0; // nåværende følelse pin int voltage_sense = A1; // spenningssensor pin int state1 = 0; int-tilstand2 = 0; int Set = 0; flyte volt = 0; flytebelastningsstrøm = 0,0; float load_voltage = 0.0; flytstrøm = 0,0; flytespenning = 0,0; LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // LCD-pinner
Dette brukes til oppsett av LCD og SPI. Også pinnretningene er angitt her.
ugyldig oppsett () { pinMode (slaveSelectPin, OUTPUT); pinMode (økning, INNGANG); pinMode (reduksjon, INNGANG); pinMode (current_sense, INPUT); pinMode (voltage_sense, INPUT); // initialisere SPI: SPI.begin (); // sette opp LCD-tallet antall kolonner og rader: lcd.begin (16, 2); // Skriv ut en melding på LCD-skjermen. lcd.print ("Digital Load"); lcd.setCursor (0, 1); lcd.print ("Circuit Digest"); forsinkelse (2000); }
Den brukes til å konvertere DAC-verdien.
ugyldig convert_DAC (usignert int-verdi) { / * Trinnstørrelse = 2 ^ n, Derfor 12bit 2 ^ 12 = 4096 For 5V-referanse vil trinnet være 5/4095 = 0,0012210012210012V eller 1mV (ca.) * / usignert int-beholder; usignert int MSB; usignert int LSB; / * Trinn: 1, lagret 12-biters data i beholderen Anta at dataene er 4095, i binær 1111 1111 1111 * / container = verdi; / * Trinn: 2 Opprette Dummy 8 bit. Så ved å dele 256 blir de øvre 4 bitene fanget i LSB LSB = 0000 1111 * / LSB = container / 256; / * Trinn: 3 Sende konfigurasjonen med hulling av 4-biters data. LSB = 0011 0000 ELLER 0000 1111. Resultatet er 0011 1111 * / LSB = (0x30) - LSB; / * Trinn: 4 Beholder har fremdeles 21bit-verdien. Pakke ut de nedre 8 bitene. 1111 1111 OG 1111 1111 1111. Resultatet er 1111 1111 som er MSB * / MSB = 0xFF & container; / * Trinn: 4 Sende 16bits-data ved å dele i to byte. * / digitalWrite (slaveSelectPin, LOW); forsinkelse (100); SPI.transfer (LSB); SPI.transfer (MSB); forsinkelse (100); // ta SS-pinnen høyt for å fjerne markeringen av brikken: digitalWrite (slaveSelectPin, HIGH); }
Denne delen brukes til gjeldende sensing-relaterte operasjoner.
float read_current (void) { load_current = 0; for (int a = 0; a <gjennomsnitt; a ++) { load_current = load_current + analogRead (current_sense); } belastningsstrøm = belastningsstrøm / gjennomsnitt; load_current = (load_current * MAX_VOLT) / 1024; load_current = (load_current / opamp_gain) / load_resistor; retur last_strøm; }
Dette brukes til å lese belastningsspenningen.
float read_voltage (void) { load_voltage = 0; for (int a = 0; a <gjennomsnitt; a ++) { load_voltage = load_voltage + analogRead (voltage_sense); } load_voltage = load_voltage / average; load_voltage = ((load_voltage * MAX_VOLT) /1024.0) * 6; retur belastning_spenning; }
Dette er selve løkken. Her måles trinnene på bryteren og dataene sendes til DAC. Etter overføring av dataene måles den aktuelle strømmen og belastningsspenningen. Begge verdiene blir også endelig skrevet ut på LCD-skjermen.
ugyldig sløyfe () { state1 = analogRead (øke); hvis (tilstand1> 500) { forsinkelse (50); tilstand1 = analogLes (øk); hvis (tilstand1> 500) { volt = volt + 0,02; } } state2 = analogRead (redusering); hvis (tilstand2> 500) { forsinkelse (50); state2 = analogRead (reduksjon); hvis (tilstand2> 500) { hvis (volt == 0) { volt = 0; } annet { volt = volt-0,02; } } } tall = volt / 0,0012210012210012; convert_DAC (nummer); spenning = lesespenning (); gjeldende = lesestrøm (); lcd.setCursor (0, 0); lcd.print ("Sett verdi"); lcd.print ("="); Sett = (volt / 2) * 10000; lcd.print (sett); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("I"); lcd.print ("="); lcd.print (gjeldende); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (spenning); lcd.print ("V"); // lcd.print (load_voltage); //lcd.print("mA "); // forsinkelse (1000); //lcd.clear (); }
Testing av vår justerbare DC-belastning
Den digitale lastkretsen er loddet og drevet opp med en 12V strømkilde. Jeg brukte mitt 7,4 V litiumbatteri på strømkildesiden og koblet til en klemmemåler for å sjekke hvordan det fungerer. Som du kan se når den innstilte strømmen er 300mA, trekker kretsen 300mA fra batteriet, som også måles av klemmemåler som 310mA.
Komplett bearbeiding av kretsen finner du i videoen som er lenket nedenfor. Håper du forsto prosjektet og likte å bygge noe nyttig. Hvis du har spørsmål, la dem være i kommentarseksjonen eller bruk forumene.