Steuerungsidee bzw. Planung mit Raspberry Pi & Arduino
Verfasst: 12.03.2014 - 20:16
Hallo!
Da ja in anderen Themen dazu schonmal Fragen aufgekommen sind, dachte ich mir mal, das ich einen Thread aufmache, in dem wir eine möglichst vielseitige und relativ günstige Steuerung entwickeln könn(t)en.
Ziel des ganzen soll später sein, eine für Nicht-Elektronik-Profis auch zusammenbaubare Steuerung oder zumindest ein Konzept dafür zu haben.
1 Features
Folgende Features sollten zumindest irgendwann mal realisierbar sein:
-Steuerung über PC/Touchscreen
-Steuerung über Netzwerkinternes Webinterface
-Steuerung über Schaltpult
-Parameteranzeige über PC/Netzwerk
-Verschiedene Überwachungseinrichtungen (Blocksicherung bei Kuppelbaren Bahnen, Endabschaltung bei PB's, Seillage, Spannwagenüberwachung und alles was mir gerade nicht einfällt)
-Kopierwerk sollte auch vorhanden sein
-Ein unabhängig von der Software wirkender Notaus
-Überbrückung bei Fehlauslösung oder zur Wiederherstellung des normalen Zustandes
-Abbremsung vor Stützenüberfahrten
-Vollautomatik (PB's fahren alle x Sekunden von alleine und warten dann x Sekunden)
-Teilautomatik (Automatische Geschwindigkeitsregulierung bei PB's, manuelle Abfahrt)
-Manueller Betrieb (komplett manuelle Geschwindigkeitsregulierung)
Da dies ja schon einiges ist, habe ich mir ein paar Gedanken gemacht, wie man diese Probleme am sinnvollsen lösen könnte.
2.1 Hardware
Bei meinen überlegungen wäre das Kernstück ein Arduino Uno.
Dieser hat 14 Pins für Digitalen Input und Output, davon unterstützen 6 die sog. Pulsweitenmodulation. (Das ist im Prinzip eine Art Dimmer, genauers auf Wikipedia etc.) Desweiteren gibt es noch 6 Analoge Inputs, die eine Spannung zwischen 0 und 5 Volt in 1024 Schritten messen können.
Da die Arduino-Pins nur Strom bis 40mA bei 5Volt verkraften, und der RB35 z.B. 2A bei 12 Volt benötigt, braucht man einen Verstärker. Hier bieten sich H-Brücken an, zum Beispiel diese hier: L 6205 N. Eine gute Einführung zu diesen Bauteilen gibt es hier:
http://www.arduino-tutorial.de/2010/06/ ... bridge-ic/
Hier mal eine Beispielaufstellung, für was man die Pins gebrauchen könnte:
1 RX via USB
2 TX via USB
3 (PWM) ->H-Bridge Speed
4 -> H-Bridge Direction
5 (PWM) -> H-Bridge Dircetion
6 (PWM) <- Motorimpuls für Kopierwerk
7 <- Endabschaltung 1
8 <- Endabschaltung 2
9 (PWM) <- Not-Aus
10 (PWM) <- Fertig
11 (PWM) <- Anwurf
12 <- Abfahrt
13 <- Halt
A0 <- Streckenstromkreis
A1 <- Wahl Auto / Teilauto / Manuell
A2 <- Speed
A3
A4 <- SDA von Rasperry Pi (I2C)
A5 <- SCL von Rasperry Pi (I2C)
Wie man sieht, habe ich in meinem Konzept einen Raspberry Pi über I2C (siehe Wikipedia) an die entsprechenden Anschlüsse angebunden.
Diesen könnte man mit Touchscreen, Tastatur, Maus, Netzwerk etc. verbinden, mehr dazu in 2.2 Software.
Jedenfalls würde der Rasperry Pi (Slave) über den I2C-Bus Signale an den Master (Arduino) senden, der diese dann auswertet und in Motorbefehle umsetzt, dazu ebenfalls mehr unter 2.2 Software.
An den I2C-Bus kann man auch andere nette Spielereien, wie zum Beispiel externe EEPROM-Geräte, einen weiteren Arduino zur Porterweiterung oder nummerische Displays hängen.
Soviel zur Hardware.
2.2 Software:
Fangen wir mit meinen Ideen beim Rasperry Pi an:
Auf diesem würde im Hintergrund ein Webserver mit apache und php laufen, der über die IP, z.B. 192.168.1.2, das Schaltpult als HTML in "Softwareform" ausgibt. Dieses holt sich die benötigten Werte via Ajax (siehe Wikipedia etc.) von einem PHP-Script, das für diese direkt auf den I2C-Bus zugreift.
Bei einem Tastendruck wird ebenfalls ein Signal per Ajax an ein PHP-Script gesendet, das dieses dann weiterleitet über I2C. Dieses Interface kann natürlich auch auf dem Rasperry Pi selbst laufen, weiterhin wäre eine Realisierung über WLAN aufs Smartphone denkbar, damit man gemütlich in der Sonne liegend die Bahn bedienen kann.
Diese Signale würden dann auf dem Arduino verarbeitet werden, und zwar möglichst Objektorientiert, das heißt, ein Programm kümmert sich nur um den I2C-Empfang, eins um die Motorsteuerung, eins ums Kopierwerk, eins um die Sicherheit etc.
Diese Programmierung werde ich evtl. demnächst schon in Angriff nehmen, da ich ein Arduino hier rumfliegen habe.
Bezüglich Sicherheit des ganzen: Sobald der Strom auf einem Sicherheitskreis abfällt würde ich empfehlen, den Motor via Relais stillzusetzen, WEIL man bei Sicherheitskritischen Funktionen meiner Meinung nach am wenigsten einem Windows- System, einem Linuxsystem auch nicht gerade viel mehr vertrauen sollte. Einem Arduino vertraue ich von der Stabilität her, allerdings gebe ich zu bedenken, das wir auch nur Menschen sind, und so bestimmt den einen oder anderen BUG mit einbauen.
Ich hoffe ich konnte einigen Anregungen über die Steuerungsvarianten von Modellseilbahnen geben,
und vielleicht bekomme ich ja auch ein paar Anregungen.
Die Steuerung meiner Modell-PB werde ich sehr ähnlich bauen, und natürlich auch den Quellcode direkt hier posten.
Ich habe diese Version bisher noch nie getestet und muss die Feinheiten auch erst noch Entwickeln, alle Versuche etc. auf eigene Gefahr!
Baut mit Elektr. Strom nur wenn ihr euch Sicher seid! An/mit Netzspannung dürfen nur Fachleute arbeiten!
Ich übernehme keine Haftung!
Bei Fragen helfe ich natürlich auch gerne, oder wenn man als Elektronik-Anfänger nur verstanden hat. (Hätte ich vor gut 1 1/2 Jahren auch noch)
Viele Grüße!
margau
Da ja in anderen Themen dazu schonmal Fragen aufgekommen sind, dachte ich mir mal, das ich einen Thread aufmache, in dem wir eine möglichst vielseitige und relativ günstige Steuerung entwickeln könn(t)en.
Ziel des ganzen soll später sein, eine für Nicht-Elektronik-Profis auch zusammenbaubare Steuerung oder zumindest ein Konzept dafür zu haben.
1 Features
Folgende Features sollten zumindest irgendwann mal realisierbar sein:
-Steuerung über PC/Touchscreen
-Steuerung über Netzwerkinternes Webinterface
-Steuerung über Schaltpult
-Parameteranzeige über PC/Netzwerk
-Verschiedene Überwachungseinrichtungen (Blocksicherung bei Kuppelbaren Bahnen, Endabschaltung bei PB's, Seillage, Spannwagenüberwachung und alles was mir gerade nicht einfällt)
-Kopierwerk sollte auch vorhanden sein
-Ein unabhängig von der Software wirkender Notaus
-Überbrückung bei Fehlauslösung oder zur Wiederherstellung des normalen Zustandes
-Abbremsung vor Stützenüberfahrten
-Vollautomatik (PB's fahren alle x Sekunden von alleine und warten dann x Sekunden)
-Teilautomatik (Automatische Geschwindigkeitsregulierung bei PB's, manuelle Abfahrt)
-Manueller Betrieb (komplett manuelle Geschwindigkeitsregulierung)
Da dies ja schon einiges ist, habe ich mir ein paar Gedanken gemacht, wie man diese Probleme am sinnvollsen lösen könnte.
2.1 Hardware
Bei meinen überlegungen wäre das Kernstück ein Arduino Uno.
Dieser hat 14 Pins für Digitalen Input und Output, davon unterstützen 6 die sog. Pulsweitenmodulation. (Das ist im Prinzip eine Art Dimmer, genauers auf Wikipedia etc.) Desweiteren gibt es noch 6 Analoge Inputs, die eine Spannung zwischen 0 und 5 Volt in 1024 Schritten messen können.
Da die Arduino-Pins nur Strom bis 40mA bei 5Volt verkraften, und der RB35 z.B. 2A bei 12 Volt benötigt, braucht man einen Verstärker. Hier bieten sich H-Brücken an, zum Beispiel diese hier: L 6205 N. Eine gute Einführung zu diesen Bauteilen gibt es hier:
http://www.arduino-tutorial.de/2010/06/ ... bridge-ic/
Hier mal eine Beispielaufstellung, für was man die Pins gebrauchen könnte:
1 RX via USB
2 TX via USB
3 (PWM) ->H-Bridge Speed
4 -> H-Bridge Direction
5 (PWM) -> H-Bridge Dircetion
6 (PWM) <- Motorimpuls für Kopierwerk
7 <- Endabschaltung 1
8 <- Endabschaltung 2
9 (PWM) <- Not-Aus
10 (PWM) <- Fertig
11 (PWM) <- Anwurf
12 <- Abfahrt
13 <- Halt
A0 <- Streckenstromkreis
A1 <- Wahl Auto / Teilauto / Manuell
A2 <- Speed
A3
A4 <- SDA von Rasperry Pi (I2C)
A5 <- SCL von Rasperry Pi (I2C)
Wie man sieht, habe ich in meinem Konzept einen Raspberry Pi über I2C (siehe Wikipedia) an die entsprechenden Anschlüsse angebunden.
Diesen könnte man mit Touchscreen, Tastatur, Maus, Netzwerk etc. verbinden, mehr dazu in 2.2 Software.
Jedenfalls würde der Rasperry Pi (Slave) über den I2C-Bus Signale an den Master (Arduino) senden, der diese dann auswertet und in Motorbefehle umsetzt, dazu ebenfalls mehr unter 2.2 Software.
An den I2C-Bus kann man auch andere nette Spielereien, wie zum Beispiel externe EEPROM-Geräte, einen weiteren Arduino zur Porterweiterung oder nummerische Displays hängen.
Soviel zur Hardware.
2.2 Software:
Fangen wir mit meinen Ideen beim Rasperry Pi an:
Auf diesem würde im Hintergrund ein Webserver mit apache und php laufen, der über die IP, z.B. 192.168.1.2, das Schaltpult als HTML in "Softwareform" ausgibt. Dieses holt sich die benötigten Werte via Ajax (siehe Wikipedia etc.) von einem PHP-Script, das für diese direkt auf den I2C-Bus zugreift.
Bei einem Tastendruck wird ebenfalls ein Signal per Ajax an ein PHP-Script gesendet, das dieses dann weiterleitet über I2C. Dieses Interface kann natürlich auch auf dem Rasperry Pi selbst laufen, weiterhin wäre eine Realisierung über WLAN aufs Smartphone denkbar, damit man gemütlich in der Sonne liegend die Bahn bedienen kann.
Diese Signale würden dann auf dem Arduino verarbeitet werden, und zwar möglichst Objektorientiert, das heißt, ein Programm kümmert sich nur um den I2C-Empfang, eins um die Motorsteuerung, eins ums Kopierwerk, eins um die Sicherheit etc.
Diese Programmierung werde ich evtl. demnächst schon in Angriff nehmen, da ich ein Arduino hier rumfliegen habe.
Bezüglich Sicherheit des ganzen: Sobald der Strom auf einem Sicherheitskreis abfällt würde ich empfehlen, den Motor via Relais stillzusetzen, WEIL man bei Sicherheitskritischen Funktionen meiner Meinung nach am wenigsten einem Windows- System, einem Linuxsystem auch nicht gerade viel mehr vertrauen sollte. Einem Arduino vertraue ich von der Stabilität her, allerdings gebe ich zu bedenken, das wir auch nur Menschen sind, und so bestimmt den einen oder anderen BUG mit einbauen.
Ich hoffe ich konnte einigen Anregungen über die Steuerungsvarianten von Modellseilbahnen geben,
und vielleicht bekomme ich ja auch ein paar Anregungen.
Die Steuerung meiner Modell-PB werde ich sehr ähnlich bauen, und natürlich auch den Quellcode direkt hier posten.
Ich habe diese Version bisher noch nie getestet und muss die Feinheiten auch erst noch Entwickeln, alle Versuche etc. auf eigene Gefahr!
Baut mit Elektr. Strom nur wenn ihr euch Sicher seid! An/mit Netzspannung dürfen nur Fachleute arbeiten!
Ich übernehme keine Haftung!
Bei Fragen helfe ich natürlich auch gerne, oder wenn man als Elektronik-Anfänger nur verstanden hat. (Hätte ich vor gut 1 1/2 Jahren auch noch)
Viele Grüße!
margau