★ HARDWARE ★ MONTAGES ★ EINBAU DER VORTEXSPEICHERERWEITERUNGSKARTE: ★![]() |
ROBOTER steuern mit dem CPC (Schneider Aktiv) | Hardware Montages |
Selbstbau für wenige Mark Was noch vor Jahren Science-Fiction war ist heute Wirklichkeit: Die industrielle Fertigung von Autos, Geräten aller Art bis hin zum Computer nutzt heute in zunehmendem Maße den Einsatz von computergesteuerten Robotern. Spielzeugfirmen haben diesen Trend auch für den Computerfan entdeckt. So liefern z.B. die Firmen Märklin, Pomy, Kosmos und Fischer-Technik spezielle Baukästen mit Motoren und Mechanik zum Bau computergesteuerter Robotermodelle. Was dem CPC-Freak bis heute fehlte war eine preisgünstige Hardware und Software zum Ansteuern derartiger Roboter. SCHNEIDERN-aktiv kann seinen Lesern heute eine Roboteranpassung zum Selbstbau für nur wenige Mark bieten, mit der der CPC-Anwender endlich seinen Roboter steuern kann. So funktioniert ein Roboter Wie funktioniert überhaupt ein computergesteuerter Roboter? Der Roboter hat eine bestimmte Anzahl von Bewegungselementenin der Fachsprache Achsen genannt. Vorbild war auch hier der Mensch, denn jede dieser Achsen verkörpert Teile eines Menschen. So finden wir folgende Achsen vor:
Achsen können zudem noch doppelt ausgeführt werden. So wir die Taillenachse oft in zwei Achsen - horizontale und vertikale Achsen zergliedert. Je mehr Achsen ein Roboter hat, um so präziser und schneller kann er eingesetzt werden. SCHNEIDERN-aktiv bietet seinem Leser einen besonderen Service: Der komplette Robo-terschalturlg mit Layout zur Platinenfertigung zum Ansteuern z.B. eines Fischer-Technik Roboters. Für den Leserser-vice ist bei genügender Nachfrage der komplette Bausatz mit fertiger Platine im Gespräch. SCHNEIDERN-aktiv sucht noch weitere Hard- und Software für den CPC Leserservice. Das Prinzip Das Schema Bild 1 erklärt die prinzipielle Funktionsweise des Roboters. Der Computer steht über ein geeignetes Interface mit dem Roboter in Verbindung. Bei diesem Interface handelt es sich um eine Parallelschnittstelle mit Ein- und Ausgängen. Der Schaltverstärker ‘V‘ verstärkt die Motorsteuersignale des Computers für Ein/Aus bzw. Links/Rechts-Drehung. Der Motor erhält dieses Signal und bewegt über ein Getriebe eine Achse des Roboters. Mit dieser Achse ist ein Potentiometer, je nach Bedarf über ein Getriebe, fest verbunden. Das Poti liefert uns eine variable Gleichspannung, je nach Stellung des Schleifers. Diese Spannung wird durch den A/D-Wandler in einen Impuls von bestimmter Länge umgewandelt. Über eine Zählschleife ist nun der Computer in der Lage die Länge dieses Impulses zu bestimmen und somit die Stellung der Roboterachse zu erkennen. Aus der dadurch gewonnenen Information bestimmt der Computer die weiteren Steuersignale für den Motor. Das brauchen wir Wir benötigen also folgende Komponenten für unseren Roboter:
Der mechanische Aufbau soll jedem selbst überlassen werden. Am einfachsten ist die Verwendung eines Mechanikbaukastens (z.B. von Fischer-Technik). Aber der eigenen Fantasie sollen hier keine Grenzen gesetzt werden. Die Parallelschnittstelle Die Parallelschnittstelle wird mit der Z80A -Pio aufgebaut (Bild 2). Dabei begnügen wir uns mit einer einfachen Dekodierung. Laut Schneider-Handbuch muß für die Auswahl eines Schnittstellenbausteins A10 null sein. Zusätzlich wird noch A2 null gesetzt. (A3 und A4 stehen in ähnlicher Weise für weitere Bausteinauswahl zur Verfügung). Damit ist die Pio unter folgenden Adressen ansprechbar: F8F8 Port A - Daten Bei Einhaltung dieser Adressen sind keine Störungen zu befürchten, da der CPC intern die gleiche Methode zur Dekodierung verwendet, aber die Adressen A2, A3 und A4 nicht belegt. In der Schaltung nach Bild 2 ist die Anschlußbelegung des Port A angegeben. Wenn Sie das nachfolgende Programm verwenden wollen, sind diese Anschlüsse genau einzuhalten. Der Schaltverstärker für die Motorsteuerung Zum Schaltverstärker für die Gleichstrom-motore (Bild 3) ist keine große Erklärung notwendig. Die beiden Transistoren T1 und T6 entlasten die Ausgänge der Pio. Sind die beiden Eingänge M-L und M-R auf Null so steht der Motor. Wird einer der beiden Eingänge auf H Pegel gesetzt, so dreht der Motor in die entsprechende Richtung. Für unseren 2-Achs-Roboter ist diese Schaltung zweimal erforderlich.
Der A/D-Wandler Ais A/D-Wandler (Bild 4) wird ein als Monoflop geschaltetes IC 555 verwendet. Durch den Triggereingang an Pin 2 wird das Monoflop gesetzt. Der Ausgang Pin 3 geht für eine bestimmte Zeit auf H-Pegel. Diese Zeit ist abhängig vom Kondensator CI und der Stellung des Potis. Die Impulsdauer ist nach der Formel t = 1.1 * R1 * C1 berechenbar. Die Triggerung wird durch einen Sprung von H-nach L-Pegel ausgelöst. Auf der Platine ist für drei dieser A/Ds Platz vorgesehen. Es müssen jedoch in unserem Fall vorerst nur 2 bestückt werden. Es ist auch noch eine einfache Transistorschaltstufe für Elektromagnete oder dgl. vorgesehen (Bild 5). Auf der Platine ist Platz für 8 Schaltstufen. Für unseren Roboter wird nur eine Schaltstufe für den Elektromagneten, der als einfacher Greifer für Münzen und dgl. verwendet wird, benötigt. Beschreibung des Programms Assemblerprogramm: Zunächst werden 9 Bytes reserviert. Sie werden im Programm folgendermaßen vewendet: A000 Sollwert Achse 1 Low-Byte Die Positionen können also nach der Formel P = Low-Byte + 256 * High-Byte berechnet werden. Ab Programmzeile 280 beginnt die Initialisierung der PIO. Dabei werden die Port A-Bits 0 bis 5 als Ausgänge und die Bits 6 und 7 als Eingänge definiert. Der Port A ist also folgendermaßen mit dem Robi verbunden: Bit 0 Motor 1 links Nach der Initialisierung wird der Trigger Ausgang noch auf H gesetzt, danach folgt der Sprung ins Hauptprogramm. Im Anschluß an die Initialisierung folgen ab Zeile 430 bis 740 die beiden Unterprogramme für die Abfrage der A/D-Wandler. Dabei wird zunächst der Triggerimpuls ausgegeben und danach in einer Zählschleife das Register HL erhöht, solange der Ausgangsimpuls des A/D-Wandlers andauert. Um korrekte Werte zu erhalten, müssen zuvor die Interrupts des Betriebssystems gesperrt werden. Im Register HL ist somit der aktuelle Positions-Istwert der jeweiligen Achse gespeichert. Mit dieser Information erfolgt die Rückkehr ins Hauptprogramm.
Das Hauptprogramm beginnt wie gesagt ab Zeile 800. Das Hauptprogramm läuft folgendermaßen ab: Das Register BC erhält die Portadresse zugewiesen, das Register DE den Positionssollwert. Danach wird das Unterprogramm zur Bestimmung des Positions-Istwertes aufgerufen. Nach der Rückkehr ist dieser Wert im Register HL. Danach folgt die Festlegung der Drehrichtung. Diese erfolgt mit dem Subtraktions befehl. Ist Bit 7 in Register H null, ist die Drehrichtung umzukehren. Im anderen Fall arbeitet das Programm in Zeile 870 weiter. Hier wird zunächst geprüft, ob die Differenz zwischen Soll- und Ist-Wert größer ist als Delta X, wenn ja wird der Motor eingeschaltet und zur Zeile 870 zurückgesprungen. Der Motor bleibt solange eingeschaltet bis die Differenz kleiner ist als Delta X. Danach arbeitet das Programm ab Zeile 1080 weiter. Der Motor wird zunächst abgeschaltet und die Istposition bestimmt. Ist die Sollposition noch nicht erreicht, wird der Motor für ca. 20 ms wieder eingeschaltet und danach die Istposition erneut festgestellt. Dieser Vorgang wird solange wiederholt, bis die Sollposition erreicht ist. Danach wird der gleiche Vorgang für die 2. Achse durchgeführt. Ist auch diese Achse positioniert wird am Programmende die Istposition der beiden Achsen in die vorgesehenen Adressen übergeben. Zur einfacheren Eingabe ist das Programm als Basic-Loader angegeben. Zur Demonstration ist zusätzlich ein Demoprogramm angegeben. Der Roboter nimmt von 3 verschiedenen Positionen Gegenstände mit dem Magneten auf und legt sie an einer anderen Position wieder ab. Die Folge der Position ist dabei in den DATA-Zeilen angegeben. An das Maschinenprogramm werden 3 Werte übergeben.
Das Programm muß sicherstellen, daß für den Magneten keine anderen Werte als die beiden zulässigen übergeben werden. Die hier angegebenen Schaltungen und Programme sollen nicht als endgültig angesehen werden. Vielmehr sind sie als Anregung zum eigenen Experimentieren zu verstehen. Die Erweiterung des Roboters, zum Beispiel mit weiteren Achsen oder mit Endlagenschaltern, ist ohne weiteres möglich. Sinnvoll wäre auch ein Programm, das es ermöglicht, den Roboter im sog. ‘teach in‘-Verfahren zu programmieren. Die Ergebnisse dieser Bemühungen würden mich sehr interessieren. Für Fragen, Anregungen und Verbesserungsvorschläge stehe ich gerne zur Verfügung.(K5)
|