Steuerung bis zu 6 Motore mit RCX oder CyberMaster

Rund um die Version 1.5 und 2.0
NQC und andere Software für den RCX

Moderator: Moderatoren

Benutzeravatar
braingib
Mindstormsfreund
Mindstormsfreund
Beiträge: 4
Registriert: 23. Nov 2008 16:53
Wohnort: Nürnberg

Steuerung bis zu 6 Motore mit RCX oder CyberMaster

Beitragvon braingib » 24. Nov 2008 20:53

Hallo,

es ist geschafft, ich kann bis zu 6 Motore mit einem Ausgangsport steuern!
Die Idee für das Projekt entstand, als ich einen Roboter, wie aus dem Film No5, bauen wollte, und das Problem hatte, einfach mehr als 3 Motore zu benötigen: Zwei werden schon zum Fahren benötigt (Raupen), sodass nur noch ein Motor, für andere Bewegungen genutzt werden kann.
Ziel war es, weder den RCX noch den Cyber Master zu verändern, d.h. die einzige Verbindung zum RCX oder Cyber Master für externe Hardware durfte nur der Port von Motor B, an den ein normales Motorkabel angeschlossen wird, sein.
Wie kann man nun über den PC bis zu 6 Motore unabhängig steuern?
Nun, jetzt muss ich etwas in die Digital-Technik eintauchen:
Der Port von Motor B hat zwei Zustände: Motor vorwärts (+9V) und Motor rückwärts(-9V). Binär ist das gleichbedeutend mit „1“ (vorwärts) und „0“ (rückwärts). Den Port von Motor B kann man nun über ein PC-Programm so ansteuern, dass die Zustände vorwärts bzw. rückwärts schnell in einer bestimmten Reihenfolge auftreten.

Beispiel:
Ein PC-Programm führt folgende Befehle aus:
Motor B Rückwärts „Gleichbedeutend mit binär 0“
Motor B on
Motor B off

Motor B Rückwärts „Gleichbedeutend mit binär 0“
Motor B on
Motor B off

Motor B Vorwärts „Gleichbedeutend mit binär 1“
Motor B on
Motor B off

Motor B Vorwärts „Gleichbedeutend mit binär 1“
Motor B on
Motor B off

Startet man das Programm erscheint am Port von Motor B die Spannungsfolge –9V,0V, –9V,0V, +9V,0V, +9V,0V. Binär hat man damit eine serielle Übertragung entsprechend: 0 0 1 1 gleichbedeutend mit dezimal 3. Ändert man die Reihenfolge der Programmschritte kann man also bis zu 16 verschiedene 4 Bit-Worte realisieren.
Die externe Hardware besteht nun aus einer Logik, die diese serielle Information am Port von Motor B abgreift (über Opto-Koppler, damit vollkommen getrennt), in eine parallele Information umwandelt und den Motorsteuerungs-IC‘s zur Verfügung stellt.

Mein Roboter, ich habe ihn No6 getauft, hat nun 6 Motore für die Körperbewegungen und 2 Motore zum Fahren. No5 kann den Kopf drehen, den Arm heben, den Körper beugen, das Handgelenk drehen, die Hand öffnen und schließen und in alle Richtungen fahren.

Gruß
braingib

Benutzeravatar
Superspian
Schreibt viel
Schreibt viel
Beiträge: 209
Registriert: 20. Jun 2006 13:35
Wohnort: @ home

Beitragvon Superspian » 26. Nov 2008 20:57

Wow, hört sich klasse an. Und sogar so erklärt, dass ich das verstehe. Und ich habe nicht gerade viel Ahnung von sowas ;)

Eine Frage habe ich noch:
Muss der RCX dann ständig diese Signale senden? Also quasi, wenn der Motor B ganz auslassen würde, würde auch ein Motor anhalten, der sich vorher gedreht hat? Wenn das der Fall ist, kann man immer nur einen Motor gleichzeitig ansteuern oder?

Ansonsten wie gesagt, ne super Idee :lol:
Würdest du auch Bilder von dem Roboter veröffentlichen? Ich wollte vor langer Zeit auch mal so einen Roboter bauen, habs aber irgendwie nie wirklich angefangen...

Benutzeravatar
braingib
Mindstormsfreund
Mindstormsfreund
Beiträge: 4
Registriert: 23. Nov 2008 16:53
Wohnort: Nürnberg

Beitragvon braingib » 26. Nov 2008 21:54

Hallo Superspian,

alle Motore können vollkommen unabhängig gesteuert werden, auch die zum Fahren für die Raupen.
Zum Steuern der 6 Motore habe ich ein kleines Downloadprogramm geschrieben, denn um einen Motor starten zu können bedarf es mindestens 12 Befehle + 6 Befehle (zwei Stopbits). Macht also 18 Befehle. Bis alle Kommandos komplett von PC übertragen und vom PBrick empfangen wurden vergeht ca. 1 sec. (Liegt am Übertragungsprotokoll zwischen PC und PBrickâ„¢). Das ist zu viel, denn bis man den Motor wieder gestoppt hat ist z.B. ein von einem Roboter in die Hand genommenes Glas schon längst ausgeschüttet.
Hier bietet es sich an, die Steuersequenzen als Download in den Pbrick zu laden und bei Bedarf über ein Programm vom PC aus nur über einen Befehl (Variable als Index) zu aktivieren.

Das Downloadprogramm wird vor dem Steuerungsprogramm, das ich in Visual Basic geschrieben habe, in den PBrick geladen. Um eine Sequenzen ablaufen zu lassen, muss man dann nur einen Befehl "PBCtrl.SetVar" (setzte Variable) senden. 1 für Motor 1, 2 für Motor 2, usw.
Und so sieht er aus:

Bild
Bild

Benutzeravatar
Quantum Toast
Schreibt viel
Schreibt viel
Beiträge: 187
Registriert: 26. Nov 2008 14:56
Wohnort: Anie

Beitragvon Quantum Toast » 27. Nov 2008 13:12

:applaus: Super!

leggor
Schreibt viel
Schreibt viel
Beiträge: 189
Registriert: 4. Jun 2007 15:22
Wohnort: Erde
Kontaktdaten:

Beitragvon leggor » 27. Nov 2008 13:17

Hey braingib,

Sieht gut aus und eine gute Idee mit dem MotorMux!
Was für Funktionen hat er?

Gruß
Steffen

Benutzeravatar
sirs
Schreibt viel
Schreibt viel
Beiträge: 274
Registriert: 17. Mär 2008 16:45
Wohnort: Bayern!

Beitragvon sirs » 27. Nov 2008 14:45

zeig doch mal den Motormux!

Den will ich sehen, weil ich noch nen RCX hab und mit die Motorausgänge zu wenig sind!
Es grüßt euch sirs! hier klicken :)
Das KÄSEPARADOX: Je mehr Käse, desto mehr Löcher. Je mehr Löcher, desto weniger Käse. -> Mehr = Weniger

Benutzeravatar
braingib
Mindstormsfreund
Mindstormsfreund
Beiträge: 4
Registriert: 23. Nov 2008 16:53
Wohnort: Nürnberg

Beitragvon braingib » 27. Nov 2008 22:38

Hi,

hier ein Bild vom Controller. Größe H*B*L: 2*7*5, also kleiner als eine Zigarettenschachtel (Höhe ohne die Anschlussklemmen)
Bild
Die Anschlussklemmen sind sehr praktisch, denn man muss nicht nur Lego Motore anschließen. Habe z.B. aus einem CD-Laufwerk einen Motor ausgebaut, klappt prima. Zu beachten ist nur, dass der Motor nicht mehr als 600mA zieht (gilt pro Kanal). Man könnte natürlich auch andere Motorsteurungs-Ics verwenden, die mehr verkraften, ist nur ne Preisfrage. Ich habe mich für billige Ics entschieden (1,50e€ pro Stück), die Lego-Motoren problemlos antreiben, wie Lego 74569, Lego 43362, Lego 71427.
Hier eine, wie ich finde, super Analyse dazu http://www.philohome.com/motors/motorcomp.htm
Für die Lego Motore habe ich mir auf ebay ein paar Kabel besorgt und durchgeschnitten. So kann ich sie in den Controller klemmen und auf der anderen Seite auf den Motor aufstecken.

Ja, und nun das Steuerungsprogramm, das ich in Visual Basic geschrieben habe.
Nach dem Start wird automatisch das Download-Programm geladen und es kann losgehen.
Bild

Benutzeravatar
sirs
Schreibt viel
Schreibt viel
Beiträge: 274
Registriert: 17. Mär 2008 16:45
Wohnort: Bayern!

Beitragvon sirs » 28. Nov 2008 15:27

Das wird ja immer kleiner! Ich hätte auf RCX-Größe getippt.

Kannst du mir einen Schaltplan zeichnen?
Es grüßt euch sirs! hier klicken :)

Das KÄSEPARADOX: Je mehr Käse, desto mehr Löcher. Je mehr Löcher, desto weniger Käse. -> Mehr = Weniger

Benutzeravatar
braingib
Mindstormsfreund
Mindstormsfreund
Beiträge: 4
Registriert: 23. Nov 2008 16:53
Wohnort: Nürnberg

Beitragvon braingib » 29. Nov 2008 19:03


Benutzeravatar
sirs
Schreibt viel
Schreibt viel
Beiträge: 274
Registriert: 17. Mär 2008 16:45
Wohnort: Bayern!

Beitragvon sirs » 2. Dez 2008 17:02

DANKE !
Es grüßt euch sirs! hier klicken :)

Das KÄSEPARADOX: Je mehr Käse, desto mehr Löcher. Je mehr Löcher, desto weniger Käse. -> Mehr = Weniger

Schlumpf12
Neuer Schreiber
Neuer Schreiber
Beiträge: 1
Registriert: 5. Dez 2016 15:28

Re: Steuerung bis zu 6 Motore mit RCX oder CyberMaster

Beitragvon Schlumpf12 » 8. Dez 2016 12:50

Hallo!
Hat das jemand nachgebaut und wäre bereit, es zu verkaufen?
Mein Cybermaster funktioniert noch!
:-)

Viele Grüße,
Alexander


Zurück zu „Robotics Invention Systeme“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss