Licence by DLR ROBOTERBAUSATZ © DLR & AREXX ASURO BAU- UND BEDIENUNGSANLEITUNG Modell ARX-03 Hersteller AREXX, Zwolle - NIEDERLANDE JAMA, Taichung - TAIWAN www.arexx.
Einleitung ASURO ist ein kleiner, frei in C programmierbarer mobiler Roboter, welcher am Deutschen Zentrum für Luft- und Raumfahrt (DLR) im Institut für Robotik und Mechatronik für die Lehre entwickelt wurde. Der Aufbau ist für den erfahrenen Elektroniker ein Kinderspiel und für den Elektronikeinsteiger ohne weiteres durchzuführen. Es werden - bis auf die Platinen - nur handelsübliche, mit normaler Feinmotorik handhabbare und leicht zu beschaffende Bauteile verwendet.
Inhaltsverzeichnis I. Mechanik 6 1. Erforderliches Werkzeug 6 2. Mechanische Vorarbeiten 7 2.1. Motorritzel 2.2. Tischtennisball 2.3. Radsensoren 7 7 8 II. Elektronik 9 3. Kleine Lötfibel 9 3.1. Spitze, Zinn und Temperatur 3.2. Vorbereiten der Bauteile 3.3. Einlöten der Bauteile 3.4. Auslöten falsch eingebauter Teile 9 10 11 12 4. Bestückung 13 4.1. Bestückung des RS232-Infrarot-Transceivers 4.2. info USB-Infrarot-Transceivers 4.3. Bestückung der ASURO-Platine 4.4. Motormontage 4.5.
6. Fehlersuche 28 6.1. RS232-IR-Transceiver geht nicht ! 6.1.1. Tastendruck und Zeichenausgabe stimmen nicht überein 6.1.2. Das Terminal-Programm gibt keine Zeichen aus 6.1.3. Es geht immer noch nicht 6.2. USB-Infrarot-Tranceiver funktioniert nicht 6.3. Back-LEDs (D15,D16) glimmen nach dem Einschalten nicht! 6.3.1. Keine der beiden Back-LEDs glimmt auf 6.3.2. Nur eine der beiden LED’s glimmt auf 6.3.3. Status-LED (D12) leuchtet nach dem Start nicht zweifarbig auf 6.4. Ein Anzeigenelement geht nicht 6.4.1.
III. Informatik 8. Installation der Software und erste Schritte 35 35 8.1. Windows 8.1.1. Flash-Tool 8.1.2. Installation des programmeditors und des compilers 8.1.3. Beispielprogramme 8.2. Linux 8.2.1. Flash-Tool 8.2.2. Compiler 8.3. Flash - das ASURO-Programmier-Tool 8.3.1. Wie funktioniert das Flashen? 8.4. Flash Fehler 8.5. Erstes eigenes Programm 35 35 35 39 51 51 52 53 53 54 54 9. C für ASURO 56 9.1. Grundlagen der C-Programmierung 9.1.1. Allgemeines 9.1.2. Variablen und Datentypen 9.1.3.
Teil I. Mechanik 1. Erforderliches Werkzeug Um ASURO vernünftig zusammenbauen zu können, wird - außer den Bausatzteilen - folgendes Werkzeug und Verbrauchsmaterial benötigt: kleiner Schraubstock oder Dritte Hand: nicht immer sind zwei Hände ausreichend Teppichmesser oder Säge feine Zange Seitenschneider: ein kleiner für Elektronik evtl. Abisolierzange Lötkolben: Hier sollte ein Elektronik-Lötkolben (ca. 20W bis 40W) oder gleich eine Lötstation (mind. 50W) verwendet werden.
Mechanik 2. Mechanische Vorarbeiten Bevor die ersten Basteleien beginnen können, sollte unbedingt überprüft werden, ob alle erforderlichen Teile vorhanden sind. Das kann am einfachsten anhand der Stückliste in Anhang A geschehen. Bevor es an die Elektronik gehen kann, müssen noch ein paar mechanische Tätigkeiten durchgeführt werden. 2.1.
Mechanik 2.3. Radsensoren Die Leuchtdiode und der Fototransistor (Reflexlichtschranke für die Odometrie), welche sich so vertrauensvoll Richtung erstem Getriebezahnrad wenden werden, wollen später nicht enttäuscht werden. Daher bringt man auf das jeweils erste Getriebezahnrad (das mit mit den 50 und 10 Zähnen) auf der Seite ohne Abtriebsritzel noch die selbstklebenden Musterscheiben an (siehe Abb.2.3.). Abbildung 2.3.
Teil II. Elektronik 3. Kleine Lötfibel Obwohl ASURO vollständig mit bedrahteten Bauteilen aufgebaut ist und damit - im Gegensatz zu oberflächenmontierten SMD-Bauteilen (Abb. 3.1 zeigt den Vergleich zwischen dem kleinsten und unserem Gehäuse, in dem ASUROs Prozessor erhältlich ist. Der eigentliche Siliziumchip ist in beiden Gehäusen der gleiche!) - geradezu hervorragen von Hand zu bestücken ist, sollten vor allem vom untrainierten Löter einige Hinweise beachtet werden.
Elektronik Abbildung 3.2.: Grundlage des Lötens Dämpfe, welche während des Lötprozesses entstehen sind langfristig eher ungesund und sollten nach Möglichkeit nicht eingeatmet, besser noch abgesaugt werden! Anderes Lötzinn als Elektroniklot oder säurehaltiges Flussmittel können die Schaltung zerstören! 3.2. Vorbereiten der Bauteile Jeder, der schon mal Elektronik gelötet hat, kennt das Problem: man hat eigentlich immer eine Hand zuwenig.
Elektronik Abbildung 3.3.: Bauteile mit passend gebogenen Beinchen Abbildung 3.4.: Herstellen einer sauberen Lötstelle 3.3. Einlöten der Bauteile Sind die Bauteile vorbereitet, werden sie durch die durchkontaktierten Bohrungen in der Leiterplatte gesteckt und - bei Teilen mit nur zwei oder drei Beinchen - diese auf der Unterseite der Platine direkt an der Bohrung etwas auseinandergebogen (ca. 30º bis 40º sind ausreichend), so dass sie nicht mehr herausfallen können.
Elektronik Sitzt das Bauteil fest, so erhitzt man mit der Lötkolbenspitze das Beinchen und das Lötauge gleichzeitig und gibt an diese Stelle etwas Lötzinn zu. Dieses schmilzt nun und läuft in die Bohrung. Es wird solange Zinn zugegeben, bis die Bohrung vollständig ausgefüllt ist (siehe Abb.3.4). Danach nimmt man erst das Zinn und anschließend den Lötkolben weg und lässt die Lötstelle erkalten.
Elektronik 4. Bestückung Lötfibel gelesen? Wirklich? Na gut, los geht’s! 4.1. Bestückung des RS232-Infrarot-Transceivers • IC1: Hier wird zunächst nur der 8-polige Sockel eingelötet. Dieser besitzt eine Richtungsmarkierung, welche mit der Markierung auf der Platine übereinstimmen muss. • D1, D2, D3: 1N4148, auf richtige Polung achten! Nicht verwechseln mit ZPD5.1 oder BZX55-C5V1 (Aufdruck)! •D4: ZPD5.
Elektronik Abbildung 4.1.: Bestückung des RS232- Infrarot-Transceivers Nun nochmal mit kritischem Blick die Lötstellen auf gute Verbindung oder Kurzschlüsse überprüfen und ggf. nachbessern.
Elektronik 4.2. Fertiggerät USB-Infrarot-Transceiver Optional ist ein USB-IR-Transceiver als Fertiggerät lieferbar. Abbildung 4.2.: USB Infrarot-Transceivers Abbildung 4.3.: Oberseite des USB Infrarot-Transceivers Abbildung 4.4.
Elektronik 4.3. Bestückung der ASURO-Platine Die zwei längeren Achsen, die für die zweite Getriebestufe erforderlich sind, werden auf der Unterseite angelötet oder geklebt. Löten ist praktischer, denn Korrekturen sind einfacher möglich und abkühlen lassen geht schneller als warten, bis der Kleber fest ist. Die beiden kürzeren liegen auf der Oberseite und weiter Richtung Platinenmitte.
Elektronik Abbildung 4.6.
Elektronik • T1, T3, T5, T7: BC327-40 oder BC328-40 • T2, T4, T6, T8: BC337-40 oder BC338-40 • R1, R2, R3, R4, R5, R6, R7, R8, R19, R21, R24: 1k Ohm, 5% (braun, schwarz, rot, gold) • R9, R16: 220 Ohm, 5% (rot, rot, braun, gold) • R10, R17, R22, R31: 470 Ohm, 5% (gelb, violett, braun, gold) • R11: 100 Ohm, 5% (braun, schwarz, schwarz, gold) • R12: 12k Ohm, 1% (braun, rot, schwarz, rot, braun) • R13: 10k Ohm, 1% (braun, schwarz, schwarz, rot, braun) • R14, R15: 20k Ohm, 5% (rot, schwarz, orange, gold) • R18,
Elektronik Drei weitere Bauteile werden noch benötigt (sie ermöglichen das Folgen einer Linie), allerdings werden sie auf der Unterseite der Platine angebracht und von oben her eingelötet (siehe Abb.4.7.): • T9, T10: SFH300, Fototransistor 5mm, auf richtige Polung achten! Diese stehen leicht von der Platine ab. • D11: LED 5mm rot, rotes Gehäuse, auf richtige Polung achten (kurzes Bein an markierte Seite)! Abbildung 4.8. zeigt die soweit bestückte Platine von oben und unten.
Elektronik 4.4. Motormontage Wenn die Bestückung der ASURO-Platine abgeschlossen ist, müssen nur noch die Motoren mit Kabeln versehen und provisorisch befestigt werden. Zum Anschluss der Motoren wird je ein schwarzes und rotes ca. 70mm langes Kabel mit abisolierten und verzinnten Enden benötigt. Sind die beiliegenden Kabel noch nicht passend vorbereitet, so isoliert man die Enden ca.
Elektronik 5. Inbetriebnahme und Test Endlich ist alles zusammengebaut und der Fahrspaß kann beginnen. Zunächst müssen aber noch die zuvor eingebauten Fehler gesucht, gefunden und beseitigt werden, ohne dabei allzu großen Schaden anzurichten. 5.1. RS232-Infrarot-Transceiver Diese Inbetriebnahme gilt nur für den RS232-IR-Transceiver. Als erstes sollte der RS232-IR-Transceiver auf seine volle Funktionsfähigkeit überprüft werden, da dieser später für den Selbsttest des Fahrzeugs benötigt wird.
Elektronik 5.2. USB-Infrarot-Tranceiver Diese Inbetriebnahme gilt nur für den USB-Infrarot-Transceiver. Achtung! Der ungehäuste USB-Infrarot-Transceiver ist empfindlich gegen elektrostatische Entladungen. Vor der Benutzung muss man sich an einem metallischen Körper (Heizung, Computergehäuse) entladen um Schäden zu vermeiden. Alternativ kann man den Transceiver auch in ein für Infrarotlich durchsichtiges Gehäuse einbauen. 5.2.
Elektronik 5.2.2 Linux Der USB-Transceiver wird mit dem USB-Kabel an einer freien USB-Buchse angeschlossen. Ein kurzes “Piep” ertönt, wenn Linux den Transceiver erkannt hat. Um zu überprüfen, ob das Gerät korrekt erkannt wurde, kann man sich den entsprechenden Eintrag im proc-Verzeichnis anschauen: foo@bar:/>cat /proc/tty/driver/usb-serial Was eine Ausgabe produzieren muss, die mindestens folgende Einträge aufweist (statt der “0:” kann auch “1:”, “2:” usw. stehen): usbserinfo:1.0 driver:v1.
Elektronik 5.3. Inbetriebnahme der ASURO-Platine Der Prozessor (IC1) ist zu diesem Zeitpunkt noch nicht eingebaut! Jetzt die Nackenhaare sträuben, und den Schalter auf ON stellen. Die beiden Back-LEDs (D15, D16) sollten nun beide leicht glimmen. Ist dies nicht der Fall den Hauptschalter sofort auf OFF stellen und in Abschnitt 6.3 weiterlesen. Klappt’s? Dann Schalter auf OFF stellen und IC1 (Prozessor) sowie IC3 (AND Gatter) einsetzen (siehe Abb. 5.1). Evtl.
Elektronik Nur bei Akku-Betrieb Jumper (J1) stecken. Die Kerben der ICs müssen mit der Kerbe der hoffentlich richtig eingesetzten Sockel übereinstimmen. Der Prozessor ist bereits werksseitig mit einem Selbsttest vorprogrammiert und wird nach dem Einschalten alle Komponenten überprüfen. Damit es hierbei gleich keine Schwierigkeiten gibt, sollte man den folgenden Abschnitt einmal komplett lesen bevor man einschaltet und anschließend wieder hierher zurückkehren.
Elektronik Schalter ASURO steht still, alle Anzeigenelemente sind aus. Ein gutes Zeichen! Die Schalter werden nun überprüft (ca 15sec). Einfach mal ein bisschen rumdrücken, irgendetwas wird hoffentlich passieren.
Elektronik Besteht zwischen ASURO und dem Infrarot-Transceiver Sichtkontakt (ca. 50cm Abstand) sollte im Terminal-Programm regelmäßig ein ’T’ erscheinen bzw. die am PC gedrückte Taste erscheint einmal (vom Transceiver gesendetes und reflektiertes Signal) gefolgt von dem im Alfabet folgenden (von ASURO gesendeten) Zeichen. z.B.
6. Fehlersuche 6.1. RS232-IR-Transceiver geht nicht ! 6.1.1. Tastendruck und Zeichenausgabe stimmen nicht überein Solange am Trimmer TR1 drehen bis Tastendruck und Zeichenausgabe übereinstimmen. 6.1.2. Das Terminal-Programm gibt keine Zeichen aus Ist das Timer-IC (IC1) montiert bzw. richtig herum (Kerbe zeigt in Richtung der drei Dioden) eingesteckt? Eine Infrarot-Fernbedienung eines beliebigen Gerätes (Videorecorder, Fernseher, Tuner, ...
6. Fehlersuche 6.3.2. Nur eine der beiden LED’s glimmt auf Sind die Dioden (rosafarbenes Gehäuse) D13 (links) ,D14 (rechts), sowie die Fototransistoren (klares Gehäuse) T11 (links), T12 (rechts) an der richtigen Stelle (siehe Abb.4.3) und Polungsrichtig eingebaut? Haben folgende Widerstände den richtigen Wert R18, R19 (links) und R20, R21 (rechts)? 4,7KΩ (ge,vio,ro,gld) 1KΩ (br,sw,ro,gld) Sind die Bauteile alle an der richtigen Stelle eingebaut? (Bei den Widerständen auf den Platinenaufdruck achten!) 6.3.
6. Fehlersuche 6.4.3. Linke Back-LED D15 geht nicht Polung D15 prüfen. Widerstände R19, R18 überprüfen. 1KΩ (br,sw,or,gld) 4,7KΩ (ge,vio,ro,gld) Ein einfacher Test besteht darin, den Prozessor (IC1) zu entfernen und eine Verbindung zwischen Pin7 (VCC) und Pin24 herzustellen, die linke Back-LED leuchtet rot. Ist dieser Test erfolgreich, liegt ein Defekt im Prozessor oder Schwinger vor, bzw. ist eine Leiterbahn unterbrochen. 6.4.4. Rechte Back-LED D16 geht nicht Polung D16 prüfen.
6. Fehlersuche 6.6.2. Die Anzeige verhält sich so, als seien Schalter vertauscht worden Die Widerstände der jeweiligen Schalter sind vertauscht. Zu kontrollieren sind R24 R25 R26 R27 R28 R29 R30 R32 1KΩ 2KΩ 2KΩ 8,2KΩ 16KΩ 33KΩ 68KΩ 2KΩ (br,sw,sw,br,br) (ro,sw,sw,br,br) (ro,sw,sw,br,br) (gra,ro,sw,br,br) (br,bl,sw,ro,br) (or,or,sw,ro,br) (bl,gr,sw,ro,br) (ro,sw,sw,br,br) 6.6.3.
6. Fehlersuche 6.8. Ein Antrieb geht nicht 6.8.1. Kein Antrieb bewegt sich Polung und Einbaulage IC3 überprüfen. 6.8.2. Der linke Motor bewegt sich nicht bzw. nur in eine Richtung Hier ist die komplette Motorbrücke, bestehend aus Transistoren T1, T2, T3, T4 (sind die richtigen Transistoren an der richtigen Stelle eingebaut), den Dioden D1, D2, D3, D4 (Polung !) und den Widerständen R1, R2, R3, R4 zu kontrollieren.
6. Fehlersuche 6.9.3. Es geht immer noch nicht so richtig C8 polungsrichtig eingebaut ? 220F/ mindestens 10V Kommt es bei der Übertragung von Daten vom PC zu ASURO immer wieder zu Schwierigkeiten, so muss ein wenig am Trimmer TR1 des Transceivers gedreht werden. Zweikomponentenkleber steht im Verdacht sensibilisierend zu wirken, was soviel heißt wie: man wird gegen immer mehr Zeug allergisch, er darf also keinesfalls mit der Haut in Berührung kommen. Vinylhandschuhe können hierbei sehr hilfreich sein.
7. Letzte Einstellarbeiten 7. Letzte Einstellarbeiten Die Achsen werden leicht eingefettet, das Getriebezahnrad mit dem schönen Schwarz-Weiß-Muster wird auf die kurze Achse gesteckt. Der Reifen wird auf das Getrieberad mit den 50 und 12 Zähnen gesteckt, dann zusammen auf die hintere Achse gesteckt und mit einem Stellring fixiert, sodass es sich noch leicht drehen kann.
Teil III. Informatik 8. Installation der Software und erste Schritte Die ASURO-CD ins CDROM-Laufwerk einlegen, sie ist autostartfähig. Falls Autostart deaktiviert ist, kann man die CD auch mit dem Windows-Explorer öffnen. Nach der Auswahl der Sprache findet sich im Abschnitt “Software” alles, was für den Betrieb von ASURO erforderlich ist. Diese Programme müssen zunächst installiert werden. Für die Installation des Compilers sind Administrator-Rechte erforderlich.
8.
8.
8. Informatik …bis der Programmers Notepad 2 (PN2) Editor mit der Datei README.txt erscheint. Nun das Fenster ‘Programmers Notepad 2’ schließen. Auf dem Desktop erscheint das ‘Programmers Notepad 2’ Symbol: Der Programmeditor und der Compiler sind jetzt installiert.
8. Informatik 8.1.3. Beispielprogramme von CDROM auf die Festplatte kopieren. Von der CD den Ordner ‘ASURO_src’ in einen beliebigen Ordner (Z.B. ‘C:\ASURO_src’) auf der Festplatte kopieren. Durch Markieren der kopierten Dateien im Zielverzeichnis, Klicken mit der rechten Maustaste und Auswahl von Eigenschaften sicherstellen, dass der Schreibschutz deaktiviert ist.
8. Informatik Auf der rechten Seite ‘C/C++’-Scheme auswählen. ‘C/C++’-Scheme ist ausgewählt.
8. Informatik Das Fenster ‘New Tool’ erscheint. Folgende Einstellungen eintippen oder mit der Browse-Taste Name: make Command: C:\ASURO_src\FirstTry\Test-all.bat Folder: C:\ASURO_src\FirstTry auswählen: Klick auf [OK] Ein neues PN-Tool mit Namen make ist ab sofort im Tools-Hauptmenü verfügbar. (Wird das Tool aktiviert, so wird eine Batch-Datei mit Namen Test-clean.bat ausgeführt, welche das Programm test.c - zusammen mit asuro.c - compiliert und eine datei text.
8. Informatik Im Programmeditor einen Menüeintrag zum Aufräumen einrichten.
8. Informatik Das Fenster ‘New Tool’ erscheint. Folgende Einstellungen eintippen oder mit der Browse-Taste Name: clean Command: C:\ASURO_src\FirstTry\Test-clean.bat Folder: C:\ASURO_src\FirstTry auswählen: Auf [OK] klicken Ein neues PN-Tool mit Namen clean ist ab sofort im Tools-Hauptmenü verfügbar. (Wird das tool aktiviert, so wird eine Batch-Datei mit Namen Test-clean.bat ausgefuhrt, welche temporäre Dateien im Ordner C:\ASURO_src\FirstTry löscht.
8. Informatik Im Options-Fenster müssen jetzt die beiden Einträge für die Tools ‘make’ und ‘clean’ sichtbar sein. Wieder auf [OK] klicken.
8. Informatik Auf [Open] klicken. Nun zum Ausprobieren die Datei Datei ’C:\ASURO_src\FirstTry\test.
8. Informatik Datei test.c wird geöffnet. Wenn man Tools auswählt… …sieht man die neuen Tools make und clean als Menüeintrag. Nun make anklicken.
8. Informatik Die Dateien test.c (zusammen mit asuro.c) wird nun compiliert… …und wenn das Programm keine Fehler enthält (was zu erwaren ist, da gerade das Beispielprogramm geladen ist), erscheint unten die Meldung: Errors: none. Was ist passiert? Aus der Datei test.c (und asuro.c) ist eine Datei test.hex generiert worden. Diese Datei stellt das in Maschinencode übersetzte Programm dar, welches nun in ASUROs Speicher geladen (geflasht) werden kann.
8. Informatik Das zu unserem Beispielprogramm gehörige makefile ist so geschrieben, dass es eine Datei mit Namen test.c zusammen mit asuro.c (das einige vordefinierte Funktionen enthält) compiliert und eine .hex-Datei erzeugt, die so auf ASURO geladen werden kann. Achtung! Das heißt auch, dass – solange das makefile nicht geändert, sondern nur kopiert wird – das das eigene Programm immer test.c heißen muss.
8.
8. Informatik …kann man sehen… …dass die generierten Dateien wieder gelöscht worden sind sind Wie hat’s funktioniert? Der Menüeintrag ‘clean’ hat die Batch-Datei Test-clean.bat aufgerufen, welche make mit dem Parameter ‘clean’ gestartet hat. Dadurch wird der Eintrag im makefile namens clean ausgeführt und die ganzen inzwischen überflüssigen Dateien wieder gelöscht.
8. Informatik 8.2. LINUX Für die Installation der Software sind root-Rechte erforderlich. Entweder ausloggen und als root einloggen oder eine shell öffnen und mit “su” root-Rechte erlangen. 8.2.1 Flash-Tool Die ASURO-CDROM einlegen, ggf. mounten und die beiden Flash-Tools “asuroflash” und “asurocon” aus dem Verzeichnis “/Linux/Tools/” in das Verzeichnis “/usr/local/bin” kopieren. Danach noch das Ausführen mit “chmod a+x /usr/local/bin asurocon asuroflash” erlauben.
8. Informatik 8.2.2 Compiler Zur Installation des Gnu-Compilers für AVR-Prozessoren die ASURO-CDROM einlegen und aus dem Verzeichnis “/Linux/Compiler/” mindestens die folgenden Pakete in der angegebenen Reihenfolge installieren: 1. avr-binutils-... .rpm 2. avr-gcc-... .rpm 3. avr-libc-... .rpm Die Installation ist denkbar einfach! Einfach in der Konsole mit root-Rechten den Befehl : rpm -i .rpm eingeben. Fertig! Als Editoren eignen sich zum Beispiel Exmacs, Kate oder Kedit.
8. Informatik 8.3. Flash - das ASURO-Programmier-Tool Hierzu wird das Programm Flash (siehe Abb. 8.3) benötigt. Abbildung 8.3.: Flash-Tools für Windows und LINUX Damit das Flashen auch richtig gut klappt, muss natürlich der RS232- oder USB-IR-Transceiver angeschlossen werden. Danach das Programm starten und die Schnittstelle auswählen, welche auch bei der Inbetriebnahme funktioniert hat. Die Datei “Test.hex” aus dem Verzeichnis “C:\ASURO_src\FirstTry” (bzw. ~/ASURO/) auswählen.
8. Informatik 8.4. Flash Fehler Folgende Fehler können während des Flashens auftreten: • • “c” Checksum Error. Es sind andere als die vom PC geschickten Daten bei ASURO angekommen. Das kann durch Störlicht (wie Leuchtstofflampen) kurze Unterbrechungen in der Sichtverbindung oder ähnliches passieren. � • “t” Timeout. Die Sichtverbindung zu ASURO ist abgerissen. � * “v” Verify Error. ASURO hat falsche Daten in seinen Flashspeicher geschrieben.
8. Informatik Das geladene Programm wird wie folgt abgeändert (Achtung, auf exakte Schreibweise auch Groß-/Kleinschreibung achten): #include “asuro.h” int main(void) { Init(); StatusLED(RED); while(1); return 0; } Danach wieder im Menü Tools -> make auswählen (unter Linux: in einer Shell im Verzeichnis “~/ASURO/” “make” eintippen oder den Editor passend konfigurieren und die Compilierung abwarten, bis keine neuen Meldungen mehr im Statusfenster erscheinen).
9. C für ASURO Dieser Abschnitt beschäftigt sich mit der Programmiersprache C. Der Leser wird hierbei nur die für die Programmierung von ASURO notwendigen Bestandteile von C erklärt bekommen. Dies stellt also keinesfalls eine komplette Einführung in C dar. Hierfür gibt es bessere Bücher1. C wurde als Sprache gewählt, da dieser Standard weit verbreitet ist und für fast jeden Prozessor, zumindest ein C-Compiler existiert.
9. C für ASURO Will man einige Zeilen aus seinem Code auskommentieren so beginnt der Kommentarblock mit “/*” und endet mit “*/ ”. Um nur eine Zeile auzukommentieren genügt ein “//“ vor der betreffenden Zeile3. Das Auskommentieren dient dazu, dass Textstücke vom Compiler nicht beachtet werden. Damit kann man Kommentare in das Programm einfügen, ohne dass beim Übersetzten des Programms dadurch Probleme entstehen. 9.1.2. Variablen und Datentypen Variablen sind “Behälter” für Daten.
9. C für ASURO Die Deklaration erfolgt entweder “außerhalb” der main()-Funktion als globale Variable, (das heißt, die Variable ist für das gesamte Programm verfügbar), innerhalb der main()-Funktion, (dann gilt sie nur für Programmcode, der in der main()-Funktion steht) oder innerhalb einer eigenen Funktion (dann ist sie nur hier gültig). Was nützt die schönste Variable, wenn man nicht weiß, wie man Daten rein oder raus kriegt.
9. C für ASURO 9.1.3. Compilerdirektiven Sicher hat das #include “asuro.h” schon für Verwirrung gesorgt. Die #include-Direktive heißt nichts anderes, als dass Text, welcher in der angegebenen Datei steht in das Programm eingebunden und beim Compilieren mitübersetzt wird. Im vorliegenden Fall werden einige Routinen, welche für den Betrieb des Roboters erforderlich sind, verfügbar gemacht.
9. C für ASURO Will man eine Entscheidung unter mehreren Alternativen treffen, so kann man mehrere “else if”Anweisungen verwenden.
9. C für ASURO 9.1.5. Schleifen Schleifen dienen dazu, Anweisungen mehrmals auszuführen. In der “while”-Schleife wird eine Bedingung ausgewertet. Ist die Bedingung wahr, so wird der Anweisungsblock ausgeführt und die Bedingung erneut geprüft, bis diese falsch wird. Dannach wird das Programm hinter dem Anweisungsblock fortgesetzt. while( Bedingung) Anweisungsblock Beispiel: #include “asuro.
9. C für ASURO “while(1)” äquivalent zu “for(;;)” ist eine Endlosschleife, die niemals verlassen wird, da die Bedingung für den Abbruch niemals falsch (also 0) wird. Als weiteres Schleifekonstrukt gibt es die “do”-Schleife do Anweisungsblock while( Bedingung); Im Gegensatz zur “while”-Schleife wird hier die Bedingung am Ende des Anweisungsblockes auf Ihren Wahrheitgehalt hin untersucht. Diese Schleife wird auf alle Fälle wenigstens einmal durchlaufen. 9.1.6.
9. C für ASURO Nachdem die Datentypen bekannt sind und ein klein wenig über Funktionen geredet wurde, versuchen wir uns an einer kleinen Beispielfunktion, welche zwei 8-Bit-Zahlen multiplizieren und das Ergebnis zurückgeben soll.
9. C für ASURO 9.1.7. Zeiger und Vektoren Zeiger und Vektoren werden hier nur soweit behandelt, wie diese zum Betreiben von ASURO notwendig sind. Werden die Linienfolgesensoren, bzw. die Sensoren der Odometrie ausgelesen, benötigt man Vektoren. Deren Deklaration ist denkbar einfach: int lData[2]; int oData[2]; Wie man erkennt werden für die Liniensensoren bzw. für die Odometrie zwei Vektoren (l Data, o Data) mit 2 Elemeneten angelegt.
9. C für ASURO Will man Zeichen empfangen, ist für ASURO die Funktion SerRead () definiert. Der erste Parameter enthält die Zeichenkettenvariable, in welcher empfangen Zeichen abgespeichert werden, der zweite Parameter gibt an, wieviele Zeichen empfangen werden sollen, der dritte stellt ein Timeout dar. Werden innerhalb der eingestellten Zeit (Prozessortakte) keine Daten empfangen, bricht die Funktion ab. Wird hier “0” eingestellt, wartete die Funktion bis alle Zeichen empfangen wurden.
9. C für ASURO 9.2.1. void Init(void) Der Mikrocontroller wird in seinen Grundzustand gebracht. Diese Funktion muss immer am Anfang eines Programms aufgerufen werden. Ohne den Aufruf dieser Funktion am Anfang weiß der Prozessor nicht mal, was er mit seinen Beinchen machen soll. Ein Programm für ASURO muss mindestens so ausschauen: #include “asuro.
9. C für ASURO 9.2.3. void FrontLED(unsigned char status) Die Front-LED (D11) kann ein- bzw. ausgeschaltet werden. Mögliche Übergabeparameter sind ON bzw. OFF. Beispiel: Die Front-LED soll leuchten: FrontLED(ON); 9.2.4. void BackLED(unsigned char left, unsigned char right) Die Back-LEDs (D15 und D16) können ein- bzw. ausgeschaltet werden. Der erste Parameter beschreibt den Zustand der linken Back-LED (D15), der zweite Parameter den der rechten BackLED (D16). Mögliche Zustände sind ON bzw. OFF.
9. C für ASURO 9.2.7. void MotorSpeed(unsigned char left_speed, unsigned char right_speed) Hier wird die Geschwindigkeit der Antriebsmotoren vorgegeben. Der maximal mögliche Geschwindigkeitswert ist 255 (unsigned char). Der Motor fängt sich erst ab einem Wert von ca. 60 zu drehen an. (Hängt stark vom mechanischen Zusammenbau ab.) Der eingestellte Wert gibt eigentlich nur an, welche elektrische Leistung die Motoren erhalten sollen.
9. C für ASURO Beispiel: Die Zeichenkette „Fahr los“ soll empfangen werden. Dabei soll sichergestellt sein, dass alle Zeichen bei ASURO eingetroffen sind, bevor weitergemacht werden kann. Anmerkung: Es werden nur acht Zeichen empfangen. Eine Überprüfung ob auch wirklich ‘Fahr los’ angekommen ist, findet nicht statt. #include “asuro.
9. C für ASURO Jaja, diesmal wieder im ganzen Programm: #include “asuro.h” int main(void) { unsigned int data[2]; Init(); FrontLED(ON); MotorDir(FWD,FWD); while(1){ // Linienverfolgung auf die einfachste Art //Speicher bereitstellen if (data [0] > data [1] ) {MotorSpeed(200,150);} // Linienbeleuchtung einschalten // Beide Motoren auf vorwärts // Endlosschleife, ASURO soll beliebig // lang einer Linie nachfahren // aktuelle Helligkeitswerte der // Fototransistoren einlesen // links heller als rechts...
9. C für ASURO 9.2.12. unsigned char PollSwitch(void) Die Taster (K1-K6) werden ausgewertet. Diese Funktion liefert ein Byte. In diesem Byte ist die Information enthalten, welche Taster gedrückt wurden. Dabei setzt Taster 1 das 5. Bit, Taster 6 das 0. Bit. Bit0 (1) -> K6 Bit1 (2) -> K5 Bit2 (4) -> K4 Bit3 (8) -> K3 Bit4 (16) -> K2 Bit5 (32) -> K1 Wären also die Tasten 1,3 und 5 gedrückt, so würde die Funktion 32 + 8 + 2 = 42 zurückliefern. Evtl.
Teil IV. Anhänge A.
IV. Anhänge A. Stückliste 4x Kabelbinder 1x Kabelbinder lösbar 2x Gummireifen 38mm 2x Messingstab 42mm lang, 3mm Durchmesser 2x Messingstab 24,5mm lang, 3mm Durchmesser ca. 15cm Schaltlitze rot 0,14mm ca. 15cm Schaltlitze schwarz 0,14mm 2x Encoderscheiben (siehe 2.4) Für den zugehörigen RS-232-IR-Transceiver braucht man folgende Bauteile: 1x Platine IR-RS232-Transceiver 3x Dioden 1N4148 1x Zenerdiode ZPD5.
IV. Anhänge B.
IV. Anhänge C.
D.
IV. Anhänge E. BLOCKSCHALTBILD ASURO F.
IV. Anhänge G.