Dachte ich schreib mal etwas dazu .. weil ich grad recht Happy bin und es im Netz darüber nicht wirklich viel gibt
Hatte mir letzte Woche einen SDM630M-DC bestellt.. ein 3 Phasen Direktleitungsmessgerät.. es gibt ihn auch auch als Messwandler ..
Weil ich vor der Entscheidung stehe welchen HybridWR ich zur Abdeckung meiner Lasten kaufen.. Ob 3 phasig .. oder 1 phasig.. Will mal feststellen will sich genau sich mein Tagesbedarf mit Spitzen und Durchschnitt im Haushalt auf den 3 Phasen verteilt verhält... und dann auf die Leistung festlegen
Da ich nicht 3 kleine normalen 1 Phasenzähler mit S0 auslesen wollte damit ich jeden Leitungsstaus seperat erfassen kann hab ich mir für das SDM630M-DC entschieden und muß sagen ich bereue es nicht..
Auszulesende Werte über Modbus RTU gibt es endlos viele.. ansonsten gibt es auch 2 S0 Ausgänge
http://www.ausboard.net.au/ind…%20Modbus%20Registers.pdf
Gerät kann in beide Richtungen messen
Auslesen über Modbus funktioniert wunderbar mittels Arduino NANO und MAX485CPA+ und der Lib
https://sites.google.com/site/…brt/arduino-modbus-master
Einzig eines muß ich erwähnen wo ich am WE fast verzweifelt bin .. der A/B Kanal ist entgegen den Angaben verkehrt belegt.... vielleicht Zufall bei meinem Teil.. aber es hat mich fast in den Wahnsinn getrieben
Derzeit erfasse ich noch alles auf eine SD Karte im Sekundentakt .. Live Netzwerkanbindung in Datenbank erfolgt wenn ich wieder W5100 Netzwerkshield Nachschub für den Arduino bekomme..
der gesamte Arduino Code der zum Auslesen notwendig ist wäre dieser
#include <ModbusMaster.h>
ModbusMaster node(2);
void setup() {
pinMode(3, OUTPUT);
node.begin(4800);
}
float reform_uint16_2_float32(uint16_t u1, uint16_t u2)
{
uint32_t num = ((uint32_t)u1 & 0xFFFF) << 16 | ((uint32_t)u2 & 0xFFFF);
float numf;
memcpy(&numf, &num, 4);
return numf;
}
void loop() {
float p1,p2,p3,pa = 0;
p1 = getRTU(0x000C); //Power Leitung 1
p2 = getRTU(0x000E); //Power Leitung 2
p3 = getRTU(0x0010); //Power Leitung 3
pa = getRTU(0x0034); //Power All - (sinnlos kann man sich eh auch p1+p3+p3 berechnen :) )
delay(5000);
}
float getRTU(uint16_t m_startAddress){
uint8_t m_length =2;
uint16_t result;
digitalWrite(3, HIGH); // TX
result = node.readInputRegisters(m_startAddress, m_length);
if (result == node.ku8MBSuccess) {
return reform_uint16_2_float32(node.getResponseBuffer(0),node.getResponseBuffer(1));
}
}
Alles anzeigen
Code ist auf Minium gekürzt ist aber voll funktionsfähig. .. Ergebnis steht in der LOOP alle 5 sec. in p1,p2,p3,pa
Kostenpunkt
Gerät: 81€
Arduino:7€
max485: 3,5€
Netzwerkshield: 12€
Kleinmaterial/widerstände und CO: 10€
Summe 113€ (ohne Versandkosten) für ein komplett individuell anpassbares netzwerkfähiges 3Phasen Leitungsmessgerät
PS: Und lassts die Finger weg von den ECN28J60 Netzwerkshields und nehmts die w5100 .. kosten ein paar € mehr .. aber verursachen viel weniger Probleme .. Auch im laufenden Betrieb sind die ENC extrem störanfällig.. damit wird man nicht glücklich.. die Libs dazu sind noch absolut nicht ausgereift ... auch die neue die auf UIP basierend ist, ist alles andere als "stable"