Sie sind auf Seite 1von 37

Seite 1

FRANZIS

14:30 Uhr

FRANZIS
ELEKTRONIK
Ulli Sommer

PRO-BOT128 selbst
bauen und erfolgreich einsetzen
Das als Bausatz und Fertiggert erhltliche Robotersystem Conrad
PRO-BOT128 ist die ideale Grundlage fr den Einstieg in die Elektronik, Mechanik und Programmierung. Dieses Robotersystem
verwendet als Gehirn eine C-Control Pro Mega128, die ausreichend Hardware, Speicher und Geschwindigkeitsressourcen auch
fr komplexere Aufgaben bereitstellt. Der Roboter kann mit der
mitgelieferten kostenlosen Entwicklungsumgebung (IDE) wahlweise in C, Basic und Assembler programmiert werden.
Ziel dieses Buchs ist es, Ihnen die Grundlagen der C-Control-ProProgrammierung vom Einstieg bis hin zur Programmierung von
komplexen Verhaltensweisen wie der Subsumtionsarchitektur zu
erlutern und Ihnen die Materie Robotik auf spielerische und
experimentelle Weise nherzubringen. Aber auch bereits erfahrene
Roboter-Bastler werden durch die vielen Hard- und Softwareerweiterungen, die in diesem Buch beschrieben sind, ihre Freude
haben. Viele Werke setzten fundiertes Fachwissen voraus, dieses
Buch soll auch Einsteigern das komplexe Zusammenspiel von
Mechanik, Elektronik und Software einfach und verstndlich
nahebringen.

Ein kleiner Ausschnitt aus


dem Inhaltsverzeichnis

Der Einstieg in die Robotik


Mikrocontroller-Grundlagen
Das Robotersystem PRO-BOT128
Die Programmierung: ein Crashkurs
fr Einsteiger
Multithreading
Der I2C-Bus und wie er funktioniert
Mechanisches Feintuning
Odometrie, Go & Turn
Sonar Radar: der PRO-BOT wird
zur Fledermaus
Porterweiterung auf dem
Experimentierboard
Selbstbau I2C-LCD zur visuellen Ausgabe
PRO-BOT128 mit Infrarot ber den PC
steuern
PRO-BOT mit der TV-Fernbedienung
steuern
Hier gehts zum Nordpol: ein Kompass
fr den PRO-BOT128
PRO-BOT128 ber Funk fernsteuern mit
der PC-Steuerzentrale
Bildauswertung auf dem Roboter
mit der CMUcam
Subsumptionsarchitektur

PRO-BOT128 selbst bauen und erfolgreich einsetzen

30.06.2009

ISBN 978-3-7723-4117-5

Euro 19,95 [D]

Besuchen Sie uns im Internet www.franzis.de

FRANZIS
PC+ELEKTRONIK
Ulli Sommer

PRO-BOT128 selbst
bauen und erfolgreich einsetzen
Mikrocontroller-Technik zum Anfassen
Auf CD-ROM:

ISBN 978-3-7723-4117-5

Sommer

4117-5 U1+U4

IDE (Integrierte Entwicklungsumgebung)


Alle Beispielprogramme zum Buch in C-Compact & Basic
PC-Steuerungssoftware fr PRO-BOT128 (Open Source)
Anleitungen zu den Produkten
Datenbltter

Vorwort
Roboterbauen wird, wie man in den verschiedensten Foren und Fachzeitschriften beobachten kann, in den letzten Jahren immer populrer. Das liegt daran, dass Mikrocontroller und zustzliche Peripheriebausteine immer gnstiger angeboten werden
und auch an den Schulen zunehmend die Themen Mikrocontroller, Computer und
Robotik unterrichtet werden.
Auch Conrad Electronic bietet seit einigen Jahren unter der Bezeichnung C-Control
verschiedene Mikrocontroller- und Robotersysteme mit umfangreichem Zubehr zu
gnstigen Preisen an. Deshalb ist es nicht verwunderlich, dass das neueste Robotersystem PRO-BOT128 eine C-Control Pro Mega128 als Steuer- und Recheneinheit verwendet. Die C-Control-Pro-Serie ist die jngste und leistungsstrkste ihrer Klasse und
basiert auf einem Atmel-AVR-Mikrocontroller der ATmega-Serie. Der Roboter kann
mit der mitgelieferten, sehr luxurisen und vor allem kostenlosen Entwicklungsumgebung wahlweise in C, Basic und Assembler programmiert werden. Dadurch ist das
System fr Einsteiger sowie fr den erfahrenen Entwickler sehr gut geeignet. Der Einsteiger wird mit Basic seine Ziele und Wnsche schnell verwirklichen knnen, der
Profi hingegen kann in Verbindung mit Assembler das Maximale aus der C-Control
Pro herauskitzeln.
Auf dem Gebiet der Robotik ist aber fr viele Einsteiger nicht nur das Programmieren
ein Steckenpferd, sondern auch die Elektronik und Mechanik eines Roboters. Fr diese Gruppe wird der Roboter auch als Fertiggert angeboten und man kann sofort mit
der Programmierung beginnen. Wer aber dennoch andere Sensoren und Aktoren anbringen mchte, wird trotz allem zum Ltkolben greifen mssen. Um diese Hrden zu
nehmen, werden in den kommenden Kapiteln einige Hardware-Erweiterungen mit
Nachbauanleitung vorgeschlagen. Natrlich wurden alle Erweiterungen und Experimente mit uerster Sorgfalt getestet.
Ich wnsche Ihnen viel Spa beim Lesen und Basteln.
Ulli Sommer, Waidhaus, Mrz 2009

Inhaltsverzeichnis
1 CD-ROM zum Buch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1
1.2
1.3

Inhalt der CD-ROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13


GPL (General Public License) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Systemvoraussetzung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2 Der Einstieg in die Robotik. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15


3 Mikrocontroller-Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1
3.2
3.3
3.4
3.5
3.5.1
3.5.2
3.5.3

Aufbau und Funktionsweise. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Die CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeits- und Programmspeicher. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Peripherie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Technologievergleich: RISC und CISC. . . . . . . . . . . . . . . . . . . . . . . . . . .
CISC-Technologie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
RISC-Technologie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vergleich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18
18
18
19
19
19
20
20

4 Kleiner berblick ber C-Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21


5 Mikrocontroller-Programmierung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.1
5.2
5.2.1
5.2.2
5.3
5.3.1
5.3.2
5.4
5.5

Was ist ein Programm? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Programmierung in Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konzept von Basic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vor- und Nachteile von Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Programmierung in C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konzept von C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vor- und Nachteile von C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Programmierung in Assembler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der Interpreter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22
22
23
23
23
23
24
24
24

6 Die Hardware der C-Control Pro Mega128 . . . . . . . . . . . . . . . . . . . . . . 26


6.1
6.2
6.3
6.4
6.5

Taktfrequenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gehuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
I/O-Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ADC (Analog Digital Converter) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26
27
27
29
29

Inhaltsverzeichnis

6.6
6.7
6.8
6.9
6.10

DAC (Digital Analog Converter) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


UART (Universal Asynchronous Receiver Transmitter) . . . . . . . . . . . .
Interrupt-Eingnge (IRQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der Bootloader. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Stromversorgung der Mega128. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29
30
31
31
31

7 Das Robotersystem PRO-BOT128. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32


7.1
7.1.1
7.1.2
7.2

Vorhandene Sensoren und Aktuatoren . . . . . . . . . . . . . . . . . . . . . . .


Sensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Aktuatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erweiterungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33
33
33
33

8 Die Elektronik des Roboters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34


8.1
8.2
8.3
8.4
8.5
8.6
8.7

Stromversorgung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Motortreiber. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Was ist eigentlich PWM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sensoren, Teil 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sensoren, Teil 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Steckverbindungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34
36
36
39
39
43
43

9 Die Programmierung ein Crash-Kurs fr Einsteiger. . . . . . . . . . . 44


9.1
9.2
9.3
9.4
9.5
9.6
9.6.1
9.7
9.8
9.9
9.10
9.11
9.12

Die Entwicklungsumgebung IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Basic und C kennenlernen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kommentare im Quelltext. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datentypen und Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variablennamen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lokale und globale Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variablenzuweisung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schleifen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funktionen und Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grundstzlicher Aufbau eines Programms. . . . . . . . . . . . . . . . . . . . .
Das erste eigene Programm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45
46
46
47
47
47
47
48
49
51
54
55
56

10 Multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
10.1
10.2
10.3
10.4

Threads synchronisieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fallstricke. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tabelle der Thread-Zustnde. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Multithreading in der Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . .

59
60
60
61

Inhaltsverzeichnis

11 Der Hardware-Debugger der C-Control Pro . . . . . . . . . . . . . . . . . . . . 65


11.1

Verwendung des Debuggers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

12 Die neue PRO-BOT128 Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70


13 Der IC-BUS im Robotersystem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
13.1
13.2
13.3
13.4
13.5
13.6
13.7

Bitbertragung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Startbedingung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Stoppbedingung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Byte-bertragung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Besttigung (Acknowledgment) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Adressierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7-Bit-Adressierung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78
78
78
79
79
79
79

14 Ein Spielfeld fr unseren Roboter . . . . . . . . . . . . . . . . . . . . . . . . . . . 80


15 PRO-BOT128-Feintuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
15.1
15.2
15.3
15.4
15.5
15.6

Tischtennisball-Ersatz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Odometer-Verbesserung, Teil 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Odometer-Verbesserung, Teil 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Odometer-Verbesserung, Teil 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Alternative Akkubefestigung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PRO-BOT128 mit Karosserie Pimp my Bot . . . . . . . . . . . . . . . . . . . .

82
83
84
85
86
87

16 PRO-BOT128 bekommt Fhler Bumpers . . . . . . . . . . . . . . . . . . . . . . 89


17 I-Bumper: die besondere Hinderniserkennung. . . . . . . . . . . . . . . . . 92
18 Einfache Roboterprogrammierung. . . . . . . . . . . . . . . . . . . . . . . . . . . 94
19 Das ACS (Anti-Collisions-System). . . . . . . . . . . . . . . . . . . . . . . . . . . 99
19.1

Abstandmessung mit dem ACS. . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

20 Immer an der Wand entlang mit den Abstandssensoren. . . . . . . . . 103


21 Chaos-Drive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
22 PRO-BOT128 versteht RC5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
22.1
22.2
22.3
22.4

Wie funktioniert die IR-Fernbedienung?. . . . . . . . . . . . . . . . . . . . . .


Der Aufbau des RC5-Codes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
So werden die einzelnen Bits bertragen . . . . . . . . . . . . . . . . . . . .
RC5_Read auf der C-Control Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . .

106
107
108
110

10

Inhaltsverzeichnis

23 PRO-BOT128 mit Infrarot ber den PC steuern. . . . . . . . . . . . . . . . . 112


24 IC-Portexpander mit PCF8574. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
25 IC-LCD-Selbstbau zur visuellen Ausgabe . . . . . . . . . . . . . . . . . . . . . 119
26 Funkferngesteuerter PRO-BOT128 . . . . . . . . . . . . . . . . . . . . . . . . . . 122
26.1
26.2
26.3

Kommandozentrale: PC-zu-Bot-Interface in VB.NET. . . . . . . . . . . . . 124


Visual Basic.NET: Einfhrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
PC-zu-Bot-Interface Funktionserklrung . . . . . . . . . . . . . . . . . . . . 126

27 CMUcam unser Roboter lernt Sehen. . . . . . . . . . . . . . . . . . . . . . . . 134


27.1
27.2
27.2.1
27.2.2
27.2.3
27.2.4

Funktion der Kamera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Neuer Antrieb mit Servos als Getriebemotoren. . . . . . . . . . . . . . . .
Wie funktioniert ein Servo?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der Umbau der Servos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anschluss und Befestigung der Kamera am PRO-BOT128. . . . . . .
Die Auswertung der Kameradaten . . . . . . . . . . . . . . . . . . . . . . . . . .

136
136
137
138
141
143

28 Hier gehts zum Nordpol: ein Kompass fr den PRO-BOT128 . . . . . 150


28.1
28.2
28.3
28.4

Montage des Kompasses am PRO-BOT128 . . . . . . . . . . . . . . . . . . .


Kalibrierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Himmelsrichtung auslesen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit dem Kompass navigieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

152
152
153
154

29 Ultraschallradar PRO-BOT128 wird zur Fledermaus . . . . . . . . . . . 156


29.1
29.2

Der SRF02-Ultraschallsensor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156


Auslesen der Entfernungsdaten. . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

30 Drive the best way: der Umgebungs-Scanner. . . . . . . . . . . . . . . . . . 160


30.1

Der Ablauf des Drive-the-best-way-Algorithmus. . . . . . . . . . . . . . . 160

31 Die Subsumtion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163


31.1
31.2
31.3
31.3.1
31.4

Einfaches Beispiel zur Subsumtion. . . . . . . . . . . . . . . . . . . . . . . . .


Wie programmiert man Verhalten?. . . . . . . . . . . . . . . . . . . . . . . . . .
Subsumtion la Rodney Brooks. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anforderungen an das Kontrollsystem. . . . . . . . . . . . . . . . . . . . . . .
Implementierung auf den PRO-BOT128. . . . . . . . . . . . . . . . . . . . . .

164
164
165
166
168

32 Operatoren und Befehle von C-Compact. . . . . . . . . . . . . . . . . . . . . . 169


32.1
32.2

Datentypen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Arithmetische Operatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

Inhaltsverzeichnis

32.3
32.4
32.5
32.6
32.7
32.8
32.9

Bit-Operatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bit-Schiebe-Operatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Inkrement-/Dekrement-Operatoren . . . . . . . . . . . . . . . . . . . . . . . . .
Vergleichs-Operatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Logische Operatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operator-Przedenz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Reservierte Worte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11
169
170
170
170
171
171
171

33 Operatoren und Funktionen von Basic. . . . . . . . . . . . . . . . . . . . . . . . 172


33.1
33.2
33.3
33.4
33.5
33.6
33.7
33.8

Datentypen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arithmetische Operatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bit-Operatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bit-Schiebe-Operatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vergleichs-Operatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operator-Przedenz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Reservierte Worte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schaltplne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

172
172
172
173
173
173
174
175

34 Bezugsquellen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
35 Literaturverweis C-Control Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Sachverzeichnis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

13

1 CD-ROM zum Buch


Diesem Buch liegt eine CD-ROM bei, die verschiedene Programme, Tools und Beispiele enthlt. Die CD-ROM erleichtert das Arbeiten mit diesem Buch. Die hier abgedruckten Beispiele sind auf der CD-ROM enthalten.

1.1 Inhalt der CD-ROM

C-Control PRO-Entwicklungsumgebung (IDE)


Originalbeispiele und -anleitungen
Beispielprogrammcode zum Buch
Diverse Tools
Datenbltter
Schaltplne

1.2 GPL (General Public License)


Sie knnen Ihre eigenen Programme selbstverstndlich mit anderen Anwendern ber
das Internet austauschen. Die Beispielprogramme stehen unter der Open-SourceLizenz GPL (General Public License). Daher sind Sie berechtigt, die Programme unter
den Bedingungen der GPL zu modifizieren, zu verffentlichen und anderen Anwendern zur Verfgung zu stellen, sofern Sie Ihre Programme dann ebenfalls unter die
GPL-Lizenz stellen.

1.3 Systemvoraussetzung
Um die Programme auf der mitgelieferten CD-ROM nutzen zu knnen, bentigen Sie
einen PC mit mindestens einem Pentium-4-Prozessor oder hher und mindestens 512
MB Arbeitsspeicher ab Windows 2000 aufwrts. Auf eine besondere Grafikkarte kann
verzichtet werden, da die Programme keine groen Ansprche stellen. Dadurch kann
man einen Rechner mit Onboard-Grafikkarte ohne Weiteres verwenden. Ein VGAMonitor mit mindestens 17 ist empfehlenswert.
Die meisten Programme bentigen die oben genannte Hardware zwar nicht, sollte
man sich jedoch auf Visual Basic Express (Visual Studio) einarbeiten, das auf dem
Microsoft Framework basiert, stt man schnell an die Grenzen des PC. Das Arbeiten

14

1 CD-ROM zum Buch

wird dann unertrglich langsam und das Kompilieren dauert zu lange, um Spa daran
haben zu knnen.
Zudem sollten Sie im Besitz eines Internetanschlusses sein, um diverse Updates und
die Registrierung der Programme durchfhren zu knnen.

22

5 MikrocontrollerProgrammierung
Mit der zunehmenden Integration von Halbleiterbauteilen wie Mikroprozessoren
hielten Mikrocontroller immer mehr Einzug in die Anwendungsgebiete der Mess-,
Steuer- und Regelungstechnik. Aber auch im Hobbybereich wurden die Mikrocontroller immer beliebter. Das liegt zum einen daran, dass heute komplexe, meist analoge
Schaltungen durch einfachere digitale Mikrocontroller-Schaltungen ersetzt werden.
Ein anderer ausschlaggebender Punkt ist heute das unschlagbare Preis-Leistungs-Verhltnis von Mikrocontrollern.

5.1 Was ist ein Programm?


Ein Programm ist die Beschreibung eines Informationsverarbeitungsprozesses. Im
Laufe eines solchen Prozesses wird aus einer Menge von variablen oder konstanten
Eingangswerten eine Menge von Ausgangswerten berechnet. Die Ausgangswerte sind
entweder selbst Ziel der Informationsgewinnung oder dienen mittelbar zur Reaktion
auf die Eingangswerte. Neben den eigentlichen Berechnungen kann ein Programm
Anweisungen zum Zugriff auf die Hardware des Computers oder zur Steuerung des
Programmflusses enthalten. Ein Programm besteht aus mehreren Zeilen sogenannten
Quelltextes. Dabei enthlt jede Zeile eine oder mehrere Rechen- oder Steueranweisungen. Auer diesen Anweisungen selbst bestimmt ihre Reihenfolge ganz wesentlich die
eingangs beschriebene Informationsverarbeitung. Die Ausfhrung der den Anweisungen entsprechenden Operationen durch den Steuercomputer erfolgt sequenziell, also
nacheinander. Eine Folge von Programmanweisungen mit einem bestimmten Ziel
nennt man auch Algorithmus.

5.2 Programmierung in Basic


Basic ist eine einfach zu erlernende Programmiersprache. Fr die C-Control Pro wurde ein Basic-Dialekt angelehnt an Visual Basic von Microsoft entwickelt, dadurch ist es
ein Leichtes fr einen Visual-Basic-Programmierer, auch eine Hardware wie z.B. unseren PRO-BOT128 zu programmieren. Basic ist besonders bei Anfngern beliebt und
wird im Bereich der Mikrocontroller-Anwendungen, aber auch fr professionelle Anwendungen, eingesetzt.

5.3 Programmierung in C

23

5.2.1 Konzept von Basic


Der hier betrachtete Basic-Dialekt ist modular aufgebaut. Dafr definiert man ein
oder mehrere Unterprogramme, die verschiedenste Befehlsfolgen kapseln. Die Abarbeitung der Befehle erfolgt weitestgehend intuitiv. Das bedeutet, dass man den Con
troller durch einfache Befehle dazu anweist, bestimmte Aufgaben zu erfllen. Nebenbei bemerkt, gibt es insbesondere fr Computer, die mit Windows oder Linux arbeiten,
auch objektorientierte Basic-Dialekte, die, im Gegensatz zu den hier gezeigten Programmiersprachen, weniger intuitiv bedient werden.

5.2.2 Vor- und Nachteile von Basic


Ein entscheidender Vorteil von Basic ist, dass ein schneller Einstieg in die Welt der
Mikrocontroller ermglicht wird. Der hier thematisierte Basic-Dialekt ist so ausgelegt,
dass er die Hardware optimal und effizient anspricht und der Entwickler trotzdem
bersichtlich strukturierten Quellcode schreiben kann.

5.3 Programmierung in C
C ist eine der ltesten und am weitesten verbreiteten Programmiersprachen. Sie ist auf
nahezu jeder Plattform implementiert oder verfgbar. Die Programmiersprache C
entstand in einer Zeit, in der man versuchte, eine etwas abstraktere Programmierung
als die bis dahin blichen Maschinencode- und Assemblerprogramme einzufhren. C
besteht deshalb im Wesentlichen auf einfachen Sprachelementen wie If-Verzweigungen oder einfachen Schleifen und Funktionen.

5.3.1 Konzept von C


Die Programmiersprache C wurde aus zwei wesentlichen Grnden eingefhrt: Man
suchte nach einer mglichst plattformunabhngigen Programmiersprache, damit
man nicht fr jede neue Prozessorgeneration komplette Entwicklungen und Programme neu schreiben musste. Auerdem suchte man nach einer Mglichkeit, die sehr
maschinennahe Assemblersprache durch eine modulare und bersichtlichere Entwicklungsumgebung zu ersetzen. Das fr die C-Control Pro entwickelte C-Compact
ist eine abgespeckte Version von ANSI-C. Grund dafr ist, dass der Einsteiger sowie
auch der fortgeschrittene Entwickler sehr schnell ans Ziel kommt, ohne groe Datenbltter der Mikrocontroller wlzen zu mssen.

24

5 Mikrocontroller-Programmierung

5.3.2 Vor- und Nachteile von C


Die Vorteile von C gegenber Basic sind, dass man mit C-Control Pro C die Grundlagen der C-Programmierung erlernt und dieses Wissen spter auch auf anderen Systemen einsetzen kann. Zudem wird C bereits in vielen Schulen gelehrt und daher ist es
auch fr einen Einsteiger, der den C-Grundkurs in der Aus- oder Weiterbildung besucht, ein Leichtes, die C-Control Pro zu programmieren. Wenn man jedoch die beiden Hochsprachen Basic und C vergleicht, wird Basic in puncto bersichtlichkeit gewinnen. Auf der C-Control Pro werden beide Programmiersprachen annhernd gleich
schnell ausgefhrt und durch die Programmierung in Basic entstehen keine Nachteile.

5.4 Programmierung in Assembler


Die C-Control Pro kann seit Anfang 2009 auch in Assembler programmiert werden.
Ein Assembler setzt ein Assemblerprogramm in der Regel 1:1 in Maschinencode um,
also in Befehle, die direkt vom Mikroprozessor abgearbeitet und ausgefhrt werden
knnen. Der Programmierer muss dabei ber ein fundiertes Wissen ber die Systemarchitektur des Mikroprozessors verfgen. Da es eine Flle von Registern, Befehlen
und Adressierungsarten gibt, fllt es insbesondere Anfngern schwer, sich in die Assemblerprogrammierung einzuarbeiten. Hinzu kommt, dass jede MikroprozessorGeneration und jeder Typ ber einen anderen Befehlssatz verfgen. Selbst jemand, der
sich gut mit dem Intel-Assembler fr PCs auskennt, bentigt eine lange Einarbeitungszeit, um auch beispielsweise fr die C-Control Pro Assemblerprogramme zu entwickeln.
Der groe Vorteil von Assembler ist, dass man ber nahezu jedes Bit und jede Operation frei verfgen kann. Damit knnen sehr leistungsstarke und dennoch schlanke
Programme entwickelt werden, sofern man sich mit den Spezialbefehlen des Mikroprozessortyps auskennt. Manche Anwendungen lassen sich aus Grnden der Schnelligkeit nur in Assembler verwirklichen. Heute setzt man Assembler hufig nur in kleinen Programmstcken ein, wo ein Hchstma an Leistung gefordert wird. Der Aufruf
des Programms erfolgt dann aus einer Hochsprache wie C oder Basic. Auch die Auswertung der Ergebnisse des Assemblerprogramms kann von einer Hochsprache bernommen werden.

5.5 Der Interpreter


Auf der C-Control Pro wird das Basic bzw. C-Compact-Anwenderprogramm vom
Compiler in Byte-Code bersetzt. Der Symbolcode entspricht dabei einem bestimmten Befehl (z.B. dem Abspeichern eines Messwerts des A/D-Wandlers in eine Variable).
Wrde man einen Byte-Code-Befehl in die Befehle bersetzen, die der Mikrocontrol-

5.5 Der Interpreter

25

ler eigentlich verarbeitet (die sogenannten Maschinenbefehle) wrde man sehen, dass
der Bytecode in der Regel einer Vielzahl von Maschinenbefehlen aufruft. Das ist ein
entscheidender Vorteil von Byte-Code-basierenden Programmen, da sie in der Regel
weniger Speicher belegen als Programme, die aus Maschinencode bestehen. Hinzu
kommt, dass Maschinencode in der Regel viel komplizierter strukturiert ist als ByteCode. Ein Nachteil von Interpretern ist, dass die Abarbeitung des Codes in der Regel
etwas langsamer erfolgt als die Abarbeitung von Maschinenbefehlen. Auerdem kann
man mit Maschinenbefehlen viel effizientere Programme schreiben. Fr die meisten
Anwendungen spielt dieser Nachteil jedoch eine untergeordnete Rolle.

26

6 Die Hardware der C-Control


Pro Mega128
Das Herzstck des C-Control-Pro-Steuercomputers ist ein moderner Ein-Chip-Mi
krocontroller (MCU = Micro Controller Unit) der Firma Atmel von der Baureihe
ATmega AVR, der in HCMOS-Technologie geliefert wird und vielseitig verwendbar ist.

Abb.6.1: Pinbelegung der C-Control Pro Mega128, die meisten Pins besitzen Doppelbelegungen. Die ausfhrliche Belegung knnen Sie in der Port-bersichtstabelle der Anleitung
einsehen.

6.1 Taktfrequenz
Damit die C-Control Pro ein Programm ausfhren kann, wird ein Oszillator bentigt.
Dieser ist bereits im AVR integriert und bentigt nur noch einen externen Quarz, um
zu arbeiten. Getaktet wird die C-Control Pro Mega128 mit 14,7456MHz. Der Grund
fr diese krumme Frequenz ist, dass hier der Baudrate-Fehler am kleinsten ist. Der
verbaute Mikrocontroller ATmega128 16-AU kann zwar bist 16MHz betrieben werden,
jedoch entsteht dadurch ein grerer Baudrate-Fehler. Mit der verwendeten Quarzfrequenz und dem sehr gut optimierten Interpreter knnen dadurch bis zu 160.000 Instruktionen pro Sekunde abgearbeitet werden, was fr die vorgesehen Anwendungsrahmen in der Steuer-, Mess- und Regelungstechnik ein ausgezeichneter Wert ist.

6.3 Gehuse

27

6.2 Speicher
Der Flash-Speicher umfasst 128kB, von denen jedoch durch das Betriebssystem (Interpreter, Multithreading usw.) noch etwa 110kB zur Verfgung stehen. Dieser Speicher reicht in der Regel auch fr komplexe Systeme vollkommen aus. Vom Anwender
sind ca. 4kB User-RAM als Variablenspeicher nutzbar. Zudem enthlt die Mega128
noch ein 2kB groes EEPROM, das zur Datenaufzeichnung verwendet werden kann.

6.3 Gehuse
Auf der Unit selbst befinden sich neben den ATmega128 noch der Quarzoszillator und
diverse Abblockkondensatoren sowie die Reset-Beschaltung. Um Str-Ein-/Ausstrahlung zu vermeiden, wurde der Unit eine Metallhaube aufgesetzt. Das Gehuseformat
wurde zwecks besserer Handhabung auch fr den Bastler im Rasterma 2,54mm gewhlt. Die Unit besitzt vier Przisionsstiftleisten mit je 2 x 8 Pins. Damit diese nicht
verkehrt herum eingesteckt werden knnen, wurden sie versetzt angeordnet. Das
macht eine Verpolung fast unmglich.

28

6 Die Hardware der C-Control Pro Mega128

Abb.6.2: Innenbeschaltung der C-Control Pro Mega128 Unit

6.6 DAC (Digital Analog Converter)

29

6.4 I/O-Ports
Es sind 53 I/O-Ports herausgefhrt (Port A bis Port G), die man unabhngig voneinander als Ein- oder Ausgang, als Sonderfunktionen wie PWM, Zhlereingang und
Spannungsmessung (ADC) frei programmieren kann. Die Ports knnen in Summe
maximal 200mA liefern bzw. gegen Masse ziehen. Ein einzelner Pin kann maximal
+/20mA liefern/ableiten. Bei der Beschaltung ist also unbedingt darauf zu achten,
dass diese Daten nicht berschritten werden knnen. Sollte man noch im Experimentierstadium sein, empfiehlt es sich, einen sogenannten Angstwiderstand (Strombegrenzungswiderstand auf max. zulssigen Strom) einzubauen, der den Strom bei einem
evtl. Kurzschluss auf die Maxima begrenzt.

6.5 ADC (Analog Digital Converter)


Damit wir analoge Spannungen messen und erfassen knnen, besitzt die C-Control
Pro einen internen Analog-Digital-Wandler (ADC = Analog Digital Converter) mit
einer Auflsung von 10 Bit. Das heit fr uns, ein Step also eine konvertierte Zahl
(z.B. 1), hat bei einer ADC-Auflsung von 10 Bit einen analogen Spannungswert von
gerundet 0,0025Volt = 2,5mV. Beim PRO-BOT128 wird die interne Referenzspannung von 2,56V verwendet.
Das kann man mit dieser einfachen Formel leicht selbst nachrechnen:
Ustep = Uref/Auflsung
Ustep = 2,56Volt / 1.024 (0 bis 1.023 = 1.024 Steps)
Ustep = 0,0025Volt
Will man den digitalen angezeigten Wert wissen, benutzt man am besten folgende
Formel:
Anliegende Spannung (ADC) = (Uref/1024) (ADC-Wert)

6.6 DAC (Digital Analog Converter)


Die meisten in der Natur vorkommenden Signale sind analoger Natur. Daher ist es fr
eine digital arbeitende Maschine notwendig, die digitalen Werte in analoge Gren
umzusetzen, wenn externe Vorgnge beeinflusst werden sollen. Ein anderes Beispiel ist
die Ansteuerung einer H-Brcke fr eine Motorsteuerung. Hier wird die Motordrehzahl ber die Puls-/Pausenverhltnisse gendert. In Anwendungen zur pulsweitenmodulierten Digital-Analog-Umsetzung werden Zeitbasis und Periodenlnge einmalig
eingestellt und dann wird nur der Ausgabewert verndert. Alternativ knnen diese

30

6 Die Hardware der C-Control Pro Mega128

Ausgnge auch zur Modellbau-Servo-Ansteuerung genutzt werden. Auch eine Tonausgabe ist ber die DACs mglich. Wir nutzen beim PRO-BOT128 die PWM-Kanle zur
Ansteuerung der Motoren ber eine H-Brcke und zur Takterzeugung fr die Infrarot-LEDs sowie zur Tonausgabe ber den kleinen Buzzer.
Bentigen wir eine analoge Spannung, muss ein RC-Glied an den Ausgang des PWMPorts angeschlossen werden, der aus den PWM-Signal eine quasi analoge Spannung
formt.

Abb.6.3: Aufbau eines typischen RC-Glieds fr einen PWM-Ausgang

Das RC-Glied berechnet sich folgendermaen:



1
FG =

2 * Pi * R *C
FG = Grenzfrequenz des PWM-Signals
Pi = 3,14 (grob)
R = Widerstand in Ohm
C = Kondensator in Farad
Das RC-Glied darf in diesem Zustand natrlich nicht sonderlich belastet werden, da
sich sonst der Kondensator zu schnell entladen wrde und dadurch das RC-Glied berflssig wre. Am besten, man setzt noch eine Treiberendstufe hinter das RC-Glied, die
dass Signal auf den gewnschten Level anhebt und den erforderlichen Strom abgeben
kann.

6.7 UART (Universal Asynchronous Receiver Transmitter)


Die Mega128 ist mit zwei seriellen Hardware-Schnittstellen ausgestattet (UART). ber
diese lsst sich die Unit programmieren oder kann zur Datenausgabe auf ein Terminalprogramm oder eine eigene Software verwendet werden. Die Baudrate (bertragungsgeschwindigkeit) ist wieder in der Software einzustellen und variiert zwischen
1.200 Bps bis 230.400 Bps. Zur Programmierung der Unit werden 38.400 Baud verwendet.

6.10 Stromversorgung der Mega128

31

6.8 Interrupt-Eingnge (IRQ)


Es besteht die Mglichkeit, das Programm zu unterbrechen, sobald ein Ereignis an
einen IRQ-Pin auftritt. Dies kann eine steigende oder fallende Flanke oder jeder Flankenwechsel sein. Wie der IRQ regieren soll, kann auch hier wieder in der Software
festgelegt werden. Wichtig ist zu wissen, dass mit solch einem Eingang das Programm
an jeder Stelle unterbrochen werden kann, um in die vorgegebene IRQ-Routine zu
springen und den dort angegebenen Code abzuarbeiten. Ein typisches Einsatzgebiet
fr einen IRQ-Port sind schnelle Zhleingnge oder Notaus-Taster (Schalter). Die
IRQ-Routine wird auch ISR (Interrupt Service Routine) genannt. Die Interrupt-Pins
der Mega128 sind PD.0 bis PD.3 und PE.4 bis PE.7, somit insgesamt 8 IRQ-Eingnge.
Diese Mglichkeit nutzt der PRO-BOT128 fr den Taster SW2 und um seine Odometer Sensoren auszulesen.

6.9 Der Bootloader


Da der Roboter den seriellen Bootloader-Modus der C-Control Pro verwendet, ist
auch ein Boot-Taster am Roboter vorgesehen. Wird der Roboter mit gedrckter BootTaste eingeschaltet, springt dieser in die Bootloader-Routine und eine Programmbertragung kann zwischen IDE und Roboter stattfinden.

6.10 Stromversorgung der Mega128


Die Stromversorgung trgt mageblich zum sicheren Betrieb der Unit bei. Die C-Control Pro Unit kann mit einer Gleichspannung zwischen 4,0 und 5,5Volt versorgt werden. Der Roboter besitzt fr Akku- oder Batteriebetrieb einen Jumper JP1, der bei der
Verwendung von Batterien abgezogen werden muss.

32

7 Das Robotersystem
PRO-BOT128
Der Roboter PRO-BOT128 besteht aus drei Platinenebenen, die Platz fr den Antrieb,
die Controllereinheit mit Sensorik sowie eine Ebene bieten, die fr eigene kreative
Erweiterungen genutzt werden kann. Inspiriert wurde der Entwickler des PROBOT128 vom allseits beliebten ASURO, der seit einigen Jahren bereits erfolgreich auf
dem Markt ist. Der Antrieb wurde dank dem Einverstndnis des DLR (Deutsches Zentrum fr Luft- und Raumfahrt) von ASURO bernommen. Im Gegensatz zum ASURO besitzt der PRO-BOT128 wesentlich mehr Sensoren und Erweiterungsmglichkeiten. Die Programmierung kann in Basic, C oder Assembler geschehen, was auch dem
nicht so gebten Programmierer dank Basic zugute kommt. Auch im Vergleich des
eingesetzten Controllers ist der PRO-BOT128 mit seinen 110 kB Flash ein wahrer
Speicherriese. Dank Multithreading-Fhigkeit der C-Control Pro ist es kein Problem,
auch sehr komplexe und leistungsfhige Programme zu entwickeln. Der differenzielle
Antrieb ermglicht es, auf der Stelle zu drehen, und bentigt dadurch nur sehr wenig
Platz zum Wenden. Das Robotersystem wird einmal als Bausatz oder als Fertiggert
geliefert. Das ermglicht auch dem handwerklich nicht ganz so begabten Anwender
den Zugang in die Robotik. Der PRO-BOT128 wird ber vier Mikrobatterien oder
Akkus mit Energie versorgt. Zu empfehlen sind aber Akkus, da diese ber die eingebaute Ladebuchse gleich wieder aufgeladen werden knnen, ohne dass sie umstndlich wieder aus dem Batteriehalter entfernt werden mssten.

Abb.7.1: Das Robotersystem PRO-BOT128 fertig aufgebaut

7.2 Erweiterungen

33

7.1 Vorhandene Sensoren und Aktuatoren


7.1.1 Sensoren

2 Lichtsensoren
2Wegstreckenmesser Odometer
1 Liniensensor
1 berhrungsloses Infrarot-Anti-Kollisionssystem (ACS)
1 Schallsensor
1 Sensor fr Betriebsspannung

7.1.2 Aktuatoren

2 DC-Elektroantrieb mit stufenloser Geschwindigkeitseinstellung (Vor/Rck)


1 Piepser zur Tonausgabe
4 Status-LEDs
1 Line-LED fr Liniensensor

7.2 Erweiterungen
64 K IC-EEPROM
Experimentierplatine
Achtung! Beim Kauf muss man beachten, dass man nur den Roboter ohne C-Control Pro und Programmierkabel (Voltcraft USB-Programmer) erwirbt. Die beiden
Zubehrartikel mssen noch zustzlich erworben werden. Trotz allem liegt der
Preis fr den verhltnismig gut ausgestatteten Lernroboter weit unter 100 .

34

8 Die Elektronik des Roboters


Im folgenden Kapitel wird die Elektronik des Roboters genauer unter die Lupe genommen. Wer den Bausatz erworben hat, wird sofort bemerken, dass kein einziges SMDBauteil vorhanden ist. Grund fr die THT-Technik (eng. through-hole technology),
also die Bestckung mit bedrahteten Bauteilen, ist die leichte Handhabung bei der
Bestckung und die einfache Reparaturmglichkeit. Sollte doch einmal ein Bauteil
beim Experimentieren abrauchen, ist es ein Leichtes, es zu ersetzen. In der mitgelieferten Anleitung werden alle Teile bebildert gezeigt. Im Anhang findet man die Stckliste zur Nachbestellung defekter Bauteile.

8.1 Stromversorgung
Nach dem Schalter SW1 folgt eine Diode, die mit einen Jumper JP1 berbrckt werden kann. Die Diode sorgt bei abgezogenem Jumper dafr, dass eine Spannung von ca.
0,7Volt abfllt. Das ist sinnvoll, wenn z.B. Batterien verwendet werden, denn diese
besitzen im Neuzustand eine hhere Leerlaufspannung als Akkus. Das ergibt bei vier
Batterien in Reihe genau 6Volt (4 x 1,5V), was aber fr den C (Mikrocontroller)
bereits zu viel ist. Die maximale Betriebsspannung der C-Control Pro betrgt 5,5Volt.
Durch den Einsatz der Diode erhlt man an C1 eine Spannung von ca. 5,3Volt.
Immer wenn Batterien verwendet werden: Den Jumper JP1 abziehen!
Der Kondensator C1 dient als Puffer (Energiespeicher) fr kurzzeitige Stromspitzen.
Der Widerstand R8 dient als Strombegrenzung fr die LED (Leuchtdiode) D5. Er sorgt
dafr, dass maximal 20mA durch die Diode flieen knnen. Die beiden Widerstnde
R9 und R10 sind als Spannungsteiler geschaltet, um die Betriebsspannung zu messen.
C2 dient wieder als Puffer, um schnelle Spannungsschwankungen am ADC zu unterbinden. Da wir die Spannung nach der Diode messen, mssen wir zum Messwert die
abgefallene Spannung im Programmcode dazuaddieren. Da Dioden wie andere elektronische Bauteile auch einer Toleranz unterliegen, knnen wir die Spannung auch mit
einem Multimeter (Spannungsmesser) ermitteln, indem wir die reale Spannung ber
die Diode messen. In der Software ist ein Kalibrierfaktor vorgesehen, der sich aus dem
Spannungsteiler und den Spannungsabfall ber die Diode zusammensetzt.

8.1 Stromversorgung

Abb.8.1: Stromversorgung und Betriebsspannungsmessung

35

36

8 Die Elektronik des Roboters

8.2 Controller
Das eigentliche Herzstck des Roboters ist die C-Control Pro Mega128. Sie ist auf der
mittleren Ebene des Roboters angeordnet und die Verbindungen zwischen den einzelnen Platinen geschehen mittels Flachbandkabeln, die mit einem 6-poligen Pfostenstecker versehen sind. An der C-Control Pro ist zustzlich zur Datenspeicherung (Messwerte, Programme usw.) ein IC-EEPROM mit 8K x 8 angeschlossen. Wenn wir uns
die Platinen genauer ansehen, werden wir die kleinen Brcken in der Nhe des EEPROM sehen. Diese dienen zur Adressennderung des Speichers. Sollten wir ein anderes IC-Bauteil mit der gleichen Adresse verwenden, knnen durch das Auftrennen der
Leiterbahn andere Adressen vergeben werden (siehe Datenblatt zum EEPROM). Die
Widerstnde R22 und R23 sind die IC-Bus-Pull-up-Widerstnde. Die C-Control Pro
wird beim PRO-BOT128 im seriellen Bootloader-Modus betrieben und verwendet
daher die UART-Anschlsse (TxD und RxD) der Unit. Die Bauteile L1, C5 und C6
dienen zur ADC-Beschaltung und Unterdrckung von Strungen am ADC. Auch die
Status-LEDs werden ber je einen Widerstand von 1,5 KOhm strombegrenzt.
Der Widerstand R12 am Mikrolautsprecher dient zur Strombegrenzung des Ausgangsports der Unit. Schner Nebeneffekt ist, dass die Lautstrke des Minilautsprechers etwas minimiert wird.

8.3 Motortreiber
Die Motoren des Roboters werden ber eine elektronische H-Brcke angesteuert. Eine
H-Brcke besteht in der Regel aus vier Transistoren (oder MOSFETs), von denen, je
nach Drehrichtung des Motors, immer zwei leitend sind. Die unten abgebildete Grafik
zeigt, dass man den Motor mit den Schaltern S1 und S4 vorwrts und mit den Schaltern S3 und S2 rckwrts laufen lassen kann. Im IC1 ist solch eine H-Brcke, die bis zu
600mA Strom liefern kann, zweimal integriert. C4 sttzt dabei wieder die Betriebsspannung. Bei zu hochohmigen Akkus oder Batterien kann es vorkommen, dass sich
Strungen durch Spannungseinbrche bemerkbar machen. Sollte das der Fall sein,
muss C4 vergrert werden (220 bis 2.200F). Das IC2 ist ein 4-fach-NAND-SchmittTrigger, der fr die Aufteilung des PWM-Signals und fr die Fahrtrichtungsauswertung zustndig ist. Ziel ist es, ber die PWM (Pulsweitenmodulation) die Drehzahl
und die Drehrichtung zu beeinflussen. Das PWM-Signal kann bei der aktuellen Software zwischen 1 und 255 eingestellt werden. Bei einer PWM vom 128, was einem
Tastverhltnis von 50% zwischen Signal und Pause entspricht, stoppen die Motoren.
Wird das PWM-Signal Richtung 255 erhht, drehen die Rder vorwrts, bei Verringerung auf kleinere Werte als 128 drehen die Rder rckwrts. Der CD4093 teilt also das
PWM-Signal mehr oder weniger fr uns auf. Der Widerstand R4 zieht den EnableEingang des L293 auf Masse. ber die Software muss Enable auf +5V gelegt werden,

8.3 Motortreiber

Abb.8.2: Die C-Control-Pro-Beschaltung im PRO-BOT128

37

38

8 Die Elektronik des Roboters

Abb.8.3: Die Motor-H-Brcke fr die Antriebsmotoren des Roboters

8.5 Sensoren, Teil 1

39

um den Motortreiber zu aktivieren. Der Kondensator C3 ist sehr nah am IC2 angebracht. Er dient zur Unterdrckung hochfrequenter Strungen auf der Versorgungsspannung, hervorgerufen durch die Motoren bei der PWM-Ansteuerung.

Abb.8.4: Funktionsschema einer H-Brcke

8.4 Was ist eigentlich PWM?


Die Pulsweitenmodulation PWM, auch als Unterschwingungsverfahren bekannt, ist
eine Modulationsart, bei der elektrischer Strom zwischen zwei Werten wechselt. Dabei
wird das Tastverhltnis bei konstanter Frequenz moduliert. Auf unseren Motortreiber
bezogen bedeutet das nichts anderes, als dass die C-Control Pro eine konstante Frequenz erzeugt und die Pulse zu Pausenverhltnissen verschoben werden. Eine niedrige
Motordrehzahl wird erzeugt, wenn die Einschaltphase krzer als die Ausschaltphase
ist. Werden die Pausen krzer und die Einschaltphasen lnger, steigt die Drehzahl.

8.5 Sensoren, Teil 1


Die Sensoren sind die Wahrnehmungssinne des Roboters. Oben links im folgenden
Schaltbild erkennt man den TSOP1736. Es handelt sich hier um einen Infrarotempfnger (kurz IR-Empfnger) mit integrierter Auswerteelektronik. Er empfngt das
Infrarotsignal der sechs IR-Dioden D5, D6, D7, D9, D10 und D11 und gibt am Ausgang
nur das aufmodulierte Signal wieder. Die sechs IR-Dioden werden mit einer Trgerfre-

40

8 Die Elektronik des Roboters

quenz von 36kHz betrieben, die im Rhythmus ein- und ausgeschaltet werden. Der
IR-Empfnger gibt nur den Rhythmus wieder. Der IR-Empfnger und die IR-Dioden
bilden das Antikollisionssystem des Roboters zur kontaktlosen Hinderniserkennung.
Das funktioniert folgendermaen: Die IR-Dioden sind in zwei Gruppen zu je drei
Dioden aufgeteilt. Die C-Control Pro liefert am Ausgang OC3A ein PWM-Signal von
36kHz. Die Dioden werden nun auf der anderen Seite (Kathode) jeweils kurz nach
Masse gelegt, um den Stromkreis zu schlieen. Dadurch wird ein kleiner, fr uns nicht
sichtbarer Lichtblitz ausgelst. Wre ein Hindernis in der Nhe, wrde dieser Lichtblitz reflektiert, der IR-Empfnger wrde das als eine logische Eins erkennen und wir
knnten es in der Software als Hindernis interpretieren. Die Dioden sind mechanisch
so angebracht, dass sie ca. 140 abdecken. Um die Reichweite des ACS zu ndern, verschiebt man die PWM-Frequenz der IR-Dioden. Das Datenblatt des TSOP zeigt ein
Diagramm, das die Empfindlichkeit bezogen auf die Trgerfrequenz beschreibt. Senkt
oder erhht man die PWM-Frequenz um den Bereich von 36kHz, wird der ACS unempfindlicher.
Spter wird noch darauf eingegangen, wie man die ACS-Einheit zur Kommunikation
mit dem PC und zur Steuerung mit einer IR-Fernbedienung nutzen kann.
Die Widerstnde R15 und R17 sind lichtabhngige Widerstnde (eng. Light Dependent
Resistor oder kurz LDR) und bilden mit den Widerstnden R14 und R16 einen lichtabhngigen Spannungsteiler, der an den AD-Ports der C-Control Pro angeschlossen ist.
Mithilfe dieser Sensoren kann man die Lichtintensitt messen und den Roboter z.B.
die hellste oder dunkelste Stelle des Raums suchen lassen.
IC3 ist ein NF-Verstrker-IC, das auch gern als Kopfhrerverstrker und Verstrker fr
Kleinlautsprecher eingesetzt wird. Bei unserem Roboter wird er aber als Mikrofonverstrker verwendet. An ihm ist ein Kondensatormikrofon angeschlossen, das den Umgebungslrm aufnimmt. Ein Kondensatormikrofon arbeitet etwas anders als ein dynamisches Mikrofon, das hnlich wie ein Lautsprecher aufgebaut ist und durch Schall
eine elektrische Spannung (Magnet bewegt sich in einer Spule) erzeugt. Ein Kondensatormikrofon ist, wie der Name schon sagt, ein Kondensator. Wird das Mikrofon besprochen, bewegen sich die Feldplatten im Mikrofon. Man erkennt im Schaltbild, dass
an das Mikrofon noch ein Vorwiderstand R18 angeschlossen ist. Er dient zur Vorspannungserzeugung, denn ein Kondensatormikrofon kann selbst keine Spannung erzeugen, sondern diese nur in der Frequenz modulieren. Der Kondensator trennt den Eingang des Verstrkers vom Gleichspannungsanteil und liefert am Eingang des IC die
relativ geringe Wechselspannung, die nun im IC verstrkt wird. Der Ausgang des IC3
liefert je nach Schallpegel eine Spannung zwischen wenigen mV bis hin zu knapp
2,5Volt. Angeschlossen ist der Ausgang des IC ber einen Spannungsteiler R19 und
R20 am AD-Port der C-Control Pro. Der Spannungsteiler ist erforderlich, da der IC
eine Spannung von bis zu 5Volt liefern kann. Da wir intern jedoch die Referenzspannung von 2,56V verwenden, wrde der ADC stndig bersteuert werden.

8.5 Sensoren, Teil 1

Abb.8.5: Sensoren, Teil 1 (TSOP12736, ACS, LDRs und Schallerkennung)

41

42

8 Die Elektronik des Roboters

Abb.8.6: Sensoren, Teil 2 (Odometer, Liniensensor)

8.7 Steckverbindungen

43

8.6 Sensoren, Teil 2


Unsere Rad-Encoder (Odometer, Wegstreckenmessung, hnlich wie der Kilometerzhler im Auto) arbeitet wie eine Reflexlichtschranke. Die Dioden D3 und D2 (Sender)
leuchten die Taktscheiben des Antriebs an und die beiden Fototransistoren T3 und T4
(Empfnger) empfangen das reflektierte Signal immer dann, wenn ein weies Feld
auftaucht, und schalten auf Masse durch. Die Spannung sinkt dadurch je nach Intensitt des IR-Lichts am INT6 oder INT7 ab. Die Fototransistoren arbeiten somit wie ein
Schalter, der bei Licht geschlossen wird.
Unser Liniensensor arbeitet nach dem gleichen Prinzip. Die rote LED D1 leuchtet auf
den Untergrund, auf dem der Roboter steht. ndert er seine Reflexionseigenschaften
z.B. durch eine schwarze Linie, wird der Fototransistor T1 oder T2 eine unterschiedliche Spannung am AD-Port bereitstellen. Hiermit knnen wir entscheiden, ob wir
links oder rechts von der Linie fahren.

8.7 Steckverbindungen

Abb.8.7: Die Pfostenstecker verbinden die Ebenen untereinander elektrisch.

Die Wannenstecker stellen lediglich die elektrischen Verbindungen zwischen den einzelnen Ebenen her. Beim Zusammenbau sollte man immer darauf achten, dass die
Quetschverbinder sauber und gerade zusammengepresst werden.

183

Sachverzeichnis
A
Abstandsmessung 101, 103
Acknowledgment 79
ACS 40
ACS-System 103, 110, 142, 163
ADC 29
Adressennderung 36
Akkubetrieb 31
Akkupack 86
Aktuatoren 33
Analog-Digital-Wandler 29
Analoge Spannung 30
Anti-Kollisionssystem 40
Arbeitsspeicher 18
ASM 21
Assembler 24, 32
Atmel 21
Ausfhrungszeit 59
Ausgabefenster 68
AVR 21

Buzzer 30
ByRef 54
Byte-Code 24, 45, 59

C
C 23, 32
C-Compact 21, 24
CD-ROM 13
Chaos-Drive 105
Char Arrays 54
CISC 19
CISC-Rechner 19
CMPS03 150
CMUcam 134
Controller 178
Controllereinheit 32
CPU 18
Crash-Kurs 44
Cruise 168

Basic 21, 32
Batteriebetrieb 31
Baudrate 30
Baudratenfehler 26
Befehle 169
Betriebsspannung 34
Bewegungssteuerung 98
Bildverarbeitung 134
Bit-Maske 105
Bootloader 31
Boot-Modus 45
Breakpoint 65, 68
Brcke 29
Bumper 89, 163
Bumper-Sensoren 89

DAC 29
Datenrichtungsbit 117
Datenspeicherung 36
Datentypen 47
Datenbertragung 115
Debug-Ausgabe 68
Debug-Code 65
Debugger 65
Debug-Mode 68
Debug-Modus 65
Differenzieller Antrieb 32
dot.NET 124
Duotec 87

184

Sachverzeichnis

Easy-Radio 122
Echo 156
Echolot 156
EEPROM 77
Einzelschritt 68
Elektronik 34
Empfngerbaustein TSOP1736 99
Empfangspuffer 129
Empfindlichkeit 100
Encoder-Scheibe 85
Endlosschleife 53
Entfernungsdaten 157
Entwicklungsumgebung 45
Erweiterungen 33
Escape 168
Expressversion 125

Hardware-Debugger 65
Hauptprogramm 55, 59
Haupt-Thread 61
H-Brcke 36
Himmelsrichtung 153
Hindernis 99, 160
Hindernisdetektor 101
Hysterese 103

F
Farberkennung 149
Feintuning 82
Firmware 128
FLASH-Speicher 18
Fototransistoren 43
Framework 125
Fremdlichtabschattung 85
Funktionen 54, 172
Funk-Transceiver 122

I
IC-BUS 77, 117
IC-EEPROM 36
IC-LCD 119
IC-Portexpander 116
I-Bumper 92
Infrarotempfnger 39, 107
Infrarotlicht 106
Infrarotschnittstelle 112
Installation 44
Interpreter 24
Interpreterfunktionen 59
Interrupt 31
I/O-Ports 29, 57
IRQ 31
IRQ-Eingnge 85

J
G
Geradeauslauf 94
Getriebemotor 138
Gleiter 82
GO 94
Goto 50
GPL 13
Grundlagen 17

Jumper JP1 34

K
Kalibrierfaktor 34
Kalibrierung 152
Kameradaten 143
Karosserie 87
Klettverschluss 87
Kollision 92

Sachverzeichnis

Kommentare 46
Kompass 150
Kompassmodul 151
Kondensatormikrofon 40
Kontrollschicht 167
Kontrollstrukturen 49

L
L293 36
LDR 40
Library 70
lichtabhngige Widerstnde 40
Lichtintensitt 40
Lichtverhltnisse 142
Liniensensor 43
Links drehen 96

M
Magnetfelder 152
Manchester-Codierung 109
Maschinencode 24
Master 78
MCU 26
Mega128 36
Messdaten 164
Modular 55
Motordrehzahl 29
Multithreading 32, 53, 59, 61, 163

Operatoren 48, 169, 172


Operator-Gruppen 48

P
PCF8574 116, 119
PCF8574P 77
PC-IR-Control 113
PC zu Bot 128
PC-zu-Bot-Interface 124
Periodenlnge 29
Porterweiterung 116
PORT_OUT 57
Prprozessorbefehl 57
Prioritt 59
Priorittsstufen 165
PRO-BOT-Library 129
Programm 56
Aufbau 55
Programmiersprache 46
Programmierung 22, 94
Programmierwerkzeug 44
Programmspeicher 18
Projektdatei 45
Prozeduren 54
Prozedurschritt 68
Prfsumme 126
Pulsweitenmodulation 36
PWM-Kanle 30
Pylone 142

Q
N

Quellcode 56

Navigieren 154

R
O
Odometer 43, 83
Odometrie 83
Odometrie-Einheit 94

Rad-Encoder 43
Radimpulse 94
RAM 19
RC5 106

185

186

Sachverzeichnis

RC5_Read() 110
RC5_Write() 110
RC-Glied 30
Rechts drehen 96
Referenzspannung 29
Regalbretter 81
Reize 164
RGB-Werte 136
RISC 19
RISC-Rechner 20
Roboteradresse 126
Rodney Brooks 163
Rckwrtsfahrt 94

S
Scan-Bereich 160
Schaltplne 175
Schleifen 51
Schmitt-Trigger 85
Schrittweite 52
SCL 78
SDA 78
Sendepuffer 129
Sensoren 33, 39, 166, 176
Sensorik 32
Sensorsignale 163
Serieller Bootloader 36
Servo 137
Speicher 27
Spielfeld 80, 81
SRF02 156, 160
Status 59
Steckverbinder 179
Stromversorgung 31, 175
Subsumtion 167
Subsumtionsarchitektur 163
Symbolcode 45
Systemvoraussetzung 13

T
Taktfrequenz 26
Tastverhltnis 101
Testbedingungen 80
Thread 59
Thread-Optionen 59
Thread-Wechsel 60
Thread-Zustnde 60
THT-Technik 34
Tischtennisball 82
Toggelbit 107
Trgerfrequenz 39, 99, 113
Transceiver 113
TSOP 40
TSOP1736 100, 109, 113
Turniere 80

U
UART 30, 114
bergabeparameter 54
bertragungsgeschwindigkeit 30
Ultraschallsensoren 156
Umgebungs-Scanner 160
Unterprogramme 54
Unterschwingungsverfahren 39

V
Variablen 47
Verhaltensweisen 163
Visionssystem 134
Vorwrtsfahrt 94

W
Wall following 103
Wandfolgung 103
Wannenstecker 43
Wegstreckenmessung 43
Weltenmodell 166

Sachverzeichnis

Z
Zhleingnge 31
Zeilennummern 50
Zufallszahlengenerator 105
Zustandsautomat 164
Zuweisung 47
Zweidraht-Bus 77

187

Seite 1

FRANZIS

14:30 Uhr

FRANZIS
ELEKTRONIK
Ulli Sommer

PRO-BOT128 selbst
bauen und erfolgreich einsetzen
Das als Bausatz und Fertiggert erhltliche Robotersystem Conrad
PRO-BOT128 ist die ideale Grundlage fr den Einstieg in die Elektronik, Mechanik und Programmierung. Dieses Robotersystem
verwendet als Gehirn eine C-Control Pro Mega128, die ausreichend Hardware, Speicher und Geschwindigkeitsressourcen auch
fr komplexere Aufgaben bereitstellt. Der Roboter kann mit der
mitgelieferten kostenlosen Entwicklungsumgebung (IDE) wahlweise in C, Basic und Assembler programmiert werden.
Ziel dieses Buchs ist es, Ihnen die Grundlagen der C-Control-ProProgrammierung vom Einstieg bis hin zur Programmierung von
komplexen Verhaltensweisen wie der Subsumtionsarchitektur zu
erlutern und Ihnen die Materie Robotik auf spielerische und
experimentelle Weise nherzubringen. Aber auch bereits erfahrene
Roboter-Bastler werden durch die vielen Hard- und Softwareerweiterungen, die in diesem Buch beschrieben sind, ihre Freude
haben. Viele Werke setzten fundiertes Fachwissen voraus, dieses
Buch soll auch Einsteigern das komplexe Zusammenspiel von
Mechanik, Elektronik und Software einfach und verstndlich
nahebringen.

Ein kleiner Ausschnitt aus


dem Inhaltsverzeichnis

Der Einstieg in die Robotik


Mikrocontroller-Grundlagen
Das Robotersystem PRO-BOT128
Die Programmierung: ein Crashkurs
fr Einsteiger
Multithreading
Der I2C-Bus und wie er funktioniert
Mechanisches Feintuning
Odometrie, Go & Turn
Sonar Radar: der PRO-BOT wird
zur Fledermaus
Porterweiterung auf dem
Experimentierboard
Selbstbau I2C-LCD zur visuellen Ausgabe
PRO-BOT128 mit Infrarot ber den PC
steuern
PRO-BOT mit der TV-Fernbedienung
steuern
Hier gehts zum Nordpol: ein Kompass
fr den PRO-BOT128
PRO-BOT128 ber Funk fernsteuern mit
der PC-Steuerzentrale
Bildauswertung auf dem Roboter
mit der CMUcam
Subsumptionsarchitektur

PRO-BOT128 selbst bauen und erfolgreich einsetzen

30.06.2009

ISBN 978-3-7723-4117-5

Euro 19,95 [D]

Besuchen Sie uns im Internet www.franzis.de

FRANZIS
PC+ELEKTRONIK
Ulli Sommer

PRO-BOT128 selbst
bauen und erfolgreich einsetzen
Mikrocontroller-Technik zum Anfassen
Auf CD-ROM:

ISBN 978-3-7723-4117-5

Sommer

4117-5 U1+U4

IDE (Integrierte Entwicklungsumgebung)


Alle Beispielprogramme zum Buch in C-Compact & Basic
PC-Steuerungssoftware fr PRO-BOT128 (Open Source)
Anleitungen zu den Produkten
Datenbltter