Inhaltsverzeichnis:
- Schritt 1: Erforderliche Komponenten
- Schritt 2: Schematische Darstellung
- Schritt 3: Verstehen der Schaltung
- Schritt 4: Berechnung von Frequenz und Spannung
- Schritt 5: Arduino-Code
- Schritt 6: Fazit
Video: Frequenz- und Spannungsmessung der Stromversorgung mit Arduino - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
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
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
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
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:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
So passen Sie die CPU-Frequenz in Windows 10 an – wikiHow
So passen Sie die CPU-Frequenz in Windows 10 an: Dies zeigt, wie Sie die CPU-Frequenz anpassen und die volle Geschwindigkeit Ihrer CPU auf Ihrem Windows 10-Computer verlangsamen/begrenzen oder entsperren
So erstellen Sie einen Smart Pot mit NodeMCU, der von der App gesteuert wird – wikiHow
So erstellen Sie einen Smart Pot mit NodeMCU, der von einer App gesteuert wird: In dieser Anleitung bauen wir einen Smart Pot, der von einem ESP32 und einer Anwendung für Smartphones (iOS und Android) gesteuert wird. Wir verwenden NodeMCU (ESP32) für die Konnektivität und die Blynk-Bibliothek für das Cloud-IoT und die Anwendung auf dem Smartphone. Endlich haben wir
RockBand Hub für PC-Nutzung nachrüsten (ohne externe Stromversorgung): 4 Schritte
RockBand Hub für PC-Nutzung nachrüsten (ohne externe Stromversorgung): Okay, auf der Suche nach einem preiswerten USB-Gamepad bin ich in einen GameStop gewandert Hub mit Netzteil für 2 Dollar. Nun, das gibt mir tatsächlich zwei