Inhaltsverzeichnis:

AC-Leistungsfaktor mit Arduino messen - Gunook
AC-Leistungsfaktor mit Arduino messen - Gunook

Video: AC-Leistungsfaktor mit Arduino messen - Gunook

Video: AC-Leistungsfaktor mit Arduino messen - Gunook
Video: Arduino Current Power Sensor - Strom und Leistung im Wechselstromkreis induktiv messen 2024, November
Anonim
So messen Sie den AC-Leistungsfaktor mit Arduino
So messen Sie den AC-Leistungsfaktor mit Arduino
So messen Sie den AC-Leistungsfaktor mit Arduino
So messen Sie den AC-Leistungsfaktor mit Arduino

Hallo allerseits! Dies ist mein drittes anweisbares, hoffe, Sie finden es informativ:-) Dies wird ein anweisbares sein, wie man eine grundlegende Leistungsfaktormessung mit einem Arduino durchführt. Bevor wir beginnen, gibt es ein paar Dinge zu beachten:

  1. Dies funktioniert NUR mit LINEAR Lasten (z. B. induktive Motoren, Transformatoren, Magnetspulen)
  2. Dies funktioniert NICHT mit NICHT-LINEAR (z. B. CFL-Lampen, Schaltnetzteile, LEDs)
  3. Ich bin Elektroingenieur und sehr kompetent im Umgang mit Netzpotential (z. B. 230V)

Warnung! Wenn Sie nicht geschult sind oder nicht wissen, wie man mit Netzspannung richtig arbeitet, schlage ich vor, dass Sie mit diesem Teil des instructable nicht fortfahren, und ich werde Ihnen eine sichere Methode zeigen, um zu beweisen, dass die Schaltung funktioniert.

Dies ist eine Hardwarelösung für das Problem der Messung des PF bei linearen Lasten. Dies kann auch rein durch Code erfolgen, einschließlich der Möglichkeit, nichtlineare Lasten zu messen, die ich in einem anderen anweisbaren abdecken werde.

Für Anfänger, die dies lesen, ist der Leistungsfaktor das Verhältnis von Wirkleistung zu Scheinleistung und kann berechnet werden, indem der Kosinus des Phasenwinkels zwischen Versorgungsspannung und Strom ermittelt wird (siehe angehängtes Bild von Google). Dies ist bei AC-Anwendungen von Bedeutung, da die "Scheinleistung" (Volt-Ampere) einfach aus Spannung multipliziert mit Strom berechnet werden kann. Um jedoch die Wirkleistung oder "wahre Leistung" (Watt) zu erhalten, muss die Scheinleistung mit dem Leistungsfaktor multipliziert werden, um eine echte Messung der Leistung in Watt durchzuführen. Dies gilt nur für Lasten, die einen signifikanten induktiven oder kapaktiven Anteil haben (zB ein Motor). Rein ohmsche Lasten wie Elektroheizungen oder Glühbirnen haben einen Leistungsfaktor von 1,0 (Eins) und daher sind Wirkleistung und Scheinleistung gleich.

Schritt 1: Schaltungsdesign

Schaltungsdesign
Schaltungsdesign
Schaltungsdesign
Schaltungsdesign
Schaltungsdesign
Schaltungsdesign
Schaltungsdesign
Schaltungsdesign

Der Leistungsfaktor kann mit einem Oszilloskop berechnet werden, indem die Zeitdifferenz zwischen dem Spannungs- und Stromsignal gemessen wird. Diese können an jedem Punkt der Welle gemessen werden, solange sie an derselben Stelle abgetastet werden. In diesem Fall war es logisch, zwischen Nulldurchgangspunkten (Punkten in der Welle, an denen die Spannung die X-Achse kreuzte) zu messen.

Ich habe die folgende Schaltung in Multisim entworfen. Unter der Annahme, dass Strom und Spannung an der Last reine Sinuswellenformen sind, kann der Leistungsfaktor gemessen werden. Jede Wellenform wird in einen Nulldurchgangsdetektor (manchmal als Sinus-Rechteck-Wandler bekannt) eingespeist, der einfach ein 741-Operationsverstärker im Komparatormodus ist, bei dem die Vergleichsspannung 0 V beträgt. Wenn sich die Sinuswelle im negativen Zyklus befindet, wird ein negativer Gleichstromimpuls erzeugt, und wenn die Sinuswelle positiv ist, wird ein positiver Gleichstromimpuls erzeugt. Die beiden Rechteckwellen werden dann unter Verwendung eines Exklusiv-ODER-(XOR)-Logikgatters verglichen, das nur dann einen positiven hohen DC-Impuls ausgibt, wenn sich die Rechteckwellen nicht überlappen, und 0 V, wenn sie sich überlappen. Die Ausgabe des XOR-Gatters ist daher die Zeitdifferenz (Delta t) zwischen den beiden Wellen ab dem Punkt, an dem sie den Nullpunkt überschreiten. Dieses Differenzsignal kann dann von einem Mikrocontroller zeitgesteuert und mit der folgenden Berechnung in den Leistungsfaktor umgewandelt werden (stellen Sie sicher, dass Ihr wissenschaftlicher Taschenrechner in Grad und nicht im Bogenmaß angegeben ist):

cos(phi) = f * dt * 360

Woher:

cos(phi) - der Leistungsfaktor

f - Die Frequenz der gemessenen Versorgung

dt - Delta t oder Zeitdifferenz zwischen den Wellen

360 - eine Konstante, die verwendet wird, um eine Antwort in Grad zu geben

In den Bildern sehen Sie drei simulierte Oszilloskopspuren für die Schaltung. Die beiden Eingangssignale repräsentieren den Strom und die Spannung zur Last. Ich habe dem zweiten Signal eine Phasendifferenz von 18 Grad gegeben, um die Theorie zu demonstrieren. Dies ergibt einen PF von ca. 0,95.

Schritt 2: Prototyping & Testing

Prototyping & Testen
Prototyping & Testen
Prototyping & Testen
Prototyping & Testen
Prototyping & Testen
Prototyping & Testen

Für meinen Prototypenbau habe ich das Schaltungsdesign auf ein lötfreies Steckbrett gelegt. Aus dem UA741CN-Datenblatt und dem CD4070CN-Datenblatt werden beide ICs mit einer 12-15-V-DC-Versorgung betrieben, so dass ich mit zwei Batterien versorgte, um eine Dual-Rail +12V, 0V, -12V Volt-Stromversorgung herzustellen.

Simulation einer Last

Sie können eine Last simulieren, indem Sie einen zweikanaligen Signalgenerator oder Funktionsgenerator verwenden. Ich habe diese billige und fröhliche chinesische Box verwendet, um zwei 50-Hz-Sinuswellen mit einem Abstand von 18 Grad zu erzeugen, und die Signale in die Schaltung eingespeist. Sie können die resultierenden Wellenformen auf einem Oszilloskop sehen. In den obigen Bildern sehen Sie die beiden überlappenden Rechteckwellen (Ausgang von jedem Operationsverstärker), und die anderen drei Bilder veranschaulichen den Ausgang des XOR-Gatters. Beachten Sie, wie die Breite des Ausgangsimpulses mit abnehmendem Phasenwinkel kürzer wird. Die obigen Beispiele zeigen 90, 40, 0 Grad.

Schritt 3: Arduino-Code

Wie oben erwähnt, ist die Ausgabe der Messschaltung die Zeitdifferenz zwischen den beiden Eingangssignalen (d. h. dem Strom- und dem Spannungssignal). Der Arduino-Code verwendet "pulseIn", um die Länge des Ausgangsimpulses der Messschaltung in Nanosekunden zu messen und verwendet sie in der oben genannten PF-Formel.

Der Code beginnt mit der Definition von Konstanten, hauptsächlich um den Code besser organisiert und lesbarer zu machen. Am wichtigsten ist, dass C-Code (Arduino-Code) im Bogenmaß und nicht in Grad arbeitet, daher ist eine Konvertierung von Bogenmaß in Grad erforderlich, um später Winkel und PF zu berechnen. Ein Radiant ist ca. 57,29577951 Grad. Die Zahl 360 wird ebenfalls gespeichert und der Multiplikationsfaktor 1x10^-6 zur Umrechnung von Nanosekunden in reine Sekunden. Die Frequenz wird auch am Anfang definiert. Wenn Sie etwas anderes als 50 Hz verwenden, stellen Sie sicher, dass dies zu Beginn des Codes aktualisiert wird.

Innerhalb von "void loop ()" habe ich dem Arduino gesagt, dass er den Winkel basierend auf der zuvor erwähnten PF-Formel berechnen soll. Bei meiner ersten Iteration dieses Codes würde der Code den richtigen Winkel und Leistungsfaktor zurückgeben, jedoch wird zwischen jedem korrekten Ergebnis auch ein falscher niedriger Wert in der seriellen Konsole zurückgegeben. Mir ist aufgefallen, dass dies entweder jeder zweite Messwert oder alle vier Messungen war. Ich habe eine "if"-Anweisung in eine "for" -Schleife eingefügt, um den Maximalwert von jeweils vier aufeinanderfolgenden Messwerten zu speichern. Dies geschieht, indem die Berechnung mit "angle_max" verglichen wird, die anfänglich Null ist, und wenn sie größer ist, wird der neue Wert in "angle_max" gespeichert. Dies wird für die PF-Messung wiederholt. Wenn Sie dies in einer "for"-Schleife tun, bedeutet dies, dass der richtige Winkel und pf immer zurückgegeben werden, aber wenn sich der gemessene Winkel ändert (höher oder niedriger), wenn "for" endet, wird "angle_max" für den nächsten Test auf Null zurückgesetzt, wenn " void loop()" wiederholt. Auf der Arduino-Website (https://www.arduino.cc/en/Tutorial/Calibration) gibt es ein sehr gutes Beispiel dafür, wie das funktioniert. Die zweite "if"-Formel verhindert einfach, dass bei einer fehlerhaften High-Messung beim Ausschalten des Prüflings ein Wert größer als 360 zurückgegeben wird.

Schritt 4: Der Säuretest

Der Säuretest!
Der Säuretest!
Der Säuretest!
Der Säuretest!
Der Säuretest!
Der Säuretest!

Versuchen Sie Folgendes nicht, es sei denn, Sie wissen, wie man sicher mit Wechselspannung arbeitet. Wenn Sie Zweifel an Ihrer Sicherheit haben, versuchen Sie, die Eingangssignale mit einem Zweikanal-Wellenformgenerator zu simulieren.

Auf Wunsch eines Followers habe ich auf Fritzing ein Steckbrett-Layout erstellt, um eine bessere Vorstellung von der Schaltung und der Abtast- / Erfassungsschaltung zu erhalten (ich habe die.fzz-Datei und ein.png-Diagramm angehängt). Der Motor oben stellt den verwendeten Tischlüfter dar, und die Induktionsspule stellt den Stromwandler dar, den ich um den Live-Leiter gewickelt habe. Ich habe die 741 ICs mit zwei 12-V-Batterien versorgt, die so angeordnet sind, dass sie +12 VDC, 0 VDC (Masse) und -12 VDC liefern. Der CD4070 kann auch direkt über die 5-V-Stromschiene des Arduino mit Strom versorgt werden.

Um zu beweisen, dass das Konzept in der Realität funktioniert, wurde die Schaltung auf einem lötfreien Steckbrett aufgebaut. Auf den Bildern sehen Sie die Schaltungsanordnung. Ich habe einen Tischlüfter als meine induktive Last verwendet, um das Konzept zu testen. Zwischen dem 230V-Netz und der Last befindet sich meine Sensorik. Ich habe einen Abwärtstransformator, der 230 V direkt in 5 V umwandelt, damit die Spannungswellenform abgetastet werden kann. Ein nicht-invasiver Stromwandler, der um den stromführenden Leiter geklemmt wurde, wurde verwendet, um die Stromwellenform abzutasten (rechts vom aluminiumbeschichteten Widerstand). Beachten Sie, dass Sie nicht unbedingt die Amplitude des Stroms oder der Spannung kennen müssen, sondern nur die Wellenform für den Operationsverstärker, um den Nulldurchgang zu identifizieren. Die obigen Bilder zeigen die tatsächlichen Strom- und Spannungswellenformen des Lüfters und der seriellen Arduino-Konsole, die einen PF von 0,41 und einen Winkel von 65 Grad meldet.

Dieses Arbeitsprinzip kann in einen selbstgebauten Energiemonitor integriert werden, um echte Leistungsmessungen durchzuführen. Wenn Sie kompetent sind, können Sie versuchen, verschiedene induktive und ohmsche Lasten zu überwachen und ihren Leistungsfaktor zu bestimmen. Und da ist es! eine sehr einfache Methode zur Messung des Leistungsfaktors.

Empfohlen: