• 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

Machbarkeitsstudie für einen Entfernungs- und Geschwindigkeitsmesswagen in der Spur TT

Na und?
Das ist ein Meßgerät, kein Modell.
Mit etwas Übung weiß man, bei welcher Fahrstufe die Lok welche Geschwindigkeit erreicht und der Wagen muß nur noch zur Kontrolle eingesetzt werden.
Mein nächster wird ein zentrales Anzeigemodul für's Stellpult bekommen, damit kann ein beliebiger Wagen der Sender sein.
 
Hallo zusammen,

ich habe mich mal etwas zu dem von @Per vorgeschlagenen ESP8266 belesen: Dieses Board scheint ja auch kein großes Hexenwerk zu sein und so habe ich mir mal 3 Stück zum Probieren bestellt. Da dieses Board auch gleich einen Webserver mitliefert, kann ich mir gut vorstellen, dass die "Fernabfrage" der Werte darüber zu realisieren wäre. Dann wäre es auch systemunabhängig. Zwei Hbis-tt habe ich gestern auch noch in der Bucht geordert. Wenn alles geliefert ist, werde ich mich mal ans Layout einer Platine machen um Spannungswandler, Gleichrichter, Pufferkondensator(en) und CNY70 sauber im Wagenboden unterzukriegen. Vielen Dank @Per für Deine Hartnäckigkeit.
Herzliche Grüße
vinman
 
Also wenn das alles klappt @vinman: Ich wäre an einem Bausatz interessiert!
Vor allem wenn man per Webserver die Daten Live auf'm Laptop / Smartphone verfolgen kann wäre das nicht nur für die Streckenvermessung, sondern auch für das Einstellen von Lokomotivdecodern sehr hilfreich.
 
Hallo zusammen,

heute sind die bestellten ESP8266 angekommen. Ich habe mir baugleiche Wemos D1 mini bestellt. Schon beim Auspacken habe ich gesehen: Die sind zu groß! 26mm Breite bekomme ich in keinen Wagen untergebracht. Möglicherweise habe ich die falschen Module genommen. @Per, welche Module hast Du verwendet? Welche Abmaße haben diese? Nichts desto trotz werde ich mal mit dem Board beschäftigen. Einen Webserver und das Display habe ich testweise schon mal am laufen. Mal sehen, wie es weitergeht...

Herzliche Grüße
vinman
 
Danke für den Link, den habe ich glatt übersehen.
Hmm, bei den Abmaßen des verlinkten Boards stehen auch 25mm Breite. Das verbaute Display ist kein OLED, sondern ein TFT. So richtig glücklich bin ich damit ehrlich gesagt nicht. Muss mir nochmal überlegen, wie das sinnvoll in den Wagen zu bauen wäre oder ob der Arduino nano, wegen seiner kompakteren Maße, doch besser geeignet ist. Ein WLAN-Modul gibt es dafür ja auch...
Dennoch vielen Dank für Deine Tipps!
Herzliche Grüße
vinman
 
Hallo zusammen,

auch wenn ich noch nicht weiß, ob es nun der ESP8266 wird oder doch der Arduino nano mit WLAN-Modul, so habe ich trotzdem die Sache mit dem Webserver versucht: Es geht! Man kann die gefahrene Strecke und die Geschwindigkeit per Browser verfolgen. Die Seite aktualisiert sich alle halbe Sekunde von selbst, so dass sich die Werte ähnlich schnell wie am Display ändern. Die Reset-Funktion habe ich auch schon implementiert, allerdings muss man dazu im Moment noch einen "zurück"-Knopf drücken, um wieder auf die Werte-Seite zu kommen. Da muss ich mal schauen, ob das auch anders geht.

Herzliche Grüße
vinman
 

Anhänge

  • Webserver.jpg
    Webserver.jpg
    21,8 KB · Aufrufe: 126
Hallo zusammen,

ich habe in den letzten Wochen viel gewerkelt und probiert: Den ESP8266-12E habe ich auf einer passend konstruierten Leiterplatte mit CNY70, Spannungsregler und Schmitt-Trigger in einen Hbis-tt eingebaut. Grundsätzlich funktioniert das alles auch, aber im Vergleich zur Machbarkeitsstudie im Gbs mit Arduino nicht so präzise. Der ESP8266 hat viel mehr Leistung, somit ist das direkte Auswerten des CNY70 via Interrupt nicht möglich, da in diesem Fall nur Datenmüll entsteht. Der Schmitt-Trigger sollte diese Problematik eigentlich vermeiden, aber auch damit sind es einfach zu viele Ungenauigkeiten, die bei Geschwindigkeiten größer 40mm/s zu immer größer werdenden Abweichungen führen. Im Moment weiß ich mir keinen weiteren Rat und werde wohl doch den Ansatz mit Arduino nano und ESP8266-1 als WLAN-Modul nochmal aufnehmen...

Herzliche Grüße
vinman
 
@vinman was genau macht dir Probleme? Interrupt auswerten kann der ESP8266 ja erstmal auch. "Mehr Leistung" i.S.v. höherer Taktfrequenz und mehr Speicher steht dabei auch nicht im Weg. Was erzeugt bei dir die Ungenauigkeiten?

Falls es darum geht, dass der Interrupt eintrifft, abgearbeitet wird und dann gleich noch mal erkannt wird weil der Magnet noch gar nicht schnell genug vom Sensor weg konnte:
  • Variante a) Mindest-Wartezeit einbauen. Ausrechnen, wie viele Interrupts / Sekunde bei einer realistischen Höchstgeschwindigkeit eintreffen. Interrupt zu Beginn der ISR deaktivieren und einen Timer stasrten, der den Interrupt erst nach Ablauf dieser Mindest-Wartezeit wieder aktiviert.
  • Variante b) Flankenerkennung einbauen. Dem Schmitt-Trigger eine kleine sample-/Hold-Stufe vorschalten. Die verzögert Prellen/Mehrfacherkennung eines eintreffenden Magneten und hält den Pegel am Eingang des Triggers stabil. Dadurch prellt der Trigger-Ausgang nicht. Somit ist es möglich, den Interrupt nicht pegel- sondern flankengesteuert zu aktivieren. Nur wenn der Pegel 0->1 wechselt wird die ISR ausgeführt.
Beides sollte einschlägige Probleme lösen.
 
Hallo @Schraube,

vielen Dank für Deine Hinweise und Anregungen. Natürlich hast Du Recht, dass höhere Leistung erstmal nicht per se der Messung im Weg steht. Die höhere Taktfrequenz sorgt jedoch dafür, dass die Interrupt-Schleifen häufiger durchlaufen werden, folglich die Pegeländerungen des CNY70 häufiger ausgewertet werden. Das führte zu hohen, unbrauchbaren Werten. In diesem Fall hatte ich den CNY70 direkt an den Input-Pin des ESPs angeschlossen. Da mir das keine sinnvollen Werte brachte, habe ich den Schmitt-Trigger dazwischengeschaltet. Nun sind die Werte zu gering, wenn die Geschwindigkeit größer als 40mm/s wird. Der Trigger schaltet also nicht so schnell, wie benötigt. Der CNY70 ist ein Infrarot-Sensor. Dieser "schaut" auf die Achse, welche 4 weiße und 4 schwarze Bereiche hat. So kann ich also eine 1/8 Umdrehung erfassen, was beim Radumfang der Radsätze schon 3,26mm sind. Beim Drehen der Achse ändern sich diese Werte natürlich nicht schlagartig, sondern "verwischen". Dem Arduino schein das keine Probleme zu machen, er misst ganz korrekt. Ich kann die gefahrene Strecke mit dem Lineal/Gliedermaßstab/Zollstock nachmessen und es stimmt (+/- 2mm). Der ESP wertet diese "verwischten" Werte jedes Mal als Änderung. So habe ich z.B. mehrmals hintereinander ein HIGH oder ein LOW, welches trotzdem immer als Interrupt gezählt wird.
Der Schmitt-Trigger scheint diese "verwischten" Werte besser zu verstehen, aber ab einer gewissen Geschwindigkeit kommt er offenbar nicht mehr hinterher...
Ich werde nochmal versuchen, den CNY70 direkt an den Input-Pin anzuschließen und Deine Vorschläge zum Entprellen zu probieren.
Ich verzweifele langsam an dem ESP8266. Beim Arduino war alles so schön einfach...

Herzliche Grüße
vinman
 
Zuletzt bearbeitet:
Hallo vinman,

dann sind wir der Lösung doch sehr nahe! Der CNY70 sollte um ein Vielfaches schneller schalten können als die Achse sich jemals dreht. Die Idee, dessen analoge Messungen in klare weiß/schwarz-Bereiche zu zerlegen ist richtig. Das macht dein Trigger auch. Was für einen verwendest du? Es klingt, als sei dieser zu langsam, was ich mir aber eigentlich nicht vorstellen kann. Jeder gängige Trigger-Baustein sollte tausende Schaltvorgänge pro Sekunde schaffen, da müssen wir nur die externe Beschaltung ggf. anpassen.

Ansonsten gilt das oben gesagte: Nicht das high oder low zählen, sondern die Flanken. Wenn der Wagen steht, siehst du unendlich lange dieselbe Farbe. Was macht dein Arduino in dem Falle? Wichtig ist, immer dann zu zählen, wenn die Farbe sich ändert. Also Übergang schwarz->weiß oder andersrum. Das kannst du bei der Konfiguration des Interrupts im ESP (und jedem anderen Controller) einstellen.

Bekommen wir raus, wenn du magst!
 
Hallo @Schraube,

ich verwende einen Port eines SN74HC14N. Beim Hineinschauen in den Wagen, welchen Trigger ich verwende, ist mir etwas aufgefallen: Ich habe zur Zeit der Konstruktion der Platine noch nicht genau gewusst, wie hoch der Pull-Up-Widerstand sein muss. Ich wollte dies nach erfolgter Montage durch ausprobieren herausfinden. Testweise habe ich einen 22k-Widerstand genommen. Der Widerstand ist mit in dem DIP-Sockel des SN74HC14N, also wechselbar! Ich habe nun testweise mal einen 10k-Widerstand genommen und siehe da: Die Werte werden besser, aber noch nicht so, wie gewünscht. Ich denke, dass ich hier noch einmal mit einem Trimm-Poti herumspielen werde.
Danke für Deine Denkanstöße! Ich hatte das mit dem Pull-Up-Widerstand zwischenzeitlich schon wieder vergessen, obwohl ich es doch beim Konstruieren extra berücksichtigt habe. Naja, wenn die Zeit zwischen Konstruktion und Umsetzung zu lang wird, dann geht auch mal etwas verloren...
Nochmals Danke!

Herzliche Grüße
vinman

PS: Beim Auswerten der Interrupt-Schleife im ESP und im Arduino benutze ich die Option CHANGE. Ich zähle also jede Veränderung zwischen schwarz und weiß. Somit kann der Wagen beim Stehen keinen Interrupt triggern. Das funktioniert immerhin bei beiden Controllern ;-)
 
Hi @vinman,

habe kurz nachgeschaut. Der SN74HC14N selbst ist nicht parametrierbar. Der schaltet bei 5V-Versorgungsspannung irgendwo zwischen 1.6 und 3.2V. Ein- und derselbe Eingangspin wird bei sauberer Versorgungsspannung immer an einem ähnlichen Punkt schalten, die Einstellung des Schaltpunktes per Trimmpoti sollte daher funktionieren. Falls die Versorgungsspannung unsauber sein sollte holst du dir da aber Ungenauigkeiten rein. Falls du's noch nicht hast, setze mal 100nF von VCC nach GND an sämtlichen ICs, also sowohl am SN74HC14N als auch am ESP und anderen höheren Halbleitern. Zwei Stützkondensatoren (1x einstellige µF und 1x >100µF) auf der 5V-Schiene helfen auch. Zusätzlich könnte ein 100nF-Kondensator am Eingang des Triggers nach GND den Pegel stabilisieren.

Ansonsten geht es eigentlich nur noch darum, den Eingang des Triggers so einzustellen, dass dieser möglichst gleichmäßige und saubere Flankenwechsel liefert. Zum Biasing des CNY70 findest du hier etwas: https://rn-wissen.de/wiki/index.php/CNY70

Damit kannst du auch am ESP einen Change-Interrupt benutzen und solltest bei beiden Controllern identische Werte bekommen.
 
Hallo @Schraube,

heute bin ich dazu gekommen, mich nochmal mit dem Messwagen zu beschäftigen: Zunächst erstmal vielen Dank für Deine Tipps und Anregungen. Der ESP8266 läuft komplett mit 3,3V. Um die gesamte Schaltung zu vereinfachen, habe ich alle Bauteile mit 3,3V versorgt. Den Pull-Up-Widerstand habe ich jetzt auf 10k festgelegt, da dort die Messwerte am Besten aussahen.
Beim Testen fiel mir dann eine Merkwürdigkeit auf: Die Abweichung der Messwerte zwischen dem ESP- und dem Arduino-Wagen waren nicht immer identisch, sondern differierten, obwohl beide Wagen von der selben Lok die gleiche Strecke fuhren. So habe ich mir am ESP-Wagen nochmal den "Messradsatz" angesehen: Dieser lief eher schwergängig. Ich habe also die Kontaktblecke etwas nachjustiert und auf leichten Achslauf geachtet. Nun kamen die Messwerte schon in den richtigen Bereich, waren aber immer noch untern denen des Arduinos. Also habe ich mir nochmal die Schaltung des Ganzen angesehen: Wie oben schon erwähnt, habe ich alles auf 3,3V laufen. Außer: Die LED des CNY70 hatte ich mit Vorwiderstand direkt hinter die Gleichrichtung der Gleisspannung gesetzt. Da diese nur mit 100µF geglättet ist, war meine Vermutung, dass die LED bei Kontaktproblemen nicht mehr konstant leuchtet und somit ein paar Schritte nicht gezählt werden. Nun habe ich die LED mit angepasstem Vorwiderstand auch an die 3,3V angebunden, die mit einem 1F-Kondensator gepuffert sind. Die Messwerte von ESP- und Arduino-Wagen sind nun gleich!
Ich werde nun das Platinenlayout noch verändern, da sich manche Bauteilpositionen als ungünstig herausgestellt haben. Auch die Spannungsversorgung mit den Kontaktblechen werde ich nochmal abwägen und evtl. doch auf Messingbuchsen umsteigen. Das würde auch die Wartungsfreundlichkeit erhöhen.
Ich möchte mich hier nochmals sehr herzlich für die Anregungen und Hilfestellungen bedanken, besonders bei @Schraube. Wenn der erste ESP-Messwagen fertig ist, dann werde ich an dieser Stelle wieder berichten und auch Fotos zeigen. Evtl. lässt sich dann auch über eine Kleinserie und/oder einem Bausatz hier im Board nachdenken.

Ich wünsche allen ein entspanntes Pfingstfest!
Herzliche Grüße
vinman
 
Für wen die bisherigen ESP-Module zu Platzmangel führten, kann jetzt aufatmen. Der Seeed Studio XIAO ESP32-C3 ist so klein, dass das Anlöten der Kabel schon wieder problematisch werden kann :wiejetzt:
Dafür ist die Auswahl an Trägerfahrzeugen deutlich umfangreicher. Vllt. mal ein echtes Messwagenmodell? :traudich:
 
Zurück
Oben