• Hallo TT-Modellbahner, schön, dass du zu uns gefunden hast.
    Um alle Funktionen nutzen zu können, empfehlen wir dir, dich anzumelden. Denn vieles, was das Board zu bieten hat, ist ausschließlich angemeldeten Nutzern vorbehalten. Du benötigst nur eine gültige E-Mail-Adresse und schon kannst du dich registrieren.
    Deine Mailadresse wird für nichts Anderes verwendet als zur Kommunikation zwischen uns.
    Die Crew des TT-Boardes

Steuerung mit Arduino

meinTT

Foriker
Beiträge
104
Reaktionen
18
Ort
Erfurt
Hallo ihr da,

ich bin kürzlich über die Arduino-Plattform gestolpert und würde mal gerne wissen, ob jemand Erfahrungen mit diesem System zur Steuerung seiner Fahrzeuge und seiner Anlage hat.

Da ich eine Anlage aufbaue, auf der analog gefahren werden soll, ergeben sich nach dem Lesen verschiedener Seiten für mich zwei Vorteile:
1. Pulsweitenmodulation und Anfahr- und Bremsautomatik für einzelne Stromabschnitte
2. Programmierung des Arduino, um die Eingaben aus einem Gleisbildstellwerk möglichst einfach auf der Anlage umzusetzen (Weichen, Signale, Schalten von Stromabschnitten) und ohne aufwendige Verkabelung

Hat jemand positive oder auch negative Erfahrungen sammeln können?

Danke schon mal.
meinTT
 
Scheint so etwas wie eine Art Klein-SPS (Microcontroller) zu sein. Gelungen finde ich diese Steuerung Dass PWM Signale ausgegeben werden können, klingt schon mal interessant. Allerdings habe ich mich damit noch nicht beschäftigt. Setzt ja auch Programmierkenntnisse in C voraus. Ich bastle lieber mit meiner S5. Da ist das irgendwie komfortabler.

Interessierte können sich das hier mal durchlesen.
Dann ist da ja auch noch die Kostenfrage? das anpassen an die Moba spannung von 16V~ erfordert auch Koppelrelais. Wie es aussieht kann man auch 5V Servos damit betreiben. Aber man muß das Teil ja irgendwie programmieren......???
 
Prinzipiell mit jeder. An die Eingänge kommen Taster, Gleiskontakte, usw. Diese werden mit 24 V= betrieben. An die 24 V digitalen Ausgänge müssen dann allerdings Koppelrelais um die Moba Artikel zu schalten. Dazwischen ist die Sps mit den logischen Verknüpfungen, jeder Menge Zeitgliedern und Zählern, damit kann dann der Schattenbhf und die Blockstrecke sowie das Start - Ziel Gleisbildpult gesteuert werden, fahren tu ich analog mit Hand in Z-Schaltung. Das Zuschalten der Gleisabschnitte zum entsprechenden Trafo basiert auf dem eingestellten Fahrweg (Weichenstellungen) Zusatzschaltungen wie analoge Bremsschaltungen für den automatischen Blockbetrieb sind natürlich erforderlich. Am Signalstandort ist z.B. ein Kontakt dermit jeder Metallachse neu ausgelöst wird. Kommen keine Impulse mehr, läuft eine Zeit ab und gibt den dahinter liegenden Block frei. Im Bremsabschnitt vor dem Signal ist auch ein Kontakt, der nur bei rot zeigendem Signal aktiv ist und die Bemsschaltung veranlasst die Spannung auf 0V abzusenken. Die Bremsstrecken sind allerdings unterschiedlich, je nach Motor. Bei der großen Bahn stehen aber auch nicht alle genau 20m vor dem Signal. Deshalb sehe ich das nicht so eng. Der Zug muß aber komplett im Bremsabschnitt sein, da besonders Kühn Schnellzugwagen die Trennstellen überbrücken und das absenken der Spannung dann nicht funktioniert. Bei Güterzügen ist das unkritisch.
Ein gewisser Verdrahtungsaufwand ist allerdings auch erforderlich.
Nachteil ist bei der S5 das Speichern der Zustände beim Ausschalten der Anlage, da dafür eine Stützbatterie erforderlich ist. Ist die leer dann muß das Programm neu geladen werden und damit sind alle Merker weg. Das Programm ist auf einem EEprom, der im AG mit dem Copy Schalter beschrieben werden kann. Da ich kein Eprom Programmiergerät habe bin ich auf diese Variante angewiesen. Das Interessante ist aber: man kann Schaltungen ausprobieren und optimieren ohne immer viel zu verdrahten und zu löten. Funktioniert es nicht, wird was anderes ausprobiert. Wird zB. eine Weiche zusätzlich eingebaut, braucht man nur 2 weitere Ausgänge und ggf. einen Taster im Pult nachrüsten, alles andere wird in die Logik hineingebastelt bis es geht.
Man braucht noch die Programmiersoftware und einen TTY / RS232 Schnittstellenwandler um die Programmierschnittstelle mit dem PC zu verbinden. Mit einer geeigneten Visualisierungssoftware ist sicher auch eine Bedienung über den PC möglich - ähnlich wie in der Industrie
 
Ich benutze einen Arduino Duemilanove, ein Ardumoto-Shield und ein 192x64-Pixel GLCD, um Weichen (und zukünftig auch Signale) digital zu steuern. Quasi eine Art digitales Stellpult. Anbei ein paar Bilder.
 

Anhänge

  • arduino-display.jpg
    arduino-display.jpg
    96,1 KB · Aufrufe: 305
  • arduino-innenleben.jpg
    arduino-innenleben.jpg
    105,4 KB · Aufrufe: 293
Damit kann man auch die Moba steuern ? :fasziniert:

Nicht jeder wird es können, aber prinzipiell gehts schon. Mein Bahnhof und mein BW werden auch über eine S5 gesteuert.
Vorteil:
-einfache Verdrahtung mit relativ wenig Aufwand
-S5-Elemente sind sehr günstig in der Bucht zu erwerben

Nachteil:
-man muss sie auch programmieren können (entsprechende Kenntnisse und Hardware sind Pflicht)
 
Hier mal mein digitales Stellpult, ein LC Display mit Touchscreen, links der Bildschirmcontroller mit einem Atmel, rechts die "Zentrale" mit 2 PICs, der kleine erzeugt das DCC Signal, der andere steuert Display, fragt Handregler ab und kann SRCP Befehle vom PC per USB empfangen, derzeit nur für die CV Programmierung
 

Anhänge

  • DSC02923.jpg
    DSC02923.jpg
    56,6 KB · Aufrufe: 228
  • DSC02924.jpg
    DSC02924.jpg
    116,3 KB · Aufrufe: 208
Ich benutze einen Arduino Duemilanove, ein Ardumoto-Shield und ein 192x64-Pixel GLCD, um Weichen (und zukünftig auch Signale) digital zu steuern. Quasi eine Art digitales Stellpult. Anbei ein paar Bilder.

@Hammy
Sind die Weichen direkt an das Motorshield angeschlossen? Also per Motor-Weichenantrieb?
Und sind durch das aufgesetzte Motorshield alle weiteren Pins belegt? Das scheint für mich aus einem FAQ zum Adafruit Motorshield hervorzugehen. Dann wäre nämlich die Frage, ob die Signale über die Weichen oder direkt über den Arduino ansteuerbar sind.

Mmmh, doch recht komplex, das Ganze...
 
Der Arduino erzeugt ein DCC-Signal, was über das Ardo-Moto-Shield nur verstärkt wird. Das geht dann an die Digitaleingänge der DCC-Servo-Dekoder. Damit ist der Arduino nur eine sehr einfach gehaltene Zentrale für Zubehör.
 
Hi Jungs,
ich hab von der ganzen SPS-Programmierei nicht soo viel Ahnung, finde das aber ganz spannend. Irgend wie fehlt mir aber immer der Einstieg. Der Arduino scheint das ja sehr zu erleichtern. Ein paar fragen stellen sich mir aber gleich zu Anfang:
Das Programm wird über USB vom Rechner auf den Arduino geladen und läuft umgehend an. Wenn der Strom weggenommen wird, muß man das Programm neu laden?

Bei Wiki steht, dass es 14 I/O Ports gibt. Wenn ich jetzt aber damit zB die Logik eines Fahrstraßenstellpultes nachbilden will, dann komme ich mit 14 Ports ja nicht weit. Ein Fahrstraßenstellpult für meine Überleitstelle Trebbichau hätte schon mindestens so viele Taster. Und da hab ich noch nix ausgegeben (Signale Weichen).
 
Das Programm bleibt dann schon erhalten, nur neu Versionen werden aufgespielt.
Normalerweise benutzt man die Ein/Ausgänge nicht direkt.
Zum Beispiel könnte man die Eingänge über eine Matrix 4x4 = 16 Tasten oder z.b. einen Touchscreen abfragen, Ausgänge können ein DCC Signal oder proprietäres Signal erzeugen um dann Dekoder anzusteuern.

Holger
 
Hi Jungs,
ich hab von der ganzen SPS-Programmierei nicht soo viel Ahnung, finde das aber ganz spannend. Irgend wie fehlt mir aber immer der Einstieg. Der Arduino scheint das ja sehr zu erleichtern. Ein paar fragen stellen sich mir aber gleich zu Anfang:
Das Programm wird über USB vom Rechner auf den Arduino geladen und läuft umgehend an. Wenn der Strom weggenommen wird, muß man das Programm neu laden?

Bei Wiki steht, dass es 14 I/O Ports gibt. Wenn ich jetzt aber damit zB die Logik eines Fahrstraßenstellpultes nachbilden will, dann komme ich mit 14 Ports ja nicht weit. Ein Fahrstraßenstellpult für meine Überleitstelle Trebbichau hätte schon mindestens so viele Taster. Und da hab ich noch nix ausgegeben (Signale Weichen).

Wenn ich es richtig verstanden habe, können mehrere Shields übereinander auf das Board gesteckt werden (Verbindung über einen I2C-Bus). Damit wären mehrere Sensor-Shields oder Motor-Shields nutzbar. Soweit zur Theorie...

Hier ist ein Projektbeispiel:
http://openfacts2.berlios.de/wikide/index.php/BerliosProject:MicroSRCP
Den Link habe ich hier im Forum in einem älteren Beitrag finden können.
 
Da steht auch das man mehrere Arduinos koppeln kann. Aber wie das funktioniert, steht da nicht. Läuft auf jedem die gleiche Software, kaskadieren die die Ports ??? Die Seiten sind für den Einstieg wenig hilfreich :( Ich will wissen wie ich das angehen muß. Aber ich muß mich glaube auch bei Gelegenheit erst noch tiefer einlesen. Z.B. die TCP-Brücke ist für die Modulerei interessant. Da könnte man das Stellpult gleich mit unserer Zugmeldung koppeln (die hat ne TCP-Schnittstelle (von mir))
 
Hier sind detailliertere Erläuterungen (auch zum Verbinden von zwei Boards):
http://prdownload.berlios.de/microsrcp/MicroSRCP_T0_91.pdf

Leider habe ich noch nicht herausgefunden, ob beim Aufstecken eines Motor-Shields gewisse I/O-Ports nicht mehr genutzt werden können. Theoretisch ja nicht, da die Shields über den I2C-Bus verbunden werden. Aber warum verwendet der Autor der o.g. PDF mehrere Arduino (1x für Motoren und 1x für Weichen, Signale)?

Ich würde lieber einen "großen" Arduino Mega 2560 mit 54+16 Ports kaufen und diese für Signale, Weichen, Taster u.ä. verwenden und ein Motor-Shield oben aufsetzen. Aber ist dies falsch gedacht? Lieber doch erst klären und dann konsumieren...
 
Natürlich werden für das Motor-Shield entsprechende Portpins benötigt. Schau dir einfach den Schaltplan des jeweiligen Shields an und du wirst sehen, welche Pins benötigt werden.

Bzgl. Arduino Mega: beschreib doch mal, wofür du soviele Anschlüsse brauchst. Bei mir gehen die meisten Pins für das Display drauf. DCC braucht einen, der Rotary-Encoder einen, das Serial-Interface zwei.
 
Im deutschen Forum hab ich vorhin gefunden, dass man Multiplexer einsetzen kann. Ich denke dmit kann man die Anzahl der nötigen Eingänge schon mal schön reduzieren. Mein "Frontend" soll ja ein vorbildnahes Fahrstraßenstellpult werden. Muß mal zu Hause die die Zeichnung raus suchen.

Noch nix gefunden hab ich zur Kommunikation der Boards untereinander. Da steht zwar, das die ganze einfach über den Bus verbunden werden. Aber wenn ich zB in einem Board die Schalter und Belegtmelder auswerte und das andere Board dann die Weichen und Signale stellen soll, müssen die sich ja irgend wie unterhalten. Das ganze soll dabei möglichst ohne Rechner im Backend funktionieren.
 
Natürlich werden für das Motor-Shield entsprechende Portpins benötigt. Schau dir einfach den Schaltplan des jeweiligen Shields an und du wirst sehen, welche Pins benötigt werden.

Bzgl. Arduino Mega: beschreib doch mal, wofür du soviele Anschlüsse brauchst. Bei mir gehen die meisten Pins für das Display drauf. DCC braucht einen, der Rotary-Encoder einen, das Serial-Interface zwei.

Ok, den Schaltplan schaue ich mir an...

Da ich keinerlei digitale Komponenten besitze und auch nicht kaufen möchte, dachte ich mir so, dass ich jedes Signal, jeden Taster und jeden Weichenantrieb einzeln an das Board anschließe (siehe auch Beispiel MicroSRCP). Dementsprechend benötige ich viele Anschlüsse, kann aber damit auf Bus und Decoder verzichten.

Hier ist ein Multiplexer:
http://store.arduino.cc/eu/index.php?main_page=product_info&cPath=11&products_id=129
 
Der µC soll die Steuerlogik enthalten. Bei einem Fahrstraßenstellpult hast du ja Abhängigkeiten und zB einen Fahrstraßenspeicher. Das alles kann der µC übernehmen. Klar kann man das auch diskret aufbauen. Wird aber ein ziehmliches Käfergrab. Kann schon sein das der µC unterfordert ist. Aber dafür einfach und billig?
 
Du könntest den µC ein DCC Signal erzeugen lassen und damit Dekoder steuern. Dazu braucht es nicht mal einen Booster.
Edit: dann wäre man auch flexibel alles an eine "richtige" Zentrale anzuschließen, einfach nur umstöpseln ....

Holger
 
Viele Taster schließt man üblicherweise nicht einzeln an diverse Portpins, sondern baut sie z.B. in eine Matrix. So kann man bspw. mit 8 Portpins ohne Einsatz eines zusätzlichen ICs 4x4=16 oder 3x5=15 Taster abfragen. Mit einem 3-bit-nach-8-Wandler (im Ju+Te-Computer wurde ein 8205 verwendet) kann man dann z.B. 5x8=40 Taster abfragen.
 
Wochen später...

Ich habe mich jetzt entschlossen, den Punkt "PWM" mit dem Arduino Uno und einem Adafruit-Motorshield zu testen.

Die Steuerung der Bahnhöfe und eines Abzweiges werde ich mit jeweils einer anderen Variante (unter anderem mit dem Arduino) umsetzen. Mal schauen, was mir am besten gefällt, was geht und was nicht und wie die Kosten aussehen.

Vielen Dank an euch für die Tipps...
 
Ich benutze einen Arduino Duemilanove, ein Ardumoto-Shield und ein 192x64-Pixel GLCD, um Weichen (und zukünftig auch Signale) digital zu steuern. Quasi eine Art digitales Stellpult. Anbei ein paar Bilder.
Ich hab das Ardumoto-Shield rausgeschmissen und durch einen einfachen Transistor mit Widerständen als Verstärker ersetzt. Grund war, dass die Servodekoder von jokashop mit dem Ardumoto sonst nicht geschaltet haben, nicht mal bei einer Versorgungsspannung von 15V. Jetzt mit der Billiglösung funktioniert es auch mit 12V (auch für die Qdecoder).

Ich habe lange nach einem passenden Gehäuse gesucht. Jetzt bin ich mit der Käsedose von Mepal Rosti sehr zufrieden. Sie ist günstig und gut zu verarbeiten - siehe meine Rezension.
 
Zurück
Oben