Indholdsfortegnelse:
- Trin 1: Komponenter påkrævet
- Trin 2: Skematisk diagram
- Trin 3: Forstå kredsløbet
- Trin 4: Beregning af frekvens og spænding
- Trin 5: Arduino -kode
- Trin 6: Konklusion
Video: Strømforsyningsfrekvens og spændingsmåling ved hjælp af Arduino: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
Introduktion:
Målet med dette projekt er at måle forsyningsfrekvens og spænding, som er mellem 220 til 240 volt og 50 Hz her i Indien. Jeg brugte en Arduino til at fange signal og beregne frekvens og spænding, du kan bruge enhver anden mikrokontroller eller kort, du har. Kredsløbet kræver en håndfuld komponenter og er ret præcist til alle praktiske formål.
Trin 1: Komponenter påkrævet
- Arduino Uno
- IC LM358
- Trin ned transformer (220V til 12V)
-
Kondensatorer:
- 0,1 uF
- 2 x 1uF
-
Modstande:
- 3 x 1 kOhm
- 2 x 100 kOhm
- 1,5kOhm
- 3,3 kOhm
- 6,8 kOhm
- 3 x 1N4148 diode
- Brødbræt og jumper wire (valgfrit)
Trin 2: Skematisk diagram
I ovenstående kredsløb er transformatorens primær tilsluttet forsyningsnettet, og primæren er forbundet til vores målekredsløb
Trin 3: Forstå kredsløbet
I henhold til funktionaliteten kan dette kredsløb opdeles i fire dele:
A: Zero Crossing Detector -kredsløbet
Dette kredsløb genererer en 5V kvadratisk puls, når sinusbølgen går fra positiv til negativ. Modstand R1 kombineret med D1 og D2 begrænser indgangsspændingssvinget ved diodeforbindelsen til -0,6V til +5,6V (forudsat at diodes forspænding er 0,6V). Desuden kan du øge kredsens indgangsspændingsområde ved at øge værdien på R1.
Modstanden R2 og R3 danner en spændingsdeler for at begrænse den negative spændingssving til -0,24Volts, da input -common -mode -spændingen for LM358 er begrænset til -0,3Volts.
Modstanden R4, R5, kondensatoren C1 og op-amp (her brugt som komparator) danner Schmitt Trigger-kredsløbet, hvor modstanden R4 og R5 sætter hysteresen ved input +49,5mV over jorden. Output fra Schmitt Trigger føres til Arduino PIN2 til videre behandling.
B: Isolation og spænding Træd ned
Som navnet antyder, isolerer og reducerer denne del spændingen til cirka 12Vrms. Den reducerede spænding føres yderligere til instrumenteringskredsløbet.
C: Peak Detector kredsløb
Dette kredsløb bestemmer den maksimale spids for indgangssignalet. Modstandsdeler R6 og R7 reducerer indgangsspændingen med en faktor 0,23 (12Vrms reduceres til 2,76Vrms). Dioden D3 udfører kun den positive halve cyklus af signalet. Spændingen over C2 stiger op til spidsværdien af det rektificerede signal, som føres til Arduino analog pin A0 for yderligere at beregne spændingen.
Derudover kan du udskifte dette kredsløb med et præcisionsspidsdetektorkredsløb som disse nævnt her. Men til mine demonstrationsformål vil ovenstående kredsløb være tilstrækkeligt.
D: Arduino
I denne del fanger Arduino de firkantede pulser, der genereres af Schmitt Trigger -kredsløbet, og læser den analoge spænding fra spidsdetektorkredsløbet. Dataene behandles yderligere for at bestemme tidsperioden (dermed frekvensen) af kvadratpulsen (som er lig med ac -forsyningstidspersonen) og forsyningens spænding.
Trin 4: Beregning af frekvens og spænding
Beregning af frekvens:
Ved hjælp af Arduino kan vi måle tidsperioden T for signalet. Kvadratbølgepulser fra nulkrydsningsdetektoren føres til pin 2, derfra kan vi måle tidsperioden for hver puls. Vi kan bruge Arduinos interne timer (specifikt Timer1) til at beregne tidsperioden mellem to stigende kanter af kvadratpulsen ved hjælp af afbrydelser. Timeren øges med 1 pr. Urcyklus (uden prescaler = 1), og værdien gemmes i register TCNT1. Derfor øger 16Mhz -uret tælleren med 16 hvert mikrosekund. Tilsvarende for prescaler = 8 øges timeren med 2 hvert mikrosekund. Derfor tidsperioden mellem to stigende kanter
T = (TCNT1 -værdi) / tid taget for hver optælling
Hvor, tid taget for hver optælling = prescaler / (Arduino clockhastighed (16MHz)
Derfor er frekvens f = 1 / T = (Arduino -urhastighed (16MHz) / (Prescaler * TCNT! -Værdi)
Derfor er timerhastigheden (Hz) givet af = (Arduino -urhastighed (16MHz)) / prescaler
og signalets frekvens er givet ved = (Arduino -urhastighed
Tilsvarende kan vi beregne frekvens f ud fra forholdet f = 1/T.
Beregning af spænding:
Den indbyggede ADC i Arduino har en opløsning på 10 bit (mulige værdier = 2^10 = 1024), der returnerer værdier i området 0-1023. For at beregne den tilsvarende analoge spænding V skal vi bruge følgende relation
V = (ADC -læsning) * 5/1023
For at beregne forsyningsspændingen Vs (rms) skal vi tage hensyn til transformatorforholdet, modstandsdeleren R6R7 og spidsdetektorkredsløbet. Vi kan simpelthen sammensætte de forskellige faktorer/forhold som:
Transformatorforhold = 12/230 = 0,052
Modstandsdeler = R7/(R6 + R7) = 0,23
Ved spidsdetektorkredsløb = 1.414
Vs (rms) = V/(1.414*0.052*0.23) = (ADC -læsning)*0.289
Det skal bemærkes, at denne værdi er langt fra den faktiske værdi, hovedsagelig på grund af fejl i det faktiske transformatorforhold og diodeens fremadspændingsfald. En måde at omgå dette er at bestemme faktoren efter samling af kredsløbet. Det er ved at måle forsyningsspændingen og spændingen over kondensatoren C2 separat med et multimeter og derefter beregne Vs (rms) som følger:
Vs (rms) = ((Forsyningsspænding *5)/(Spænding over C2 *1023)) *(ADC -aflæsning)
i mit tilfælde er Vs (rms) = 0,33*(ADC -læsning)
Trin 5: Arduino -kode
#define volt_in A0 // analog spænding læs pin
flygtig uint16_t t_period; uint16_t ADC_værdi = 0; float volt, freq; void isr () {t_period = TCNT1; // gem TCNT1 -værdi i t_period TCNT1 = 0; // reset Timer1 ADC_value = analogRead (volt_in); // læs analog spænding} float get_freq () {uint16_t timer = t_periode; hvis (timer == 0) returnerer 0; // for at undgå division med nul, returner 16000000.0/(8UL*timer); // frekvens er givet ved f = clk_freq/(prescaler*timeperiod)} void setup () {TCCR1A = 0; TCCR1B = bit (CS11); // sæt prescaler til 8 TCNT1 = 0; // reset Timer1 værdi TIMSK1 = bit (TOIE1); // aktiver Timer1 overløbsafbrydelse EIFR | = bit (INTF0); // ryd INT0 -afbrydelsesflag Serial.begin (9600); } void loop () {attachInterrupt (0, isr, RISING); // aktiver ekstern afbrydelse (INT0) forsinkelse (1000); detachInterrupt (0); freq = get_freq (); volt = ADC_værdi*0,33; String buf; buf += String (freq, 3); buf += F ("Hz / t"); buf += streng (volt); buf += F ("Volt"); Serial.println (buf); }
Trin 6: Konklusion
Du kan samle kredsløbet i et brødbræt og justere koden og tilføje et SD -kort for at gemme dataene, som senere kan analyseres. Et sådant eksempel er, at du kan analysere spændingen og frekvensen i spidsbelastningstider.
Det kredsløb, jeg samlede i brødbrættet, brugte LM324 (quad opamp) i stedet for LM358 (dual opamp), da jeg ikke havde den IC på det tidspunkt og landsdækkende lockdown på grund af COVID-19-pandemien gjorde det svært for mig at få en ny IC. Ikke desto mindre ville det ikke påvirke kredsløbets funktion.
Kommenter gerne nedenfor for eventuelle forslag og forespørgsler.
Anbefalede:
DIY -- Sådan laver du en edderkoprobot, der kan kontrolleres ved hjælp af smartphone ved hjælp af Arduino Uno: 6 trin
DIY || Sådan laver du en edderkoprobot, der kan styres ved hjælp af smartphone Brug af Arduino Uno: Mens du laver en edderkoprobot, kan man lære så mange ting om robotik. Ligesom at lave robotter er underholdende såvel som udfordrende. I denne video vil vi vise dig, hvordan du laver en Spider -robot, som vi kan betjene ved hjælp af vores smartphone (Androi
DC -spændingsmåling ved hjælp af Arduino: 5 trin
DC -spændingsmåling ved hjælp af Arduino: I dette projekt vil jeg vise dig, hvordan du måler DC -spænding op til 50v ved hjælp af arduino og og vise på OLED -displaymodul del har brug for arduino UNOoled display10k ohm modstand1k ohm resistorjumper kabel
Kontrol ledt over hele verden ved hjælp af internet ved hjælp af Arduino: 4 trin
Kontrol ledt over hele verden ved hjælp af internet ved hjælp af Arduino: Hej, jeg er Rithik. Vi kommer til at lave en internetstyret LED ved hjælp af din telefon. Vi kommer til at bruge software som Arduino IDE og Blynk.Det er enkelt, og hvis det lykkedes dig, kan du styre så mange elektroniske komponenter, du ønskerTing We Need: Hardware:
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter - Rc Helikopter - Rc -fly ved hjælp af Arduino: 5 trin (med billeder)
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter | Rc Helikopter | Rc -fly ved hjælp af Arduino: At betjene en Rc -bil | Quadcopter | Drone | RC -fly | RC -båd, vi har altid brug for en modtager og sender, antag at vi til RC QUADCOPTER har brug for en 6 -kanals sender og modtager, og den type TX og RX er for dyr, så vi laver en på vores
Spændingsmåling ved hjælp af Arduino: 5 trin
Spændingsmåling ved hjælp af Arduino: Måling af spænding er ganske let ved hjælp af enhver mikrokontroller i forhold til måling af strøm. Måling af spændinger bliver nødvendig, hvis du arbejder med batterier, eller hvis du vil lave din egen justerbare strømforsyning. Selvom denne metode gælder