Peter Hofbauer’s private Homepage
Selbstbauprojekte eigene Entwicklungen

3-Phasen-Wattmeter fürs Haus

Home

Wozu soll das gut sein?

Die letzte Stromrechnung war etwas höher wie  im Vorjahr. Den Stromverbrauch will ich ab jetzt mal besser überwachen. Die großen Verbraucher wie Waschmaschine, E-Herd usw kann ich nicht beeinflussen, die müssen sein. Aber die vielen kleinen Verbraucher, die zum Teil 24h aktiv sind und solche die ich vergessen habe aus zu schalten, sollen jetzt sichtbar sein. Dazu ist eine Auflösung der Anzeige von 1W nötig. Sonst kann man die kleinen Verbraucher nicht erkennen.

Meine Überlegungen

Die Messung der Leistungsaufnahme ist nur bei DC einfach. Bei AC ist es nicht so einfach. Die Effektivwerte von Strom und Spannung reichen nicht zur Berechnung. Die Phasenlage und die Kurvenform sind noch zu berücksichtigen. Um das genau zu erfassen müsste man in möglichst kurzen Zeitabständen gleichzeitig die augenblicklichen Werte von Strom und Spannung messen, multiplizieren und aufaddieren. Die unbedingt nötige Potentialtrennung vom Netz ist für den Strom einfach mit 3 Stromtrafos erledigt. Für die Spannung sind 3 kleine Netztrafos (mit Korrekturen der Phasenlage) nötig. Ohne Spannungsmessung geht es auch. Die Spannung kann man als konstant annehmen und die Werte in einer Tabelle in der Software hinterlegen. Das erfordert aber eine exakte Synchronisation der Berechnung mit der Netzfrequenz. Das ist mir alles zu aufwändig, es muss auch asynchron gehen! Die Netzspannung soll nur für das kleine Netzteil für die Betriebsspannungen zur Platine gehen.  
Ich könnte den Strom mit Eff/DC-Wandlern in Gleichspannung wandeln und dann messen. Diese ICs (z.B. AD736) sind mir aber zu teuer. Ich habe mir zur Bedingung gemacht nur bereits vorhandene Teil zu verwenden und die AD736 habe ich nicht. Ich messe den Strom ohne Wandlung nach DC sondern direkt die Halbwellen. Aus den gemessenen Stromwerten wird der arithmetische Mittelwert berechnet. Das funktioniert auch ohne Synchronisation mit der Netzfrequenz. Zuerst habe ich nur den Spitzenwert erfasst und damit die Leistung berechnet. Das hat aber nur mit Labormitteln gut funktioniert. In der Praxis war das Ergebnis eine Katastrophe. Starke Schwankungen und meist falsche Werte. Der Strom war nicht sauber sinusförmig sondern mit haufenweise Spitzen verseucht. Der arithmetische Mittelwert war die Lösung, stabile Anzeigen und ausreichend genau.   

Die Stromtrafos

Stromtrafos verwendet man um hohe Ströme in Leitungen zu messen ohne diese auftrennen zu müssen. Er besteht aus einen Ringkern mit beispielsweise wie hier verwendet 80 Windungen. Der durch das Loch im Zentrum fließende Strom erzeugt in der Wicklung einen um den Faktor der Windungen (hier 80) kleineren Strom. Allerdings nur wenn die Wicklung kurzgeschlossen ist. Der von mir verwendete Stromtrafo ist eigentlich stark überdimensioniert. Er kann einen Strom bis 400A auf 5A transformieren bis zu einer Leistung von 5VA. Bei meiner Schaltung belaste ich den Stromtrafo mit 0,5 Ohm. Für jede Phase ist einer nötig. Ich messe den Strom von 8 Stromkreisen. Dazu müssen immer nur die Leitungen von den Sicherungen durch einen Stromtrafo geführt werden. Das sind hier zwei mal 3 Leitungen und einmal nur 2. Wichtig ist das die Leitungen nur einer Phase zugehören dürfen. Verschiedene Phasen in einen Stromtrafo geht nicht. Die Leitungen von den Stromtrafos zur Messplatine müssen getrennt verlegt werden. Ein gemeinsamer Rückleiter zur Platine aller 3 Trafos darf nicht verwendet werden, er verfälscht die Messung. Obwohl die auf der Platine verbunden sind. Die 3 Stromtrafos sind in der Zählertafel im Keller montiert, die Anzeige ist oben im Büro.

Der Schaltplan

 Verwendet wird der 16-bit Prozessor dsPIC33FJ16MC102. Den hatte ich noch vorrätig, weil mal aus versehen bestellt, und musste mal weg. Der wird mit 3,3V betrieben, hat einige 5V-tolerante Ausgänge, die ich fürs LCD benötige. Leider benötigt man für diese kleine Anwendung 4 Betriebsspannungen: +3,3V, +5V, +12V und -12V. Eigentlich war ein vorhandenes altes LCD-Modul ohne Beleuchtung geplant. Das war leider defekt und so musste ein anderes Modul mit Beleuchtung bestellt werden. Den Strom für die Beleuchtung habe ich mit R40 = 100R auf 10mA herunter gesetzt weil der Trafo zu klein ist. Eine sehr einfache RS232-Schnittstelle nur mit einen Optokoppler U14 = SFH611 sendet alle 600ms ungefragt einen String mit allen vier Watt-Werten mit folgenden Format: UUUU,1234,1234,1234,12345<CR> Baudrate = 9600, ohne Parität, 2 Stopbits. Die Us sind nur zum Messen der Baudrate wegen der Bitfolge 01010101 davor gesetzt. Ein Empfang von Daten ist nicht vorgesehen. Die Schnittstelle verwendet nicht den integrierten UART sondern wird zu Fuß an einen normalen Port ausgegeben. Die Stromtrafos werden mit einen Shunt von 0,5 Ohm belastet. Die daran abfallende Spannung muss für den Prozessor verstärkt und auf Werte von 0 bis knapp unter 3,3V begrenzt werden. Der Prozessor misst positive Halbwellen in 1-Grad-Abständen, also etwa alle 55us. Das wird mit 3 identischen Schaltungen für die drei Phasen quasi gleichzeitig erledigt. Die 3 Schaltungen sind identisch, beschrieben wird die untere. Am Shunt (R3,R6,R9) fallen pro 1W Leistung (= 4,35mAeff) eine Spitzenspannung von 3,83mVp ab. Verstärkt wird das mit U3 = OP07. Wegen der geringen Spannung am Eingang ist ein OP mit niedriger Drift nötig. Am Ausgang des U3 darf nur eine Wechselspannung ohne Gleichspannungsanteil auftreten, deshalb ein Nullabgleich mit RV3. Die Verstärkung wird mit U6 = H11F1 umgeschaltet um den geforderten Messumfang zu bewältigen. Wenn der Q3 stromlos ist beträgt die Verstärkung bis zum Ausgang U3.6 = 390fach. Wenn der Q3 den U6 aktiviert beträgt die Verstärkung 39. Der Transistor Q6 begrenzt die Spannung auf 3,9V um den ADW im Prozessor nicht zu übersteuern. Der Spannungsteiler, bestehend aus R33 und R36 setzt die Spannung auf etwas unter 3,3V herunter. Der U8A = LM358 killt über Diode D3 den negativen Teil der Wechselspannung. Die Spannung an dieser Stelle ist also sicher nur die positive Halbwelle ohne negativen Anteil und geht nie über den Referenzwert von 3,3V des Prozessors. Die Messbereiche des Wattmeters gehen von 0 bis 318W und nach Umschaltung durch den Prozessor von 10 bis 3180W. Darüber werden die Werte begrenzt, also oben gekappt, und deren Wattwerte können nicht mehr stimmen. Die Anzeige geht noch bis 9000W wird aber über 3180W zu klein angezeigt. Das ist bei meiner geplanten Anwendung ohne Bedeutung, so hoch wird es in der Praxis nie.

Die Software

Das Wattmeter hat keine Bedienelemente. Die Software für den Prozessor ist deshalb sehr einfach. Alle 3 Phasen werden nacheinander gemessen. Dieser Zyklus dauert 54us und wird permanent wiederholt. Nach 600ms wird der Vorgang beendet. Bis dahin wurden über 11000 Messungen für jede Phase erledigt. Das Ergebnis sind 3 Daten: 1.) der maximale Messwert, wenn der im niedrigsten Messbereich 960 überschreitet, schaltet der Prozessor auf den höheren Bereich um. Liegt der Messwert im oberen Bereich unter 96 wird auf den unteren geschaltet. Damit wird ein Übersteuern des ADW verhindert. 2.) alle Messwerte sind in 32bit aufaddiert, wird für die Berechnung des arithmetischen Mittelwertes benötigt. 3.) ein Zähler der Messzyklen, ist der Divisor für den Mittelwert. Dann werden die Messwerte nach ASCII konvertiert und zur LCD-Routine  übergeben. Wenn die fertig ist werden die Daten über die Schnittstelle ausgegeben. Wenn die Schnittstelle fertig ist, wiederholt sich der komplette Ablauf. Sourcecode-Dateien: 12 Sprache: Assembler Durchlaufzeit: 4,7us über alles

Nachbau

Wie alle meine Berichte ist auch dieser keine reine Bauanleitung. Hier mal ein paar Tipps. Die Bauteile sind beschaffbar, nur der H11F1 wird selten angeboten. Im Netz gibt es aber trotzdem einige Angebote. Damit die Anzeige stimmt, muss der selbe Strom wie in diesen Beispiel durch den 0,5Ohm-Shunt fließen. Abweichungen kann man mit anderen Shunt-Widerständen korregieren. Der Abgleich kann mit AC oder einfach mit einen Labornetzteil mit DC erfolgen.   1.) Zuerst muss mit RV1(2,3) der Nullabgleich (0,000V am Ausgang der OPs) ohne Eingangssignal erfolgen. 2.) Mit 163 mA AC oder 73 mA DC am Eingang auf eine Anzeige = 3000W mit RV4(5,6) einstellen 3.) Mit 16,3 mAeff  AC oder 7,3 mA DC am Eingang auf eine Anzeige = 300W mit RV7(8,9) einstellen Der Text im Display kann nur in der Software geändert werden. Ich stelle deshalb den Sourcecode im Download bereit. Wer sich mit den PICs nicht auskennt: ich habe in meiner “kleinen Homepage” etwas drüber geschrieben. Ich verwende zum Debuggen und Programmieren einen PICkit3 mit der MPLAB IDE v8.91. Die neue mit X ist mir zu umständlich bedienbar.

Downloads:

Schaltplan und Layout wurden mit KiCAD V5 gezeichnet (160kB). Korregierte Version: Die Software Hex und Sourcecode (31kB)
SAP9000 Home nach oben Impressum Letzte Änderung: 01. Februar 2021 Copyright: frei!

Februar 2021 Erweiterung: 50Hz-Messung

Einen direkten Nutzen hat die Messung der Netzfrequenz nicht. Ich will nur mal aus Interesse die Änderungen beobachten. Die Daten werden nicht gespeichert, ich könnte das nur mit einer Software auf einen PC über die RS232 machen. Wird auf später verschoben. Der RS232-String ist mit den 50Hz-Wert verlängert:   UUUU,1234,1234,1234,12345,+1234<CR>   Der interne Oszillator der CPU ist für dieses Vorhaben nicht genau genug, deshalb wird ein 8MHz-Quarz verwendet. Der ist im Layout nicht vorgesehen und wurde direkt an den CPU-Pins 9 und 10 angelötet. Auf welcher Frequenz der Quarz schwingt ist nicht garantiert. Ich habe die Frequenz mit einen genauen Frequenzzähler gemessen: f = 8,00205MHz! Das wird in der Software berücksichtigt. Die Anzeige soll eine Auflösung von 1 mHz haben und entsprechend genau sein.

Die Schaltung

Die originale Platine wird nicht geändert. Die Schaltung ist auf einer kleine Platine getrennt untergebracht. Die Verbindung zur CPU- Platine erfolgt über 5 Leitungen: P1 ist der AC-Eingang, kommt an Pin 5 des Netztrafos (15VAC) P2 ist der Ausgang, kommt an Pin14 (RB5) der CPU. P3 kommt an +3,3V P4 kommt an GND P5 kommt an +12V Und die Schaltung mit den 8MHz-Quarz muss direkt an den Pins 9 und 10 der CPU gelötet werden. Die 15VAC werden über ein RC-Filter gereinigt und am Komparator U1 mit etwa 0,4V verglichen. Diese 0,4V sollen ungewolltes kippen bei kleinen Störspannungen am Nulldurchgang verhindern.

Die Software

Die Messung der Zeiten erfolgt mit einen 32bit-Timer. Gezählt wird der CPU-Takt (16MHz) 100 Perioden lang, also 2 Sekunden. Der Eingangspin an der CPU ist als INT1-Eingang initiiert. Hier werden die einhundert 50Hz-Perioden gezählt. Dann wird der Inhalt des 32bit-Timers an die Berechnung der Abweichung von 50Hz übergeben. Zuerst wird der Wert für exakt 50Hz abgezogen, das Ergebnis durch 320 geteilt und man hat die Abweichung in 1 mHz mit Vorzeichen zwecks Anzeige. Wenn das Ergebnis negativ ist, war die Netzfrequenz über 50Hz usw. Falls das einer nachbauen will: Für ein genaues Ergebnis ist die genaue Frequenz des Quarze nötig. Bei genau 8MHz beträgt der Inhalt des Timers 32000000. Bei mein Exemplar sind es 32008200. Dieser Wert ist in der Software eingetragen, auf zwei 16bit-Register W4,W5 in der Datei “Monitor.s”, Zeile 150 ,falls jemand das ändern möchte.

Downloads

Die hex-Datei und der komplette Sourcecode (32kB) Die KiCAD-Dateien (147kB)

Das Ergebnis

Wie genau die Messung ist, kann ich nicht genau überprüfen. Die Software kann eigentlich keine Ungenauigkeit verursachen. Die Perioden werden im Interrupt mit höchster Priorität gezählt. Die Schaltung mit den Komparator könnte eine Ursache sein. Die Netzfrequenz genau zu erfassen ist etwas schwieriger als es scheint. Vormittags schwankt die Anzeige maximal um +/-50mHz. Später ist ein Trend zu negativen Werten erkennbar. Nachts sind positive Werte bis +80mHz sichtbar. Es scheint als ob die Kraftwerke die höhere Last am Tag nachts wieder aufholen. Die Frequenzanzeige ist in der untersten Zeile links, rechts ist wie vorher die Summe der drei Lasten zu sehen.
SAP9050