Heute möchte ich euch mein kleines Bastelprojekt mit dem Mikrokontroller vorstellen. Nachdem nun schon viele interessante Projekte hier im Forum vorgestellt wurden, folgt nun meine Bastelei: Ein Messwagen für Märklin HO.
Zum Hintergrund: Märklin hatte in der Vergangenheit einen Messwagen 49960 herausgegeben, dieser diente mir bei meinem Projekt als Vorbild. Natürlich hätte man auch einen einfachen Fahrradtacho nehmen können, doch ich wollte eine Art Komplettlösung, so wie es sie von Märklin gab.
In meinem Messwagen kommt ein Atmel Mega16A zum Einsatz. Programmiert wurde in C, AVR Studio5. Als Basis dient ein n-Wagen Märklin 4259. Der Sourcecode für den Mikrokontroller befindet sich am Ende des Posts.
Hier die ausführliche Dokumentation des Messwagens: [attachment=0]Messwagen_Dokumentation.pdf[/attachment]
Fangen wir an: Welche Funktionen soll der Messwagen haben, und wie steuere ich diesen an? Folgende Funktionen sind implementiert: - aktuelle Geschwindigkeit - maximale Geschwindigkeit - gefahrene Strecke - Fahrzeit - Umgebungstemperatur - Reset - aus
Umgebungstemperatur? Ja, richtig gelesen, ich habe ebenfalls eine Temperaturmessung vorgesehen.
Dazu später mehr. Um zwischen diese einzelnen Funktionen schalten zu können, wird ein handelüblicher Funktionsdekoder verwendet, deren Ausgänge über einen Optokoppler mit dem Mikrokontroller verbunden sind. Um die anderen Messdaten zu erfassen, wird ein Radsensor in Form von einem Hallsensor eingesetzt.
Hier der gesamte Schaltplan:
Damit die gesamte Schaltung in den Wagenkasten passt, habe ich die Schaltung in verschiedene Teilschaltungen zerteilt. Fangen wir mit der Spannungsversorgung an. Ein Brückengleichrichter richtet die Digitalspannnung gleich, ein Pufferkondensator glättet die Spannung. Der Linearspannungsregler stellt die nötigen 5V Versorgungsspannung der gesammten Schaltung zur Verfügung. Die LED dient als Kontrolle, das Spannnung anliegt. Im Langzeittest wird der Linearregler relativ warm, einen Kühlkörper kann aufgrund der engen Platzverhätnissen nicht eingebaut werden. Eine mögliche Alternative wäre ein DC/DC Wandler; dieser hat dann einen deutlich besseren Wirkungsgrad (rund 70 bis 80%). Ein Schleifer und ein Messingbech aus der früheren Innenbeleuchtung (Märklin #7330) stellt den Kontakt zur Schiene her.
Dann folgt die Anzeige: Bitte nicht erschrecken Die 7 Segmentanzeigen werden vom Mikrokontroller durch Multiplexen angesteuert.
Zum Schluss noch der eigentliche Mikrokontroller mit dem Optokoppler, einem Zählbaustein 4024 und dem Thermistor für die Temperaturmessung (Mikrokontroller und 4024 jetzt nicht eingesteckt).
Der Optokoppler sorgt dafür, dass der Funktionsdekoder galvanisch von dem Rest der Schaltung entkopplet ist. WICHTIG: Die Ausgänge des Funktionsdekoders müssen erst gedimmt werden, da sonst durch die hohe Spannung des Dekoderts der Optokoppler zerstört wird. Alternativ kann auch ein passender Widerstand zwischen Decoder fx und Optokopplereingang eingebaut werden. Wie werden denn nun Geschwindigkeit und Strecke gemessen? Der Hallsensor erfasst die Achsumdrehungen mittels eines kleinen Neodym-Bohr-Magneten. Der Zähler 4024 erfasst diese Impulse und der Mikrokontroller ließt den Zählerstand aus. Dieses passiert in einem Zeitfenster von 1 Sekunde. Anschließend kann mit der Anzahl der Impulsen und des Raddurchmessers die Strecke und die Geschwindigkeit ermittelt werden. ich habe einen bipolaren Hallsensor verwendet. Daher müssen tatsächlich zwei Magnete an der Achse befestigt werden.
Die Temperatur wird über einem Widerstandsteiler ermittelt und mittels ADC-Port des Mikrokontrollers eingelesen.
Nachdem nun alles Aufgebaut ist, folgt die Preparierung des Wagen. Dafür muss der Wagenboden isoliert werden und ein Schleifer sowie eine Masseplatte in die Drehgestelle installiert werden (Teile stammen wie oben schon erwähnt von der ehemals eingebauten Innenbeleuchtung).
ich verstehe zwar nichts (Programmierung), aber es sieht toll aus, was Du geschaffen hast... Ein weiterer Höhepunkt Deines Beitrages wäre ein Video des Wagens in Aktion....
Danke für die Komplimente. Ganz fertig ist der Wagen allerdings noch nicht, es fehlt noch der Einbau des Funktionsdekoders. Bisher habe ich die Funktionen durch Drahtbrücken ausgelöst. Ebenfalls soll noch eine schwarze Pappe im Bereich der 7 Segmentanzeigen die Lücken füllen, denn die beiden Fenster links und rechts der 4 Anzeigefenster sind noch komplett leer.
Falls gewünscht, kann ich noch eine Auflistung mit den Bauteilen (Widerstände, Dioden,...) in das Forum einstellen.
@ Harald: Eine gute Idee mit dem Video, das werde ich in den nächsten Tagen noch machen
Gruß Oliver
Bastelprojekt mit Mikrokontroller - Bluetooth Verbindung: Selbstbau HO Messwagen mit Atmega16
fesche Sache! Ich hatte eine ähnliche Idee, hätte mir allerdings einen Wagen zu einem "richtigen" Messwagen wie sie auch die Bahn hat, umgebaut, allerdings nicht mit einer Anzeige sondern mit einer Kamera (habe ein Kamera-Modul aus einem alten Siemens-Handy, welches sich recht gut per µC ansteuern und auswerten lassen soll), sowie einem Gyrosensor um ein ausgiebiges Streckenprofil aufzeichnen zu können (mit Steigungen, maximalen Querbeschleunigungen, Unregelmäßigkeiten bei der Gleisverlegung usw. ). Basis wäre wohl ein Arduino, es gibt ja sogar solch kleine Chips dass sie in einen H0-Wagen passen würden. Je nach Hardware-Aufwand würde es sich dann aber fast schon lohnen, sich Platinen fertigen zu lassen (ein Kommilitone fräst Platinen auf einer selbstgebauten Portalfräse).
Ist aber bislang nur ein Hirngespinst, seitens des Lastenhefts aber schon ein recht ausgefeiltes!
Hallo Oliver, klasse Projekt. Vor allem freut mich, dass hier einer mal was vorstellt, dass direkt in AVR-Studio programmiert ist. Ich programmiere meine Controller auch direkt, verwende aber noch Studio 4. Was benutzt Du zum programmieren des AtMega? ( ich habe mir einen AVR-Dragon zugelegt )
Da ich noch analog fahre, kann ich deine Anleitung zwar nicht direkt verwenden, finde es aber trotzdem sehr interessant.
toller Messwagen! Sauber aufgebaut und dokumentiert, wie es sein soll. Von dem Code in C verstehe ich allerdings nicht viel, die Sprache habe ich nie lernen dürfen flaster:
wie gewünscht, habe ich eine Auflistung der eingesetzten Bauteile erstellt (siehe Bauteile.xls).
@Franz-Peter: Gute Idee mit dem Lackdracht, das würde die Sache doch deutlich übersichtlicher gestalten. Ich habe meinen Programmer aus der Bucht erstanden: http://www.ebay.de/itm/AVR-USB-ISP-Progr...=item5642ecc35f. Dieser ist sehr kostengünstig und arbeitet sehr zuverlässig unter AVR Studio5. Theroretisch kann man den Messwagen auch analog einsetzen; man müsste nur den Optokoppler samt Funktionsdekoder durch SMD-DIPschalter ersetzen und diese auf der Wagenkastenunterseite installieren und schon kann dieser Wagen auch auf analogen/delta Modellbahnen fahren.
@Moritz: Natürlich werde ich den Messwagen zum Stammtisch nächste Woche mitbringen. Wäre toll, wenn bis dahin auch die Lichtschranke von Sebastian funktioniert, dann kann man gut vergleichen, ob die Messergebnisse auch alle so stimmig sind
@Niklas: Also eine genaue Auswertung des Streckenprofils. Damit ließe sich ja zum Beispiel gut erfassen, ob die Kurvenüberhöhung in Bögenvorbildgerecht ist. Wie groß ist denn so ein Gyrosensor? Ich habe damit noch nie gearbeitet, wäre aber eine wirklich interessante Idee! Natürlich ist eine Platinenlösung immer die saubere und professionellere Lösung. Sollte der Wagen die nächsten Tests (Wärmeentwicklung Linearregler, Pufferung der Schaltung bei schlechter Masserückführung, insbesondere bei schmutzigen Gleisen oder Weichen,...) gut bestehen, dann werde ich vielleicht mal ein paar Platinen fertigen lassen.
Gruß Oliver
Bastelprojekt mit Mikrokontroller - Bluetooth Verbindung: Selbstbau HO Messwagen mit Atmega16
Dateianlage:
Aufgrund eingeschränkter Benutzerrechte werden nur die Namen und (falls vorhanden) Vorschau-Grafiken der Dateianhänge angezeigt Jetzt anmelden!
um die Größe zu demonstrieren, bemühe ich mal wieder ein Foto eines Arduino-Projekts aus der Uni:
Gelb eingekreist ist der Gyrosensor auf einem sog. Breakout-Board, welches den Anschluss des Chips mit manuellen Mitteln ermöglicht (Lötpunkte für Buchsenleiste). Als Größenreferenz diene die Platine unterhalb, welche die Größe des Arduinos hat. Der Chip selber passt auf jeden Fall in einen H0-Waggon (hat denke ich ugf. die Größe eines N-Dekoders).
Hallo Oliver, ja, so ähnliche Geräte hatte ich mir damals auch angeschaut. Das ist natürlich schon ein ordentliches Stück günstiger als der AVR-Dragon. Was mich an den Geräten nur stört ist, dass man damit nicht debuggen kann.
Ein schönes Stück was du da konstruiert hast! Jetzt hast du mich angesteckt, und ich würde mir auch gern so einen Wagen bauen.
Wärs vielleicht möglich einen fertigprogrammierten Atmel-Chip von dir zu erstehen? Von sowas habe ich nämlich nur sehr wenig Ahnung, da wäre eine vorgefertigte Lösung optimal.
Was hat denn die gesamte Elektronik zusammen ungefähr gekostet?
die Stückliste habe ich im Thread als Download hochgeladen. Die Bauteilkosten lagen bei ca. 30 Euro inklusive Mikrokontroller. Hast du denn schon einmal in C programmiert? Natürlich kann ich dir auch einen Atmel programmieren und dir diesen zuschicken. Allerdings befindet sich der Messwagen noch in der Testphase; bei dem nächsten Stammtisch wird der Wagen ausgiebig getestet. Bis dahin kann sich das Programm noch geringfügig ändern.
Es lohnt sich auf jeden Fall, sich näher mit einem Mikrokontroller zu befassen. Alles was du bruchst, ist ein Mikrokontroller, die Programmierumgebung und einen Programmieradapter. Die Programmierumgebung (AVR Studio) gibt es sogar kostenlos von Atmel. Im Internet gibt es viele Tutorials zum Thema Einstieg mit Mikrokontroller, empfehlenswert ist Folgendes: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial.
Also die 30€ inkl. Atmel finde ich echt preiswert. Soweit ich das mit meinem Bastelkollegen durchbesprochen habe, würde ich die Schaltung wahrscheinlich in SMD Bauform aufbauen. Vielleicht wird auch eine Platine selbstgeätzt, mal sehen.
Vom Programmieren von Microprozessoren habe ich leider echt null Plan. Und mein Freund kennt sich nur ein wenig mit PIC-Programmierung aus. Die Atmels spielen da schon in einer anderen Liga. Werd mal schauen ob ich Zeit habe mich da einzulesen.
Und Eile hat das ganze Projekt ohnehin nicht, vorher brauche ich auch mal einen oder zwei günstige Spenderwagen. Bei mir soll im Endeffekt so einer entstehen: http://www.railfaneurope.net/pix/at/work...90_000-3_G2.jpg Die Fensteranordnung auf der Wagenseite macht mir derzeit noch planerische Probleme.
bisher fehlt immernoch der Funktionsdekoder, um die anderen Funktionen, wie zum Beispiel Fahrzeit und Strecke anzeigen zu können. Deshalb habe ich als Übergangslösung vorerst einen 4poligen DIP-Schalter eingebaut:
Nun kann ich laut Tabelle folgende Funtionen schalten:
Geschwindigkeit: 1 ON max. Geschwindigkeit: 1 und 2 ON Strecke: 2 ON Fahrzeit: 3 ON Temperatur: 1 und 3 ON Reset: alle ON aus: alle OFF
Die Messergebnisse sind hinreichend genau; dies wurde auf dem letzten Stammtisch Heinsberg/Düren ausführlich geprüft.
Somit sollte der Code für den Atmel so gut wie fertig sein.
@ Georg: Falls Interese besteht, dann schicke ich dir in den nächsten Tagen mal eine PN.
Gruß Oliver
Bastelprojekt mit Mikrokontroller - Bluetooth Verbindung: Selbstbau HO Messwagen mit Atmega16
Also mein Messwagen wird wohl doch auf einem PIC-Prozessor basieren und ausser Geschwindigkeit messen nichts können. Dafür komme ich mit dem PIC-Programmieren besser zurecht. Bis der allerdings herzeigbar ist, wirds sicher noch ein Weilchen dauern. Der Bauteilhaufen liegt schon bereit, aber der Wagen braucht noch einiges an Umbauten, die Platinen wollen noch geätzt werden (ein Layout dafür gibts auch noch nicht), und die Firmware für den Prozessor muss ich noch anpassen an meine Bedürfnisse. Ich rechne mit Fertigstellung in frühestens einem Jahr. Immerhin soll mein Messwagen auch komplett neu lackiert werden, und Airbrusherfahrung habe ich auch noch genau Null... Ein ehrgeiziges Projekt. ^^*
Sobalds was gibt, werde ich mich aber sicher wieder melden.
der Sensor ist ein PTC. Der andere Widerstand ist ein normaler Widerstand; zusammen bilden sie einen Spannungsteiler. Je nachdem, welche Umgebungstemperatur vorliegt, ändert sich der eine Widerstand des PTC Elements. Das hat zur Folge, dass sich das Potential zwischen den beiden Widerständen ändert. Diese Spannungsänderung wird vom µC über einen ADC (Analog Digital Wandler) registriert und dann gemäß der Spanungs/Temperaturkennlinie des PTCs in die passende Temperatur umgerechnet.
Gruß Oliver
EDIT: Die Exceltabelle mit den Bauteilen wurde aktualisiert, nun lassen sich alle Bauteile zur Schaltung zuordnen
Bastelprojekt mit Mikrokontroller - Bluetooth Verbindung: Selbstbau HO Messwagen mit Atmega16