Inhaltsverzeichnis:

Frequenz- und Spannungsmessung der Stromversorgung mit Arduino - Gunook
Frequenz- und Spannungsmessung der Stromversorgung mit Arduino - Gunook

Video: Frequenz- und Spannungsmessung der Stromversorgung mit Arduino - Gunook

Video: Frequenz- und Spannungsmessung der Stromversorgung mit Arduino - Gunook
Video: #7 Genaue Spannungsmessung mit den Arduino oder 168 | Was ist der ARef Pin / Referenzspannungsquelle 2024, November
Anonim
Frequenz- und Spannungsmessung der Stromversorgung mit Arduino
Frequenz- und Spannungsmessung der Stromversorgung mit Arduino

Einführung:

Das Ziel dieses Projekts ist die Messung der Netzfrequenz und -spannung, die hier in Indien zwischen 220 und 240 Volt und 50 Hz liegt. Ich habe einen Arduino zum Erfassen von Signalen und Berechnen von Frequenz und Spannung verwendet. Sie können jeden anderen Mikrocontroller oder jede andere Platine verwenden, die Sie haben. Die Schaltung erfordert eine Handvoll Komponenten und ist für alle praktischen Zwecke ziemlich genau.

Schritt 1: Erforderliche Komponenten

  • Arduino Uno
  • IC LM358
  • Abwärtstransformator (220V bis 12V)
  • Kondensatoren:

    • 0.1uF
    • 2 x 1uF
  • Widerstände:

    • 3 x 1kOhm
    • 2 x 100kOhm
    • 1,5kOhm
    • 3.3kOhm
    • 6.8kOhm
  • 3 x 1N4148 Diode
  • Brotbrett und Überbrückungsdraht (optional)

Schritt 2: Schematische Darstellung

Schematische Darstellung
Schematische Darstellung
Schematische Darstellung
Schematische Darstellung

In obiger Schaltung ist die Primärwicklung des Transformators mit dem Versorgungsnetz und die Primärwicklung mit unserem Messkreis verbunden

Schritt 3: Verstehen der Schaltung

Die Schaltung verstehen
Die Schaltung verstehen
Die Schaltung verstehen
Die Schaltung verstehen
Die Schaltung verstehen
Die Schaltung verstehen

Je nach Funktionalität lässt sich diese Schaltung in vier Teile unterteilen:

A: Die Nulldurchgangsdetektorschaltung

Diese Schaltung erzeugt immer dann einen 5V Rechteckimpuls, wenn die Sinuswelle von positiv nach negativ geht. Der Widerstand R1 in Kombination mit D1 und D2 begrenzt den Eingangsspannungshub am Diodenübergang auf -0,6 V bis +5,6 V (unter der Annahme, dass die Durchlassspannung der Diode 0,6 V beträgt). Darüber hinaus können Sie den Eingangsspannungsbereich der Schaltung erhöhen, indem Sie den Wert von R1 erhöhen.

Die Widerstände R2 und R3 bilden einen Spannungsteiler, um den negativen Spannungshub auf -0,24 Volt zu begrenzen, da die Eingangsgleichtaktspannung des LM358 auf -0,3 Volt begrenzt ist.

Der Widerstand R4, R5, der Kondensator C1 und der Operationsverstärker (hier als Komparator verwendet) bilden die Schmitt-Trigger-Schaltung, bei der die Widerstände R4 und R5 die Hysterese am Eingang +49,5 mV über Masse einstellen. Der Ausgang des Schmitt-Triggers wird dem Arduino PIN2 zur weiteren Verarbeitung zugeführt.

B: Isolation und Spannungsabsenkung

Wie der Name schon sagt, isoliert dieser Teil die Spannung und senkt die Spannung auf ungefähr 12 Vrms ab. Die abgesenkte Spannung wird weiter der Instrumentierungsschaltung zugeführt.

C: Spitzenwertdetektorschaltung

Diese Schaltung bestimmt die maximale Spitzenspannung des Eingangssignals. Widerstandsteiler R6 und R7 reduzieren die Eingangsspannung um den Faktor 0,23 (12Vrms wird auf 2,76Vrms reduziert). Die Diode D3 leitet nur die positive Halbwelle des Signals. Die Spannung an C2 steigt bis zum Spitzenwert des gleichgerichteten Signals an, das dem analogen Arduino-Pin A0 zugeführt wird, um die Spannung weiter zu berechnen.

Darüber hinaus können Sie diese Schaltung durch eine Präzisionsspitzendetektorschaltung wie die hier erwähnten ersetzen. Aber für meine Demonstrationszwecke reicht die obige Schaltung aus.

D: Arduino

In diesem Teil erfasst der Arduino die von der Schmitt-Trigger-Schaltung erzeugten Rechteckimpulse und liest die analoge Spannung aus der Spitzendetektorschaltung. Die Daten werden weiter verarbeitet, um die Zeitperiode (daher die Frequenz) des Rechteckimpulses (der gleich der Wechselstromversorgungszeit Person ist) und die Spannung der Stromversorgung zu bestimmen.

Schritt 4: Berechnung von Frequenz und Spannung

Berechnung der Frequenz:

Mit Hilfe von Arduino können wir die Zeitdauer T des Signals messen. Die Rechteckimpulse vom Nulldurchgangsdetektor werden an Pin 2 gespeist, von dort können wir die Zeitdauer jedes Impulses messen. Wir können den internen Timer von Arduino (insbesondere Timer1) verwenden, um die Zeitdauer zwischen zwei steigenden Flanken des Rechteckimpulses mit Hilfe von Interrupts zu berechnen. Der Timer erhöht sich pro Taktzyklus um 1 (ohne Vorteiler = 1) und der Wert wird im Register TCNT1 gespeichert. Daher erhöht der 16-MHz-Takt den Zähler jede Mikrosekunde um 16. Ähnlich wird für Prescaler = 8 der Timer jede Mikrosekunde um 2 erhöht. Daher ist die Zeitspanne zwischen zwei steigenden Flanken

T = (TCNT1-Wert) / Zeit für jede Zählung

Wobei die für jede Zählung benötigte Zeit = Prescaler / (Arduino-Taktfrequenz (16 MHz)

Daher ist die Frequenz f = 1/T = (Arduino-Taktfrequenz (16MHz) / (Prescaler * TCNT!-Wert)

Daher ist die Timer-Geschwindigkeit (Hz) gegeben durch = (Arduino-Taktfrequenz (16MHz)) / Prescaler

und die Frequenz des Signals ist gegeben durch = (Arduino-Taktgeschwindigkeit

Entsprechend können wir die Frequenz f aus der Beziehung f = 1/T berechnen.

Berechnung der Spannung:

Der Onboard-ADC von Arduino hat eine Auflösung von 10 Bit (mögliche Werte = 2^10 = 1024) und gibt Werte im Bereich von 0-1023 zurück. Um die entsprechende analoge Spannung V zu berechnen, müssen wir die folgende Beziehung verwenden

V = (ADC-Messwert) * 5/1023

Um die Versorgungsspannung Vs (rms) zu berechnen, müssen wir das Transformatorverhältnis, den Widerstandsteiler R6R7 und die Spitzendetektorschaltung berücksichtigen. Wir können die verschiedenen Faktoren/Verhältnisse einfach zusammensetzen als:

Wandlerverhältnis = 12/230 = 0,052

Widerstandsteiler = R7/(R6 + R7) = 0,23

Bei Spitzenwertdetektorschaltung = 1,414

Vs(rms) = V/(1,414*0,052*0,23) = (ADC-Messwert) * 0,289

Es sollte beachtet werden, dass dieser Wert weit vom tatsächlichen Wert entfernt ist, hauptsächlich aufgrund eines Fehlers im tatsächlichen Übersetzungsverhältnis und des Durchlassspannungsabfalls der Diode. Eine Möglichkeit, dies zu umgehen, besteht darin, den Faktor nach dem Zusammenbau der Schaltung zu bestimmen. Das heißt, indem Sie die Versorgungsspannung und die Spannung am Kondensator C2 separat mit einem Multimeter messen und dann Vs (rms) wie folgt berechnen:

Vs (rms) = ((Versorgungsspannung * 5)/(Spannung über C2 * 1023)) * (ADC-Messwert)

in meinem Fall Vs (rms) = 0,33 * (ADC-Messwert)

Schritt 5: Arduino-Code

#define volt_in A0 // Analogspannungslesestift

flüchtig uint16_t t_period; uint16_t ADC_value = 0; Float Volt, Freq; Void isr () { t_period = TCNT1; // TCNT1-Wert in t_period speichern TCNT1 = 0; // Timer1 zurücksetzen ADC_value = analogRead (volt_in); // Analogspannung lesen aufrechtzuerhalten. Float get_freq () { uint16_t Timer = t_period; if(timer==0) 0 zurückgeben; // um eine Division durch Null zu vermeiden else return 16000000.0/(8UL*timer); // Frequenz wird durch f = clk_freq/(Prescaler * timeperiod)} Void setup () { TCCR1A = 0; TCCR1B = Bit(CS11); // Prescaler auf 8 setzen TCNT1 = 0; // Timer1-Wert zurücksetzen TIMSK1 = Bit (TOIE1); // Timer1-Überlauf-Interrupt aktivieren EIFR |= bit(INTF0); // INT0-Interrupt-Flag löschen Serial.begin (9600); aufrechtzuerhalten. Void Schleife () { AttachInterrupt (0, isr, RISING); // Externen Interrupt aktivieren (INT0) Verzögerung (1000); detachInterrupt(0); freq = get_freq(); Volt = ADC_Wert*0,33; String-Buf; buf += String(Freq, 3); buf += F("Hz\t"); buf += String (Volt); buf += F("Volt"); Serial.println (buf); }

Schritt 6: Fazit

Abschluss
Abschluss
Abschluss
Abschluss

Sie können die Schaltung in einem Steckbrett zusammenbauen und den Code optimieren und eine SD-Karte hinzufügen, um die Daten zu speichern, die später analysiert werden können. Ein Beispiel hierfür ist die Analyse von Spannung und Frequenz zu Spitzenzeiten.

Die Schaltung, die ich im Steckbrett zusammengebaut habe, verwendet LM324 (Quad-Opamp) anstelle von LM358 (Dual-Opamp), da ich diesen IC zu diesem Zeitpunkt nicht hatte und die landesweite Sperrung aufgrund der COVID-19-Pandemie es mir schwer machte, einen neuen IC zu bekommen. Trotzdem würde es die Funktion der Schaltung nicht beeinträchtigen.

Fühlen Sie sich frei, unten für Anregungen und Fragen zu kommentieren.

Empfohlen: