hardware:controllers:s0-an-rs232
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
hardware:controllers:s0-an-rs232 [2012/01/03 20:55] – typo fix r00t | hardware:controllers:s0-an-rs232 [2019/05/29 10:29] (aktuell) – Link ins Mailinglistenarchiv fixed zugschlus | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ==== direkter anschluss | + | ====== S0-Impuls Zähler direkt über RS232 auswerten ====== |
- | + | Diese simple Methode | |
- | diese einfache methode | + | |
- | + | ||
- | die auswertung wird von [[/ | + | |
- | + | ||
- | das skaliert auch ganz prima: fuer jeden weiteren kanal nur noch einen weiteren usb-rs232-adapter, | + | |
- | und irgendwann vielleicht noch einen usb-hub... | + | |
< | < | ||
- | Der grossteil | + | Der Großteil |
</ | </ | ||
- | === grundidee | + | ===== Grundidee ===== |
- | man will ja nur pulse zaehlen mit genauer " | + | Ziel ist es den Abstand aufeinanderfolgender Impulse zu messen, die bis max. 1 mal pro Sekunde kommen |
- | so max. 1 mal pro sekunde | + | |
- | das alles erinnert | + | |
- | 100 oder 200 msec lang == 0 oder 1)... | + | |
- | und seit so 2 jahrzehnten | + | Und seit 2 Jahrzehnten |
- | an eine serielle | + | |
- | ist die startflanke | + | |
- | und je nach dem ob kurzer oder langer | + | |
- | und man kann sogar die pulslaengen damit erkennen. | + | |
- | pulslaengen gibts hier beim stromzaehlen | + | Die Länge des S0-Impulses sind hier nicht von Interesse. So muss man nur die S0-Ausgänge |
- | so muss man wirklich | + | |
- | an eine serielle | + | |
- | (irgend | + | |
- | ziehen muss). | + | |
- | dann muss man nur noch warten bis der S0-pulse als "startbit" ein zeichen ausloest | + | |
- | und dieses dann einlesen und den timestamp | + | |
- | === umsetzung | + | ===== Umsetzung ===== |
- | das kann man dann direkt z.b. mit einem usb2serial adapter/ | + | Bei der Verkabelung ist auf die Polarität des S0-Anschlusses zu achten. Viele S0-Zähler realisieren diesen über einen Optokoppler und nicht über einen Schaltkontakt! |
- | oder auf eine echte serielle schnitstelle geben, so man noch hat;) | + | |
- | also: SWISSNOX klemme 21 muss mit RS232 Rx (pin 2 auf DSUB-9) und klemme | + | Also muss |
- | verbunden werden, der rest (230V) | + | * S0- (Swissnox Klemme 21) mit RS232-Rx (Pin 2 auf DSUB-9) und |
+ | * S0+ (Swissnox Klemme | ||
+ | verbunden werden. | ||
+ | Die restliche Verkabelung auf ' | ||
- | {{: | + | {{: |
- | man kann dazu direkt zwei aufgebogene bueroklammern verwenden und die | + | Mac Gyver Variante der Schaltung. Für den produktiven Einsatz nicht empfohlen ;) |
- | mit hilfe eines " | + | |
- | oder etwas bequemer (wenn man noch 2 weitere bueroklammern und 2 krokoklemmen kabel uebrig hat...). | + | |
- | alternativ | + | {{: |
- | verwenden und damit den anschluss | + | |
+ | Alternativ | ||
{{: | {{: | ||
- | === software | + | ===== Raspberry PI ===== |
- | das auswerten wird von [[/ | + | < |
- | alternativ, und/oder zum testen, bietet sich folgendes an: | + | vzlogger |
+ | </ | ||
+ | <note warning> | ||
+ | ACHTUNG: es handelt sich dort um einen UART-Port mit 3, | ||
+ | nicht um eine RS232 Schnittstelle.\\ | ||
+ | Die 3,3V entsprechen auch nicht der S0-Norm EN 62053-31, https:// | ||
+ | </ | ||
+ | |||
+ | Beim Raspberry Pi ist ein interne UART als ''/ | ||
+ | Die Pinbelegung ist GPIO 15 für RXD (P1-10).\\ | ||
+ | Achtung! Das funktioniert nicht in Verbindung mit Udos RPi-Erweiterungen, | ||
- | software: | + | Da es sich um 3,3V-Pegel handelt, wird die RTS-Leitung nicht benoetigt, GND und/oder Vcc reichen aus.\\ |
- | (50 baud, jedes zeichen sofort ausgeben, ...) | + | (RTS GPIO 17 für RTS (P1-11), siehe [[http:// |
+ | Allerdings ist die RTS Funktion standardmäßig deaktiviert. Zum aktivieren muss der Pin erst in Alternate Function 3 versetzt werden. Das kann z.B. mit diesem Tool erfolgen: [[http:// | ||
- | stty time 1 min 1 -icanon < /dev/ttyUSB0 | + | ===== Software ===== |
+ | Die Auswertung der seriellen Schnittstelle wird dabei von [[/software/controller/ | ||
- | und schon kann man die daten wie gewuenscht lesen. | + | ==== Alternative ==== |
- | time stamp kommen, wenn man kein C o.ae. programmieren will ? | + | Harald König hat bei der Entwicklung dieser Methode Standardtools von Linux verwendet. |
- | z.b. so: | + | Seine Skripte sind im git verfügbar: [[https:// |
- | < | + | |
- | | + | |
- | </code> | + | |
- | und um das ganze besser beurteilen und verdauen zu koennen, | + | |
- | noch ein bissl test code dazu: | + | |
- | < | + | |
- | ( strace -ttt -e read cat < /dev/ttyUSB0 > /dev/null ) 2>&1 | awk ' | + | |
- | </code> | + | |
- | spalte 1 liefert dann die leistung in watt, 2 die laufende zeit in sekunden, 3 die zeit seit dem letzten puls, und dann noch den gesamten strace-output mit original timestamp. | + | |
+ | Serielle Schnittstelle richtig konfigurieren (50 Baud, jedes Zeichen sofort ausgeben, ...): | ||
+ | < | ||
- | es fallt dabei auf (zumind. bei meinem setup), dass immer mal wieder ein " | + | Zeichen einlesen und Timestamp erzeugen: |
- | < | + | < |
- | 1275071653.195588 | + | |
- | 1275071681.731568 read(0, " | + | |
- | 1275071710.623568 read(0, " | + | |
- | 1275071739.471581 read(0, " | + | |
- | 1275071768.351691 read(0, " | + | |
- | ==> | + | |
- | 1275071797.271617 read(0, " | + | |
- | 1275071826.107561 read(0, " | + | |
- | </code> | + | |
- | aber die lassen sich ja leicht wegfiltern, z.b. mit | + | |
- | < | + | |
- | grep ' | + | |
- | </ | + | |
- | wenn man die daten gleich in der datenbank haben will (mit dem PHP/mysql code von Florian Ziegler, daher die rundung der timestamps? | + | Etwas mehr Test-Code um das ganze besser beurteilen zu können: |
- | < | + | < |
- | ( strace -ttt -e read cat < / | + | |
- | </ | + | |
- | und schon fuellt sich die datenbank! | + | |
+ | Spalte 1 liefert dann die Leistung in Watt, 2 die laufende Zeit in Sekunden, 3 die zeit seit dem letzten Impuls, und dann noch den gesamten strace-output mit original Timestamp. |
hardware/controllers/s0-an-rs232.1325620505.txt.gz · Zuletzt geändert: 2012/01/03 20:55 von r00t