hardware:controllers:s0-an-rs232
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| hardware:controllers:s0-an-rs232 [2012/01/02 23:15] – angelegt justinotherguy | hardware:controllers:s0-an-rs232 [2019/05/29 10:29] (aktuell) – Link ins Mailinglistenarchiv fixed zugschlus | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | do hesch | + | ====== S0-Impuls Zähler direkt über RS232 auswerten ====== |
| + | Diese simple Methode erlaubt es, ohne zusätzliche Hardware, einen S0-Impuls Zähler über einen RS232-Port auszuwerten. Viele Computer und embedded Systeme besitzen einen RS232-Port. Alternativ kann auch ein RS232-zu-USB Adapter benutzt werden. | ||
| + | |||
| + | < | ||
| + | Der Großteil des Inhalts dieser Seite stammt aus einer [[http:// | ||
| + | </ | ||
| + | |||
| + | ===== Grundidee ===== | ||
| + | Ziel ist es den Abstand aufeinanderfolgender Impulse zu messen, die bis max. 1 mal pro Sekunde kommen und ca. ~100 ms lang sind. Das erinnert an das DCF77 Funkuhr-Signal (1 Impuls pro Sekunde, 100 oder 200 ms lang == 0 bzw. 1). | ||
| + | |||
| + | Und seit 2 Jahrzehnten ist es gängig, dieses DCF77-Signal einfach über eine serielle Schnittstelle mit 50 Baud auszuwerten ([[http:// | ||
| + | |||
| + | Die Länge des S0-Impulses sind hier nicht von Interesse. So muss man nur die S0-Ausgänge an eine serielle Schnittstelle zwischen Rx und z.b. RTS hängen. (Irgend eine Steuerleitung, | ||
| + | |||
| + | ===== Umsetzung ===== | ||
| + | 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! | ||
| + | |||
| + | Also muss | ||
| + | * S0- (Swissnox Klemme 21) mit RS232-Rx (Pin 2 auf DSUB-9) und | ||
| + | * S0+ (Swissnox Klemme 20) mit RS232-RTS (Pin 7 auf DSUB-9) | ||
| + | verbunden werden. | ||
| + | Die restliche Verkabelung auf ' | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Mac Gyver Variante der Schaltung. Für den produktiven Einsatz nicht empfohlen ;) | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Alternativ kann man auch die Reste einer seriellen Maus endlich zu was Vernünftigem verwenden und damit die Verkabelung an den Zähler realisieren: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ===== Raspberry PI ===== | ||
| + | < | ||
| + | vzlogger loggt jetzt auch GPIOs.. | ||
| + | </ | ||
| + | <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, | ||
| + | |||
| + | Da es sich um 3,3V-Pegel handelt, wird die RTS-Leitung nicht benoetigt, GND und/oder Vcc reichen aus.\\ | ||
| + | (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:// | ||
| + | |||
| + | ===== Software ===== | ||
| + | Die Auswertung der seriellen Schnittstelle wird dabei von [[/ | ||
| + | |||
| + | ==== Alternative ==== | ||
| + | Harald König hat bei der Entwicklung dieser Methode Standardtools von Linux verwendet. | ||
| + | Seine Skripte sind im git verfügbar: [[https:// | ||
| + | |||
| + | Serielle Schnittstelle richtig konfigurieren (50 Baud, jedes Zeichen sofort ausgeben, ...): | ||
| + | < | ||
| + | |||
| + | Zeichen einlesen und Timestamp erzeugen: | ||
| + | < | ||
| + | |||
| + | Etwas mehr Test-Code um das ganze besser beurteilen zu können: | ||
| + | < | ||
| + | |||
| + | 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.1325542530.txt.gz · Zuletzt geändert: von justinotherguy