S0-WSZ simulieren

Hallo,
da ich jetzt endlich begriffen habe, wie man Diagramme und Bargraphen auf dem
Arduino programmiert und diese auch auf einem GLCD/TFT darstellen kann, wollte
ich mal etwas probieren.

Für mein EnergieManagement wollte ich gerne S0 oder RS-485 verwenden. RS-485
simulieren ist ein wenig schwierig, den S0-Bus zu simulieren sollte doch
möglich sein…

Der S0-WSZ gibt doch für 1kWh eine bestimmte Anzahl an Impulsen aus. Hoher
Stromverbrauch- viele Imoulse, geringer Stromverbrauch- wenige Impulse.
Diese Impulse sind doch nichts weiter, als eine High/Low Flanke- die je nach
Stromverbrauch mal länger und mal kürzer ist.

Nun kann ich doch über einen PWM-Ausgang des Arduino eine LED "hell/dunkel"
leuchten lassen. Dieses PWM-Signal ist doch auch nur eine High/Low Flanke
desen "Länge" sich verändert.

Nun könnte ich doch die HighFlanke des PWM zählen, und diese mit einer
bestimmten Zeit in Verbindung bringen. Wenn ich in 1 Stunde 1000 PWM
High/Flanken ausgebe, dann habe ich doch 1kWh simuliert. Gebe ich in 30 Minuten
1000 Impulse aus sind es 2kWh.

Also müßte es doch möglich sein, so das Signal eines S0-Bus zu simulieren?
Oder habe ich da einen DenkFehler?
Gruß und Dank
Andreas

1000 Impulse pro 30 Minuten = ca. 1 Impuls alle 2 Sekunden. Dafür brauchst Du keinen Timer bzw. PWM-Ausgang.

Je nachdem, was Du unter simulieren verstehst, kannst Du ohne weiteres eine RS-485 Schnittstelle simulieren. Du nimmst einfach einen Rechner (kann ein Arduino sein), der RS-485 kann und schickst simuliert die gleichen Botschaften, die Deine eigentliche Gerätschaft verschicken würde. Oder habe ich was falsch verstanden?

Hallo,
"kannst Du ohne weiteres eine RS-485 Schnittstelle simulieren"
Ich habe am Rechner keine "echten" seriellen Schnittstellen. Und so einfach
ist es nicht, am Mac einen RS-485 Master oder Slave zu simulieren…

"Dafür brauchst Du keinen Timer bzw. PWM-Ausgang"
Hmm, wie sollte ich das dann wohl real simulieren?
Ich kann mit millis() einen bestimmten Impuls (KaffeMaschine) zu einer
bestimmten Zeit senden. Und was mache ich wenn der Toaster dazu kommt?
Und? Das ist ja wohl statisch?

PWM kann ich doch über ein Poti beeinflussen, ich kann also mit einer
minimalen, normalen und Volllast fahren.
Ich wollte den verschiedenen Stromverbrauch simulieren. Dieser ändert sich
doch? Also ändert sich auch der S0-Impuls.
Was nützt es mir, wenn der Sketch bei 1 imp/sek funktioniert, aber bei
12 imp/sek "die Beine streckt"?
Gruß und Dank
Andreas

Ich habe am Rechner keine "echten" seriellen Schnittstellen. Und so einfach
ist es nicht, am Mac einen RS-485 Master oder Slave zu simulieren…

Dem wage ich zu widersprechen:

Ich kann mit millis() einen bestimmten Impuls (KaffeMaschine) zu einer
bestimmten Zeit senden. Und was mache ich wenn der Toaster dazu kommt?
Und? Das ist ja wohl statisch?

Im Prinzip kannst Du das machen wie im BlinkWithoutDelay-Beispiel, nur dass die Wartezeit nicht konstant ist, sondern aus der gewünschten Last berechnet wird.

PWM kann ich doch über ein Poti beeinflussen, ich kann also mit einer
minimalen, normalen und Volllast fahren.

Direkt kannst Du das nicht und über das Programm kannst Du auch obiges Szenario per Poti steuern. Zudem ändert der PWM-Wert normalerweise nur den Duty-Cycle, also wieviel Zeit in An- in Relation zum Aus-Zustand verbracht wird. Die Frequenz musst Du über den Timer steuern und für die sehr kleinen Frequenzen, die Du als Beispiel genannt hast, brauchst Du bestimmt keine spezielle Hardware-Unterstützung.

Was nützt es mir, wenn der Sketch bei 1 imp/sek funktioniert, aber bei
12 imp/sek "die Beine streckt"?

Mit der von mir skizzierten Lösung kannst Du auch 1000 imp/sek. senden und es werden noch keine Beine gestreckt.

Hallo,
über die "sparkfun" Geschichte muss ich mal nachdenken. Habe nicht gewußt,
das es so etwas "leichtes" gibt.

Jetzt habe ich mir eine LED gebastelt, die ihre Leuchtstärke liniear zum
Bargraph ändert. Ganz toll! Bin begeistert! Aber dann:

"Duty-Cycle, also wieviel Zeit in An- in Relation zum Aus-Zustand"

Es wäre völliger Schwachsinn hier die HighFlanke zu zählen, die ist ja nur
immer zu einem bestimmten Zeitpunkt gleich.
Die PWM HighFlanke ergibt mit der LowFlanke ja immer 100%.
Ich würde einfach nur verschieden lange HighFlanken zählen. Das wäre kein
zählen von Impulsen, das wäre das zählen von MatschePampe.

Ich muss mir also einen Impuls basteln, der dem des Datenblatt entsprich.
Mit einem Poti regel ich dann die Frequenz, mit der dieser Impuls am ZählPin
auftritt. Genau!
Da sage ich mal Danke schön.
Gruß und Spaß
Andreas

über die "sparkfun" Geschichte muss ich mal nachdenken. Habe nicht gewußt,
das es so etwas "leichtes" gibt.

Es gibt noch was leichteres, gibts natürlich auch bei den Kollegen für günstiger.

Habe ich auf Mac und Raspberry

Kannst du aber auch selber basteln, MAX485 und USB->TTL Wandler.

Verstehe das mit den ganzen Flanken nicht wirklich. Was hast denn vor?
Wenn an einem Ende eine LED und am anderen Ende ein Poti ist, kannste dir das Beispiel mal anschauen und testen.
https://code.google.com/p/simple-modbus/
oder gleich hierher, da sind die aktuellen Versionen.

Hallo,
die Sache mit den RS-485-Adaptern werde ich mal probieren, mal sehen, ob selber
gebastelt oder fertig.

"Verstehe das mit den ganzen Flanken nicht wirklich. Was hast denn vor?"

Diese Diagramm/Bargraph programmiererei hat ja den Sinn und Zweck in meinem
Energiemanagement den momentaren Stromverbrauch optisch anzuzeigen.
Die von mir bevorzugten WSZ haben RS-385 und/oder S0-Bus.

Der S0-Bus gibt ein Signal in einer High/Low Flanke aus. Eben einen Impuls.
Bei 1kWh - 1000Imp. mit einer Länge von 30ms je Impuls.
oder
Bei 1KWh - 2000Imp. mit einer Länge von 50ms je Impuls.

Je mehr Strom verbraucht wird, oder je höher die Last ist, um so mehr
30/50ms Impulse liefern der WSZ.
Eine HighFlanke ist immer 30ms oder 50ms lang.
Die LowFlanke hat bei wechselnem Verbrauch eine unterschiedliche Länge.

Diesen wechselnen "Verbrauch" stelle ich über ein Poti ein. In einer bestimmten Zeit werden also mal mehr oder mal weniger 30/50ms Impulse gesendet.
Diese "High/Impulse" werden gezählt und mit einer bestimmten Zeit in Verbindung
gebracht. So komme ich auf kWh. Alles klar?
Das möchte ich mit dem Arduino simulieren.
Gruß und Spaß
Andreas