Hallo,
ich möchte hier kurz mein ("fertiges") Projekt vorstellen. Vielleicht kann der Ein oder Andere es nutzen.

Kurz gesagt möchte ich den Strom von Verbrauchern(bis 30A) im Haus messen und an einen PC senden.
Wichtig ist mir ein übersichtlicher und günstiger Aufbau(ca 5 Euro/Messung).
Der grobe Aufbau besteht aus einem Stromwandler(wird über das zu messende Kabel gesteckt und kann bis 30A messen), einem AD-Wandler und einem Arduino der über USB/virtueller Comport die Messergebnisse an den PC sendet.

Wer Interesse hat, kann nun die ausfühliche Beschreibung lesen:

Ich war auf der Suche, nach einer Wechselstrommessung, welche ich einfach an meine zukünftige Hausautomatisierung anschließen kann. Hintergrund der Messung ist es einen groben Überblick über die Stromaufteilung(großer Messbereich) im Haus zu haben und ein bisschen Komfort, wenn die Waschmaschine im Keller unter einen bestimmten Stromwert(kleiner Messbereich) geht, ist sie wohl fertig…

Hier meine Kriterien:
-günstige Hardware
-großer Messbereich
-hohe Genauigkeit
-wenig Hardware
-Arduino als Datensammler „vorerst“ für 10 Sensoren
-einfache Schnittstelle zur Hausautomatisierung(PC)
-mindestens einen umgerechneten Messwert pro Sekunde und pro Wandler(10 Sensoren=10 errechnete Werte / Sekunde)

Stromsensor:
Bei der Auswahl der Stromsensoren bin ich immer wieder bei Stromtrafos gelandet, da diese unschlagbar günstig und relativ genau sind. Ich verwende einen ZMCT118F mit einem Messbereich von 30A. 30A AC im Eingang entsprechen 30mA AC am Ausgang.
Um die Linearität und Genauigkeit zu testen, habe ich Halogenlampen (50-3000W) an einen Stelltrafo angeschlossen. Den Strom habe ich zum Vergleich mit einem „METRAHIT X-tra“ (kalibriert) gemessen.

Wandlung des Stromwandlers:
Begeistert von der Messgenauigkeit, habe ich mich an die AD Wandlung des Sensors gemacht. Da der auf dem Arduino verbaute AT-Mega „nur“ eine 10Bit Auflösung hat, habe ich nach externen AD-Wandlern gesucht. Auch hier ist es nicht ganz leicht günstige und vor allem schnelle Wandler zu finden. Schnell aus folgendem Grund: Die Sinusperiode hat bei 50Hz = 20mS. Damit ich bei Phasen an-/abschnitt noch sinnvoll messen kann, peile ich ca 400 Messungen / 20mS an. Das ergibt ca 20000 Messungen pro Sekunde.
An dieser Stelle vielen Dank an Bernhard, der mich noch rechtzeitig darauf aufmerksam gemacht hat, dass der Wandler, den ich zuerst im Auge hatte, nur 860 Messungen/Sek. schafft.
Ich habe mich für den AD Wandler MCP 3301 entschieden. Dieser hat eine 13Bit Auflösung bei einer Abtastrate von 100ksps und wird über SPI an den Arduino angeschlossen. Der AD-Wandler kann natürlich nicht direkt den Strom vom Wandler messen, sondern misst die Spannung, die über einen Messwiederstand abfällt. Bei dieser Auflösung ist es wichtig eine genaue Spannungsreferenz zu haben. Im Datenblatt vom MCP 3301 wird als Spannungsreferenz der MCP 1525 genutzt. Dieser bietet eine sehr genaue Spannung von 2,5V (näheres im Datenblatt). Aus diesem Grund ist es sehr wichtig, dass der Messwiederstand eine Genauigkeit von 0,1% hat.
Um den Wandler mit 30A auszunutzen, habe ich einen Messwiderstand von 56 Ohm eingesetzt, d.h. der Messbereich geht theoretisch von 10,9 mA bis 30000 mA. Wem die 10,9mA zu groß sind, kann als Messwidertand auch 100 Ohm nutzen. Dann ist der Messbereich von 6,1mA bis 16100 mA, was ja für die meisten Verbraucher ausreichend ist. Da die Werte der verbauten Messwiederstände im Programm angegeben werden müssen, kann der Messbereich so „beliebig“ angepasst werden. Natürlich muss es auch Sinn machen, denn die Genauigkeit hängt ja auch noch mit anderen Faktoren zusammen: Referenzspannung, Quarzgenauigkeit, 50,000000 Hz der Netzspannung…

Programm im Arduino:
Ich habe zwar schon einige AT-Mega programmiert, aber noch nicht mit der Arduinosoftware. Deshalb vielen, vielen Dank an Jürgen, der mir diese Arbeit abgenommen hat und den Code zur freien Verfügung stellt. DANKE!!!
Eine Beschreibung ist im Programm selber.
Ich nutze einen Ardino NANO, aber es geht auch mit diversen anderen. Das Programm ist auf 10 Sensoren ausgelegt und bei jedem Wandler wird 4 mal pro Sekunde je eine Periode gemessen und aus dem Messergebnissen der RMS Wert gebildet. Jede Sekunde sendet der Arduino über USB/ Virtueller Comport 10 Messwerte; also einen pro Wandler.
Um die Ausgabe „hübscher“ zu gestalten, wurde die Bibliothek „Streaming“ verwendet die in das Installationsverzeichnis kopiert werden muss.

Hinweise:
Die Leitung SCK und MISO führen immerhin 1 MHz Signale, da wirken sich parasitäre Kapazitäten sehr schädlich aus, also nach Möglichkeit kurze Leitungen verwenden. Und natürlich nicht mit Kondensatoren sparen – dicht an den ICs.
Zum Abschluss habe ich noch ein paar Vergleichsmessreihen aufgezeichnet. Generell kann man sagen dass die Abweichung zwischen dem geeichten Messgerät und „meiner“ günstigen Messung bis 500mA bei 1% liegt, zum Teil darunter. Ab 500mA liegt die Abweichung deutlich unter 1%. Bei kleinen Strömen wirkt sich eine Ungenauigkeit von einem Bit natürlich sehr viel höher aus, als bei großen Strömen.

Kosten:
Den Arduino Nano gibt es günstig auf bekannten Internetseiten
AD Wandler MCP 3301 liegt bei ca 3,50 Euro
Spannungsreferenz MCP 1525 ca 1 Euro
Messwiederstand ca 0,50 Euro
Stromsensor ZMCT118F im 10ner Pack incl. Versand bei 1$ pro Stück

Also kann man grob sagen, dass jede (weitere) Messung ca 5 Euro kostet

Nachbau:
Nur zur Sicherheit...
Der Nachbau ist natürlich auf eigene Gefahr. Da hier mit lebesgefährlicher Netzspannung gearbeitet wird, müssen alle einschlägigen Richtlinien, Bestimmungen... (VDE!!!) beachtet werden.
Also nur nachbauen, wenn man weiß, was man macht und darin auch Erfahrung hat...

Für Kritik, Verbesserungen, Vorschläge bin ich immer offen. Davon lebt ein Forum!

Viel Spaß,
Tobias

Prototyp 1.0.zip