ROBOTARM 2000


Inhalt dieser Seite:

Wer noch einen Robotarm 2000, von QuickShot sein Eigen nennt, kann sich glücklich schätzen. Egal ob man Interesse an diesem Gerät hat oder nicht. Denn wenn man das Teil los werden will, kann man bei www.ebay.de  mit  einem saftigen Auktionsendpreis rechnen. Bei der letzte, von mir beobachtete Auktion (Sep.2002), wechselte der Robotarm für 98€ den Besitzer.
Für alle anderen, die die Faszination dieses Gerätes noch immer im Bann hält, aber nicht mehr wissen wie man das Teil zum Leben erweckt, sollten hier mal weiter lesen.

Kurzbeschreibung des Robotarms:

Der Robotarm 2000 besitz 4 Achsen und einen Greifer, der bei bedarf durch eine Schaufel ersetzt werden kann. Die Achse Eins ist eine Drehachse, mit ihr wird der komplette Arm auf dem Rumpf gedreht. Der Drehwinkel beträgt ca. 300°, somit lässt sich, fast der komplette Bereich, um den Robotarm herum anfahren. Achse Zwei und drei sind die Gelenke des Armes. Achse Vier dient zum Drehen des Greifers bzw. der Schaufel. Diese Achse besitzt, im Gegensatz zur Ersten keinen Anschlag, der Greifer kann beliebig lang, in eine Richtung  rotiert werden. Die im Arm eingebaute Leuchte, leuchtet übrigens nur wenn man den Greifer Auf oder Zu bewegt.
Leider besitzt der Robotarm keine Endschalter. Wird dem Gerät der Befehl erteilt, in eine Richtung zu Fahren, bei der er sich bereits im Anschlag befindet, so ist ein hässliches Knacken zu hören. Dank der sehr robusten Ausführung, steckt der Robotarm solche Attacken recht gut weg.
Die Steuerung des Robotarm geschieht mittels zwei Joysticks oder einem Interface-Modul - mehr Infos hier.
Die Spannungsversorgung wird durch vier Monozellen gestellt, die im Rumpf Ihre "Zuhause" haben. Achtung!!! Pfiffigen Bastler sei gesagt: Die vier Batterien sind nicht komplett in Reihe geschaltet, wie man schnell meinen könnte. Jeweils ein Pärchen, speisen den Arm mit je 3 Volt. Also wenn man das Teil, mangels Batterien mit einem Netzgerät speisen möchte, so benötigt man 2 x 3V. Der Anschluss erfolgt dann, jeweils 3 Volt  in einem Zweierschacht, wobei die Feder Minus ist. Sollte jemand versuchen, die beiden Batterieschächte zu Brücken und dem Burschen 6 V in die Adern zu pumpen, der kann richtig Pech haben. Wer dann versucht, mit dem Computer eine Bewegung  herbeizuführen, sollte hier weiter lesen: Reparatur des Moduls.

Steuerung des Robotarm 2000:

Die Steuerung des Arms kann auf zwei Arten geschehen:  

Manuell 

Automatisiert C64/128/VC20

Zur Manuellen Steuerung werden zwei, digitale Joysticks, mit weiblichen SUB-D 9 POL Stecker benötigt (zwei Achsen, ein Feuerknopf  (ATARI, Amiga, C64...)). Die Steuerknüppel werden direkt an den zwei Port's, im Rumpf des Robotarm eingestöpselt. Je ein Joystick übernimmt zwei Achsen (hoch, runter, rechts, links) und eine Greifer Funktion, Greifer Auf bzw. Zu (Feuerknopf). Über genaue Angaben hierüber, hülle ich mich mal in Schweigen, das sollte jeder selbst heraus finden.

Eine zweite und wohl die sinnvollere Art und Weise den Roboter zu bewegen, geschieht mittels Interface-Modul und Computer. Das Modul musste damals extra gekauft werden und findet am USER-Port vom Commodore-Rechner seinen Platz. In wie fern die Modelle C16; C116 einem Modul versorgt wurden, bzw. ob es ein spezielles Modul gab, kann ich hier nicht sagen. Genauso beim Plus4 dieser Rechner besitzen zwar auch einen USER-Port, doch unterscheiden er sich, in der Belegung vom C64; C128 und VC20.

POKE's und Software:

Nun zum Eingemachten. Der Roboter wird, wie gesagt am USER-Port der Rechners betrieben. Um die USER-Port-Pforte zu öffnenm, benötigt der Commodore erst mal Tritt in den Arsch, dies geschieht mit POKE56579,255. Danach gelten folgende Befehle:

POKE 56577,0 - Achse 2 Hoch
POKE 56577,1 - Achse 2 Runter
POKE 56577,2 - Achse 1 Links (schwarzer Pfeil)
POKE 56577,3 - Achse 1 Rechts (weißer Pfeil)
POKE 56577,4 - Greifer Zu
POKE 56577,5 - Greifer Auf
POKE 56577,6 - Achse 3 Hoch
POKE 56577,7 - Achse 3 Runter
POKE 56577,8 - Greifer Rechts Drehen (weißer Pfeil)
POKE 56577,9 - Greifer Links Drehen (schwarzer Pfeil)
POKE 56577,255 - alles Halt

Noch ein paar Worte zu Verwendung der POKE's. Wird der Roboter nun mit einem der Poke's in Bewegung gesetzt, so behält er die vorgegebene Bewegungsrichtung bei. Vorsicht! Auch wenn der Arm an seinen Anschlag gelangt ist, wird der Motor immer noch versuchen weiter zu drehen, was sich in lauten Knackgeräuschen niederschlägt. Ein abbrechen der Bewegung geschieht entweder, durch festlegen einer anderen Bewegung oder durch setzten des POKE 56577,255.

Damit das ganze nicht zu trocken wird habe ich mal schnell ein kleines BASIC Programm geschrieben, mit dem es möglich ist, vom Computer aus, alle Achsen zu bedienen. Die einzelnen Achsen sind dabei auf dem Bildschirm immer sichtbar, zudem wird auch immer die aktuelle Arbeitsbewegung angezeigt. Das Programm kann man Hier herunterladen. Es befindet sich in einem D64-Image, wie man das Programm auf den C64/128/VC20 bekommt steht hier. Natürlich kann man das BASIC-Listing auch abtippen, dazu bitte hier Klicken.

Um den Arm nun in eine bestimmte Richtung zu steuern muss man eine Bewegung, für eine bestimmte Zeit vorgeben. Dazu nutz man einfach eine Zeitschleife. Ein Programm, zum Anheben und Senken des Arms (Achse2) für eine bestimmt Zeit könnte so aussehen: 

10 POKE 56579,255
20 POKE 56577,0
30 FOR N=1 TO 500 : NEXT N
40 POKE 56577,1
50 FOR N=1 TO 500 : NEXT N
60 POKE 56577,255
70 END

Bei der hier gezeigten Ausführung des Programms, hat man allerdings viel Schreibarbeit und verliert obendrein auch noch schnell den Überblick. Um das ganze etwas zu vereinfachen hatte ich mir schnell mal folgendes zurecht gebastelt:

2 ES=2:EW=3:ZH=0:ZR=1:DH=6:DR=7:VS=8:VW=9:GA=5:GZ=4:HALT=255 
5 A=56577:GOTO 90 
10 REM ------------------------PAUSE 
20 FOR N=1 TO T : NEXT N 
30 RETURN 
40 REM -----------------------------------
90 POKE56579,255:POKEA,255 
100 REM ---------------------------------
XXX
10000 POKEA,HALT:END 

In den Zeilen 2 bis 100 werden alle sich wiederholenden Bestanteile, als Variable bzw. Abrufbare Unterprogramme deklariert. Ab Zeile 110 (XXX) kann somit jede Bewegung, mit nur wenigen Eingaben eingeleitet werden. Um den gleichen Ablauf wie oben zu erreichen, muss das Programm ab (XXX) um folgendes ergänzt werden:

110 POKE A,ZH : T=500 : GOSUB 10 -> Achse 2 hoch (ZH) für Zeit 500
110 POKE A,ZR : T=500 : GOSUB 10 -> Achse 2 runter (ZR) für Zeit 500

Geändert werden hier nur die fett gedruckten Elemente, Richtung und Zeit. Der Rest kann immer wieder in die nächste Zeile kopiert werden, um den nächsten Schritt festzulegen. Eventuell muss die Zeit zum Hochfahren einer Achse etwas länger sein, als die des Absenkens, da der Motor hier wegen der Mehrbelastung etwas langsamer dreht. Bei mir waren das bei T=500 ca. 25 mehr fürs Hochfahren. Die Variablen zur Steuerung der Bewegungen sind wie folgt aufgebaut:

ES = Achse 1 rechts
(in Richtung schwarz) 
EW = Achse 1 links
(in Richtung weiß)
ZH = Achse 2 hoch ZR = Achse 2 runter DH = Achse 3 hoch
DR = Achse 4 runter VS = Greifer drehen Links
(in Richtung weisß)
VW = Greifer drehen rechts
(in Richtung schwarz)
GA = Greifer Auf GZ = Greifer ZU
und natürlich Halt für POKE 56577,255

Ein auf diesen Schema, aufbauender Arbeitsablauf stelle ich mal hier zum Download bereit. Um den Überraschungseffekt zu waren sag ich mal nur wie die Ausgangsstellung des Robotarm aussehen sollte. Man nehme eine leere Zigarettenschachtel und stelle diese auf den Boden und packt diese mit dem Greifer. So wie in der Abbildung, ganz oben auf dieser Seite gezeigt (Bild rechts). Die ca. Werte der Armausschläge sind: Achse 2 = 30°; Achse 3 =+7,5°; Achse 4 = waagrecht. Dabei ist darauf zu achten, dass Achse 1 noch ca. 180° nach rechts schwenken kann.  Am einfachsten geht dies mit angeschlossenen Joystick's, aber das Programm TEST1.PRG, von oben tut's natürlich auch.
So, wenn das Modul einwandfrei Arbeitet wünsche ich nun viel Spaß beim Herumexperimentieren. Wenn die Bewegungen nicht so ablaufen wie es eben beschrieben wurde, sollte man mal einen Blick auf den nächsten und letzten Punkt werfen.

Software:

Beim Kauf des Robotarms lag, zumindest bei Conrad eine Steuerungssoftware bei, die auf der Software zu Hardware - Seite downlgeloadet werden kann. Diese lässt sich allerdings nicht in eigene Programme einbinden. 


Reparatur des Robotarms und des Moduls:

Auch wenn man es nicht unbedingt vermutet aber der Roboterarm hat trotz seines simpel wirkenden Aufbaus eine Platine im Rumpf. QuickShot hat meines Wissens kein Interface-Modul für den Roboterarm angeboten, man ging alos davon aus, dass der Arm mit Joysticks bewegt wird, am besten welche von QuickShot :-)  Um diese nun nicht mit unnötig hohen Schaltströmen und somit extrem erhöhtem Verschleiß zu belasten muss wohl diese Platine entwickelt worden sein. Dabei werden genau wie auf der Interfaceplatine, Transistoren als Schalter bzw. als Relais "missbraucht". In der Regel kommt an diese Platine auch nichts dran, ausser man ist ein unvorsichtiger Bastler (so wie ich :-). Beim Experimentieren hatte ich einen Kurzschluss verursacht und infolge sind mir drei Transistoren abgeraucht :-( Eine Hilfe könnte eventuell sein wenn man weis, welcher Transistor für welche Bewegung zuständig ist. Da ich dies sowieso herausfinden musste, um zu wissen welche Transis ich wechseln musste, habe ich die Info gleich mal zu Papier... ähhh, HTML gebracht. In der unten stehenden Tabelle ist diese Info zu finden. Die Nummerierung stammt übrigens nicht von mir, sondern es ist die tatsächliche Transistor-Durchnummerierung der Platine.

Transistor Nr. Typ

 Funktion/Bewegung

1 8050  Achse 2 in Pfeilrichtung "weiß"
2 8550  Achse 2 in Pfeilrichtung "schwarz"
3 8050  Achse 1 in Pfeilrichtung "weiß"
4 8550  Achse 1 in Pfeilrichtung "schwarz"
5 8050  Achse 3 in Pfeilrichtung "schwarz"
6 8550  Achse 3 in Pfeilrichtung "weiß"
7 8050  Achse 4 in Pfeilrichtung "schwarz"
8 8550  Achse 4 in Pfeilrichtung "weiß"
9 8050  Greifer "Auf"
10 8550  Greifer "Zu"

In der Tabelle ist auch der Transistortyp genannt, bei dieser Bezeichnung handelt es sich offenbar um eine japanische "Normbezeichnung" oder Werksnorm. Als Bezugsquelle konnte ich nur Reichelt Electronics ausfindig machen. Und trotz gleicher Transistor-Kennzeichnung ist hier Vorsicht geboten! Die Belegung entspricht sehr wahrscheinlich nicht der original eingelöteten Transistoren (zu mindest nicht bei denen die ich von Reichelt bekam). Durch die, auf der Platine gekennzeichneten Anschlüsse (BEC) ist jedoch sehr einfach erkennbar, wie er Eingelötet werden muss. Leider kann man bei Reichelt keine Datenblätter zu den beiden Transistoren herunterladen, aber ich konnte dennoch welche besorgen, die man hier auch saugen kann - 8050.tif - 8550.tif . Als Alternative zum 8550 kann man auch einen BC558 oder verkl. verwenden. Jeder der nun ein wenig elektronisches Grundwissen hat wird nun vermuten, dass man für den 8050 dann einen 548 einsetzen könnte. Denn der 8050 ist der komplementäre Typ zum 8550 wie der BC 548 zum BC 558. Dem ist aber leider nicht so. Ich habe leider keine Ahnung warum das nicht geht, wobei ich mich auch nicht weiter mit den Datenblätter auseinandergesetzt habe. Am besten besorgt man sich gleich die beiden japanischen Typen, dann klappt's auch 100% 


Das Modul welches ich benutze ist von Conrad, ob QuickShot selbst, oder weitere Anbieter, Interface-Module vertrieben hat weiss ich nicht. Wenn ja, dann könnte dort der Aufbau anders sein.

Nach bestandener Bewegungsprüfung mit den beiden Joysticks, wollte ich den Robotarm nun endlich auch am C128 betreiben. Doch die Ernüchterung kam schnell daher, als der Arm immer nur in eine Richtung fuhr. Egal ob ich Hoch oder Runter wollte, der Arm fuhr immer nur hoch, bzw. drehte immer nur rechts herum. Nach Anfrage bei Hucky war aber der Übeltäter, den ich selbst schon vermutet hatte dingfest gemacht. Das Kernstück des Ineterfaces, der  IC 4028 (siehe Abbildung) hatte die Hufen hochgerissen. Zum Glück gibt es Versandhäuser wie www.Conrad.der und www.reichelt.de, denn dort kann man den IC für schlappe 66 Cent erwerben. Bezeichnung - CMOS IC 4028 - Da sich Conrad, bei der Herstellung des Modul'e die Mühe gemacht hat den IC zu Sockeln, war er im Handumdrehen gewechselt und der ROBOTARM2000 zu neuem Leben erweckt. Warum ich das hier Beschreiben ganz einfach, bei Hucky gab's die selben Probleme, sodass davon auszugehen ist, das der IC öfters mal die Backen dick macht. Darum lieber gleich ein paar mehr bestellen.

Zahnradpuzzle beim Zusammenbau

Um an die Platine des Robotarms ran zu kommen muss der Rupf aufgeschraubt werden. Unter Umständen kommen einem beim Öffnen dann gleich zwei Zähnrädchen entgegengeflogen, die man eventuell nicht gleich einem Plätzchen zuweisen kann, bzw. wo denn nun welches Rädchen wie herum hinein gehört. Um ein eventuell langes und nervenzehrendes Puzzlespiel zu vermeiden habe ich mal ein Bild gemacht welches zeigt, wie die Rädchen eingesetzt werden müssen. Es macht auch Sinn beide Zahnräder beim Zusammenbau, wie abgebildet zuerst in den Arm zu stecken. Um die beiden Teile besser erkennen zu können habe ich das eine Zahnrad etwas herausgezogen. 


Steuerung des Robotarms am PC

Meines Wissens gab es kein Interface um den Arm an einem PC zu betreiben aber für einen Bastler ist das kein Problem. Das C64'er Interface ist mit wenigen Handgriffen umgebaut, um es am PC zu betreiben. Dabei werden die Anschlüsse C, D, E und F vom Userport auf 2, 3, 4, und 5 des PC-LPT Port's umgelegt. GND, also Masse findet man am LPT-Port auf den Pin's 18-25. Die Spannung 5V+ die beim USER-Port auf dem Anschluss 2 liegt sucht man allerdings am LPT-Port vergeblich. Entweder holt man sich die Spannung direkt vom Netzteil, vom Gameport oder einem PS/2 Anschluss, sicherheitshalber holt man sich da auch nochmals Masse und legt sie mit der vom LPT-Port zusammen. Für die Belegungen siehe bitte im Hardwarebereich unter "Anschlüsse und Pinbelegungen"

Nachdem die Hardware umgebaut ist, steht einem Probelauf nichts mehr im Wege, leider existiert meines Wissens nach kein fertiges Programm mit dem es möglich ist den Arm unter Windows oder DOS direkt anzusteuern. Drum muss man sich hier eines basteln. Ich möchte mal beschreiben, wie man dem Arm unter QBasic Leben am PC einhaucht. Qbasic sollte eigentlich jeder haben der auch ein Betriebsystem von M$ besitzt... das trifft wohl auf 90% aller PC User zu. Ansonsten kann man den den QBASIC Compiler 4.5 z.B. hier kostenlos saugen: Antonis

Die Ansteuerung der Ausgänge ist eigentlich genauso wie beim C64 nur das die Bit's nicht gepoket, sondern über den Befehl OUT(888) gesetzt werden. Möchte man also die Achse 2 aufwärts bewegen so nutzt man folgenden Syntax: OUT(888),0 analog also zum C64 der hier ein POKE 56577,0 erwartet. Ich spare mir hier mal die Auflistung aller Bewegungen, da man dies ja direkt aus der oben gezeigten Auflistung zum C64 direkt übernehmen kann.

Das oben gezeigt Basic-Programm könnte für QBasic wie folgt aussehen:

ES=2:EW=3:ZH=0:ZR=1:DH=6:DR=7:VS=8:VW=9:GA=5:GZ=4:HALT=255 

GOTO Anweisungen

Warten:
FOR N = 1 TO T: NEXT N
RETURN

Anweisungen:
XXX

In den ersten 4 Zeilen werden alle sich wiederholenden Bestanteile, als Variable bzw. Abrufbare Unterprogramme deklariert. Ab  der Zeile mit den roten X'en (XXX) kann somit jede Bewegung, mit nur wenigen Eingaben eingeleitet werden. Um einen Ablauf zu erreichen bei dem der Arm für eine bestimmte Zeit hoch und für die gleiche Zeit wieder runter gefahren wird, ist dann folgendes einzugeben:

OUT (888), ZH: T=15000: GOSUB Warten
OUT (888), ZR: T=15000: GOSUB Warten

Geändert werden hier nur die fett gedruckten Elemente, Richtung und Zeit. Der Rest kann immer wieder in die nächste Zeile kopiert werden, um den nächsten Schritt festzulegen. Eventuell muss die Zeit zum Hochfahren einer Achse etwas länger sein, als die des Absenkens, da der Motor hier wegen der Mehrbelastung etwas langsamer dreht. Die Variablen zur Steuerung der Bewegungen sind, wie schon in der obigen Tabelle gezeigt zu verstehen.

Nachtrag: Ansteuern unter Windows

Da unter Windows die Schnittstellen nicht so ohne weiteres angesteuert werden können, bedarf es hier eines zusätzlichen Tools wie z.B. die INPOUT32.DLL Library die man in eigene Programme einbinden kann. Es gibt auch noch andere Mittel und Wege, jedoch ist dieses Tool, insbesondere für QBasic erfahrene wirklich einfach zu bedienen. Wie man z.B. INPOUT32.DLL in ein Delphi Programm einbindet kann man hier erfahren.


Für weitere Fragen und Anregungen stehe Ich gerne zur Verfügung:

eMail - Webmaster
11.10.2007

"Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !"

I Startseite I