• 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

ateshci

Foriker
Beiträge
5.188
Reaktionen
2.385 24
Ort
Friedberg
Hallo allerseits,
jetzt also das zweite versprochene 'Analogfaß'. Für eine schöne Ablaufsteuerung im Analogbetrieb braucht man ja immer das einstellbare, vorbildentsprechende Anhalten vor dem Signal und genauso langsames Anfahren nach Freigabe. Wie es mit Hilfe klassischer Analogelektronik geht, habe ich ja schon gezeigt, hier soll das Ganze mit einem UNO realisiert werden, da lassen sich auch noch gleichzeitg ein paar andere Aufgaben mitintegrieren wie Blockkontrolle und Signalstellen. Das wird sich vielleicht im Laufe des Threads entwickeln. Zuerst mal die Anfahr-Bremsautomatik.
ARDUINO1.jpg
Das ist die gesamte Hardware, die man braucht ( mit Ausnahme der Arduino-Versorgung )
Funktionsbeschreibung/Pflichtenheft kommt demnächst.

Zeichenfehler in der Bezeichnung korrigiert
 
Zuletzt bearbeitet:
Hallo allerseits, ich habe noch die Relaisschaltung für das Signal und den Halteabschnitt, wie auch Steuer- und Rückmeldeanschlüsse ergänzt. Jetzt müsste es komplett sein.
ARDUINO1.jpg
 
So, das Pflichtenheftchen...

Pflichtenheft für Anfahr-/Bremsschaltung.

Die Schaltung wirkt nur in Pfeilrichtung und wird in Gegenrichtung ohne Halt durchfahren.
Die Spannung des Analogfahrreglers der Strecke darf beliebig sein.
Der gleiche Spannungswert stellt sich automatisch beim Einfahren in den Bremsabschnitt ein.
Ist das Signal auf 'Halt', wird die Spannung im Bremsabschnitt gemäß einer mit denm Poti 'Bremszeit' einstellbaren Rampe auf den mit dem Poti 'Kriechspannung' eingestellten Wert abgesenkt. Dies geschieht mit PWM, um möglichst unabhängig von der Charakteristik der Motoren zu sein. Der Zug kriecht dann zum Signal, bis er den stromlosen Haltabschnitt ereicht.
Wird das Signal auf 'Fahrt' gestellt, dann fährt die PWM von 0V auf die Fahrreglerspannung mit der gleichen Rampe wie für die Bremszeit hoch.
Ist das Signal bei Einfahrt in den Bremsabschnitt auf 'Fahrt', dann wird der Zug mit unveränderter Geschwindigkeit durchgeschleust.
Es gibt einen Eingang, der bei '0V' das Signal auf 'Halt' stellt und den Bremsablauf auslöst. Bei '5V' wird das Signal auf 'Fahrt' gestellt.
Es gibt einen Ausgang, der bei leerem Bereich '5V' ausgibt.
Befindet sich ein vom GBM detektierter Zug im Bereich, wird '0V' ausgegeben.
Habe ich was vergessen?
 
@Andre1980
Doch, die BTTB-Motoren vertragen problemlos bis 1000Hz. Nur bei 16kHz der modernen Decoder spinnen sie.
Ich betreibe übrigens die PWM mit ~500Hz. Damit laufen alle Gleichstrommotoren.
 
Zuletzt bearbeitet:
@Andre1980
Doch, die BTTB-Motoren vertragen problemlos bis 1000Hz. Nur bei 16kHz der modernen Decoder spinnen sie.
Ich betreibe übrigens die PWM mit ~500Hz. Damit laufen alle Gleichstrommotoren.

Ahh, dann habe ich das damals nur falsch verstanden. Freut mich :)


Edit:
BTTB-Rundmotoren und gelber Aufdruck = könnte bei PWM problematisch werden. Die weißbedruckten waren da etwas besser, aber wenn, dann nicht mehr als 100Hz. Am besten fahren sie hiermit. Diese Kriechfahrt kriegst Du manchmal nicht mit einem PWM-Fahrpult hin, und wenn, dann mit einer Menge mehr Krach. Von den hochfrequent ( >10kHz ) pulsenden Fahrpulten kann ich nur abraten - das mögen diese Motoren überhaupt nicht und zeigen im günstigsten Fall schlechtes Fahrverhalten, meistens werden sie heiß und verabschieden sich dann irgendwann.

Also muss ich hoffen das sie weiß bedruckt sind. Damals sprachst du noch von 100Hz. Oder fehlte da nur eine 0?


Edit2:
Entschuldige, wenn ich etwas vom Thema abweiche. Aber im Grunde ersetzt der UNO die von die Angesprochene Schaltung für die Gartenbahn, oder?
...
Ach, lieber Andre1980:
Hier mal eine Schaltung, die ausprobiert alles das kann, was Du realisieren möchtest, einstellbare Bremsrampe und Mindestspannung zum 'Kriechen' bis zum Halt und natürlich wegen der bei Analogbetrieb-Langsamfahrt die dort unbedingt nötige PWM hat. Sie stellt sich automatisch auf die Fahrspannung der Restanlage ein -eine unbedingt nötige Eigenschaft, die alle diese Einfachschaltungen im Netz natürlich nicht aufweisen. Nur so ist ein vernünftiger Betrieb mit solchen Automatiken möglich. Ja, analoge Technik kann ganz schön aufwändig sein.....
Anhang anzeigen 276297

Du schriebst das man diese Schaltung nicht für TT ohne Bauteilanpassung Übernehmen kann. Geh ich recht in der Annahme das man die Zener-Dioden anpassen muß, und die Spannung für die Kriechfahrt anpassen muss. Der Rest sollte doch gleich bleiben? Oder muß man die Kondensatoren noch anpassen, da die kleinen Motoren der TT-Loks nicht soviel ziehen?
 
Zuletzt bearbeitet:
Die besten Langsamfahreigenschaften erzielt man mit 100Hz. Es kann sein, dass das Anfahren bei 500Hz etwas ruckartiger erfolgt. Ich probiere das mal aus und dann weiß ich mehr. Die 500 Hz sind die vorgegebene Frequenz der Analogausgabe des Arduino UNO.
Die Analogschaltung lässt sich doch über die Potis einstellen. Die Bauteile sind eben nur für hohe Ströme und eine maximale Betriebsspannung von 24V dimensioniert. Man kann damit natürlich auch 12V-Betrieb machen. Sie ist nur für TT ein bisschen 'Overkill'.
Mit dem Arduino geht das alles ein bisschen eleganter, billiger und man kann eine automatische Blockschaltung aufbauen.
 
Natürlich, der geht auch. Ich habe nur schon mal erwähnt, dass die meisten UNO-Clone unter <WIN10 ( WIN10 hat den drin ) aber den Treiber für den CH340 USB-Chip brauchen, den man direkt von einer chinesischen Website herunterladen muss. Ich selbst benutze auch einen chinesischen UNO mi diesem Chip.
 
Also ich wollte mir nun ein Ardurino bestellen. Bin aber total überfordert. Die Preisspanne für den normalen UNO liegt bei 4€ bis 30€.

Dann gibt es noch den Nano mit angelöteten PINs und ohne Angelöteten PINs. Die Angebote starten schon unter 2€.

ateshci, wo beziehst du deine Arduinos? Kann man auch den Nano nehmen? Was habt ihr für Erfahrungen mit Anbietern? Bin total überfordert.

Die dazu gehörigen Bauteile müssen ja auch verbaut werden. Was empfiehlt sich da? Eine kleine Lochrasterplatte? Sind die PINs vom Arduino im Raster 2,54mm? Dann könnte man ihn ja direkt mit so einer Platte verbinden?

Was habt ihr für Erfahrungen? Ich bin völlig verunsichert was ich kaufen soll.

Kann jemand ein gutes Tutorial für den Arduino empfehlen? Will mich da bissl ins programmieren reinarbeiten.
 
Zuletzt bearbeitet:
Hallo,

bitte nicht böse sein, aber ich verstehe hier den Einsatz des Arduino nicht.
Meiner Meinung nach ist das wie "Perlen vor die Säue".
Die gesamte Schaltung ist mit einer Transistorlogik möglich.
Okay, später nicht veränderbar.
Aber wenn schon Mikrocontroller, dann doch eher mal einen direkten für 1,50EUR.

Gruss

ttopa-junior
 
Dass es mit OpAmps und Transistorlogik geht, habe ich doch schon gezeigt. Natürlich geht es mit einem 'embedded' µC, aber da braucht man dann auch einen STK500 ( bei Atmel ) und einige Ahnung von C, WinAVR usw. Der Arduino hat seine integrierte Entwicklungsumgebung, lässt sich durch den Bootloader schnell umprogrammieren und benötigt nur einen USB-Anschluss. Von der Kapazität her schon richtig, was Du sagst, aber bei einem Preis zwischen 5 und 10€ dafür ist das unterm Strich die einfachere und wahrscheinlich preiswertere Lösung.
 
UNOs gibt es z.B. hier
Tutorials auf arduino.cc. Ich möchte aber in diesem Thread, weil es dafür m. M. nicht das richtige Forum ist, keine Programmieranleitung aufmachen. Es soll nur gezeigt werden, dass man mit dem UNO ein solches Problem leicht lösen kann.
 
Welche Werte haben die Potis?

Belastbarkeit vermute ich gering, da ja nur der Eingang vom arduino Abgreift.
Wieviel Ohm?


Edit:
Etwas, was ich noch nicht ganz verstehe. In Gegenrichtung soll der Zug unverändert Durchfahren. Finde ich auch nicht Schlecht. In Gegenrichtung liegt doch aber an der Blauen Linie (Gleis) auf deinem Schaltplan Positive Spannung an und die Rote Linie (Gleis) sollte 0V haben. Das Stück unterbrochene Blaue Linie sollte dann auch die Positive Spannung haben wie die obere und untere. Wie bekommt die unterbrochene Blaue Linie die Positie Spannung? Über A0? Auch ist die Mittlere Blaue Linie über eine Diode an GND. Selbst wenn An der Mittleren Blauen Linie Spannung anliegt würde sie dann nicht Richtung GND abfallen? Irgendwie verstehe ich nicht wie der Zug in die andere Richtung durchfährt.
 
Zuletzt bearbeitet:
@Andre1980
Für den Poti-Wert kannst Du den Finger in den Wind halten - alles zwischen 1k und 100k geht.
Alle Spannungen sind auf Masse bezogen (GND vom UNO). Somit ist die rote Schiene positiv in Fahrt- und negativ in Gegenrichtung. Die blaue Schiene ist über die Dioden auf Masse bezogen.
 
Danke

Wenn man die Anschlüße in der Software dementsprechend zuordnet, kann man die Anschlüße A0, A1, A2, A3, A4 und D2, D4, D5 untereinander tauschen bzw. einem anderen Analogen/Digitalem Pin zuweisen, richtig? Bei D3 muß man aufpassen, wenn man tauscht, das der andere Pin PWM unterstüzt, richtig?

Die ZY27 gibt es bei meinem Liebnigs Teile Lieferant nicht. Es dürfte aber auch eine andere Z-Diode gehen mit 27V. Die ZY27 2 Watt belastbar. Die 2 Watt sind nötig nehme ich an. Oder geht auch weniger?
 
@Andre1980
Ja, man kann alle Analog- und Digtalanschlüsse beliebig anders zuordnen. Bei den PWM muss man die ~Kennzeichnung beachten. Und nicht Anschluss 11 nehmen, weil dessen Tastgrad bei Verwendung der delay-Funktion beeinflusst wird, mit ~900 Hz ist der auch nicht die erste Wahl. Man kann auch leistungschwächere Z-Dioden einsetzen. Die ZY27 stammt aus einem Aufbau, wo ich statt der 1N4001 diese auch als Bypass-Diode benutzt habe. Dann ist man allerdings mit der Fahrspannung auf höchstens 16Veff beschränkt.
 
Zuletzt bearbeitet:
So, und hier was für die GRAFCET-freaks. Ist aber ganz einfach zu verstehen, wenn man die Kästen als Schritte, in denen die rechts davon stehenden Aktionen ausgeführt werden, und die Querstriche in den senkrechten Verbindungslinien als Weiterschaltbedingungen begreift. Das Ganze nennt sich Zustandsautomat und hilft einem, die Programmierung des Ablaufs zu strukturieren.
Anf_brems.gif
 
Zuletzt bearbeitet:
Der Eingang vom vorherigen Block, schaltet ja bei 0V das Signal auf Halt (Rot) und bei 5V das Signal auf Frei (Grün).

Müssen es 5V sein? Oder geht ein Bereich von z.B. 1V-5V für Signal Frei? Es ist ja ein Digitaler Eingang. Ab Wieviel V interpretiert der Arduino den High Zustand?

Hintergrund wäre es vorher mehrere Bedingungen zusammen zu fassen, die das Signalverhalten beeinflussen sollen (z.B. Weichenstellung, Timer oder ähnliches) die man über eine einfache Transitor UND bzw. ODER Funktion steuert. Dort fällt aber etwas Spannung ab (oder?)


Edit: Ich denke ich habe es gefunden
z.B. für den 328P in Kapitel 29.2 DC Characteristics: danach wird ein Eingangssignal, das kleiner als 0,3*Vcc ist, garantiert als LOW gelesen und ein Eingangssignal, das größer als 0,6*Vcc ist, garantiert als HIGH gelesen. Vcc ist üblicherweise 5 Volt.
Dies sind auch die Werte, die man tunlichst für einen zuverlässigen Betrieb einhalten sollte!

Die tatsächlichen Werte sind ebenfalls dem Datenbuch zu entnehmen (Kapitel 30.8.9: Pin Threshold and Hysteresis, Figure 30-354 und 30-355).
Demnach wird bei 5Volt Versorgungsspannung ein HIGH bei ca. 2,6 V gelesen und ein LOW bei ca. 2,1 V. D.h. wir haben zwei unterschiedliche Werte für das "Ein- und Ausschalten", je nachdem was wir vorher hatten! Die Größe dieser Hysterese ist in Figure 30-356 dargestellt. Sie ist im übrigen noch temperaturabhängig.

Als sollten 3 Silizium Transistor Abfälle kein Problem sein.
 
Zuletzt bearbeitet:
Mir fällt noch eine Hardware-Änderung ein, die das Abbremsen noch etwas verbessert. Ein Analog-Eingang (A5) ist noch frei. Wenn man den Haltabschnitt mit einer GBM-Schaltung ausstattet, programmiert man es so, dass der Zug darin von Kriechgeschwindigkeit auf '0' bremst ohne Anhalteruck. Dann kann man das Signal auch zu einem vollständig beliebigen Zeitpunkt des Abbremsens auf 'Fahrt' springen lassen.
Nachtrag:
Bleibt noch auf der Wunschliste die PWM-Frequenz einstellbar zu machen. Die BTTB-Motoren laufen zwar problemlos mit ~490Hz, die Langsamfahreigenschaften sind aber besch..eiden.
Da wären 100Hz besser. DAS allerdings ist beim UNO nicht trivial zu lösen und deshalb kommt das auch nicht gleich morgen als fertige Lösung um die Ecke.
Eine einfache Lösung wäre natürlich ein 555, dessen Grundfrequenz entsprechend eingestellt wird und dessen Tastgrad mit dem UNO verstellt wird - ist an sich kein Problem, aber der jetzige Shield wird erst mal nicht umgebaut.
 
Zuletzt bearbeitet:
Man muss nur mal in den Tiefen der UNO-Trickkiste nachsehen - es gibt doch einen schnellen Weg, die PWM-Frequenz des in Frage kommenden UNO-Ausgangs auf 'BTTB'-gerechte Werte einzustellen. Mit ~123Hz kann man sie zum Schleichen bekommen. Das eröffnet die Möglichkeit, per Steckjumper/Steuersignal passende 31kHz; 3,9kHz; 980Hz oder eben auch die 123Hz einzustellen.
 
Zurück
Oben