Forum: Mikrocontroller und Digitale Elektronik Konzept Eigenverbrauchsmessung mit S0 & BeagleBone


von Lord Z. (lordziu)


Lesenswert?

Moin.

Ich habe ein System, dass aus einem Schaltnetzteil, einem BeagleBone 
Black, zwei Dutzend Sensoren und einigen Aktoren (Pumpen und 
Kompressoren) besteht. Das Ganze wird über einen 230V-Anschluss 
versorgt.

Ich möchte den Energieverbrauch des Systems auf dem BeagleBone 
mitloggen. Als günstige Energiezähler (bis 40€) habe ich bisher nur 
Lösungen gefunden, die eine S0-Schnittstelle haben (gibt pro 
verbrauchter Einheit einen Puls aus, z.B. 1000 Pulse / kWh)

Nun wäre ja der logische Weg, den Zähler direkt an das BeagleBone 
anzuschließen. Allerdings haben meine Recherchen ergeben, dass ein 
PinChange Interrupt nur kompliziert (auf Kernel-Ebene) zu realisieren 
ist. Die Alternative des Pollens auf den Pin geht glaube ich nicht, da 
es ja nur ein Impuls ist und kein Pegel, der eine bestimmte Zeit 
anliegt.

Also dachte ich daran, einen kleinen AVR dazwischen zu schalten, der per 
PinChange Interrupt geweckt wird. Dieser müsste dann intern einen Zähler 
aufaddieren.
Probleme hier sind jedoch: Wo schreibe ich den Wert hin? Der EEPROM hat 
ja nur eine begrenzte Anzahl Schreib-/Lesezyklen. Außerdem muss ich 
wieder eine protokollbasierte Kommunikation zum BeagleBone aufbauen. Ich 
möchte gerne den absoluten Verbrauch seit Start des Systems direkt vom 
AVR geliefert haben.

Irgendwie drehe ich mich im Kreis. Hat jemand eine Idee, wie man das 
lösen kann?

Danke schonmal,
LordZiu

von CC (Gast)


Lesenswert?

Du musst doch nur die Pinmux-Settings einstellen, dass der entsprechende 
Pin ein GPIO wird. Dann noch das Ding exportieren, in 
/sys/class/gpio/gpioXX/edge rising oder falling schreiben, schon kannst 
du auf .../value ein select()/poll machen und du bekommst den Puls mit 
-- oder übersehe ich etwas?

von CC (Gast)


Lesenswert?

Wenn du wirklich einen AVR nutzen möchtest (wirklich nicht nötig, habe 
einige Taster etc an nem BBB), kann er ja einfach den Impuls per UART 
rausschreiben...

von Εrnst B. (ernst)


Lesenswert?

Lord Ziu schrieb:
> Irgendwie drehe ich mich im Kreis. Hat jemand eine Idee, wie man das
> lösen kann?

Erstmal überlegen, ob ein Stromzähler mit S0-Ausgang wirklich eine gute 
Idee ist.
Den Eigenverbrauch des Stromzählers berücksichtigen. Im "Normalbetrieb" 
geht der zu Lasten des EVU, als zwischenzähler eingesetzt ist der dein 
Bier, und das können leicht einige Watt sein.

Dann überlegen, wie genau es sein muss.

Evtl: Einmal Wirkungsgrad deines SNT vermessen, anschließend reicht ein 
Shunt sekundärseitig.

Wenn du wirklich über S0 gehen willst, und dir der AVR zu kompliziert 
ist: Nimm ein TTL-Zähler-IC, z.B. 7493. Das hat kein Problem mit den 
30ms-Pulsen, und du kannst es gemütlich parallel auslesen.

von Lord Z. (lordziu)


Lesenswert?

Hallo,

Vielen Dank für die schnellen Antworten.
Wenn es mit dem BeagleBone doch recht einfach geht, würde ich diese 
Lösung bevorzugen.

@CC
Gibt es irgendwo ein Tutorial, dass diese Mechanismen auf dem BBB 
beschreibt? Bin noch nicht so fit auf dem Teil.

@Ernst
Danke für den Hinweis mit dem Shunt und dem 7493. Wenn es auf dem BBB 
nicht klappt, klingen diese Ideen sehr plausibel.

Was den Eigenverbrauch angeht: Die Zähler nehmen irgendwas um 1 Watt. 
Das ist im Verhältnis zum Gesamtverbrauch des Systems vernachlässigbar.

von CC (Gast)


Lesenswert?

Hab mal was gesehen, weiß aber nicht mehr den Link. Eins war meine ich 
auf elinux.org... Und such mal nach "hipster circuits", ich meine, dort 
wurde auch der DT-Kram beschrieben, den man braucht...

DeviceTree, Pinmux Beaglebone Black, ... sollten die Stichworte sein, 
die dich zum Ziel führen

von Sebastian W. (wangnick)


Lesenswert?

Lord Ziu schrieb:
> Ich möchte den Energieverbrauch des Systems auf dem BeagleBone
> mitloggen. Als günstige Energiezähler (bis 40€) habe ich bisher nur
> Lösungen gefunden, die eine S0-Schnittstelle haben (gibt pro
> verbrauchter Einheit einen Puls aus, z.B. 1000 Pulse / kWh)

http://de.wikipedia.org/wiki/S0-Schnittstelle: "Der Ausgang ist 
technisch betrachtet ein offener Kollektor (engl. open collector) eines 
Transistors, der einem Optokoppler nachgeschaltet ist. Beim Anschluss 
der Schnittstelle muss daher auf die Polarität geachtet werden. Es gibt 
zwei Klassen A und B, erstere für lange, zweitere für kurze 
Übertragungswege. In Klasse B können bis zu 15 Volt DC, in Klasse A bis 
zu 27 Volt DC angeschlossen werden. Der maximale Stromfluss wird mit 15 
mA bzw. 27 mA angegeben, dies entspricht einem Widerstand von 1 Kiloohm. 
Dabei entspricht ein Stromfluss von kleiner 2 mA einem LOW-Wert, einer 
höher als 10 mA einem HIGH-Wert. Gängige DDCs können mit dieser Schwelle 
arbeiten. Das Signal wird vom Zähler als Impulsfolge ausgegeben, wobei 
ein einzelner Impuls mindestens 30 Millisekunden andauern muss."

Also brauchst du 1. mindestens 5V von irgendwoher, und kannst 2. den Pin 
pollen, solange du nur mindestens alle 30ms pollst, das sollte der BBB 
aber ja wohl hinkriegen.

LG, Sebastian

von Strom (Gast)


Lesenswert?

Vllt einen Blick wert:

volkszähler.org

S0 Zähler auf AVR Basis (AVR-NET-IO) mit schönem Ajax Webinterface 
(Bling Bling).

Läuft bei mir seit nem Jahr ohne Probleme.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.