Guten Morgen zusammen,
wie angekündigt hier das erste Ergebnis meines Experiments mit Arduino und Lego.
Ich habe dazu bei fritzing.org mir das Arduino Mega bestellt.
Thomas52xxx , Lok24 , gefällt das
Hallo Dennis,
ein sehr interessantes Projekt hast du da gestartet. Ist es nach einer ersten Einschätzung deinerseits auch möglich, mit dem Arduino Loks anzusteuern? Von der Platinengröße her könnte es schwierig werden, ihn zu verbauen. Mich interessiert daher vor allem die technische Umsetzbarkeit.
Ich werde auf jeden Fall deine Erfahrungsberichte weiter verfolgen.
Viele Grüße
Christian
warum brauchst Du dafür nen PWM Ausgang und nimmst nicht einfach einen normalen digitalen Ausgang?
Die Idee ist gut, aber für die meisten wohl zu kompliziert.
Für die Steuerung von z.B. Weichen, einem Bahnübergang oder einer Drehscheibe, lässt sich am besten Lego Mindstorms 1.0-2.0 verwenden.
Die alten Sets sind relativ günstig (den RCX bekommt man schon ab 20€).
Ich habe das vor kurzem erst getestet.
Ein PF Zug wird vom RCX gesteuert (ein Motor für Start/Beschleunigung und ein anderer für Stop).
Dazu habe ich eine kurze dauerschleife programmiert.
Ich drücke auf Start und der Zug fährt los (Geschwindigkeit vorher berechnet). Dann fährt er durch eine Lichtschranke (Lichtsensor Lego) wodurch eine Weiche gestellt wird. Der Zug fährt über die Weiche auf ein Abstellgleis und hält dann an. Da könnte z.B. ein Bahnhof stehen etc.
Nachdem der Zug steht, schaltet die Weiche wieder zurück.
Das ist nur eine sehr simple Programmierung, aber auch das lässt sich ausdehnen, wenn man weiß was man realisieren möchte.
Arduino ist nicht schlecht, aber wäre es nicht einfacher alles direkt Digital zu steuern?
Eine Basis und in jeder Lok nen Decoder etc. So hab ich das später mal vor.
Instagram -> the_collector_of_lego
https://brickset.com/sets/ownedby-LuDaCriSoNe
Wie genau meinst du das mit ansteuern? So als Empfänger für eine digital Fernsteuerung so wie der Vorschlag von LuDaCriSoNe?
Ich denke das geht bestimmt, nur die Frage wie. Falls mir das in die Finger kommt werde ich mich hier dazu melden.
muah
10.01.2015, 17:07
Als Antwort auf den Beitrag von unschuldslamm
Editiert von
muah
10.01.2015, 17:18
Der aktuell verwendete IC kann im Dauerbetrieb 1A vertragen, in der Spitze wohl bis 2A (für 5ms). Der PF Motor zieht im Leerlauf bereits 600mA, an der Weiche mit durchdrehendem Rad 1,2A. Wenn ich ihn also mit weniger Strom versorge (im Moment ca. 4V) kann ich die Zeit die er laufen muss, feiner justieren, so dass das weiße 2,5NM Rad nicht durchdrehen muss und dadurch der Motor nicht so viel Leistung zieht, was den IC länger am Leben hält. Ich bin bereits auf der Suche nach fertigen H-Bridge Boards die etwas mehr Leistung bis 2A Dauerbetrieb können, dann probiere ich das mit vollen 9V aus.
Mit dem kompliziert könntest du Recht haben, man muss sich schon etwas mehr mit dem Thema beschäftigen. Mit den Lego Mindstorms Produkte kenne ich mich gar nicht aus, deswegen schwer dazu was zu sagen.
Bei meinem Vorhaben wollte ich in erster Instanz nur eine Teilunterstützung, also Weichen im Schattenbahnhof und Kreuzweiche im Zubringer, alles weitere dann später. Ich habe die Befürchtung wenn ich mich zu lange am Thema Steuerung aufhalte, bleiben die anderen Baustellen geschlossen. Also dann jetzt eine kleinere Lösung und sobald das läuft wieder zum Thema Steuerung.
Hi,
ich kann dir nicht viel raten oder sagen, oder irgendwas, aber das gefällt mir.
Interessant, was man alles ausprobieren kann.
Fritzing habe ich auf der MakeMunich letzten November kennengelernt, einer Messe für jegliches Selbermachen, 3d-Drucken, elektrisch basteln etc. Dort wäre deine Weiche (oder wird) sicher gut ankommen als Ausstellungsobjekt ;)
Werde ich auf jeden Fall weiter verfolgen, was du so machst.
Gruß, Florian
Ich muss gestehen, dass ich Deine Schaltung doch noch nicht ganz verstanden habe...
Mein erster Gedanke war, Du willst einen Motor zeitgesteuert ansteuern. Da war mein Gedanke:
Transistor um Steuersignal und den Stromkreis vom Moter zu verbinden. Und solange der Motor laufen soll, wird der entsprechende digitale Ausagang gesetzt. Und wenn der Motor nicht mehr laufen soll, schaltest Du das Steuersignal wieder aus... ganz einfache Aufgabe für den digitalen Ausgang.
Du musst ja aber den Richtungswechsel beim Motor noch einbauen. Da weis ich ned was Dein IC macht. Bzw. wie der PF-Motor tickt. Du führst ja auch nur zwei Kabel zum Motor....
Ich habe bisher nur ein bisschen mit Arduino und Motoren gearbeitet und auch schon länger her. Aber ich habe die immer über die servo.h Bibliothek angesteuert und dazu sagt arduino.cc:
"The Servo library supports up to 12 motors on most Arduino boards and 48 on the Arduino Mega.[...]" Also die Ansteuerung funktioniert dann offenbar über ganz normale digitale Ausgänge...
siehe: http://arduino.cc/en/pmwiki.php?n=Reference/Servo
Hallo,
sind die Motorströme von dir selbst ermittelt? Laut coolbricks.com hat der PF Medium Motor eine Stromaufnahme im Leerlauf von 65mA und einem Blockierstrom von 850mA. Ich hab sie noch nicht nachgemessen, aber die Werte scheinen mir, für die Größe des Motors, plausibel zu sein. 600mA im Leerauf hört sich für mich eher nach einem Defekt an.
Guten Morgen,
meine Idee ist die folgende:
Ich habe später ein Panel, auf dem die einzelnen Weichen aufgemalt sind. Die Darstellung wird wahrscheinlich in Gruppen erfolgen (z.B. Schattenbahnhof Links, Schattenbahnhof Rechts, Kreuzweiche oben, Güterbahnhof, Hauptbahnhof, etc.). Den Zustand jeder Weiche sollen zwei LEDs anzeigen, z.B. grün = geradeaus, gelb = abbiegen. Jede Weiche bekommt dann noch einen Taster.
Wenn ich dann auf den Taster drücke soll die Weiche umgeschaltet werden. Dazu soll dann auch die LED entsprechend angesteuert werden, so dass man am "Steuerpult" sieht wohin die Weiche führt. Und Während des gesamten Umschaltvorgangs soll eine zusätzliche LED immer leuchten damit man sehen kann, dass eine Aktion ausgeführt werden kann und man deswegen keine weitere Aktion just in diesem Moment ausführen kann. Denn im Moment habe ich noch keine Lösung (programmtechnisch) wie ich den Motor einschalten, dann 0,8 Sek. laufen lassen und wieder abschalten kann, ohne dass das Programm in dieser Zeit wartet. Da werde ich mich noch auf die Suche begeben.
Den Richtungswechsel beim Motor ist kein Problem. Da es sich ja um einen Gleichstrommotor handelt brauch ich nur + und - tauschen und der Motor läuft in die andere Richtung.
digitalWrite(motor1_A,HIGH); // A = HIGH and B = LOW means the motor will turn right
digitalWrite(motor1_B,LOW);
digitalWrite(motor1_A,LOW); // A = LOW and B = HIGH means the motor will turn left
digitalWrite(motor1_B,HIGH);
Da dies kein Servo ist, habe ich das mit der Servo-Bibliothek nicht ausprobiert. Beim Servo wird wohl auch die aktuelle Position zurückgeliefert und ich verstehe den Servo eher als Stellmotor, der nicht durchgehend in eine Richtung drehen kann, sondern nur einen begrenzten Drehbereich hat.
Ja, ich könnte auch zum Motor einen Widerstand einbauen der dann die Strommenge begrenzt, dann könnte ich über den regulären Digital Ausgang gehen.
Moin Bernd,
ich habe das eben noch mal nachgemessen, mit Brille (Dieser Punkt im Multimeter ist aber auch sowas von klein). 65mA im Leerlauf und gut 600mA wenn ich den Motor am drehen hindere, bei 9V. Bei 4,3V sind es ca. 43mA und 320mA. Demnach hätte ich auf jeden Fall keine Überlastungsprobleme mit dem IC.
Danke.
Hallo,
Moin Dennis,
schöne Sache die Du da machst.
Moin Moin,
so nachdem ich mir gerademal so eine h-bridge-Schaltung (mit nem L293D IC) im Arduino-Project-Book angesehen habe, verstehe ich Deine Schaltung nun - hoffe ich
Du schließt zwei normale digtale Pins an die h-bridge an um den Motor zu steuern und einen pwm-Ausgang für die Geschwindigkeit des Motors? Bzw. wie du sagst für die Spannung bzw. Stromstärke? (was eigentlich?).
So wie ich es hier gerade lese braucht die h-bridge einen Eingang, der sie generell anstellt. Und da schließt Du den pwm-Ausgang an und gibst halt nur 50% der Leistung drauf. Ist das so?
Was mir da einfällt: der PWM-Ausgang ist aber doch nur eine Simulation eines analogen Ausganges, indem sehr schnell zwischen Strom an und aus umgeschaltet wird. Der Motor müsste daher im schnellen Wechsel die volle Leistung bekommen und wieder nichts. Bei einem (analogen) Multimeter pendelt sich dann der Zeiger vermutlich bei 4,5 V ein, aber eigentlich müsste es doch 9-0-9-0... sein, oder?
Bei Deiner Gesamtplanung ist das mit den PWMs aber imho gar nicht das Problem, weil Du pro Weiche einfach eine Menge an Pins verbrauchst, auch durch LEDs und Taster.
Wenn ich es richtig verstehe, willst Du am Ende aber nicht alles miteinander kombinieren. Also etwa: Taster 1 gedrückt und dann schalten Weiche 1,3,7 und 13 um eine bestimmte Strecke zu schalten.
Wenn Du das nicht machst, sondern jede Weiche, Signal oder was noch alles für sich alleine (mit Leds und Taster) bleibt, dann kannst Du ja auch problemlos zwei oder drei Arduino-Boards parallel nutzen!?...
Danke
Das Servo liefert keine Positionswerte zurück. Es hält die vorgegebenen Position, so lange es den passenden (PWM)Wert geliefert bekommt, auch wenn es von außen belastet wird. Ist das Signal weg, aber das Servo wird noch mit Spannung versorgt, kommt es in einen undefinierten Zustand. Was dann passiert, kommt aufs Servo an:
Manche haben ein Failsave eingebaut und fahren dann in eine vorgegebene, oder programmierbare Position, das ist aber eine Minderheit und eigentlich nur bei hochpreisigen Digitalservos zu finden.
Bei den meisten 08/15 Modellen passiert meist nichts, sie lassen sich dann aber bei Belastung verstellen, da sie ja nicht mehr wissen, welche Position sie halten sollen. Es gibt aber auch welche, die dann unkontrolliert herum zucken oder einfach in eine Endposition fahren. Bei diesen wird der Motor aber so stark belastet, daß er das nicht sehr lange mitmachen wird.
Du meinst sicher ein Relais mit Wechselkontakt, oder? Damit könnte man zwar, mit nur einem Digitalausgang, die Drehrichtung wechseln, es fehlt aber noch eine Abschaltung der Spannung bei erreichen der Endposition. Dazu wären dann wenigstens noch zwei Endschalter an der Weiche notwendig, andernfalls würde der Motor ständig unter Spannung stehen und irgenwann durch brennen.
Danke Werner, das werde ich mir auf jeden Fall mal anschauen und ausprobieren.
Ich glaube Spannung ist da richtiger und so ist es, ich kann einen Wert zwischen 0 und 255 für das PWM definieren und habe dort 100 gewählt.
Wie weit ich das kombieren will weiss ich noch nicht. Aber im ersten Schritt reicht die Weichensteuerung. Sofern keine Abhängigkeiten bestehen geht das mit den Einzellösungen. Allerdings interessiert mich schon wie man mehrere Arduino verbinden kann.
Lok24
11.01.2015, 18:24
Als Antwort auf den Beitrag von bernd-das-brot
Editiert von
Lok24
11.01.2015, 18:29
Hallo,
irgendwie verstehe ich das ganze Problem(?) nicht.
Ich würde immer alle Motoren seriell schalten.
d.h. ich drücke in 1sec 5 Tasten, die werden im Programm in ein Array geschrieben und dann nacheinander in 10sec (2 pro Weiche) abgearbeitet.
Und zur Anzahl Motoren: ich kann doch (z.B. mit externen Bauteilen) jeden Motor einzeln mit Strom versorgen.
Mit anderen Worten: ich brauche zwei Ausgänge für Rechts-Linkslauf .
Mit 8 weiteren Ausgängen kann ich bestimmen, welcher von 256 Motoren damit laufen soll.
Grüße
Werner
Hallo,
so wie ich es lese jeder Port(!) max 40mA, da fehlt irgendwo eine Leistungsendstufe, oder?
Du betreibst den Motor nicht etwa direkt an den IC-Ausgängen? *haaresträub*
Grüße
Werner
Hallo Werner,
40mA pro Ausgang beim Arduino, der IC kann 1A. Ja, der Motor wird direkt an den IC angeschlossen. Das ist wohl soweit auch korrekt, allerdings sollten zwischen IC und Motor wohl noch Widerstände o.ä., allerdings fehlen mir da die Kenntnisse.
Dennis
Hallo Dennis,
ah, Du hast einen Treiber-IC dahinter.
Das war mir nicht klar. Dann ist alles gut.
d.h. aber Du betreibst den Motor mit einer externen Spannungsquelle.
Da wüsste ich keine sinnvolle Verwendung für Widerstände (evtl Pull-Up, aber die sind meist integriert.
Grüße
Werner
Vielleicht zum Besseren Verständnis, ich habe mich an diesem Aufbau orientiert.
http://www.arduino-tutorial.de/2010/06/motorsteuerung-mit-einem-h-bridge-ic/
Hallo Dennis,
ich meinte einfach als Ersatz für die PF-Fernsteuerung der Loks. Dabei werden ja maximal 2 Motoren per PWM angesteuert und eventuell noch die Beleuchtung.
Aber auch die Weichenfernsteuerung, die du planst klingt sehr interessant.
Viele Grüße
Christian
Moin Christian,
ich will auf jeden Fall die IR Funktion testen. Meine Ideen gehen aktuell dahin wenn der Zug auf seinem Gleis im Schattenbahnhof durch die Lichtschranke fährt ein IR Signal zum Stehenbleiben zu bekommen. Mir schwebt auch vor den Zug bei der Auf- oder Abfahrt zum Schattenbahnhof in der Geschwindigkeit anzupassen. Werde mich hoffentlich in den nächsten Tagen mal um das Material kümmern können.
Habe letzte noch eine weitere Baustelle aufgemacht, der Horizon Zug hat jetzt zwei Motoren, habe aber das Gefühl die fahren unterschiedlich schnell, muss ich in Ruhe mal ausprobieren. Und obendrein muss ich meine Auffahrt anpassen, die Doppelwaggongs hebeln sich aus der Weiche, weil sie ja in der Mitte auf einem gemeinsamen Gestell fahren :/
Dennis
So, nachdem ich jetzt wieder etwas Zeit gefunden habe und meine Elektronikberatungsstelle "Thorsten" auch (der arme), hier nun die Ergebnisse
Horizon Zug mit je 1 PF-Motor im Triebwagen klappt mit 2x 50cm Verlängerung einer kurzen Verlängerung, allerdings beim Fahren über die Kreuzweiche wird das Kabel zwischen den Waggons so gespannt, dass es teilweise die Waggongs aus den Schienen drückt und dann der Waggon entgleist. Ich denke da muss ich die Kabel in den Waggonenden fest positionieren inkl. Bewegungsfreiheit, damit das nicht mehr passiert.
Zum Thema Arduino: ohne Unterstützung eines Fachkundigen ist das Thema echt frickelig. Inzwischen habe eine Lichtschranke mit IR-LED und IR-Empfänger am laufen, allerdings die falschen Widerstände und IR-Empfänger (woher soll ein Laie den Unterschied zwischen IR-Diode und IR-Transitor kennen) gekauft, was für ein Gefrickel. Thorsten war zwischendurch immer wieder innerlich am Kopfschütteln
Die Ansteuerung der Lego IR Empfänger geht dank einer Libary, die man frei runterladen geht, sehr einfach. Einfach Speed 1-7, Farbe (rot/blau) und Channel 1-4 angeben und der angeschlossene Motor tut seinen Job. Es gibt auch einen Befehl für STOPP. Liegt natürlich alles im Moment nur im Probeaufbau vor. Sobald wir die korrekten Bauteile haben werde ich einen Probeaufbau für 1 Weiche mit Lichtschranke und Halt für einen Zug herstellen, das ganze testen und hier dann ausführlich vorstellen inkl. Bauteilliste und Programmcode.
Einen schönen Abend.
Hallo,
vielen Dank für den interessanten Bericht.
Wenn du die Triebköpfe um eine Noppe verlängerst, passen beide Motoren in einen Triebkopf. Damit entfällt die ganze Fummelei mit den Kabeln quer durch den Zug, was auch das zerlegen Zecks transport vereinfacht.