Innholdsfortegnelse:
- Trinn 1: Komponenter påkrevd
- Trinn 2: Skjematisk diagram
- Trinn 3: Forstå kretsen
- Trinn 4: Beregning av frekvens og spenning
- Trinn 5: Arduino -kode
- Trinn 6: Konklusjon
Video: Strømforsyning Frekvens- og spenningsmåling ved bruk av Arduino: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Introduksjon:
Målet med dette prosjektet er å måle forsyningsfrekvens og spenning, som er mellom 220 til 240 volt og 50 Hz her i India. Jeg brukte en Arduino for å fange signal og beregne frekvens og spenning, du kan bruke hvilken som helst annen mikrokontroller eller brett du har. Kretsen krever en håndfull komponenter og er ganske nøyaktig for alle praktiske formål.
Trinn 1: Komponenter påkrevd
- Arduino Uno
- IC LM358
- Trinn ned transformator (220V til 12V)
-
Kondensatorer:
- 0,1 uF
- 2 x 1 uF
-
Motstander:
- 3 x 1 kOhm
- 2 x 100 kOhm
- 1,5kOhm
- 3,3 kOhm
- 6,8 kOhm
- 3 x 1N4148 diode
- Brødbrett og jumper wire (valgfritt)
Trinn 2: Skjematisk diagram
I kretsen ovenfor er transformatoren primær koblet til strømnettet og primæren er koblet til vår målekrets
Trinn 3: Forstå kretsen
I henhold til funksjonaliteten kan denne kretsen deles inn i fire deler:
A: Zero Crossing Detector -kretsen
Denne kretsen genererer en 5V kvadratisk puls når sinusbølgen går fra positiv til negativ. Motstand R1 kombinert med D1 og D2 begrenser inngangsspenningssvingningen ved diodeforbindelsen til -0,6V til +5,6V (forutsatt at diodens fremspenning er 0,6V). Videre kan du øke inngangsspenningsområdet til kretsen ved å øke verdien på R1.
Motstanden R2 og R3 danner en spenningsdeler for å begrense den negative spenningssvingningen til -0,24Volts da inngangsspenningen for vanlig modus til LM358 er begrenset til -0,3Volt.
Motstanden R4, R5, kondensatoren C1 og op-amp (her brukt som komparator) danner Schmitt Trigger-kretsen der motstanden R4 og R5 setter hysteresen ved inngang +49,5 mV over bakken. Utgangen fra Schmitt Trigger mates til Arduino PIN2 for videre behandling.
B: Isolasjon og spenning Trinn ned
Som navnet antyder, isolerer og senker denne delen spenningen til omtrent 12Vrms. Den reduserte spenningen mates videre til instrumenteringskretsen.
C: Toppdetektorkrets
Denne kretsen bestemmer maksimal spenning for inngangssignalet. Motstandsdeler R6 og R7 reduserer inngangsspenningen med en faktor 0,23 (12Vrms reduseres til 2,76Vrms). Dioden D3 utfører bare den positive halvsyklusen til signalet. Spenningen over C2 øker opp til toppverdien av det rektifiserte signalet, som mates til Arduino analog pin A0 for ytterligere å beregne spenningen.
I tillegg kan du erstatte denne kretsen med en presisjons toppdetektorkrets som disse nevnt her. Men for mine demonstrasjonsformål vil kretsen ovenfor være tilstrekkelig.
D: Arduino
I denne delen fanger Arduino de firkantede pulser generert av Schmitt Trigger -kretsen og leser den analoge spenningen fra toppdetektorkretsen. Dataene behandles videre for å bestemme tidsperioden (derav frekvensen) til kvadratpulsen (som er lik person for vekselstrømforsyningstidspunktet) og spenningen til forsyningen.
Trinn 4: Beregning av frekvens og spenning
Beregning av frekvens:
Ved hjelp av Arduino kan vi måle tidsperioden T for signalet. Kvadratbølgepulsene fra nullovergangsdetektoren mates til pinne 2, derfra kan vi måle tidsperioden for hver puls. Vi kan bruke Arduinos interne timer (spesielt Timer1) til å beregne tidsperioden mellom to stigende kanter på kvadratpulsen ved hjelp av avbrudd. Tidsuret øker med 1 per klokkesyklus (uten prescaler = 1) og verdien lagres i registeret TCNT1. Derfor øker 16Mhz -klokken telleren med 16 hvert mikrosekund. På samme måte for prescaler = 8 øker timeren med 2 hvert mikrosekund. Derav tidsperioden mellom to stigende kanter
T = (TCNT1 -verdi) / tid det tar for hver telling
Hvor, tid tatt for hver telling = forhåndsskaler / (Arduino klokkehastighet (16MHz)
Derfor er frekvensen f = 1 / T = (Arduino -klokkehastighet (16MHz) / (Prescaler * TCNT! -Verdi)
Derfor er tidtakerhastigheten (Hz) gitt av = (Arduino klokkehastighet (16MHz)) / forkalkingsenhet
og frekvensen til signalet er gitt av = (Arduino klokkehastighet
Tilsvarende kan vi beregne frekvens f fra forholdet f = 1/T.
Beregning av spenning:
Den innebygde ADC av Arduino har en oppløsning på 10 bits (mulige verdier = 2^10 = 1024), og returnerer verdier i området 0-1023. For å beregne den tilsvarende analoge spenningen V må vi bruke følgende forhold
V = (ADC -avlesning) * 5/1023
For å beregne forsyningsspenningen Vs (rms) må vi ta hensyn til transformatorforholdet, motstandsdeleren R6R7 og toppdetektorkretsen. Vi kan ganske enkelt sette sammen de forskjellige faktorene/forholdet som:
Transformatorforhold = 12/230 = 0,052
Motstandsdeler = R7/(R6 + R7) = 0,23
Ved toppdetektorkrets = 1.414
Vs (rms) = V/(1.414*0.052*0.23) = (ADC -avlesning)*0.289
Det skal bemerkes at denne verdien er langt fra den faktiske verdien, hovedsakelig på grunn av feil i det faktiske transformatorforholdet og diodens spenningsfall. En måte å omgå dette på er å bestemme faktoren etter at kretsen er satt sammen. Det er ved å måle forsyningsspenningen og spenningen over kondensatoren C2 separat med et multimeter, og deretter beregne Vs (rms) som følger:
Vs (rms) = ((forsyningsspenning *5)/(spenning over C2 *1023)) *(ADC -avlesning)
i mitt tilfelle er Vs (rms) = 0,33*(ADC Reading)
Trinn 5: Arduino -kode
#define volt_in A0 // analog spenning lesestift
flyktig uint16_t t_period; uint16_t ADC_value = 0; float volt, frekvens; void isr () {t_period = TCNT1; // lagre TCNT1 -verdi i t_periode TCNT1 = 0; // reset Timer1 ADC_value = analogRead (volt_in); // les analog spenning} float get_freq () {uint16_t timer = t_period; hvis (timer == 0) returnerer 0; // for å unngå divisjon med null ellers returner 16000000.0/(8UL*timer); // frekvens er gitt av f = clk_freq/(prescaler*timeperiod)} void setup () {TCCR1A = 0; TCCR1B = bit (CS11); // sett prescaler til 8 TCNT1 = 0; // reset Timer1 verdi TIMSK1 = bit (TOIE1); // aktivere Timer1 overløp avbryte EIFR | = bit (INTF0); // tøm INT0 -avbruddsflagget Serial.begin (9600); } void loop () {attachInterrupt (0, isr, RISING); // aktivere ekstern avbrudd (INT0) forsinkelse (1000); detachInterrupt (0); freq = get_freq (); volt = ADC_verdi*0,33; String buf; buf += streng (frekvens, 3); buf += F ("Hz / t"); buf += streng (volt); buf += F ("Volt"); Serial.println (buf); }
Trinn 6: Konklusjon
Du kan sette sammen kretsen i et brødbrett og justere koden og legge til et SD -kort for å lagre dataene, som senere kan analyseres. Et slikt eksempel er at du kan analysere spenningen og frekvensen i rushtiden.
Kretsen jeg monterte i brødbrettet brukte LM324 (quad opamp) i stedet for LM358 (dual opamp) da jeg ikke hadde den ICen i det øyeblikket og landsomfattende lockdown på grunn av COVID-19-pandemien gjorde det vanskelig for meg å få en ny IC. Likevel ville det ikke påvirke kretsens arbeid.
Kommenter gjerne nedenfor for forslag og spørsmål.
Anbefalt:
Variabel strømforsyning ved bruk av LM317 (PCB -oppsett): 3 trinn
Variabel strømforsyning ved bruk av LM317 (PCB -oppsett): Hei folkens! Her viser jeg deg PCB -oppsettet til en variabel strømforsyning. Dette er en veldig populær krets som er lett tilgjengelig på nettet. Den bruker den populære spenningsregulatoren IC LM317. For de som er interessert i elektronikk, vil denne sirkelen
DIY variabel strømforsyning ved bruk av LM317: 6 trinn
DIY variabel strømforsyning ved bruk av LM317: Strømforsyning er et av de viktigste verktøyene en tinker kan ha. Det lar oss enkelt teste prototypekretser uten å måtte lage en permanent forsyning for den. det lar oss teste kretser på en trygg måte, siden noen strømforsyninger har funksjoner som
DC spenningsmåling ved hjelp av Arduino: 5 trinn
DC -spenningsmåling ved hjelp av Arduino: I dette prosjektet vil jeg vise deg hvordan du måler DC -spenning opptil 50v ved å bruke arduino og og vise på OLED -skjermmodulens del trenger arduino UNOoled display10k ohm motstand1k ohm resistorjumper kabel
2S LiPo/Lion batterilader ved bruk av mikro -USB 5V/2A strømforsyning: 3 trinn
2S LiPo/Lion batterilader ved bruk av mikro -USB 5V/2A strømforsyning: Introduksjon: Dette prosjektet vil demonstrere en alternativ prosess for å lade 2 Lion -celler samtidig ved å bruke to TP4056 1S batterilader mens utgangsspenningen (7,4 V) kan oppnås etter behov. Vanligvis, for å lade Lion -celler som 18650 c
Spenningsmåling ved bruk av Arduino: 5 trinn
Spenningsmåling ved bruk av Arduino: Det er ganske enkelt å måle spenning ved bruk av en hvilken som helst mikrokontroller sammenlignet med måling av strøm. Måling av spenninger blir nødvendig hvis du arbeider med batterier eller hvis du vil lage din egen justerbare strømforsyning. Selv om denne metoden gjelder