Inhaltsverzeichnis:
- Schritt 1: Stromwandler
- Schritt 2: Signalkonditionierung
- Schritt 3: Stromversorgung
- Schritt 4: Analog-Digital-Wandler
- Schritt 5: Mikrocontroller
- Schritt 6: Montage
- Schritt 7: Code hochladen
- Schritt 8: Kalibrierung
- Schritt 9: Fertig
Video: AC-Stromüberwachungs-Datenlogger - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Hallo zusammen, willkommen zu meinem ersten instructable! Tagsüber bin ich Prüfingenieur für eine Firma, die Industrieheizgeräte liefert, nachts bin ich begeisterter Techniker und Heimwerker. Ein Teil meiner Arbeit besteht darin, die Leistung von Heizungen zu testen. Bei dieser Gelegenheit wollte ich die RMS-Stromaufnahme von 8 Geräten über 1000 Stunden überwachen und die Daten protokollieren, um die Ergebnisse später grafisch darzustellen. Ich habe Zugang zu einem Datenlogger, aber er war bereits für ein anderes Projekt bestimmt und ich brauchte etwas kostengünstiges, also beschloss ich, diesen einfachen Datenlogger zusammenzuschustern.
Das Projekt verwendet einen Arduino Uno, um analoge Sensoren über Analog-Digital-Wandler (ADC) auszulesen und zeichnet die Daten mit Zeitstempel auf einer SD-Karte auf. Der Entwurf der Schaltungen erfordert viel Theorie und Berechnung. Anstatt also alles zu erklären, zeige ich Ihnen nur, wie man es macht. Wenn Sie daran interessiert sind, den VOLLSTÄNDIGEN Hit zu sehen, lassen Sie es mich in den Kommentaren wissen und ich werde es weiter erklären.
HINWEIS:
Ich hatte viele Fragen zu True RMS-Berechnungen. Dieses Gerät verwendet einen Einweggleichrichter, um die Spitze der Welle zu erfassen, die dann mit 0,707 multipliziert werden kann, um RMS zu erhalten. Folglich liefert es nur bei linearen Lasten ein genaues Ergebnis (d. h. der gemessene Strom ist eine reine Sinuswelle). Nichtlineare Versorgungen oder Lasten, die dreieckige, rechteckige oder andere nicht sinusförmige Wellenformen liefern, führen nicht zu einer echten RMS-Berechnung. Dieses Gerät misst nur Wechselstrom. Es ist nicht für die Messung von Spannungen ausgelegt, daher berechnet oder misst es den Leistungsfaktor nicht. Bitte lesen Sie meine anderen Anweisungen, wie Sie ein Leistungsfaktormessgerät erstellen, das dazu verwendet werden kann. Viele Leute haben auch gesagt, dass eine gerade AC-Kopplung mit einer 2,5-V-Mittellinie besser ist, dies führt jedoch zu Komplikationen, da eine ausreichend schnelle digitale Abtastrate, robuste Mittelwertbildung/Datenglättung usw der Rohwert. Persönlich bevorzuge ich Hardwarelösungen und nach Möglichkeit einfacheren Code, daher interessiere ich mich nicht für diese Methode. In Bezug auf die Genauigkeit glaube ich, dass dies weitaus besser ist als das letztere, und Sie werden später in meinen Ergebnissen sehen, dass es nach der Kalibrierung einen Regressionskoeffizienten nahe 1,0 gibt.
Schritt 1: Stromwandler
Dieses Projekt verwendet den Stromwandler HMCT103C 5A / 5MA. Es hat ein Übersetzungsverhältnis von 1:1000, was bedeutet, dass pro 5A Strom, der durch den Leiter fließt, 5mA durch den Stromwandler fließen. An den beiden Anschlüssen des Stromwandlers muss ein Widerstand angeschlossen werden, damit eine Spannung daran gemessen werden kann. Bei dieser Gelegenheit habe ich einen 220-Ohm-Widerstand verwendet, daher beträgt der Ausgang des CT nach dem Ohmschen Gesetz V = IR 1,1 Volt AC für alle 5 mA CT-Strom (oder alle 5 A gemessenen Strom). Die CTs wurden mit dem Widerstand und einigen Instrumentenkabeln auf die Streifenplatine gelötet, um fliegende Leitungen herzustellen. Ich habe die Kabel mit 3,5-mm-Audio-Klinkensteckern abgeschlossen.
Hier ist das Datenblatt für den Stromwandler
Datenblatt
Schritt 2: Signalkonditionierung
Das Signal vom CT ist schwach und muss daher verstärkt werden. Dazu habe ich eine einfache Verstärkerschaltung mit einem uA741 Dual-Rail-Operationsverstärker zusammengelötet. In diesem Fall wird die Verstärkung daher mit der Formel Rf / Rin (150k / 1k) auf 150 gesetzt. Das Ausgangssignal des Verstärkers ist jedoch immer noch Wechselstrom, die Diode am Ausgang des Operationsverstärkers unterbricht die negative Halbwelle des Wechselstroms und leitet die positive Spannung an einen 0,1uF-Kondensator, um die Welle in ein gewelltes Gleichstromsignal zu glätten. Unten sind die Teile, aus denen die Schaltung besteht:
- V1 - Dies ist in diesem Diagramm willkürlich, es stellt einfach die Signalspannung dar, die in den nicht invertierenden Eingang des Operationsverstärkers eingespeist wird.
- R1 - Dies wird als Rückkopplungswiderstand (Rf) bezeichnet und ist auf 150 k. eingestellt
- R2 - Dies wird als Eingangswiderstand (Rin) bezeichnet und ist auf 1k. eingestellt
- 741 - Dies ist die integrierte Schaltung uA741
- VCC - Positive Versorgungsschiene +12V
- VEE - Negative Versorgungsschiene -12V
- D1 - Ist die Halbwellen-Gleichrichtersignaldiode 1N4001
- C3 - Dieser Kondensator hält das DC-Signal für eine eingestellte Zeit
In Bild 2 sehen Sie, dass es mit Veroboard und verzinntem Kupferdraht zusammengebaut wurde. 4 Löcher wurden für PCB-Stand-Offs gebohrt, damit sie gestapelt werden können (da es acht Kanäle gibt, müssen insgesamt acht Verstärkerschaltungen vorhanden sein.
Schritt 3: Stromversorgung
Wenn Sie es nicht von Grund auf neu bauen möchten, können Sie die Platine wie oben abgebildet aus China vormontiert kaufen, benötigen aber noch den 3VA-Transformator (240V auf 12V herunterschalten). Das abgebildete hat mich ungefähr 2,50 € gekostet
Um das Projekt mit Strom zu versorgen, beschloss ich, mein eigenes Dual-Rail-12VDC-Netzteil herzustellen. Dies war praktisch, da die Operationsverstärker +12V, 0V, -12V benötigen und der Arduino Uno jede Versorgung mit bis zu 14 VDC aufnehmen kann. Unten sind die Teile, aus denen die Schaltung besteht:
- V1 - Dies repräsentiert die Versorgung aus der Netzsteckdose 240V 50Hz
- T1 - Dies ist ein kleiner 3VA-Transformator, den ich herumliegen hatte. Es ist wichtig, dass der Transformator auf der Sekundärseite einen zentralen Abgriff hat, der mit 0 V, d. h. Masse, verbunden wird
- D1 bis D4 - Dies ist ein Vollwellen-Brückengleichrichter mit 1N4007-Dioden
- C1 & C2 - 35V Elektrolytkondensatoren 2200uF (muss 35V sein, da das Potenzial zwischen Plus und Minus 30V erreichen wird)
- U2 - LM7812, ist ein positiver 12-V-Spannungsregler
- U3 - LM7912, ist ein negativer 12-V-Spannungsregler (beachten Sie die Pin-Unterschiede zwischen dem 78xx- und 79xx-IC!)
- C3 & C4 - 100nF Glättungskondensatoren 25V Elektrolyt
- C5 & C6 - 10uF Keramikscheibenkondensatoren
Ich lötete die Komponenten auf Stripboard und verband die vertikalen Spuren mit bloßem einadrigen verzinnten Kupferdraht. Bild 3 oben zeigt mein DIY-Netzteil, leider sind viele Jumper auf dem Foto!
Schritt 4: Analog-Digital-Wandler
Der Arduino Uno hat bereits einen eingebauten 10-Bit-ADC, es gibt jedoch nur 6 analoge Eingänge. Daher habe ich mich für die Verwendung von zwei ADC-Breakouts beim ADS1115 16-Bit entschieden. Dadurch können 2^15 = 32767 Bits Spannungspegel von 0-4,096 V darstellen (4,096 V ist die Betriebsspannung des Breakouts), was bedeutet, dass jedes Bit 0,000125 V repräsentiert! Da es den I2C-Bus verwendet, können bis zu 4 ADCs adressiert werden, sodass auf Wunsch bis zu 16 Kanäle überwacht werden können.
Ich habe versucht, die Verbindungen mit Fritzing zu veranschaulichen, jedoch gibt es aufgrund der Einschränkungen keine benutzerdefinierten Teile, um einen Signalgenerator zu veranschaulichen. Der violette Draht ist mit dem Ausgang der Verstärkerschaltung verbunden, der schwarze Draht daneben zeigt, dass alle Verstärkerschaltungen eine gemeinsame Masse haben müssen. Also habe ich ein Steckbrett verwendet, um zu veranschaulichen, wie ich die Bindepunkte gemacht habe. Bei meinem tatsächlichen Projekt sitzen jedoch die Ausbrüche in Buchsenleisten, die an Veroboard gelötet sind, und alle Verbindungspunkte sind auf das Veroboard gelötet.
Schritt 5: Mikrocontroller
Wie oben erwähnt, war der Controller, den ich gewählt habe, ein Arduino Uno, dies war eine gute Wahl, da er eine Menge an Bord und eingebaute Funktionen hat, die sonst separat gebaut werden müssten. Außerdem ist es mit vielen speziell angefertigten 'Schilden' kompatibel. Bei dieser Gelegenheit benötigte ich eine Echtzeituhr, um alle Ergebnisse mit einem Zeitstempel zu versehen, und einen SD-Kartenschreiber, um die Ergebnisse in einer.csv- oder.txt-Datei aufzuzeichnen. Glücklicherweise hat das Arduino-Datenprotokollierungsschild beides in einem Schild, das ohne zusätzliches Löten auf das ursprüngliche Arduino-Board passt. Das Schild ist mit den RTClib- und SD-Kartenbibliotheken kompatibel, sodass kein spezieller Code erforderlich ist.
Schritt 6: Montage
Ich habe 5 mm steifes PVC mit mittlerer / niedriger Dichte (manchmal als Schaumstoffplatte bekannt) verwendet, um die meisten meiner Komponenten zu verschrauben und mit einem Cuttermesser auf eine geeignete Größe zu schneiden. Alle Komponenten wurden für den Prototypen modular aufgebaut, da man einzelne Teile entfernen kann, wenn etwas schief geht, jedoch nicht so effizient und aufgeräumt ist wie eine geätzte Platine (weitere Arbeit) Dies bedeutet auch eine Menge Jumper zwischen den Drähten die Komponenten.
Schritt 7: Code hochladen
Laden Sie den Code auf den Arduino hoch oder holen Sie sich den Code aus meinem Github-Repository
github.com/smooth-jamie/datalogger.git
Schritt 8: Kalibrierung
Theoretisch ergibt sich der gemessene Strom aus mehreren kombinierten Faktoren:
Gemessene Ampere = (((a *0.45)/150)/(1.1/5000))/1000 wobei 'a' die Signalspannung vom Verstärker ist
0,45 ist der Effektivwert von Vout der Verstärkerschaltung, 150 ist die Op-Amp-Verstärkung (Rf/Rin = 150k / 1k), 1,1 ist der volle Skalenspannungsausgang des CT, wenn der gemessene Ampere 5A beträgt, 5000 ist einfach 5A in mA, und 1000 ist die Anzahl der Windungen im Transformator. Dies kann vereinfacht werden zu:
Gemessene Ampere = (b * 9,216) / 5406555 wobei b der vom ADC gemeldete Wert ist
Diese Formel wurde mit dem Arduino 10-Bit-ADC getestet und ein Unterschied zwischen den Multimeterwerten und den von Arduino generierten Werten wurde von 11% beobachtet, was eine inakzeptable Abweichung ist. Meine bevorzugte Methode zur Kalibrierung besteht darin, den ADC-Wert gegenüber dem Strom auf einem Multimeter in einer Kalkulationstabelle aufzuzeichnen und ein Polynom dritter Ordnung darzustellen. Daraus kann die kubische Formel verwendet werden, um bessere Ergebnisse bei der Berechnung des gemessenen Stroms zu erhalten:
(ax^3) + (bx^2) + (cx^1) + d
Die Koeffizienten a, b, c und d werden in Excel aus einer einfachen Datentabelle berechnet, x ist Ihr ADC-Wert.
Um die Daten zu erhalten, habe ich einen keramischen 1k-variablen Widerstand (Rheostat) und einen 12-V-Transformator verwendet, um die Netzwechselspannung von 240 V zu senken, wodurch ich eine variable Stromquelle von 13 mA auf 100 mA erzeugen konnte. Je mehr Datenpunkte gesammelt werden, desto besser. Ich würde jedoch vorschlagen, 10 Datenpunkte zu sammeln, um einen genauen Trend zu erhalten. Die beigefügte Excel-Vorlage berechnet die Koeffizienten für Sie, Sie müssen sie dann nur noch in den Arduino-Code eingeben
In Zeile 69 des Codes sehen Sie, wo Sie die Koeffizienten eingeben müssen
float chn0 = ((7.30315 * pow(10, -13)) * pow(adc0, 3) + (-3.72889 * pow(10, -8) * pow(adc0, 2) + (0.003985811 * adc0) + (0.663064521)));
was der Formel in Blatt 1 der Excel-Datei entspricht:
y = 7E-13x3 - 4E-08x2 + 0,004x + 0,663
Wobei x = adc0 des Kanals, den Sie kalibrieren
Schritt 9: Fertig
Legen Sie es in ein Projektgehäuse. Ich beendete die Stromversorgung mit einem Kippschalter, um das Ganze an der Stromversorgung ein- / auszuschalten, und einem IEC "Abbildung 8"-Anschluss für den Netzeingang. Schrauben Sie alles zusammen und Sie können es ausprobieren.
Weitere Arbeit
Das ganze Projekt wurde ziemlich schnell nachgebaut, so dass es viel Raum für Verbesserungen gibt, geätzte Schaltungen, bessere Komponenten. Idealerweise würde das Ganze auf FR4 geätzt oder gelötet, anstatt auf jede Menge Jumper. Wie ich bereits sagte, gibt es viele Dinge, die ich nicht erwähnt habe, aber wenn es etwas Bestimmtes gibt, das Sie gerne wissen möchten, lassen Sie es mich in den Kommentaren wissen und ich werde das instrucable aktualisieren!
Update 18.12.2016
Ich habe jetzt ein 16x2-LCD mit dem I2C-"Rucksack" hinzugefügt, um die ersten vier Kanäle zu überwachen, und werde ein weiteres hinzufügen, um die letzten vier zu überwachen, wenn es durch die Post eintrifft.
Credits
Dieses Projekt wurde von allen Autoren der Bibliotheken ermöglicht, die in meiner Arduino-Skizze verwendet wurden, einschließlich der DS3231-Bibliothek, der Adafruit ADS1015-Bibliothek und der Arduino SD-Bibliothek