Embedded Robotics Inhaltsverzeichnis 1 Das Mikrocontroller-Board 1.1 Einführung 1.2 Der Mikrocontroller 1.2.1 Grundlegendes und Geschichtliches 1.2.2 Details zum 8051 1.3 Die Schaltung des Mikrocontroller-Boards 1.4 Baugruppen auf dem Mikrocontroller-Board 1.5 Hinweise zum Aufbau und zur Inbetriebnahme 1.6 Mögliche Fehlerquellen 1.7 Quellen 11 11 11 11 12 13 13 17 20 20 2 Eine Entwicklungsumgebung für den Mikrocontroller 2.1 Auswahl des Compilers 2.2 Der Ablauf der Programmentwicklung 2.3 Erste Schritte mit dem Entwicklungssystem 2.4 Übersicht zur Programmentwicklung 2.5 Die C-Erweiterungen für den 8051 2.5.1 Speichermodifizierer 2.5.2 Interrupt-Programmierung 2.5.3 Reentrant-fähige Funktionen 2.5.4 Inline-Assembler und direkter Speicherzugriff aus C 2.6 Debugging mit dem Elektor-Board 2.7 Quellen und Quelltexte 21 21 22 24 29 29 30 31 32 32 33 39 3 Der Roboter entsteht 3.1 Einführung 3.2 Die Servomotoren 3.3 Aufbauanleitung zur Robotermechanik 3.4 Stromlaufplan 3.5 Kommentare zum Aufbau und mögliche Fehlerquellen 41 41 42 44 49 52 4 Kommunikation über die serielle Schnittstelle 4.1 Einführung 4.2 Grundlagen der seriellen Übertragung nach RS232 4.3 Die Konfiguration der seriellen Schnittstelle des 8051 4.4 Eine C-Library für die serielle Kommunikation 4.5 Ein einfacher universeller Befehlsinterpreter 4.6 Quellen und Quelltexte 55 55 56 58 61 63 65 Krause Robotik Neustadt 8 06800 Raguhn-Jeßnitz E-Mail [email protected] Internet www.krause-robotik.de Telefon (03494) 368372 Telefax (03494) 33784 Handy (0171) 8747348 5 Eine LC-Anzeige für den Roboter 5.1 Einführung 5.2 Funktionsweise und Ansteuerung des HD44780 5.3 Eine C-Library für das LC-Display 5.4 Quellen und Quelltexte 71 71 72 75 76 6 Der Roboter bewegt sich 6.1 Mehr über Servos 6.2 Der Pulsweitenmodulator für den Servo 6.3 Eine Bibliothek zur Servoansteuerung 6.4 Quellen und Quelltexte 79 79 81 84 85 7 Das Easy Radio-RS232-Funkmodul 7.1 Einführung 7.2 Schaltung und Platine 7.3 Anschluss an das Flashboard im Roboter 7.4 Inbetriebnahme, Tipps und mögliche Fehlerquellen 7.5 Quellen 89 89 89 92 93 94 8 Drehzahl- und Lageregelung 8.1 Grundlagen zur Regelungstechnik 8.1.1 Steuerung 8.1.2 Regelung 8.1.3 Regler 8.2 Positionssteuerung 8.3 Sensorik 8.4 Einfache Positionsregelung 8.5 Drehzahlregelung 8.5.1 Impulsbasierte Drehzahlregelung 8.5.2 Zeitbasierte Drehzahlregelung 8.6 Roboterkinematik 8.7 Verbesserte Positionsregelung 8.8 Quellen und Quelltexte 95 96 96 97 99 102 105 110 112 112 117 119 123 126 9 Eine Maus für den Roboter 9.1 Einführung 9.2 Roboterkinematik aus Maussicht 9.3 Funktionsweise einer optischen PC-Maus 9.4 Die PS/2-Schnittstelle der Maus 9.5 Das Datenprotokoll der PS/2-Maus 9.6 Anschluss einer optischen Maus an das Flashboard 9.7 Der PS/2-Schnittstellentreiber 9.8 Positionsmessung mit der optischen Maus 9.9 Positionsregelung mit der optischen Maus 9.10 Quellen und Quelltexte 137 137 137 140 142 144 146 147 149 152 154 Krause Robotik Neustadt 8 06800 Raguhn-Jeßnitz E-Mail [email protected] Internet www.krause-robotik.de Telefon (03494) 368372 Telefax (03494) 33784 Handy (0171) 8747348 10 Die Leitstandssoftware 10.1 Einführung 10.2 Python-Installation unter Windows 10.3 Ein Probelauf 10.4 Python-Bibliotheken und erneuter Probelauf 10.5 Die Leitstandsapplikation 10.6 Quellen 163 163 164 164 165 167 169 11 A/DC und D/AC 11.1 Einführung 11.2 Analog/Digital-Conversion 11.3 Digital/Analog-Conversion 11.4 Quellen 171 171 171 173 174 12 Lichtsensorik 12.1 Einführung 12.2 Unsere Wahl hier: lichtempfindliche Widerstände 12.3 Anwendungen 12.4 Quellen und Quelltext 175 175 176 177 178 13 Position Sensing Device 13.1 Sharp Infrarot-Distanzsensoren 13.2 Digitaler Abstandssensor Sharp GP2Y0D02YK 13.2.1 Der Roboter fährt entlang einer Wand 13.2.2 Der Roboter als autonomer Staubsauger 13.3 Serieller Abstandssensor Sharp GP2D02 13.4 Quellen und Quelltexte 181 181 183 183 184 186 189 14 Mathematische Funktionen 14.1 Einführung 14.2 Zufallszahlen 14.3 Matheroutinen 14.3.1 Einführung 14.3.2 CORDIC-Algorithmus 14.3.3 Heron-Verfahren 14.4 Erweiterung des Zahlenraums 14.5 Beispielanwendungen 14.6 Anregungen 14.7 Quellen und Quelltexte 193 193 193 196 196 196 200 201 204 205 205 Krause Robotik Neustadt 8 06800 Raguhn-Jeßnitz E-Mail [email protected] Internet www.krause-robotik.de Telefon (03494) 368372 Telefax (03494) 33784 Handy (0171) 8747348 15 Reflexbasiertes Verhalten 15.1 Einführung 15.2 Braitenberg-Vehikel 15.2.1 Einführung 15.2.2 Wesen 1-5 15.2.3 Umsetzung 15.3 Subsumptionsarchitektur 15.3.1 Einführung 15.3.2 Umsetzung 15.4 Quellen und Quelltexte 213 213 213 213 214 220 221 221 222 226 16 Multithreading mit dem Betriebssystem MrOS 16.1 Motivation 16.2 Einführung 16.2.1 Threads und Tasks 16.2.2 Multithreading 16.2.3 Kernel 16.2.4 Betriebsmodi 16.3 Aufbau von MrOS 16.4 Multithreading 16.5 Thread-Zustände 16.6 Thread Control Block (TCB) 16.7 Speicheraufbau 16.8 Thread Switching 16.9 Scheduling 16.10 Synchronisation, Signale 16.11 Interrupts 16.12 Gerätetreiber 16.13 Benutzerschnittstelle (API) 16.13.1 Initialisierung 16.13.2 Thread-Kontrolle 16.13.3 Serielle Kommunikation 16.14 Anwendung 16.15 Beispiel 16.16 Ausblick 16.17 Quellen und Quelltext 233 233 234 234 234 234 234 235 236 238 239 239 240 242 243 244 245 246 247 247 249 250 252 253 253 Krause Robotik Neustadt 8 06800 Raguhn-Jeßnitz E-Mail [email protected] Internet www.krause-robotik.de Telefon (03494) 368372 Telefax (03494) 33784 Handy (0171) 8747348 17 Vision Sensor – Die CMUcam 17.1 Motivation 17.2 Übersicht 17.3 Anschluss 17.4 Befestigung 17.5 Kommunikation 17.6 Farbverfolgung mit der CMUcam 17.7 Die wichtigsten Befehle 17.8 Die wichtigsten Rückgabepakete 17.9 Anwendung 17.10 Ausblick 17.11 Quellen und Quelltext 263 263 263 265 267 267 269 271 275 277 280 280 18 Modellierung komplexen Verhaltens 18.1 Motivation 18.2 Programmierung – Verhalten 18.3 Signale – Reize 18.4 Threads – Verhaltensweisen 18.5 Unterbrechungen – Ablenkung 18.6 Reiz-Reaktions-Kopplung 18.6.1 camera – Auswertung der Kameradaten 18.6.2 bumper – Kontrolle der Bumper-Taster 18.6.3 step back – Kollisionsbehandlung 18.6.4 follow – Verfolgung des Balls 18.6.5 search – Umgebungssuche 18.6.6 cruise – Umherstreifen 18.6.7 main – Aufwachen 18.7 Ausblick 18.8 Quellen und Quelltext 283 283 283 284 284 285 285 286 287 287 287 287 287 288 288 289 19 Ausblicke 19.1 Wie geht es weiter? 19.2 Quellen 293 293 294 Krause Robotik Neustadt 8 06800 Raguhn-Jeßnitz E-Mail [email protected] Internet www.krause-robotik.de Telefon (03494) 368372 Telefax (03494) 33784 Handy (0171) 8747348 A Ein alternativer C-Compiler: der SDCC A.1 Einführung A.2 Installation und Probelauf A.3 Syntaxunterschiede zum Wickenhäuser µC/51 A.4 Quellen 297 297 298 300 302 B Ein alternativer Flasher für den Parallelport: der SP89 B.1 Einführung B.2 Verwendung B.3 Quellen 303 303 303 305 C Alternative Mikrocontroller und µC-Boards C.1 Einführung C.2 Weitere Mitglieder aus der 8051-Familie C.3 Es muss nicht immer 8051 sein C.4 Quellen 307 307 308 309 309 Das Buch ist erhältlich bei www.krause-robotik.de Besuchen Sie unsren Shop Krause Robotik Neustadt 8 06800 Raguhn-Jeßnitz E-Mail [email protected] Internet www.krause-robotik.de Telefon (03494) 368372 Telefax (03494) 33784 Handy (0171) 8747348