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
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?
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...
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.
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.