1zu160 - Forum



Anzeige:


THEMA: Steuerung N-Anlage mit Arduino Minicomputer

THEMA: Steuerung N-Anlage mit Arduino Minicomputer
Startbeitrag
Angler - 06.03.15 17:15
Hallo N-Bahner

Ich habe mehrere n.Eisenbahnfahrenden Computer . Der Arduino Loenardo hat 6 analoge Eingänge  und 13 digitale Ein oder Ausgänge. Die Programmierung in einem C ähnlichem Diakekt ist einfach. Mit einem Arduino  Preis ca 22E können z.B 2 Zzuge auf einem Kreis fahren oder 4 Weichen und 4 Signale gestellt werden, in meienm Beispiel fahren 2 Züge auf einem Kreis gegeneiinder .

Ich suche interessierte Mitbastler zum Meinungsaustausch.
Bei interesse meine E-Mail  istt guenter-dorn@t-online.de

Gruss Angler

Hallo,

Arnold Hübsch hat vor kurzem so ein ähnliches Projekt entwickelt - vielleicht finden sich ja Gemeinsamkeiten, die für beide produktiv sind:
http://www.1zu160.net/neues/news.php?id=3150

lg
ismael
Bei mir werkeln einige AVRs auf der Anlage. Derzeit ist einer im Stelltisch und liest dort die Tasten und Schalter aus und erzeugt für 24 Weichen die Servosignale. Das geht alles noch mit einem einzigen 40 Pin IC. Ist schon faszinierend

Gruß
Klaus
Hallo zusammen,

bin auch schon immer drauf und dran mir einen Adruino zu zulegen.

Auf You tube gibt es massen weise Videos und Hilfen zur Programmierung. Z.B. hir.

https://www.youtube.com/watch?v=avOZaRoKVgg

Oder https://www.youtube.com/watch?v=PrMgJSGK0Ls

Gruß MartiN
Statt Arduino für verhältnismäßig viel Geld, gehe ich lieber den Weg diverse Atmel µCs direkt auf zubauen (und zu vernetzen).

Das ist nicht viel komplizierter, aber deutlich billiger.

Gruß

MiScha
Bei Ebay gibt es Arduino Nachbau Platinen aus China ab 1,- EUR (z,B, Micro Pro). Das ist legal, weil Open Plattform. Bei dem Preis ist der AVR alleine teurer...

Grüße, Peter W.
@ Peter na und?  Für die allermeisten wird dié Challenge sein, den Unterschied zwischen den Boardtypen zu erraten und was man nun kauft.. Micro für nen 5er beim deutschen Versand... willst Du Dir dann wirklich China und Zoll antun?

Wenn man ganz neu mit dem Thema einsteigt, dann sollte man sich ein Breadboard und Breakouts besorgen..

Zurück zum Thema: ich habe diverse Servosteuerungen damit realisiert, benutze allerdings auch rocrail und RPi.. In Kombination mit Arduino . Ja ja ich weiss RPi ist dann noch teuer und es gibt bei EBay bestimmt 4 EUR aus China.
@Mischa : der Vorteil bei Arduino ist, du bekommst halt shields ohne Ende von Servo bis hin Anzeigetafeln für Bahnsteig etc.bekommst du alles passend geliefert.
Wenn man nicht Stundenlang SMDs löten will, reinstecken und los.

.
.
....oh die Webseite von Herrn Hübsch ist ja ein Graus...
.
.
Hallo N-Bahner,

    ich bin gerade dabei mit Hilfe des Arduino MEGA's eine Platine zu entwickeln, die 10 .. 12 PWM gesteuerte Fahrtregler hat. Die Idee ist das jeder Bahnabschnitt ein eigenen Fahrregler bekommt, und immer der Abschnitt bestromt wird, auf der ein Zug fährt gerade fährt.

Die Platine soll dann auch noch 8 - 12 Weichen schalten können, das somit ein Arduino einen Anlagen Teil komplett steuern kann. Für meine geplante Anlage (1 x 2mm) mit Schatten Bahnhof brauche ich dann voraussichtlich drei Arduinos.

Gruß  Andreas



Sportlich

Hast Du die Endstufen für die Fahrspannungserzeugung schon fertig? Würde mich interessieren, wie Du die Dinger aufbaust.

Ist Deine Steuerung für Servos oder Magnetartikel geplant?

Gruß
Klaus
Hallo Jungs,

macht mal weiter, liest sich alles interessant, ach für mich als Elektroniklaien.

Auf dieses Klein(st)od bin ich jedoch besonders gespannt!
Zitat - Antwort-Nr.: 9 | Name: recyclestudio

Für meine geplante Anlage (1 x 2mm) mit Schatten Bahnhof




Schöne Grüße, Carsten
Hallo Klaus,

   ich möchte den L293D für jeden Abschnitt verwenden, und den Strom mithilfe des AD-Wandlers messen (1R Widerstand zur Masse). bei Kurzschluss schaltet der Arduino sofort ab. Da die Abschnitte meistens nur eine Lok drauf haben sollte das ausreichen.

Eventuell sollte ich noch für jeden Abschnitt eine Sicherung vorsehen, damit im Fehlerfall nichts kaputt geht. Es gibt welche, die bei zu hohem Strom auf machen, und wenn der Kurzschluss weg ist funktionieren sie wieder. Das sind Halbleiter Sicherungen die basieren auf einen VDR (Voltage Dependend Resistor). Sobald der Spannungsabfall zu groß wird, weil der Strom über den Widerstand zu groß wird. Dadurch verändert sich dieser Widerstand und begrenzt den Strom.

@ Carsten, OK meine Anlage wird ca 2000 x 1000 mm oder 2 x 1m. habe mich vertippt oder zuviel Bier getrunken.

Gruß Andreas

Moin,
@Andreas:
Mir geht nicht so richtig in den Kopf warum Du 3 Arduino zum Einsatz bringen willst.
Ich kenne natürlich nicht im Detail ob analog oder digital fahren willst, aber nach meinem Verständnis brauchst für einen Schaltvorgang genau einen GPIO. Beim Mega hast Du 54 IO.
Das sollte doch locker reichen?
Wie kommst Du auf die 3?

Viele Grüße Tom

EDIT: Wenn Digital würde ich einfach einen klassischen Booster besorgen und den zwischen setzen. der schraubt Dir das Signal einfach auf die 14V.
Analog: dann ein einfaches Netzteil und die Rückmeldung über Reed Kontakte auslösen.



Wie kommst du auf 54? (Edit: hat sich geklärt).

Der von mir verwendete ATMega32 hat gerade mal 40 Pins, von denen 8 keine GPIO Funktion haben.

Die restlichen Pins teilen sich bei diesem auf 4 Ports auf. Mit PWM Generierung, Weichenansteuerung und Rückmeldung, sowie Kommunikation mit anderen ATMega Modulen sind die Ruck-Zuck weg.
(Je nachdem, was dort realisiert wird ;) )

Zudem kann man beim Einsatz von mehreren Modulen den Verkabelungsaufwand erheblich reduzieren.

Grüßle

MiScha
Hi
@MiScha: http://arduino.cc/en/Main/ArduinoBoardMega2560 54 davon 16 PWM => Möglicherweise ein neueres Release?
Ich selber "kämpfe" mit nem Leonardo.
Kenne also den Mega nicht im Detail.

Ich selber komme aber hin weil ich alles Sofwareseitig über den Pi regel.
Außerdem hat der PI auch noch ein paar GPIO zusätzlich
Die Servos kommen über ein 16er Servo-Shield.

Die Idee mit den IR-Sensoren im Gleisbett ist auch ne lustige Sache.

Interessant wäre außerdem ob man die nicht PWM fähigen GPIO Softwareseitig mit PWM belegen kann. grml* . das Wochenende ist damit gelaufen . Hab was zum rumfummeln gefunden.
Grüße
Tom

Hallo,

Zitat - Antwort-Nr.: | Name:

IR-Sensoren im Gleisbett


Das wollen wir im Verein auch nutzen, daran arbeite ich - die Reflexkoppler werden mit einem ATTiny13 gepulst betrieben und ausgewertet, um die Fremdlichtempfindlichkeit zu minimieren.

Grüße, Peter W.
Hallo,

wie viele Ports I/O-Anschlüsse sind, ist doch egal. Mittels des I2C-Bus lässt sich die Kapazität doch beliebig erweitern. Da an jedem Port ohnehin noch ein Treiber benötigt wird, zieht m.E. das Argument, dass man halt alles auf einem Chip hat, nicht so richtig.

Wer mit dem Arduino PWM-Signale erzeugt, möge bitte darauf achten, dass diese synchron sind, damit Bocksprünge beim Wechsel zwischen den Abschnitten vermieden werden.

Viel Erfolg, Grüße
Zwengelmann
Zitat

Mittels des I2C-Bus lässt sich die Kapazität doch beliebig erweitern.



Die Kosten für einen weiteren Controller sind ähnlich hoch wie für einen I2C Expander. Da würde ich lieber mehrere und dann auch dezentrale Controller einsetzen, anstatt mit hundert oder mehr Kanälen von einer Stelle aus irgendwas zu erschlagen. Wäre auch zusätzlicher Softwareaufwand für die indirekte Steuerung von Ausgängen/Eingängen. Synchrone PWM Pins lassen sich so ohnehin nicht bewerkstelligen.

Gruß
Klaus

Zitat - Antwort-Nr.: | Name:

Die Kosten für einen weiteren Controller sind ähnlich hoch wie für einen I2C Expander.



Zitat - Antwort-Nr.: | Name:

Wäre auch zusätzlicher Softwareaufwand für die indirekte Steuerung von Ausgängen/Eingängen. Synchrone PWM Pins lassen sich so ohnehin nicht bewerkstelligen.



Naja jedem so nach seinem Geschmack, wir sind uns glaube ich im Klaren, dass alles was wir hier machen, im Prinzip das "Rad neu erfinden" ist, es gibt ja einige funktionierende Löt Bausätze für alle möglichen Gegebenheiten. Gemessen an der Zeit die man damit verdattelt ist das ziemlich ineffizent. Preislich kann man so oder so nicht so viel sparen.
Ich glaube ich bin nicht der Einzige, der hier schon das ein oder andere Bauelement gehimmelt hat.

Wenn man allerdings Interesse am Elektrobasteln mit einem gewissen Ziel hat, der ist hier gut bedient. Deshalb war auch meine Frage eher warum Andreas das so lösen will, und weniger seine Vorgehensweise in Frage zu stellen. Nur mal so um Missverständnissen vorzubeugen-

  
Zitat

das "Rad neu erfinden" ist,



nur dann, wenn am Ende wieder das Rad rauskommt. Ich glaube schon, daß ein paar Leute durchaus auch Dinge zusammenbasteln, die bisher so nicht am Markt verfügbar sind.

Zitat

Gemessen an der Zeit die man damit verdattelt ist das ziemlich ineffizent.



Wenn das, was man bereits am Markt kaufen kann im Wesentlichen das tut, was man sich wünscht, dann ist es sicherlich nicht sinnvoll. Wenn man aber eigene Ziele verfolgt, die derzeit noch nicht von gängigen Komponenten abgedeckt sind, dann kann das durchaus auch in Summe effizient sein. Denn der Einstieg in die Thematik ist heute so einfach wie nie zuvor. Fertige Hardware, zumindest mal die Controller-Boards, reichhaltige Funktionsbibliotheken und breit gestreutes KnowHow. Da kann man durchaus die passenden Dinge zusammen bringen und eine gute Lösung in kurzer Zeit hinbekommen.

Gruß
Klaus
Zitat - Antwort-Nr.: 19 | Name: teppichbahner

Synchrone PWM Pins lassen sich so ohnehin nicht bewerkstelligen.



Hallo Klaus,

ich schrieb nirgends von synchronen PWM-Pins. Ich schrieb davon, PWM-Signale zu erzeugen. Das ist ein kleiner Unterschied. Mit Mikrocontrollern anfangen und dann noch nicht einmal eine Funktionalität wie bei Heißwolf hinzubekommen wäre doch unter unserem Niveau, oder? Man kann ein PWM-Signal auch von Hand erzeugen. Ist halt etwas mehr Aufwand.

Ein Arduino hat (für einen solchen Zweck) eine geradezu aberwitzige Rechenleistung. Auf einen Interrupt reagieren, ein paar Zähler dekrementieren und bei Bedarf einen Ausgang umpolen dauert doch nur ein paar Mikrosekunden. Die meisten Leute packen die gesamte Funktionalität in die Hauptschleife, pollen die Eingänge und vergeuden damit den Großteil der Rechenzeit. Wenn man sich ein bisschen mit Interrupts befasst, werden die wichtigen Dinge schön sauber von außen getriggert und die Hauptschleife ist nicht permanent im Wartezustand.

Meine bisher komplexeste Anwendung auf einem Arduino Uno hatte 32 I2C-Eingänge abzufragen. Bei jeder Statusänderung wird ein Interrupt ausgelöst und die Daten eingelesen. Der Arduino wertet die Daten aus und steuert eine angeschlossene Maschine. Per Ethernet-Shield werden alle paar Minuten Statusdaten an einen Webservice gesendet und dort in einer Datenbank abgelegt. Das funktioniert sogar, wenn der Webservice einmal nicht erreichbar ist. Der Ethernet-Shield hat dann seine Timeouts. Stört aber niemanden, weil die Daten dank der Interruptsteuerung trotzdem erfasst werden und die Steuerung dadurch nicht behindert wird. Selbst die fehlenden Daten könnte man durch eine Round-Robin-Technik in einem gewissen Maß puffern und vorhalten, bis sie wieder abfließen, das wurde vom Kunden jedoch nicht gefordert.

Die einzige Schwachstelle sehe ich darin, dass der Arduino von Haus aus keine Mutexe bzw. Semaphoren kennt. Das kann man in einer ISR zwar per statischer Variable simulieren und es funktioniert auch, aber ein Beigeschmack bleibt.

Viele Grüße
Zwengelmann
Zitat - Antwort-Nr.: | Name:

Wenn man aber eigene Ziele verfolgt, die derzeit noch nicht von gängigen Komponenten abgedeckt sind, dann kann das durchaus auch in Summe effizient sein.



Meine Motivation war eine ganz andere, ich habe mich auf dem Markt umgesehen, und habe keine Lösung "gesehen" die meinen Bedürfnissen entsprach, oder wo man viel Geld ausgeben musste um exakt das zu bekommen was ich haben wollte.

Ne kleine Low Level Bahnsteuerung mit der ich ein bisschen Licht und ein paar Züge laufen lassen wollte, die beliebig skalierbar ist. Das gibt es dann ab 500€aufwärts- dachte ich.
Das habe ich relativ schnell und günstig realisiert bekommen (und dabei festgestellt, das ich nicht der Einzige bin da bastelt), nunja der Rest war dann so mein eigener Ehrgeiz.

So ich bastel zum Beispiel gerade an einem Rückmelder für Kato-Weichen.
Elektronisch passt das schon, nur die mechanische Seite die ist noch nicht Wasserdicht, der bisherige Ansatz war, den Stellhebel mit Kontakten zu versehen, die dann entsprechend Auskunft über den Zustand geben. Am Wochenende werde ich mir die IR-Sensoren und die Weichen genauer anschauen, vielleicht geht da ja was.
@22:
Zitat

ich schrieb nirgends von synchronen PWM-Pins.



hast Du nicht?

@18:
Zitat

Wer mit dem Arduino PWM-Signale erzeugt, möge bitte darauf achten, dass diese synchron sind,





Die Arduino-Bibliotheken gefallen mir persönlich meist nicht. Einfache Sachen gehen ganz schnell, aber bei 2 Interrups gleichzeitig wird es dann schon wieder spannend.

Wenn man mit Semaphoren und Threads basteln will, dann halt Contiki oder FreeRTOS. Oft schießt man damit aber gute 20 Meilen über das Ziel hinaus. Aber wer Spaß dabei hat, kann auch das so machen. Oft ist ohnehin der Weg zumindest Teil des Ziels

Wie auch immer, ich verwende lieber gleich ein paar AVRs anstatt noch irgendwelche I2C Bausteine zu integrieren. Viel mehr wollt ich ja gar nicht sagen


Gruß
Klaus



Hallo,

für einfache Aufgaben sind auch Schieberegister über SPI ausreichend, und schneller als I²C.

Grüße, Peter W.
Zitat - Antwort-Nr.: 16 | Name: TomIRL

. Interessant wäre außerdem ob man die nicht PWM fähigen GPIO Softwareseitig mit PWM belegen kann. grml* . das Wochenende ist damit gelaufen  . Hab was zum rumfummeln gefunden.



So erzeuge ich meine PWMs ... Bisher brauche ich allerdings nur 4, wäre aber skalierbar.

Ansonsten ist bei mir selbstverständlich alles Zeitkritische in die ISRs ausgelagert.
Und da ich einen Standalone ATMega habe, brauche ich auch keine Arduino Bibliotheken ... das braucht kaum mehr KnowHow bzgl der SW Entwicklung und zudem gibts da wirklich Hilfe genug.

Davon abgesehen: Selbst wenn alles schon mal dagewesen ist, machts auch Spaß.
Das war einer meiner Gründe das so zu machen. Zudem kann ich so das System zusammenbauen, daß es perfekt für mich passt.

Grüßle MiScha

Hallo N-Bahner

   Tom wollte wissen warum ich für meine Anlage drei Arduino MEGA verwenden möchte. Der MEGA hat wenn ich es richtig im Kopf habe 12 PMW Ausgänge die an den internen Timer dranhängen. Ein Timer der zwei PWM Ausgänge bedient, wird beim Arduino für interne Timer und Schnittstellen verwendet. Da ich die Timer mit einander synchronisieren will und auch ne PWM Frequenz von 16kHz haben möchte, fallen dann mindestens zwei PWM Ausgänge weg. Wie viel dann übrig bleiben, muss ich ehrlicherweise noch rausfinden.

Zweitens möchte ich die Strommessung verwenden um fest zustellen ob eine Lok auf dem Gleis steht. In dem ich das Gleis für z.B. ein paar Millisekunden bestrome und schaue ob Strom fließt. D.h. ich brauche für jeden PWM Kanal auch ein AD-Wandler Eingang.  

Der L293D hat ja Zwei Brückenschaltungen. Jetzt möchte ich eine, die nur die beiden Enden des Gleisabschnitts und eine, die das Zwischenteil bestromt. Wenn die Lok in den Gleisabschnitt rein fährt bestrome ich beide Brücken, sobald sie drin ist schalte ich die Enden aus, und bin dann sicher das die Lok dann im Gleisabschnitt am Ende stehen bleibt.

Dafür brauche ich für jeden Regler  einen Ausgang für PWM, und zwei die dann die Fahrtrichtung bestimmen und bestimmen ob die Enden oder die MItte bestromt werden soll. Dazu kommt dann noch der AD-Wandler Eingang.
Und schon sind 40 Pins verbraucht.

Dann hoffe ich, das noch ein paar Ausgänge frei sind damit ich noch ein paar Weichen schalten kann.  Ansonsten kann man das mit Schieberegister an der SPI machen.

Am Ende soll dann eine geroutete Europlatine (160x100mm) rauskommen, die 8 - 10 Regler hat und auch  mindestens 8 Weichen schalten kann. Je nach benötigen Gleisabschnitten schalte ich die entsprechende Anzahl Platinen parallel, verbinde sie mit I2C und dem externen  Clock für die Timer Synchronisation, und schließe das ganze an einen Host uController an der den ganzen Krempel dann steuert.

Jedenfalls ist das mein Plan.  

Also mit anderen worten fahre ich dann mit meinen analogen Loks quasi digital.

Viele Grüße

       Andreas
Hallo,

Zitat - Antwort-Nr.: | Name:

eine geroutete Europlatine


Wozu brauchst Du dann noch den Arduino? Da kannst Du gleich den AVR mit drauf setzen.

Grüße, Peter W.
Hallo Peter,

     wenn ich von der Platine ne größeren Stückzahl bauen würde, bestücken lasse und die dann auch noch verkaufen, würde sich der mehr auf jeden fall aufwand lohnen.

Ich brauch aber nur drei Platinen plus zwei als Ersatz davon. Mit dem Arduino bekommst du noch die USB Schnittstelle zum programmieren und debuggen dazu, so wie die Stromversorgung für die 5V digital. Must den Baustein mit seinen über 100 Anschlüsse nicht selber löten. Was bei mir in der Firma unter Mikroskop kein Problem währe, aber zuhause mit Lupe sich doch als etwas schwieriger herausstellen wird. Die anderen Bauteile sind auch alles "Grobmotoriger" Bauteile (minimal 0603). Da kann ich mir dann auch den Bestückungsdruck sparen.

Du must dich auch nicht um das Layout um den Quarz herum kümmern. Obwohl, 16MHz sind ja fast noch Gleichstrom. Wenn ich da meine HF Kollegen mit den GHz sehe. Und Du bekommst ein getestetes Modul, und must dir um diesen Bereich keine Gedanken machen.

Zweitens bekommst du den MEGA für 16 Euro in der Bucht, und wenn ich meinen Chinesischen Kollegen bitte, bringt er mir ein paar für 10 - 12 Euro das Stück das nächste mal mit.

Gruß Andreas

Hallo,

da es mein erster Beitrag ist, möchte ich mich kurz vorstellen.
Mein Name ist Oliver (im Internet aber immer Hobbes), bin 49 Jahre alt und Maschinenbauingenieur. Beruflich war ich als Softwareentwickler tätig.

Nach 40 Jahren habe ich "meine" Moba zurückbekommen.
Mein Vater ist auf H0 umgestiegen. Nachdem ich meinem Vater natürlich helfen musste bei der Anschaffung und Betrieb von digitalen Komponenten, ist mir die Lust auf eine Digitalisierung meiner N- Anlage aber vergangen.

Jetzt verzweifle ich aber am Gleisplan. Für jeden Zug ein Oval! Wird alles viel zu viel.

So habe ich Möglichkeiten gesucht und bin auf diesen alten Beitrag gestoßen.
Für mich, hoffentlich genau das richtige. Hab schon viele Ideen im Kopf wie das Programm aussehen bzw. funktionieren soll.
Aber auf der Hardwareseite schwächel ich.

Daher die Fragen. Hat es bei euch funktioniert? Wo gab es Probleme?
Welche Hardware könnt ihr mir empfehlen?

Einen Arduino Nano habe ich noch.

Wäre das ein brauchbares Motor Shield?

https://www.amazon.de/Elegoo-Motortreiber-Ardui...no+Nano+Motor+Shield  

Möchte erstmal ein Oval in 4 Gleisabschnitte unterteilen und zwei Züge laufen lassen.

Gruß Hobbes
    
Hallo Hobbes,

Du brauchst Rückmelder (können auch Reedkontakte sein) und für jeden Abschnitt einen Motortreiber.
Ich möchte Dir nicht zu nahe treten, aber wenn ich mir Deinen Beitrag durchlese, kann ich mir vorstellen, dass Du mit einem einfachen Blockbaustein besser bedient wärst.

Viele Grüße
Zwengelmann
Hallo Zwengelmann,

das ich erstmal sehr naiv an die Sache rangehe ist mir klar.
Ich dachte man braucht einen Arduino, welchen ist mir schon nicht klar.
Dann ein Motorshield, welcher 4 DC Motoren steuern kann und man den Strom messen kann. Dann noch ein Netzteil, dachte das finde ich im Keller.

https://www.amazon.de/SainSmart-Lernpaket-Proto...Arduino+Motor+Shield

Komme ich damit weiter oder wieder falsch?



Hallo Hobbes,

eigentlich sind solche Schields zur Ansteuerung von Schrittmotoren gedacht, Du kannst damit natürlich auch vier Gleichstrommotoren ansteuern. Dem Bild nach handelt es sich um den Adafruit-Motorshield ( https://learn.adafruit.com/adafruit-motor-shield/overview ). Damit sollte das gehen. Der Arduiono sollte für Deine Zwecke reichen.

Grüße
Zwengelmann


Nur registrierte und eingeloggte User können Antworten schreiben.
Einloggen ->

Noch nicht registriert? Hier können Sie Ihren kostenlosen Account anlegen: Neuer N-Liste Account





Zum Seitenanfang

© by 1zu160.net;