Innehållsförteckning:
- Steg 1: Komponenter krävs
- Steg 2: Schematisk diagram
- Steg 3: Förstå kretsen
- Steg 4: Beräkning av frekvens och spänning
- Steg 5: Arduino -kod
- Steg 6: Slutsats
Video: Strömförsörjning Frekvens- och spänningsmätning med Arduino: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:38
Introduktion:
Målet med detta projekt är att mäta matningsfrekvens och spänning, som är mellan 220 till 240 volt och 50 Hz här i Indien. Jag använde en Arduino för att fånga signal och beräkna frekvens och spänning, du kan använda alla andra mikrokontroller eller kort du har. Kretsen kräver en handfull komponenter och är ganska exakt för alla praktiska ändamål.
Steg 1: Komponenter krävs
- Arduino Uno
- IC LM358
- Steg ner transformator (220V till 12V)
-
Kondensatorer:
- 0,1 uF
- 2 x 1uF
-
Motstånd:
- 3 x 1 kOhm
- 2 x 100kOhm
- 1,5kOhm
- 3.3kOhm
- 6,8 kOhm
- 3 x 1N4148 -diod
- Brödbräda och bygelkabel (tillval)
Steg 2: Schematisk diagram
I kretsen ovan är transformatorns primär ansluten till elnätet och primären är ansluten till vår mätkrets
Steg 3: Förstå kretsen
Enligt funktionaliteten kan denna krets delas in i fyra delar:
A: Zero Crossing Detector -kretsen
Denna krets genererar en 5V kvadratisk puls när sinusvågan går från positiv till negativ. Motstånd R1 kombinerat med D1 och D2 begränsar ingångsspänningens svängning vid diodkorsningen till -0,6V till +5,6V (förutsatt att diodens framspänning är 0,6V). Dessutom kan du öka kretsens ingångsspänningsområde genom att öka värdet på R1.
Motståndet R2 och R3 bildar en spänningsdelare för att begränsa den negativa spänningssvingningen till -0,24Volts eftersom ingångsspänningen för vanligt läge för LM358 är begränsad till -0,3Volts.
Motståndet R4, R5, kondensatorn C1 och op-amparen (används här som komparator) bildar Schmitt Trigger-kretsen där motståndet R4 och R5 ställer hysteresen vid ingång +49,5 mV över marken. Utmatningen från Schmitt Trigger matas till Arduino PIN2 för vidare bearbetning.
B: Isolering och spänning Steg ner
Som namnet antyder isolerar och sänker denna del spänningen till cirka 12Vrms. Den trappade ner spänningen matas vidare till instrumentkretsen.
C: Toppdetektorkrets
Denna krets bestämmer den maximala toppspänningen för insignalen. Motståndsdelare R6 och R7 reducerar ingångsspänningen med en faktor 0,23 (12Vrms reduceras till 2,76Vrms). Dioden D3 leder endast den positiva halvcykeln för signalen. Spänningen över C2 ökar upp till toppvärdet för den rättade signalen, som matas till Arduino analoga stift A0 för att ytterligare beräkna spänningen.
Dessutom kan du ersätta denna krets med en precisionstoppdetektorkrets som dessa som nämns här. Men för mina demonstrationsändamål kommer kretsen ovan att vara tillräcklig.
D: Arduino
I denna del fångar Arduino de kvadratiska pulser som genereras av Schmitt Trigger -kretsen och läser den analoga spänningen från toppdetektorkretsen. Uppgifterna behandlas vidare för att bestämma tidsperioden (därav frekvensen) för kvadratpulsen (som är lika med personalen för växelströmstiden) och matningsspänningen.
Steg 4: Beräkning av frekvens och spänning
Beräkning av frekvens:
Med hjälp av Arduino kan vi mäta tidsperioden T för signalen. Kvadratvågspulserna från nollkorsningsdetektorn matas till stift 2, därifrån kan vi mäta tidsperioden för varje puls. Vi kan använda Arduinos interna timer (särskilt Timer1) för att beräkna tidsperioden mellan två stigande kanter på kvadratpulsen med hjälp av avbrott. Timern ökar med 1 per klockcykel (utan förkalkning = 1) och värdet lagras i registret TCNT1. Därför ökar klockan 16Mhz räknaren med 16 varje mikrosekund. På samma sätt för prescaler = 8 ökas timern med 2 varje mikrosekund. Därav tidsperioden mellan två stigande kanter
T = (TCNT1 -värde) / tid som tas för varje räkning
Var, tid för varje räkning = förskalare / (Arduino klockhastighet (16MHz)
Därför är frekvens f = 1 / T = (Arduino -klockhastighet (16MHz) / (Prescaler * TCNT! -Värde)
Därför ges timerhastigheten (Hz) av = (Arduino -klockhastighet (16MHz)) / förkalkning
och signalens frekvens ges av = (Arduino klockhastighet
På motsvarande sätt kan vi beräkna frekvensen f från förhållandet f = 1/T.
Beräkning av spänning:
Den inbyggda ADC för Arduino har en upplösning på 10 bitar (möjliga värden = 2^10 = 1024), som returnerar värden i intervallet 0-1023. För att beräkna motsvarande analoga spänning V måste vi använda följande relation
V = (ADC -läsning) * 5/1023
För att beräkna matningsspänningen Vs (rms) måste vi ta hänsyn till transformatorförhållandet, motståndsdelaren R6R7 och toppdetektorkretsen. Vi kan helt enkelt sätta ihop de olika faktorerna/förhållandet som:
Transformatorförhållande = 12/230 = 0,052
Motståndsdelare = R7/(R6 + R7) = 0,23
Vid toppdetektorkrets = 1,414
Vs (rms) = V/(1.414*0.052*0.23) = (ADC -läsning)*0.289
Det bör noteras att detta värde är långt från det verkliga värdet, främst på grund av fel i det faktiska transformatorförhållandet och diodens spänningsfall. Ett sätt att kringgå detta är att bestämma faktorn efter montering av kretsen. Det är genom att mäta matningsspänningen och spänningen över kondensatorn C2 separat med en multimeter och sedan beräkna Vs (rms) enligt följande:
Vs (rms) = ((Matningsspänning *5)/(Spänning över C2 *1023)) *(ADC -avläsning)
i mitt fall är Vs (rms) = 0,33*(ADC -läsning)
Steg 5: Arduino -kod
#define volt_in A0 // analog spänning lässtift
flyktig uint16_t t_period; uint16_t ADC_value = 0; float volt, freq; void isr () {t_period = TCNT1; // lagra TCNT1 -värde i t_period TCNT1 = 0; // reset Timer1 ADC_value = analogRead (volt_in); // läs analog spänning} float get_freq () {uint16_t timer = t_period; om (timer == 0) returnerar 0; // för att undvika division med noll annars returnera 16000000.0/(8UL*timer); // frekvens ges av f = clk_freq/(prescaler*timeperiod)} void setup () {TCCR1A = 0; TCCR1B = bit (CS11); // ställ prescaler till 8 TCNT1 = 0; // reset Timer1 -värde TIMSK1 = bit (TOIE1); // aktivera Timer1 överflödsavbrott EIFR | = bit (INTF0); // rensa INT0 -avbrottsflagga Serial.begin (9600); } void loop () {attachInterrupt (0, isr, RISING); // aktivera extern avbrott (INT0) fördröjning (1000); detachInterrupt (0); freq = get_freq (); volt = ADC_värde*0,33; String buf; buf += String (freq, 3); buf += F ("Hz / t"); buf += Sträng (volt); buf += F ("Volt"); Serial.println (buf); }
Steg 6: Slutsats
Du kan montera kretsen i en brödbräda och justera koden och lägga till ett SD -kort för att lagra data, som senare kan analyseras. Ett sådant exempel är att du kan analysera spänningen och frekvensen vid högtrafik.
Kretsen jag monterade i brödbrädan använde LM324 (quad opamp) istället för LM358 (dual opamp) eftersom jag inte hade den IC: n just nu och rikstäckande lockdown på grund av COVID-19-pandemin gjorde det svårt för mig att få en ny IC. Ändå skulle det inte påverka kretsens funktion.
Kommentera gärna nedan för förslag och frågor.
Rekommenderad:
220V till 24V 15A strömförsörjning - Byt strömförsörjning - IR2153: 8 steg
220V till 24V 15A strömförsörjning | Byt strömförsörjning | IR2153: Hej kille idag Vi tillverkar 220V till 24V 15A strömförsörjning | Byt strömförsörjning | IR2153 från ATX strömförsörjning
Spänningsmätning med Arduino: 5 steg
Spänningsmätning med Arduino: Att mäta spänning är ganska enkelt med alla mikrokontroller jämfört med mätning av ström. Det är nödvändigt att mäta spänningar om du arbetar med batterier eller om du vill skapa en egen justerbar strömförsörjning. Även om denna metod gäller
Noggrann 1 Hz frekvens från växelström: 9 steg
Noggrann 1 Hz frekvens från växelströmsnät: Linjens frekvens är, beroende på landet 50 Hz eller 60 Hz. Denna frekvens har små fluktuationer på kort sikt, men kompenseras dagligen av kraftstationen vilket resulterar i en ganska exakt frekvenskälla för många tidsapplikationer
Konvertera en ATX -strömförsörjning till en vanlig DC -strömförsörjning !: 9 steg (med bilder)
Konvertera en ATX -strömförsörjning till en vanlig likström !: En likström kan vara svår att hitta och dyr. Med funktioner som är mer eller mindre träffade för vad du behöver. I denna instruktionsbok kommer jag att visa dig hur du konverterar en dators strömförsörjning till en vanlig DC -strömförsörjning med 12, 5 och 3,3 v
En annan strömförsörjning från bänkskivan från datorns strömförsörjning: 7 steg
En annan strömförsörjning från en bänkskiva från datorns strömförsörjning: Den här instruktionsboken visar hur jag byggde min nätaggregat från strömförsörjningsenheten i en gammal dator. Detta är ett mycket bra projekt att göra av flera skäl:- Det här är mycket användbart för alla som arbetar med elektronik. Det supp