• 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

Analog automatisch abbremsen und anfahren - mit Arduino

@Andre1980
Man muss die Ergebnisse von digitalRead() in eine Variable speichern, sonst funktioniert die Abfrage im Programm nicht, das ist m.E. eine Macke des Compilers. Bei dem geringen Speicherbedarf braucht man sich aber erst mal um bytes oder bits keinen Kopf machen.
Das Andere sind doch sowieso nur Festlegungen für die PinNr.
 
Zuletzt bearbeitet:
Das meinte ich. Wenn man die Lokdaten weiterschickt, darf man keinen Zug entfernen bzw. austauschen, ohne das man die Loks neu eingeben muss.


Etwas anderes, wo ich mich frage ob es funktioniert. Bleiben die Loks in den Blocks stehen, wenn ich irgendeine Lok in Gegenrichtung rangiere? Oder fahren dann alle in Gegenrichtung an?

Das Prinzip ist doch das Gleiche wie die Zugnummernmeldung auf Gleisbildstellpulten der realen Bahn (ZNA). Im Gegensatz zu dem in der Modellbahntechnik angewandten "Erkennen" des Zuges auf dem Gleis, wird mit einem Gerät ein Zug "eingegeben" oder "gelöscht" und diese Information wird dann - entsprechend der gestellten Fahrstraßen und der Gleisfreimeldung weitergereicht.

In dem von mir geplanten Nachbau des GS II Sp64b will ich das ähnlich machen und so auf Railcom oder Transponder verzichten. Da ich ja eh das Spurplankabel habe, reicht es, eine weitere Ader für die Zuginformation vorzusehen und diese via 1-Wire Bus von Gleismodul zu Gleismodul entsprechend der gestellten Fahrstraße weiterzureichen.
 
Wenn ich nach dem FKTT-Treffen in Zella-Melis Zeit haben sollte - falls das Wetter besser ist, muss ich unbedingt einen Personenwagen für die Gartenbahn bauen. Nicht so groß, nur ca 2,5m lang und 70cm breit, mit Drehgestellen und Druckluftbremse - überlege ich mir das noch mal mit der Mess- und Bremsstrecke ohne Halteabschnitt :)
 
Im Schaltplan ist, "Fahrspannung" an A1, und "Ist Spannung im Bereich" an A2, angeschlossen.

Im Sketch ganz oben beschreibst du, "Fahrspannung" an A2, und "Ist Spannung im Bereich" an A1.

Müssen die Anschlüsse anders sein als im Schaltbild oder ist der Komentar im Sketch fehlerhaft. Oder interpretiere ich etwas falsch?


Edit: und Signal für Relais ist an D7 im Sketch und D2 im Schaltplan.
 
Das sind die Werte von meinem Shield. Dann ersetze die Zuordnung doch einfach durch die im Schaltplan. Wird genauso funktionieren. Also Vr_analog=2 und Vf_analog=1, Signal = 2. Das ist doch gerade der Vorteil einer symbolischen Zuordnung. Nochmals bitte: Das soll hier kein Arduino-Kurs werden.
 
Ja. Ich hatte das nur erkannt und wollte sicher gehen das ich mich nicht irre.

Jemand anders, der ein Arduino hernimmt, den Sketch unangepasst hernimmt, den Schaltplan aus Post 5 nimmt, wundert sich dann vielleicht nur, warum es nicht funktioniert, da Schaltplan und Sketch nicht zusammen passen.

Dennoch, dickes Danke für deine Mühe.
 
Nochmal zum Schlatplan. Auf das Relais würde ich gern verzichten. Das Relais direkt mit auf die Platine sollte man wegen den Induktiven Strömen wohl eher nicht machen, oder?

Für das Signal, nehme ich zwei Ausgänge vom Arduino. Die ich jeweils auf Masse Ziehe.

Jetzt nur noch die Frage, wie ich die Verbindung 11/14 schalte. Ich hätte an ein Ausgang gedacht den man High schaltet. Nur was bietet sich dort zum Schalten an? Ich dachte an einen Mosfet. Reicht da ein Einzelner? Oder muß das so eine Kombination wie oben werden? Ich vermute ja.


Was für eine Aufgabe hat eigentlich die 1N4001 die beim IRF9510 vom Drain zum Source geht?
 
Nochmal zum Schlatplan. Auf das Relais würde ich gern verzichten. Das Relais direkt mit auf die Platine sollte man wegen den Induktiven Strömen wohl eher nicht machen, oder?

Was für induktive Ströme denn? Den Strom, der durch die Signal-Hinleitung führt??

Wenn Du die StromSPITZEN meinst, die beim Abschalten der Erregerspule entstehen: dafür gibt es doch die Diode. Und wenn Du wirklich wegen irgendwelchen Induktivitäten Angstzustände bekommst, dann kannst Du auch einen Analogschalter verwenden. z. B. CD4053 oder 74HC4053 oder irgendwelche Dallas (Maxim's).

Siehe:
https://www.elektronik-kompendium.de/public/schaerer/anasw2.htm
 
Was für induktive Ströme denn? Den Strom, der durch die Signal-Hinleitung führt??

Wenn Du die StromSPITZEN meinst, die beim Abschalten der Erregerspule entstehen: dafür gibt es doch die Diode. Und wenn Du wirklich wegen irgendwelchen Induktivitäten Angstzustände bekommst, dann kannst Du auch einen Analogschalter verwenden. z. B. CD4053 oder 74HC4053 oder irgendwelche Dallas (Maxim's).

Siehe:
https://www.elektronik-kompendium.de/public/schaerer/anasw2.htm

Weis nicht mehr wo ich es gelesen habe, habe zuviel gelesen in letzter Zeit. Es ging darum das das Magnetfeld was sich im Relais aufbaut, einen Arduino resetten lies. Dort wurde empfohlen Magnetartikel soweit wie möglich von µC fern zu halten. Die Freilaufdiode ist für Spannungsspitzen.

Ich habe den Link begonnen zu lesen, und habe festgestellt wie gering mein Elektronik Horizont noch ist. Ich habe wirklich nix verstanden was dort steht.


Aber warum nutzt man ein Relais an der Stelle? Es ist schon etwas groß. Mit einem Transistor (oder kombination) sollte das doch auch gehen. Würde weniger Platz verbrauchen und sind Transistoren nicht auch billiger?
 
Das Relais hat den Sinn, dass Du Dir damit keine Gedanken machen brauchst, "wie" das Signal angesteuert wird. Vielleicht ist Dein Signal ein Magnetartikel, der nur mit Wechselstrom betrieben wird. Oder das Signal hat ein anderes Massepotenzial als die Spannungsversorgung des Arduino. Beides (vor allem letzteres) ist eben nur schwierig "elektronisch" zu lösen.

Also brauchst Du eine Art Potenzialtrennung und bist somit unabhängig.

Wenn es darum geht, den Arduino elektromagnetisch verträglich zu machen, dann wäre das Relais das letzte, an das ich denken würde... Da ist ein alter BTTB-Motor, bei dem die Drossel entfernt wurde, die in 20cm Entfernung vorbeifährt, schon weit schlimmer.

Es gibt aber durchaus ein Problem. Das ist aber weniger elektromagnetisch, als vielmehr abhängig von der Stromversorgung. Heißt: Damit das Relais schaltet, muss das Netzteil kurzfristig einen hohen Strom liefern. Je nach Aufbau des Netzteils kann das dazu führen, dass a) die Spannung einbricht oder b) der Ripple (also vereinfacht gesagt das Gegenteil der Glättung der Spannung) zunimmt. Das verträgt ein Atmel AVR gar nicht und geht im besten Fall in den Reset-Zustand. Wenn jetzt noch Koppelkondesatoren fehlen, dann verstärkt sich das Problem noch.

Nun hat aber der Arduino (auf dem ein AVR werkelt) noch mal eine Spannungkonvertierung, macht also z. B. aus 9V dann die benötigten 3,3V (oder 5V - je nach Version). Im normalen Arduino Nano ist da ein Micrel IC drin. Dieser reagiert auf schnelle, kurzfristige Spannungsänderungen der Eingangsseite sehr träge, zieht in dem Fall (sofern die Spannung nicht unterhalb der Ausgangsspannung plus ca. 1V fällt) den benötigten Strom aus dem Eingangskondensator. Somit ist das in diesem Fall weniger tragisch. Zudem schaltet das Relais nicht im Hochfrequenzbereich, sondern eher im Sekunden/Minutenbereich.

Heißt: Wenn Du Dein Relais aus den selben 3,3V (oder 5V) betreiben willst, wie der µC im Arduino selbst versorgt wird und Du das Relais im Kiloherz oder Megaherz-Bereich umschaltest, KÖNNTEST Du ein Problem bekommen. Aber nicht wegen elektromagnetischer Unverträglichkeit (was man mit räumlicher Trennung oder Abschirmung (Alu-Folie) zu lösen wäre), sondern wegen der elektrodynamischen Eigenschaften der Induktivität. Selbst wenn Du das Relais räumlich trennst, wird dieses Problem noch nicht gelöst, denn die Stromspitze wird auch über eine noch so lange oder abgeschirmte Leitung transportiert...

Also... wenn Du genau weißt, WIE Du Dein Signal betreibst - z. B. immer mit den 9V mit gleichem Massepotenzial wie der Spannungeingang Deiner Schaltung, dann würde ein einfacher Transistor als Schalter ausreichen. Ansonsten würde ich mir wegen des Relais erstmal keine Gedanken machen ;-)

Viel Erfolg.
Robert
 
Das war sehr informativ und verständlich erklärt, Danke.

Ja, das Signal besteht nur aus ein Paar LEDs. Da hätte ich auch keine Bedenken, das ohne Relais zu machen

Das Relais steuert aber auch die Ab und Zuschaltung des Halteabschnitts. (Schaltplan Post 5, Rechte Seite, Punkte 11 und 14)

Da das ganze Schienensystem schon an der Masse des Arduinos ist (zumindest der Blockabschnitt) sollte das mit der gemeinsamen Masse nicht stören, oder?

Dort wird ja auch nicht frequent geschaltet, nur ein PWM Signal durchgelassen. Bei Signal Frei muss der Strom da einfach durch und bei Signal Besetzt muss dort gesperrt werden.

Da ein Relais schon fast halb so groß ist wie der Arduino Nano, würde ich gern, nur für die eine Schaltung auf das Relais verzichten und lieber einen Transistor nehmen. Also nur aus Platzgründen sozusagen.

Da dort bis zu 18V und 1A Fließen (mal als Spitzenwert angenommen, normal sollte die Lok weniger verbrauchen), weis ich halt nicht ob da ein einzelner MOSFET reicht. Eigentlich sollten die 5V vom Nano reichen, oder? Wenn ich es richtig verstanden habe, fliest bei einem MOSFET wenig bis gar kein Strom ins Gate. Das Gate müsste dann über einen großen Wiederstand (10k Ohm?) an Maße.


Und was ich immer noch nicht verstanden habe, ich hoffe ich bekomme keine Haue, wie der Zug Rückwärts fährt bei dem Schaltplan. Wird die Masse mit dem Trafo verbunden? Kann ich mir eigentlich nicht vorstellen. Aber wie kommt sonnst auf das andere Gleis die Positve Spannung? Etwas früher im Thread stand etwas von negativer Spannung. Aber wie schafft der Arduino es auf die eine Gleisseite eine negative Spannung zu bringen? Das kann ich mir auch genauso wenig vorstellen. Ich kann mir einfach nicht erklären wie es funktioniert.

Danke für eure Mühe
 
Ich dachte, die "Gleisarbeiten" machen die IRF's auf der rechten Seite?

Die IRF's haben eine Diode eingebaut. Damit können die auch negative Spannungen zwar nicht schalten, aber sie werden dadurch nicht zerstört.

Will man beide Fahrtrichtungen "schalten" können, dann empfiehlt es sich, eine H-Brücke zu verwenden:
http://www.dieelektronikerseite.de/Lections/H-Bruecke - Die Andersherum-Schaltung.htm
Der Motor zwischen den "Schenkeln" der H-Brücke ist dann die Lok auf dem Gleis.

Ebenso könnte man mit einem Triac arbeiten, den man über einen Optokoppler treibt:
http://elektronik-kurs.net/elektronik/triac/
Das ist aber dann schon "höhere" Elektronik ;)
 
Nein, die Gegenrichtung wird nicht beschalten. Muß auch nicht. Auf dem Stück Gleisabschnitt in Gegenrichtung (Blau) des Blocks muß dann doch die Positive Spannung vom Fahrregler. Also kommt GND dann auch an den Fahrregler? Doch dann bekommt der Arduino doch Positve Spannung auf den GND. Ich versteh leider nicht wie das funktioniert. Funktionieren tut es ja laut ateshci.

Den Haltabschnitt, also nicht den Brems und Anfahrtsabschnitt, Steuert das Relais. Dies ist auf der linken Seite abgebildet. Pin 11 und 14 schließen den Haltabschnitt auf der rechten Seite, damit bei FREI auch die Lock anfährt, natürlich schön langsam mit der PWM, die vom Arduino verstärkt über die MOSFET kommt.
 
ANFBREMS.jpg
Jetzt noch mal zum Mitmeißeln mit Fahrtrafo und Bezeichnungen aus dem Sketch gezeichnet -hoffentlich sind jetzt alle Klarheiten beseitigt.
 
Danke, nach mehrmaligen lesen, denk ich es hat Klick gemacht.

Durch den gemeinsamen Nullleiter, der auch zum Trafo der Arduino Versorgung geht, hat der Arduino Eingang immer 5V mehr als der gemeinsame Nulleiter.

Dann sollte, wenn der Fahrtrafo in Gegenrichtung mit z.B. 12V betrieben wird, eine Differenz zwischen Arduino Eingang und "Blauer" Schiene von 17V bestehen und zwischen Arduino Eingang und "Roter" Schiene eine Differenz von 5V bestehen.

Wieder was gelernt, ich könnt dich knutschen. Danke
 
Hallo Andre,

die Antwort nach dem Kühlkörper kannst Du selbst ermitteln.

Dazu stehen im Datenblatt des IRF's zwei Informationen:

- "The TO-220AB package is universally preferred for all commercial-industrial applications at power dissipation levels to approximately 50 W."
- und das Diagramm in Figur 9 auf Seite 5.

Jetzt solltest Du Dir überlegen, welcher Strom maximal geschaltet werden muss und kannst daraus ablesen, wie heiß das Gehäuse bei diesem Strom wird und daraufhin entscheiden, ob das Gehäuse diese Leistung ohne Kühlkörper aushält.

Wenn Du meinst, dass es das nicht kann, dann musst Du einen Kühlkörper entsprechend des gewünschten Wärmewiderstands auswählen.

Viel Erfolg,
Robert
 
Jetzt solltest Du Dir überlegen, welcher Strom maximal geschaltet werden muss und kannst daraus ablesen, wie heiß das Gehäuse bei diesem Strom wird und daraufhin entscheiden, ob das Gehäuse diese Leistung ohne Kühlkörper aushält.
Hallo André,
die Interpretation des Diagramms von basis77 ist leider falsch.
Das Diagramm zeigt, wie hoch der Drainstrom bei entsprechender Gehäusetemperatur
maximal sein darf. Die Höhe der Gehäusetemperatur ist aber abhängig von der
umgesetzten Leistung im MOSFET, der Kühlwirkung des Kühlkörpers und der
Umgebungstemperatur.
Der MOSFET wird hier als Schalter betrieben, also Drainstrom maximal bei
Drain- Source- Spannung gegen 0 und Drainstrom gegen 0 bei Drain- Source- Spannung
gleich Betriebsspannung. Daraus ergibt sich, das kaum Verlußtleistung am MOSFET
entsteht, Du brauchst sicher keine zusätzliche Kühlung.
Auch arbeitet die Abbremsschaltung immer nur kurzzeitig und periodisch,
so daß sich der MOSFET immer wieder abkühlen kann.

Viele Grüße Wolfgang
 
Hallo,

Analogbahn Automatisierung. Ich mache das so ähnlich. Meine alten BTTB Loks laufen mit 120Hz PWM Frequenz und die neuen Piko Loks mit 16kHz PWM Frequenz. Alle Loks sind ausgemessen und für jede Lok ist eine individuelle Formel hinterlegt mit Anfahrpulsweite und Endpulsweite für die individuelle Höchstgeschwindigkeit und andere Eigenschaften. Die fahren alle mit Vorbild Geschwindigkeit. Den Rest macht eine H-Brücke u.a.
 
Zurück
Oben