Secon XPL + Raspberry Pi

Ziel ist es, die Gasventile und den Prozess komfortabler steuern zu können. Dazu ist eine Steuer- und Bedieneinheit mit vielen D/A-Wandlern, vielen A/D-Wandlern sowie einer Reihe digitaler Anschlüsse vonnöten. Ein gefundenes Fressen für einen Raspberry Pi mit etwas Zusatzhardware.

Gehäuse

Der Raspberry (hier Pi 2) mit 7-Zoll-Touch-Display passt wunderbar in ein Bopla RCP2000-Gehäuse. Insgesamt nicht wirklich billig, aber industrie- und reinraumtauglich.

Gehäuseansicht

Zusätzliche Befestigungsteile für das Display:

Dass das Display etwas weich hängt ist sicherlich nicht verkehrt. Die Raspberry-Platine ist der Vorgabe entsprechend ans Display gebaut.

eduroam (TU Chemnitz) zum Laufen bringen

Vorteile:

Nachteile: Ist gar nicht so leicht zur Funktion zu bekommen. Für 'nen Raspberry 2 benötigt man einen USB-WLAN-Stick.

Als erstes benötigt man eine Internetzugang via WLAN-SSID „tu-chemnitz.de“, damit man überhaupt etwas herunterladen kann.

Standardweg: Geht bei mir nicht!

Der normale Weg ist hier beschrieben. Funktioniert aber prompt nicht, da kommt eine lapidare Fehlermeldung.

Guckt man in die eduroam-linux-TUC.sh, steht da ein Aufruf von NetworkManager drin. Also aufrufen:

$ sudo apt-get install network-manager
Danach läuft das Skript ohne Fehlermeldung durch, aber eduroam funktioniert trotzdem nicht.

Bastelstraße: Geht!

Erst mal Admin werden:
$ sudo bash
Dann die von eduroam-linux-TUC.sh (siehe oben) erzeugte öffentliche Schlüsseldatei an einen vernünftigen Ort kopieren:
# cd .cat_installer/
# cp ca.pem /etc/wpa_supplicant/
Windows-Esel aufgepasst: .cat steht hier nicht für Sicherheitskatalog (*.cat) sondern für's Anhängen (concatenate)!
In demselben Verzeichnis liegt auch eine weitere nützliche Datei herum. Die hängt man an die /etc/wpa_supplicant/wpa_supplicant.conf an, um sich Editierarbeit zu sparen.
# cat cat_installer.conf >> /etc/wpa_supplicant/wpa_supplicant.conf
Dann habe ich von Hand folgende Dateien wie folgt editiert: Ich weiß nicht was davon erforderlich ist und was überflüssig ist. Beide Dateien sichern! Geht etwas schief, wird's von irgendetwas überschrieben. Dann Neustart! Nichts anderes.
# reboot
Wenn alles richtig ist, wurstelt das WLAN-Icon etwas herum: Erst startet es eduroam, dann geht irgendwas schief (vermutlich wegen der falschen Uhrzeit), dann startet web-psk, und nach einigen 10 Sekunden wieder eduroam, diesmal erfolgreich.

Ich vermute mal, dass der olle NetworkManager gar nicht gebraucht wurde oder wird.

openafs zum Laufen bringen

Zu tun. Wegen der Cache-Datei ungünstig für (die Lebensdauer von) SD-Karten. Besser den Raspberry auf „Booten von USB-Stick“ umstellen; USB-Speichersticks reagieren etwas intelligenter bei häufigen Schreibvorgängen. Angeblich. Oder eine echte Festplatte verwenden. Den SATA-Anschluss gibt's erst beim Raspberry 4.

Hilfsplatine

Eagle-Dateien siehe ZIP-Datei: Schaltplan und Board sind als Vektorgrafik betrachtbar.

Diese realisiert 8 D/A-Wandler mit Ausgangsspannung 0..5 V sowie 7 npn-Digitalausgänge mit ULN2003.

Die D/A-Wandler werden hierzu vom Raspberry selbst per Pulsweitenmodulation realisiert, auf der Platine befinden sich nur noch 8 Tiefpassfilter 2. Ordnung sowie Verstärker, um von 3,3 V auf 5 V zu kommen. Die Wannenbuchse dient zum Anschluss der original (?) vorgefundenen MFC-Verteilerplatine. Istwerte werden kurzerhand nicht ausgewertet. Vorläufig.

Ein unscheinbares Bohrloch dient zur Befestigung einer gefundenen DC/DC-Wandlerplatine, hier von 24 V Schaltschrankspannung auf 5 V für den Raspberry sowie diese Schaltung. Die Micro-USB-Buchse des Raspberry bleibt somit frei, und wegen der kurzen Leitungslängen ist eine stabile 5-V-Versorgung ohne Warngrafik oben rechts im Bild gegeben.

Anschlüsse

Analogausgang-Nr. 0..5 V Anschluss 34-pol. Pfostenstecker GPIO des RaspberryPi 2 Pin am RaspberryPi 2
132140
272038
3112637
4151636
5191935
6231333
7271232
831631
Digitalausgang-Nr. 0..30 V npn Anschluss Schraubklemme GPIO des RaspberryPi 2 Pin am RaspberryPi 2
1121711
2111812
3102713
492215
582316
672418
762522

Software

Erstmal habe ich mich mit RPIO herumgeärgert, welches in Verbindung mit einem Python-Testprogramm nur eine Fehlermeldung produziert:
Using hardware: PWM
PW increments:  10us
Initializing channel 0...
Traceback (most recent call last):
   File "./gui.py", line 26, in 
     servo.set_servo(21,4000)
   File "build/bdist.linux-armv7l/egg/RPIO/PWM/__init__.py", line 212, in set_servo
   File "build/bdist.linux-armv7l/egg/RPIO/PWM/__init__.py", line 97, in init_channel
RuntimeError: rpio-pwm: Page 0 not present (pfn 0xa100000000023383)
Google, google, google — Keine Chance, weiterzukommen.

Nächster Versuch: pigpio. Das funktionierte schließlich: Installation (einige Minuten):

wget abyz.co.uk/rpi/pigpio/pigpio.zip
unzip pigpio.zip
cd PIGPIO
make -j4
sudo make install
sudo ./pigpiod
Aber vermutlich hätte es auch ganz sauber ein
sudo apt-get install pigpio python-pigpio python3-pigpio
getan.

Mit python ging's dann weiter:

import pigpio
p=pigpio.pi()
p.set_mode(21,pigpio.OUTPUT)	#21 = erster PWM-Kanal, siehe Tabelle oben
p.set_PWM_dutycycle(21,64)
Nach dem Tiefpass und Verstärker kommt mit 64 ¼ Fullscale, also 1,25 V heraus. Damit lassen sich nun die Massenflussregler steuern.

Pardon, Reinfall! Es ist Software-PWM. So'n Quatsch! 🪦 Gestorben. Die Maschine wurde IMHO verschrottet.

Heutige Lösung (2022)

Keinesfalls mit Raspberry Pi sondern damit! Das ist faktisch ein Arduino Leonardo mit Portexpandern, Potenzialversatzstufen und einem Triac-Block. Mittels WebUSB und einer maßgeschneiderten Webseite lässt sich so die gesamte Hardware komfortabel zum Laufen bringen — und das sogar mit einem Smartphone. Oder doch noch einem Raspberry Pi als reiner Web-Browser. Zudem kann man damit stundenlange Prozessabläufe ablaufen lassen, ohne dass man einen Absturz oder ein dazwischen funkendes Update befürchten muss: Ein AVR-Mikrocontroller (hier: ATmega32U4) ist für seine Robustheit und Leistungsstärke (relativ für 8 Bit) mittlerweile geradezu berühmt geworden. Selbst wenn es nur für Software-PWM reichen sollte: Zeitverhältnisse lassen sich auf 8-Bit-Controllern hinreichend exakt berechnen und einhalten.