Beiträge von yo0702

    Fortsetzung:


    6. Blockschaltbild


    Zum Schluss wird das angehängte Blockschaltbild noch erklärt, sowie man das Gesamtprojekt in Betrieb nimmt.


    Das Blockschaltbild zeigt deutlich, wie die einzelnen Komponenten zusammenarbeiten. Der User verbindet sich mit dem TCCU-WLAN – optional auch mittels Ethernet Kabel – und hat somit durch die vorgenommen Einstellungen am Router und DNS-Server(Raspberry Pi) Zugriff auf die Projektwebseite über http://www.tccu.at. Die Seite wird vom Webserver (Raspberry Pi) zu Verfügung gestellt. Dieser ist auch entweder per WLAN oder Ethernet mit dem Netzwerk verbunden. Will nun der User den Zug fahren lassen, wird auf dem Webserver das Python Skript ausgeführt und per USB wird der Befehl an den Arduino gesendet. Dieser versendet mittels des Motorshields das DCC-Paket(siehe 10.1). Dieses Signal kann man mittels Oszilloskop genauer betrachten – die Messung erfolgt auf den Gleisen. Um dieses Signal zu erzeugen benötigt man eine externe Spannungsversorgung von 12-16VDC. Denn diese Spannung wird benötigt, dass die Loks fahren können.

    Das Signal wird über die Gleise und den Achsen der Lok aufgenommen und geht beim DCC Decoder ein. Dieser versteht die im DCC-Protokoll (siehe 10) vorgeschriebenen Pakete und leitet mit einer Beschleunigungskurve Gleichspannung zum Motor.


    Aufgrund von Spannungsmangel wurde das automatische Licht auf einem weiteren Arduino realisiert. Das automatische Licht (siehe 9) kann beliebig verwendet werden, im Projektfall ist es für die Bahnsteigbeleuchtung gedacht. Ab einem gewissen Wert – also wenn es zu dunkel ist - , den der Lichtsensor (LDR) liefert, werden die LED’s eingeschaltet. Dieser Ardunio wird mittels Netzteil mit Spannung versorgt.

    Für den Livestream ist der Raspberry Pi Zero W mit dem WLAN verbunden. Die Bilder liefert das Raspberry Kamera Modul. In diesem Fall erfolgt die Stromversorgung über ein Akkupack, da sich Raspberry Pi Zero W sowie das Kamera Modul im Zug befinden.


    Inbetriebnahme


    Um das TCCU in Betrieb zu nehmen und um das System verwenden zu können sind grundsätzlich die Komponenten aus der Materialliste nötig. Die Webseite kann wahlweise über einen Rechner oder direkt am Raspberry aufgerufen werden, dies würde aber Bildschirm, Maus und Tastatur benötigen. Alle Komponenten sind so konfiguriert, dass nach verbinden dieser ein Betrieb ohne weitere Einstellungen möglich ist.

    Der Router ist nur simpel an eine Steckdose zu stecken.

    Der Raspberry Pi Zero W wird mittels USB-Kabel an einen Akku gesteckt. An dem Raspberry Pi Zero W ist bereits die Kamera – das Raspberry Pi Kamera Modul – angeschlossen. Diese Komponenten befinden sich in den Waggons.

    Das Motorshield ist auf den Arduino zu stecken, eine simple Angelegenheit, da das Shield passend für den Arduino Uno gebaut ist. Der Schienenanschluss sowie die externe Stromversorgung von 12-16V sind am Motorshield anzuschließen.

    Nach dem im Begrüßungsforum der Vorschlag kam, erstelle ich hiermit einen eigenen Thread zu meiner bzw. unserer Diplomarbeit „Train Control Center & Utilities“, kurz „TCCU“.


    Kurzer Überblick über folgendem Text:


    1. Vorwort

    2. Ziel der Diplomarbeit

    3. Entstehung

    4. Ablauf/Arbeitsfortschritt während der Arbeit

    5. Technischer Teil

    6. Blockschaltbild: Erklärung + Projekt Inbetriebnahme


    Es ist ziemlich viel Text, vieles neu aus den Erinnerungen geschrieben aber auch vieles aus dem Diplomarbeitsbuch genommen. Bin für Fragen offen, hätte auch noch einige Bilder, die ich bei Interesse hochladen kann (genauere Ablaufdiagramme sowie Bilder von den Aufbauten). Aber wollte den Rahmen fürs erste nicht sprengen (falls das nicht ohnehin passiert ist+:) und hoffe, dass ich verständlich herrübergebracht habe, an was wir gearbeitet haben.

    Tippfehler, etwaige grammatische Fehler u.Ä. sind vermutlich enthalten und dürfen ignoriert werden.. Viel Spaß beim Lesen!:24:


    1. Vorwort


    Zuerst beginne ich mal auf welcher Schule ich war. Ich besuchte das Kolleg für Elektronik und Netzwerktechnik am TGM. Die Dauer belief sich auf vier Semester. Interessant war der Entfall der Zentralmatura, vorgezogene Deutsch/Mathe/Englisch – Reifeprüfung war Anfang drittes Semester (Sept. & Oktober 2017). Die Reifeprüfung nach dem 4. Semester, im Oktober 2018. Nähere Fragen zur Ausbildung kann ich gerne beantworten, aber das soll jetzt nicht das Hauptaugenmerk hier sein.


    2. Ziel der Diplomarbeit (entnommen aus dem Pflichtenheft)


    Zielbestimmung

    Unser Produkt soll das Steuern einer Modelleisenbahn erleichtern. Das Ziel ist es eine zentrale Steuereinheit über eine Benutzeroberfläche bereitzustellen. Die Ansteuerung der Lok wird über einen Arduino erfolgen und der Nutzer kann mittels Kamera auf die Strecke einsehen.

    Musskriterien

    TCCU muss in der Lage sein, eine Lok zu steuern. Ein Lichtsensor soll bei Dunkelheit eine Bahnhofsbeleuchtung einschalten.

    Die Sicht auf die Strecke wird mittels einer Kamera live auf die Webseite (TCCU) übertragen.

    Die Funktionen des TCCU werden in einem lokalen Netzwerk realisiert. Dies ist auch bei Einbindung bei Privatnutzern der Fall. Das TCCU wird per IP-Adresse oder URL im Browser geöffnet. Der Webserver befindet auf einen externen Raspberry.


    3. Entstehung


    Das Diplomarbeitsteam (bestehend aus insgesamt drei Mitgliedern) wurde Ende des zweiten Semesters festgelegt, sowie ein ungefähres Thema. Zu diesem Zeitpunkt wäre geplant gewesen, an der vorhandenen Modellbahn in der Schule weiterzuarbeiten. Dabei handelte es sich um ein zweigleisiges Oval mit Bahnhofsbereich. Die Anlage bestand aus dem Märklin Dreileitersystem. Der Lehrer, der das vorherige Projekt an der Bahn betreute, hat uns angeboten, so gut wie es geht, bei Seite zu stehen.


    4. Ablauf


    Mit dem dritten Semester begann die Arbeit am Diplomprojekt. Unser Projektbetreuer, der auch Mitarbeiter in der Firma des Lehrers ist, der das vorherige Bahnprojekt betreut hat, teilte uns mit, dass dieser nicht die Zeit findet in die Schule zukommen. Somit hatten wir mal die Aufgabe die vorhandene Modellbahn in Gang zu setzen. Zum Glück hatten wir das Diplomarbeitsbuch des alten Projektes, dieses hatte aber schon mal den falschen Befehl zum Starten des deren eigens entwickeltem Programm (zur Blocksteuerung) auf dem Raspberry Pi eingetragen.

    Kurzum: schlau wurden wir nicht daraus, es funktionierte auch nicht wirklich alles so wie es sollte. Nach Rücksprache mit unserem Betreuer kam die Idee, mit dem Abendkolleg zusammenzuarbeiten, da diese an einer Gartenbahn tüftelten. Nach hin und her mit dem Abteilungsvorstand wurde uns dies verwehrt, mit dem Hinweis die vorhandene (H0) Modellbahn zu verwenden. Also auf Anfang. Das kostete natürlich einiges an Zeit. Es hatte keinen Sinn, wir schafften es unseren Betreuer sowie Klassenvorstand zu überreden, an einer eigenen Anlage zu arbeiten. Ab hier konnte endlich mit einer konkreten Planung begonnen werden sowie ein Konzept erstellt werden.

    Das Ziel der Arbeit ist oben ohnehin schon erwähnt. Über die Dauer und Recherchen und Tests haben sich etwaige Komponenten bis zum vollständigen Ergebnis geändert, sowie manche durch Lieferengpässe gezwungen wurden, ausgetauscht zu werden.

    Unsere eigene Anlage wurde auf einer Holzplatte, kommend aus der Schultischlerei aufgebaut. Das Gleismaterial bestand aus von mir zu Verfügung gestellten Kleinbahngleisen. Es war ein simples Oval mit einem zweigleisigen Bahnhofsbereich, mit dem optionalen Ziel die Weichen zu schalten. Leider haben wir zuerst eine gebrauchte Lok über ebay gekauft, die allerdings zu alt für die Digitalisierung war. Somit stellte ich eine Piko Cat Taurus mit digitaler Schnittstelle zur Verfügung und hierbei musste nur noch der Decoder eingebaut werden.

    Nach einigen Anfangsherausforderungen haben wir es dann doch auf die Zielgerade geschafft.


    5. Technischer Teil


    Die Aufgaben im Team waren wie folgt geteilt:

    Mitglied A war für die Website, Datenbank und Router Konfiguration zuständig.

    Mitglied B war für den Livestream, die Elektronik und das automatische Licht zuständig.

    Zu guter Letzt war ich Projektleiter, Verantwortlich für den Hauptteil der Programmierung (das Steuerprogramm am Arduino & Python Script am Raspberry Pi).


    Nun werde ich meinen Bereich näher erläutern, der für dieses Forum wohl am Interessantesten ist. Auszüge aus dem Diplomarbeitsbuch:


    Der Arduino fungiert als Gehirn der Modellbahnanlage. Mithilfe des Motorshields und dessen externer Spannungsversorgung wird das DCC-Signal (siehe 10) erzeugt. Es werden ständig Idle-Packets versendet. Speed-Packets werden nur gesendet, wenn dies verlangt wird. Unsere Lösung ist so gewählt, dass die Befehle über die serielle Schnittstelle eingelangen. Dies war auch beim Testen ein Vorteil, da über die Arduino IDE die Befehle getestet werden konnten.


    Die Befehle haben eine vordefinierte Formatierung und sind lediglich eine Anweisung, welche Lok wie schnell in welche Richtung fahren soll. Das Format sieht wie folgt aus:

    Lokadresse, Richtung, Fahrstufe

    Hierbei ist auf die Trennzeichen zu achten, nämlich ein Beistrich. Dieser ist mittels eines Parameters am Anfang des Programmes definiert und kann bequem auf ein anderes Zeichen geändert werden, ohne dass die Funktionalität des Programmes beeinträchtigt wird.

    Gelangt nun solch ein Befehl zum Arduino, werden zuerst die einzelnen Werte gespeichert. Weiters wird Protokollbedingt die Lokadresse in binär umgerechnet und ebenso gespeichert. Je nach angegebener Fahrtrichtung wird das Direction-Bit auf 0 oder 1 gesetzt. Zum Abschluss wird die Error-Detection berechnet. Die Fahrstufen und deren zugehörigen Bytes sind vom DCC-Protokoll definiert und sind im gleichnamigen Kapitel zu finden.

    Nun ist man bereit, ein DCC-Paket zu senden. Da die Werte alle in binär gespeichert sind, kann man leicht abfragen, ob nun ein „Einser“-Impuls oder ein „Nuller“-Impuls gesendet werden soll. Der Arduino wurde so programmiert, dass nun ein vollständiges DCC-Paket (siehe 10.1) gesendet wird. Dieses wird tatsächlich nur gesendet, wenn ein Input am Serial-Interface bestand. Zudem wurde so programmiert, dass ein Notstop – Lok bleibt sofort stehen – und ein „normaler“ Halt – Lok wird mit vordefinierter Bremskurve im Decoder zum Stillstand gebracht – möglich ist.


    Das Python Script:


    Um das Script überhaupt ausführen zu können, wurde zunächst Python am Raspberry Pi installiert. Wie unter dem Punkt Arduino als DCC-Zentrale ersichtlich, wurde dieser für Input an der seriellen Schnittstelle programmiert. Somit dient das Python Script, da der Arduino am Raspberry Pi angeschlossen ist, dafür, per USB-Schnittstelle Befehle zu senden.

    Da sich die eigentliche Steuerung auf der Webseite befindet, wird das Python Script mittels PHP aufgerufen.


    PHP Aufruf:

    shell_exec("sudo python2 TCCU_serial.py ".$_GET['lokadresse']." ".$_GET['richtung']." ".$_GET['fahrstufe']);


    Wie hier ersichtlich ist, wurde von uns die Version 2 von Python verwendet, da man bei dieser mit übergebenen Werten im Script-Aufruf leichter umgehen kann. Will der User nun die Lok mit der Adresse 3 vorwärts mit der Fahrstufe 5 fahren lassen, sieht der Befehl wie folgt aus:

    sudo python2 TCCU_serial.py 3 Vorwärts 5


    Das Script speichert nun die drei Werte in einzelne Variablen. Es wird zunächst kontrolliert, ob der serielle Port bereits offen ist, falls nicht, wird die Verbindung geöffnet. Um herauszufinden, welcher Pfad der Arduino hat, muss man sich beim Raspberry das /dev Verzeichnis auflisten lassen. Der einfachste Weg ist dabei, dass man es sich ohne angeschlossenem Arduino auflisten lässt und danach mit. Dann merkt man, dass ein Device dazugekommen ist, dieser Pfad wird im Python Script verwendet. In diesem Fall /dev/ttyACM0.

    Dieser Port wird wie oben erwähnt geöffnet und eine Verbindung aufgebaut. Da der Arduino nicht „Vorwärts“, sondern nur „v“ als Befehl benötigt, wird im Script die Variable der Richtung geändert.

    Nun wird die Zeichenkette in Form von „3,v,5“ geschrieben bzw. an den Arduino gesendet.

    Hallo Gery, leicht drehen lassen sie sich nicht gerade, aber vollständig blockieren sie auch nicht.. hast du direkt bei Kleinbahn neue Drehgestelle bekommen? Danke für die Hilfe!



    ... oder wenn es noch möglich ist, größer e Löcher bohren.

    Welche Löcher bohren?:confused:

    Hallo liebe Mitglieder,


    ich hoffe, jemand kann mir bei folgendem Problem helfen (hoffe auch dass ich den Thread in die richtige Kategorie "gesetzt" habe:20:).

    Bei dem Kleinbahn 4020 Triebwagen "greifen" die Zahnräder scheinbar nicht mehr ineinander (Achse & Motor). Liegt es einfach an der fehlenden Ölung? Muss mich in das Thema erst wieder einarbeiten und habe daher noch fehlendes Grundwissen. Habe zu Testzwecken die Zahnräder, die mit dem Motor greifen, ausgebaut, um zu sehen ob die Motoren funktionieren -> Beide voll funktionstüchtig. Sobald die Zahnräder wieder eingebaut sind, blockieren sie.


    Ich bedanke mich jetzt schon bei hilfreichen Antworten!


    LG

    Michi

    Hallo!

    Aufgrund des Erwerbs des 4020.02 suche ich nun den passenden Zwischenwagen bzw. Steuerwagen.

    Solange müsste der Triebwagen noch mit den "unpassenden" Kleinbahnwaggons fahren:S, vielleicht findet sich jemand^^


    Grüße

    Michi

    Bilder kann ich demnächst (frühestens nächste Woche) hochladen!


    Verrätst du uns noch, über welches Thema du deine Diplomarbeit verfasst hast?

    Die Diplomarbeit entstand zu dritt. Das Ziel war es, eine digitale Modellbahnsteuerung Marke "Eigenbau" über eine Website zu verwirklichen. Für die Generierung des DCC-Signals verwendeten wir einen Arduino Uno mit einem Motorshield. Die Website lief auf einem Raspberry Pi der mit dem Arduino verbunden war. Falls es Mitglieder gibt, die sich für das Projekt näher interessieren, würde ich schon eher einen eigenen Thread dafür machen, das sprengt sonst hier den Rahmen^^

    Hallo liebe Mitglieder!


    Da mich der Modellbahnvirus erneut infiziert hat, wollte ich mich kurz vorstellen. Ich hatte schon eine "Vorbelastung" durch meinen Vater und durch meine Diplomarbeit kam das Interesse wieder zurück, durch den Abschluss meiner Ausbildung auch die Zeit. Viele Forenmitglieder, die seit den Anfängen dabei sind, haben meinen Vater wahrscheinlich ohnehin gekannt, der hier besser unter "yo1812" bekannt war. (War sehr schön zu sehen, wie nach wie vor jedes Jahr an ihn gedacht wird)


    Nun zu mir: Ich heiße Michael und bin jetzt 21 Jahre alt. Der Fahrbetrieb auf der H0 Anlage meines Vaters läuft wieder. Wie schon o.e. werden auch viele diese Anlage kennen. Vorerst geht es darum, die Loks wieder nach langer Zeit zu bewegen und zu evaluieren, was funktioniert und was nicht. Zudem konnte ich drei Freunde von mir auch infizieren und wir haben vor, eine H0e Modulanlage zu bauen.


    Ich freue mich darauf, Forenbeiträge beizusteuern.


    Liebe Grüße Michi

    In einer Woche ist Weihnachten!!!!!
    Ich wünsche jeden Forumsmitglied schöne Weihnachten und einen guten Rutsch in ein neues Modellbahnjahr 2009 mit hoffentlich neuen Zugmodellen.




    Liebe Grüße
    yo0702