Titel: justAPi.de
Home: Indexseite Home
 

Projekt: Quickshot Roboterarm RobotArm
 

Fun: (-; Fun
- Die Zahl Pi

Skripte: Mitschriften, Klausuren Skripte
 

Kontakt: Wie kann man APi erreichen? Kontakt

Projekt: Quickshot Robotarm 2003


Roboterarm Quickshot Der Quickshot Robotarm ist ein kleiner 5-achsiger Roboterarm, der über zwei Joysticks gesteuert wird. Außerdem gibt es für den C64 ein Interface, mit dem man den Roboterarm per Software steuern kann.

Da ich keinen C64 besitze und mein Computereinstieg bereits mit einem PC 486 begann, habe ich mir vorgenommen, eine Schaltung zur Steuerung des Roboterarmes via PC zu und entsprechende Software zu entwickeln. Nach langem Suchen im Internet und Analysieren der Steuerplatine im Roboterarm konnte ich die folgende Schaltung realisieren:

Klick zum Vergrößern
Roboterarm Schaltung


Bauteile:

- OK1, OK2, OK3: 3x Optokoppler PC847 (Datenblatt)
- R1-R8: 8x Widerstand 470 Ohm
- R9, R10: 2x Widerstand 180 Ohm
- Q1, Q2: 2x Transistor NPN BC547B
- X1: 1x 36 pol. Centronics Buchsenleiste für Anschluss von Druckerkabel
- X2, X3: 2x 9 pol. SUB D Buchsenleiste zum Anschluss an den Roboterarm
- G1: kleine 1,5V Stromversorgung z.B. durch AA Mignon Batterie oder 1,2V Akku


Erläuterung:

Nach Analyse der Steuerplatine des Roboterarmes und Durchprobieren der Kontakte wusste ich, welche Pins des Roboterarmes für welche Funktionen zuständig sind. Die Hoch-Runter oder Links-Rechts Bewegungen einer Achse kommen dadurch zustande, dass je nach Joystickbewegung +3V oder -3V in den entsprechenden Gleichstrommotor gegeben werden.

Die Ansteuerung erfolgt über den Parallelport, da dieser am einfachsten zu Schalten ist und keine weiteren Mikroprozessoren oder ICs für die Kommunikation mit dem PC erfoderlich sind.
Über die Optokoppler ist eine galvanische Trennung der Stromkreise PC-Parallelport und Roboterarm gegeben, sodass eine Beschädigung z.B. des PC vermieden wird.

Für die 4 Bewegungsachsen (Achsen 1-4) wurden die 8 Datenleitungen des Parallelport D0-D7 verwendet. An einer Datenleitung liegen im Ein-Zustand (1, true) ca. 3-5V, im Aus-Zustand (0, false) 0,2-2V an. Die Spannungen sind von Parallelport zu Parallelport unterschiedlich. Im Ausgangszustand sind diese Leitungen auf 0 (false) gesetzt.

Da nur 8 Ausgänge verfügbar sind, musste ich für die 5. Achse, den Greifer 2 Leitungen missbrauchen, die eigentlich dazu da sind, dem Drucker Statussignale mitzuteilen (Pin 1 und 14). Diese Leitungen sind jedoch invertiert, d.h. an ihnen liegen 3-5V, wenn die Leitungen auf 0 (false) gesetzt ist, und 0,2-2V, wenn die Leitung auf 1 (true) gesetzt.
Das bedeutet, dass sie von der Software die den Roboterarm steuern soll, bei Initialisierung beide auf 1 gesetzt werden müssen, damit kein Impuls an den Roboterarm gegeben wird.
Weiter liefern sie deutlich weniger Strom (mA) als die Datenleitungen und können daher den Optokoppler nicht ausreichend versorgen. Aus diesem Grund habe ich die beiden Transistoren eingesetzt, welche an einer kleinen Stromversorgung (z.B. 1,5V Batterie) hängen. Kommt nun ein Signal vom Parallelport an die Basis des Transistors, schaltet dieser durch.


Pin-Belegungen:

Roboterarm Anschluss 1 (links):
Pin 1: Achse 2 vor
Pin 2: Achse 2 zurück
Pin 3: Achse 1 linkherum (gegen Uhrzeigersinn)
Pin 4: Achse 1 rechtsherum
Pin 6: Achse 5 Greifer zu
Pin 8: Masse

Roboterarm Anschluss 2 (rechts):
Pin 1: Achse 3 runter
Pin 2: Achse 3 hoch
Pin 3: Achse 4 linksherum (vom Licht aus gesehen)
Pin 4: Achse 4 rechtsherum
Pin 6: Achse 5 Greifer auf
Pin 8: Masse


Software-Programmierung:

Mit Visual Basic und einer veränderten inpout32.dll (von logix4u) konnte ich unter Windows 2000 eine Steuerungssoftware für den Roboterarm programmieren. Den bisherigen Quellcode (Klassenstruktur zur besseren Handhabung) schicke ich auf Anfrage gerne raus.

Die Standard-Adresse für den Parallelport ist &H378. Hier kann man die 8 Bits für die Datenleitungen (also Achsen 1-4) setzen.
Für die beiden Statusleitungen zur Ansteuerung von Achse 5 (Greifer) ist die Adresse &H378+2 (=&H37A).

7 6 5 4 3 2 1 0 | Datenleitungen
----------------+---+---------------
0 0 0 0 0 0 0 0 |  0| Achsen 1-4 aus
0 0 0 0 0 0 0 1 |  1| Achse 2 vor
0 0 0 0 0 0 1 0 |  2| Achse 2 zurück
0 0 0 0 0 1 0 0 |  4| Achse 1 links
0 0 0 0 1 0 0 0 |  8| Achse 1 rechts
0 0 0 1 0 0 0 0 | 16| Achse 3 hoch
0 0 1 0 0 0 0 0 | 32| Achse 3 runter
0 1 0 0 0 0 0 0 | 64| Achse 4 links
1 0 0 0 0 0 0 0 |128| Achse 4 rechts
----------------+---+---------------
0 0 0 0 0 0 1 1 |  3| Achse 5 aus
0 0 0 0 0 0 1 0 |  2| Greifer zu
0 0 0 0 0 0 0 1 |  1| Greifer auf
----------------+---+---------------

Die Werte können kombiniert werden, z.B. 6 für Achse 2 zurück und Achse 1 links. Man muss jedoch aufpassen, dass nicht die Funktionen einer gleichen Achse kombiniert werden, z.B. 3 für Achse 2 vor und Achse 2 zurück. Auswirkungen hat dies keine, ich weiß jedoch nicht, ob es soo gut für die Elektronik des Roboterarmes ist, wenn beide Stromkreise aufeinmal geschlossen werden.


Links und Dankeschöns:

Alles über den Parallelport: http://www.lvr.com/parport.htm

Erosoft NobraControl - Vibrator-Ansteuerung via PC (-; ... hier habe ich einen Teil der Schaltung abgeguckt: http://www.erosoft.de/erosoft3/nobracontrol/

Ein großes Dankeschön an news.de.sci.electronics, die mir bei der Suche nach einer passenden Schaltung geholfen haben.



Für Fragen zur Schaltung oder Programmierung stehe ich gerne zur Verfügung.



© 2004, APi