MoBa-Speed Versuchsaufbau

MoBa-Speed for Arduino – Modellgeschwindigkeit messen

Zur Messung gibt es bereits mehr oder weniger komfortable Lösungen am Markt und in Foren. Durch einen Arduino Nano ist unser MoBa-Speed preisgünstig, kompakt und auf aktuellem Stand der Technik.

Preisgünstig, kompakt und mobil mit unserem MoBa-Speed

Update: 11.05.2019 (siehe unten)

Geschwindigkeitsmessungen auf der Modellbahn haben lange Tradition. Sei es nur um zu wissen wie schnell sich eine Zug, eine Lok gerade bewegt oder werden diese Messdaten sogar für Zugsteuerungssoftware zum Einmessen der Geschwindigkeit dringend benötigt.  Meist werden hier relativ aufwendige und stationäre Aufbauten mittels Lichtschranken, Kontaktgleisen o. ä. vorgenommen Unser MoBa-Speed soll hier eine simple und günstige Variante bieten. 

Hier kommt eines unserer Lieblingsspielzeuge in letzter Zeit zum Einsatz, der Arduino. Dieses kleine, Microcontroller gesteuerte Entwicklerboard erlaubt mit seinen analogen und digitalen Ein- und Ausgängen, die per Software verschalten werden können, so manche technische Spielerei für den Laien.  

Hier zeigen wir euch, wie ihr mit wenigen Bauteilen und zu erschwinglichen Preisen, euch dieses Gerät ganz einfach nachbauen und ggf. auf eure eigenen Bedürfnisse anpassen könnt. Auch die Software bekommt ihr dabei fertig von uns zum Download.

Bitte habt Verständnis, dass diese Art der Messung, günstig und kompakt ist, aber nicht die höchste Präzision aufweist! Vergleichsmessungen zeigten mir in Spurweite N bei einem Sensorabstand von 15cm folgende Abweichungen:

  • bei 40 Km/h (+/- 2 Km/h) 
  • bei 80 Km/h (+/- 4 Km/h)
  • bei 120 Km/h (+/- 5 Km/h)
  • über 160 Km/h (+/- 6 Km/h)

Genauer habe ich das nicht überprüft. Durch einen längeren Messabschnitt kann die Genauigkeit aber weiter gesteigert werden. Ebenso wird die Messung genauer, wenn die beiden Sensoren gleich ausgerichtet sind, was die Lage des Senders und Empfängers betrifft.

Ihr benötigt:

  • 1x Arduino Nano V3 Atmega328p oder größere Versionen (und USB-Kabel)
  • 1x OLED-Display 128x64px 0,96 Zoll I2C IIC SPI (für Arduino); Wenn ihr ein 1,3 Zoll Display verwenden wollt, beachtet bitte unsere Update Versionen weiter unten)
  • 2x Modul IR Refelexlichtschranke LM393 

Je nachdem ob ihr das ganze aus Fernost oder beim Elektronikfachhändler ordert, zahlt ihr insgesamt etwa 10,- bis 40,- EUR. Die Preisspanne bei diesen Bauteilen und Lieferanten ist immens! Aber hier sind 3er, 5er oder gar 10er Packungen teilweise günstiger als 2 einzelne Bauteile und es lohnt sich die Preise zu vergleichen.

Teile für den Versuchsaufbau MoBa-Speed for Arduino
Teile für den Versuchsaufbau MoBa-Speed for Arduino

Um das ganze einfach als Versuchsaufbau zu installieren, benutzt man eine Steckplatine, ein sogenanntes “Breadboard“. Hierauf lassen sich dann alle Komponenten einfach aufstecken und mit Kabeln verbinden. Zum Aufspielen der Software benötigt ihr noch einen PC/Mac mit Windows, IOS oder Linux. Dort müsst ihr die Software installieren oder das ganze aus dem Webeditor heraus bearbeiten. Beides findet ihr auf arduino.cc . In diesem Einführungsvideo wird alles anschaulich erklärt.

Der Versuchsaufbau:

FunktioN:

Die beiden Reflexlichtschrankenmodule vom Typ LM393 mit 3 Pins, werden wegen ihrer häufigen Verwendung auch als “line tracker” bezeichnet. Diese gibt es. z.B. im 10er-Pack für 8,- EUR. Einzeln sind diese zusammen meist teurer. Hierbei handelt es sich um ein Modul auf welchem ein IR-Sender und -Empfänger verbaut sind (IR = Infrarot). Das IR-Signal wird dauerhaft ausgestrahlt. Sobal sich ein Gegenstand in unmittelbarer Nähe vor dem IR-Modul befindet, so wird über dessen Oberfläche das IR-Licht reflektiert und vom IR-Empfänger erkannnt. Über einen Drehpoti kann mit einem Schraubendreher die Empfindlichkeit bzw. Reichweite eingestellt werden. Zur Kontrolle kann man das Auslösen des Empfängers an einer LED erkennen. Für die richtige Einstellung sollte diese LED nicht leuchten, solange sich kein Objekt vor dem Sensor befindet. Sobald man mit seiner Hand vorbeifährt, muss die LED aufleuchten. Beim Auslösen sinkt die Spannung am Steuerausgang ab. 

Der Arduino Nano (ab ca. 3,- EUR) hat die Aufgabe die Steuerausgänge der Lichtschrankenmodule auszuwerten und daraus das Messergebnis zu berechnen, sowie das Display anzusteuern. Dafür wurden die Steuerausgänge der beiden Module auf die Digitaleingänge 6 und 7 gelegt. Im Programmcode (Sketch) wird geprüft, wann an den Eingängen die Spannung abfällt. Sobald dies der Fall ist wird die Systemzeit beim Auslösen gespeichert und auf das Auslösen des anderen Eingangs gewartet.  Sobald dieser auslöst, wird die Zeit wieder registriert und aus den beiden die Differenz errechnet. Zusammen mit den eingetragenen Werten im Sketch für den Sensorabstand und dem Modellmaßstab, wird die Modellgeschwindigkeit errechnet. Diese Werte werden am “Seriell Monitor”, also am PC/Mac sowie über das Display ausgegeben.

Das Display bildet die dritte Hauptkomponente unseres Aufbaus, vereinfacht das ablesen und macht das Gerät autark einsetzbar. Es wird aber nicht zwangsläufig benötigt, da die Daten auch am PC/Mac abgelesen werden können. Zum Einsatz kommt hier ein 0,96″ (Zoll/Inch) kleines Monochromdisplay das für bereits 4,- EUR erhältlich ist. Es wird in den Farben, blau, weiß und gelb/blau angeboten. Die Ansteuerung erfolgt über I2C, ISP . Hierfür werden am Arduino nur 2 Steuerausgänge benötigt und zusätzlich die Stromversorgung GND und VCC (3,3V). 

(Seit dem Update vom 11.05.2019 könnte ihr ein 1,3″ großes OLED Display verwenden. Mehr dazu ganz unten im Beitrag)

Die Stromversorgung des MoBa-Speed soll über den USB-Anschluss und mittels Handy-Ladekabeler oder Powerbank erfolgen.

Schaltplan:

MoBa-Speed for Arduino Schaltplan
MoBa-Speed for Arduino
Schalplan

Einstellungen für den Arduino

  1. Um den Arduino zu prgrammieren müsst ihr die Software “Arduino IDE” an eurem PC oder Mac installieren. Anschließend schließt ihr den Arduino an einem freien USB-Port am Computer an und startet die “Arduino IDE” um Einstellungen für die Kommunikation mit dem Arduino vorzunehmen.
  2. Nehmt nun unter dem Tab “Werkzeuge” die Einstellungen für das Board, des von euch verwendeten Arduinotyps vor.  In unserem Fall ist das der “Arduino Nano”.
  3. Ebenso die Einstellung für den Prossertyp “ATmega328P” und ich musste die Einstellung “Old Bootloader” wählen, was aber abhängig vom Hersteller ist, den ihr verwendet.
  4. Wählt den com-Port, also die USB-Schnittstelle, an welcher der Arduino angesteckt ist – Achtung: dieser muss zu diesem Zeitpunkt angesteckt sein! Es werden nur die Ports angezeigt, an welcher auch ein Arduino erkannt wurde. Die für diesen Sketch verwendete “Baudrate” beträgt 9600, was der Standardeinstellung entspricht und keiner Änderung bedarf!
  5. Über den “Serial Monitor”, im Programm rechts oben zu finden, könnt ihr die Abläufe des Arduinos verfolgen. Wird der Programmcode ausgeführt, so ist die Kommunikation hergestellt und der Arduino funktioniert. Durch drücken der Taste auf dem Arduino, könnt ihr den Programmcode erneut abspielen lassen.

Der Sketch und das Display

Hier findet ihr unseren original Sketch zum MoBa-Speed als Download und ebenso eine Sammlung aller MoBa-Speed Versionen bis 11.05.2019 (siehe Update, unten).

  1. Als erstes sucht Ihr euch den Sketch, also die Datei, welche ihr euch von uns in gepackter Form herunter geladen habt. Dann entpackt ihr diese und startet sie per Doppelklick. Die angezeigte Meldung bestätigt ihr damit der Sketch dem Programm bekannt ist.
  2. Um den Sketch ausführen zu können, müsst Ihr 2 Bibliotheken zur Steuerung des Displays laden. Diese ergänzen später den Code beim export auf den Arduino. Hierführ wechselt ihr über den Tab “Sketch” in die Rubrik “Bibliotheken verwalten”.
  3. In der Sucheingabe gebt ihr den gleichen Namen der Bibliothek ein, wie er im Sketch aufgelistet wird = adafruit_gfx. Wenn ihr diese gefunden habt, klickt auf “installieren”. 
  4. In der Bibliothekenverwaltung könnt ihr nun gleich die zweite benötigte Bibliothek suchen und installieren = adafruit_ssd1306.  Achtung, bei einem 1,3″ Display benötigt ihr eine andere Bibliothek, die ihr selbst downloaden müsst!)
  5. Bei den gebräuchlichen und günstigen Displays am Markt handelt es sich um Nachbauten aus Fernost. Diese Displays besitzen eine andere Adresse als Ihre Original von Adafruit. Bei den günstigen Nachbauten lautet die Adresse 0x3C anstelle der Originaladresse 0x3D. Dieser eine Buchstabe kann darüber entscheiden ob das Display später angesteuert wird oder nicht. Unser Sketch ist für die häufig verwendeten Displays aus China ausgelegt, ggf. müsst ihr die Adresse, relativ weit unten im Sketch zu finden anpassen!

Eingaben für die richtige Messung

Damit die Messung später korrekt arbeitet, sind noch 2-3 wesentlich Eingaben von euch zu tätigen. Der Einfachheit halber habe ich euch diese Angaben relativ weit oben und direkt untereinander im Sketch platziert, so dass ihr nicht lange suchen müsst.

Als erstes ist die Entfernung der Lichtschrankenmodule einzugeben (in mm). Bitte hierfür exakt messen! Z.B. kann der Abstand von Linker Seite des ersten Moduls zur linken Seite des zweiten Moduls gemessen werden, oder von Mitte zu Mitte. Im Beispiel= 150.0 (150mm – Bitte Schreibweise “00.0” exakt beibehalten!) Je länger der Messabschnitt, desto genauer kann die Messung erfolgen.

Als zweites euer Modellmaßstab. Hier im Sketch eingetragen ist natürlich unsere Spurweite 1/160. Dafür tragt ihr NUR den Wert nach dem Bruchstrich ein, also in diesem Fall N= 160.  Oder für die Spurweiten H0= 87;  TT= 120; Z= 220

Danach könnt ihr noch die Wartezeit (ms) verändern, bis die Messung erneut gestartet ist. Die Wartezeit muss vorhanden sein, sonst funktioniert die Messung nicht korrekt. Dauert die Fahrt bis zum Ende der Lok oder des Zuges länger als die eingestellte Wartezeit, so erfolgt eine Fehlmessung nach Ablauf der Zeit, was aber auch kein wirkliches Problem darstellt. Die angegebenen 12000 Millisekunden schienen mir praktisch, was aber von der Länge eures Messabschnittes und den gefahrenen Geschwindigkeiten abhängt.

 

Sketch kompilieren und hochladen

Um den Sketch auf den Arduino zu laden muss dieser kompiliert werden. Dies geschieht, indem ihr das entsprechende icon mit dem Haken, links oben anklickt. Hierbei fügt die Software euren Code und die Codes der angegebenen Bibliotheken zu einem zusammen, überprüft ob der Code fehlerfrei ist und wandelt diesen im Hintergrund in einen Maschinencode um, welcher später vom Arduino ausgeführt werden kann. Dies kann einige Sekunden dauern. Ist der Code fehlerfrei, so erhaltet ihr im Fenster unten die Meldung wie viel Speicherplatz verbraucht wird. Der Text ist dabei in weißer Schrift gehalten. Erhaltet ihr einen orange-roten Text, so enthält der Code an den beschriebenen Stellen Fehler und kann nicht übertragen werden!

Durch Anklicken des Icons mit Pfeil nach rechts “hochladen”, startet ihr den Upload auf den Arduino. Sollte der Sketch vorher noch nicht kompiliert worden sein, so geschieht dies jetzt automatisch vor dem eigentlichen Upload.

Nach dem erfolgreichen Upload startet der Arduino automatisch damit den abzuarbeiten. Es erscheint unser Startscreen und danach die Anzeige “READY” auf dem Display und dem Serial Monitor. Nun könnt ihr das ganze Testen, indem ihr eure Hand oder einen Gegenstand in geringem Abstand vor den Sensoren vorbei bewegt. Dabei sollte die Messung ausgelöst werden und das Ergebnis auf dem Display und dem Serial Monitor am Computer angezeigt werden. Nach der eingestellten Wartezeit erscheint wieder die Schrift “READY”, das Gerät ist damit bereit für die nächste Messung. Zur Stromversorgung ohne PC kann der USB-Port herangezogen werden. Ein passendes Handyladekabel oder eine Powerbank mit USB können hier für die benötigten 5V Stromversorgung dienen. Es wird ggf. ein Adapter auf den richtigen USB-Stecker benötigt, das der Arduino Nano standardmäßig mit einem recht unüblichen Mini-USB Port ausgestattet ist.

Unser Video zum Versuchsaufbau

hier seht ihr auch wie der MoBa-Speed funktioniert. Die Einbauanleitung in das Gehäuse gibt es in Kürze

 

Update 11.05.2019:

Die neuen Sketch-Versionen V1.1 bis V1.4 stehen zum Download bereit!

  • V1.1 – ist die Originalversion, wie Sie hier gezeigt und beschrieben wird für ein 0,96″ OLED-Display
  • V1.2 – ist eine Abwandlung für ein etwas größeres 1,3″ OLED-Display. Hier benötigt ihr unseren Sketch und die zugehörige Bibliothek SH1106, die ihr noch selbst downloaden und  in eurem “libraries-Ordner” kopieren müsst!
  • V1.3 – wurde von Bernhard Raschke modifiziert und uns netterweise in dieser Form wieder zur Verfügung gestellt. Die Messung kann hier beliebig lange dauern und das Display zeigt “Speedcheck running..” wärend einer laufenden Messung.
  • V1.4 – ist eine Kombination beider vorangegangener Versionen. Die Modifikation von Bernhard für ein größeren 1,3″ OLED-Display. Auch hier muss die Bibliothek wie in V1.2 verwendet werden!

12 comments on “MoBa-Speed for Arduino – Modellgeschwindigkeit messenAdd yours →

  1. Super Projekt, vielen Dank!!  funktioniert tadellos!! Ich hab mir gleich 2 gebaut. Eine 50 cm Strecke und ein kleines Teil für die “Tasche”.

    lg aus Wiener Neudorf / AT

    Wolfgang

  2. Ich habe das Ganze heute mal ausprobiert und bin auf ganzer Linie gescheitert. Ich hab eure Angaben zum Nano in das Amazon Suchfenster kopiert und dabei ist der hier https://www.amazon.de/gp/product/B01I5K3WEM/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1 herausgekommen. Was ich nicht wusste, das man noch irgendwelche Treiber installieren muss, denn wenn ich ihn an das USB anschließe leuchtet eine LED orange, die andere blinkt orange. Im Moment suche ich noch nach den Treiber.

    Es gibt auch eine Falle beim Monitor (der auch als Foto bei euch auf der Seite ist) da sind die Anschlüsse “GMD” und “VCC” vertauscht. Es besteht also die Gefahr, das man den falsch anschließt, weil die Schrift wirklich mikrokopisch klein ist und wer da nicht die richtige Brille auf hat…  😉

    1. Hallo Mario
      Danke für deine Erklärungen an dieser Stelle. Das Treiberproblem ist mir selbst erst seit wenigen Wochen bekannt. Beim Bau trat es nicht auf bei mir. Es gibt wohl einen bestimmten Chipsatz (einer von mehreren auf dem Markt), welcher dieses Problem verursacht. Mir wurde berichtet dass die in Verbindung mit Win10 als Betriebssystem der Fall ist. Hatte ich selbst aber damals beim Bau nicht. Dieser Fehler tritt also nicht zwangsläufig auf, ist dann aber leider sehr ärgerlich.

      Das 2. ist lästig, das kenne ich. Bei verschiedenen Displays können auch die Kontakte vertauscht sein. Z.B. bei meinem 0,96″ und 1,3″ sind die beiden Kontakte vertauscht. Das Sehe ich aber nicht als Fehler, man muss eben immer die beschriebenen Kontakte miteinander Verbinden. Ich kann nicht garantieren dass sich diese bei allen Herstellern an der selben Stelle befinden.

      Der Arduino und das Zubehör sind OpenSource und können frei nachgebaut werden. Daher existieren duzende Bauformen auf dem Markt, welche gelegentlich in Feinheiten unterscheiden können.

      Viele Grüße
      Jörg

  3. Привет валерий
    Мне пришло твое письмо, но я не могу написать тебе, потому что твой почтовый адрес не сработал. Поэтому я надеюсь, что вы можете прочитать это здесь на нашем сайте.

    Надеюсь, я правильно перевел ваш вопрос. На мой взгляд, ваша проблема – это библиотека для вашего дисплея. Если ваш дисплей показывает вам информацию, но не завершен, вам нужна другая библиотека для вашего типа отображения. Вы можете использовать эту библиотеку здесь, только чтобы узнать, какая библиотека вам действительно нужна. https://www.youtube.com/watch?v=bH-BW6gTnGI

    U8glib – это компиляция многих библиотек отображения. Вы можете попробовать другой, удалив знаки комментария „//“

    Таким образом, вы можете узнать, что хорошо работает с вашим дисплеем. Помните, мой код для 128x64px, ваш дисплей требует того же разрешения.

  4. Hallo Jörg (ich nahme mal an, dass das Dein Name ist),

     

    ich habe mir das Moba-Speed nachgebaut und in meinen kleinen Testkreis fest eingebaut. Dazu habe ich die beiden Lichtschranken unter den Gleisen eingebaut und lasse durch Schlitze zwischen zwei Schwellen die Fahrzeuge von unten registrieren, Funzt super.

     

    Da ich auch sehr langsame Geschwindigkeiten messen wollte, habe ich den Sketch dahingehend modifiziert, dass die nächste Messung erst gestartet wird, wenn der zweite Messpunkt mindestens zwei Sekunden frei ist. Dadurch werden eventuelle Unfugsmessungen gut verhindert. Gleichzeitig wird die Anzeige dahingehend geändert, dass nach Überfahren des Startpunktes eine Messung läuft. Wenn Du Interesse hast, kann ich Dir den Sketch ja mal zukommen lassen.

     

    Grüssle aus dem Schwabenländle

     

    Bernhard

    1. Danke Bernhard
      für deinen Kommentar und Interesse. Ich würde deinen geänderten Sketch auch gerne hier mit veröffentlichen als Alternative. Falls das für dich Okay ist dann kannst du mir diesen gerne an info@n-modellbahn.de mailen.

      Viele Grüße
      Jörg

  5. Vielen Dank für den umfassenden Artikel.

    Damit bin ich in die Welt der Arduinos eingestiegen. Es gab zwar einen Stolperstein beim Anschluss des Arduinos aus Fernost, aber den Treiber für den CH340G Chip habe ich gefunden. Am Display fehlen zwar noch die PINs, aber Euer Sketch läuft schon mit dem Serial Monitor. Inzwischen wurde der Sketch noch für zwei Schalter erweitert. Der eine ist zur Umschaltung zwischen den Maßstäben TT und H0, und der andere zur Anzeige von km/h oder MPH.

    Weitere Projekte liegen vor mir. Einmal das Schalten der Signale und der entprechenden Polarisation einer 3-gleisigen ebenerdigen Gleiskreuzung (die US-Bahn eben, bei uns gibt es dies nur bei der Straßenbahn) auf Knopfdruck und zum anderen eine Gleiswaage (Stichwort: Load Cell).

    Viele Grüße Mirko

    1. Hallo Mirko,

      danke für dein Interesse. Freut mich sehr dass du da auch so selbstständig das ganze für deine Zwecke weiter entwickelst. Die Umstellung auf mph war für mich nicht so interessant aber das switchen zwischen den Maßstäben wollte ich auch selbst bei Gelegenheit noch einbauen. Zumindest für 2 oder 3 Maßstäbe sollte das kein Problem sein, bei mehr braucht man dann etwas aufwendigere Schalter.
      Falls auch du Interesse daran hast, deine Modifikation des Sketches öffentlich mit anderen zu teilen, so kannst du mir den Sketch gerne an info-@modellbahn.de schicken. Ich werde ihn dann hier mit veröffentlichen als Alternative.

      Viele Grüße
      Jörg

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Ich akzeptiere

Translate »