Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

1 - Testlauf des Roboter

In einem ersten Testlauf wird der Roboter mit 32 Encoder Ticks pro Sekunde vier Sekunden lang geradeaus fahren. Er legt in dieser Zeit eine Strecke von ca. 80 cm zurück und beide Räder legen die gleiche Strecke in der gleichen Geschwindigkeit zurück.

Testlauf des Roboters
Aufgaben
  • Klicke im SimpleIDE Editor auf den Button Open Project.
  • Öffne die Datei Test for Trim aus dem Verzeichnis ...Documents/SimpleIDE/Learn/Examples/ActivityBot.
  • Schiebe den PWR-Schalter in Position 1, klicke auf Load EEPROM & Run.
  • Nachdem das Programm geladen wurde schiebe den PWR-Schalter in Position 0 und löse das USB-Verbindungskabel.
  • Halte den Reset Button gedrückt, schiebe den PWR-Schalter in Position 2 und stelle den Roboter auf einen harten ebenen Boden.
  • Lasse den Reset Button los und beobachte die Bewegung des Roboters.

Der Roboter sollte ca. 80cm geradeaus laufen. Durch das ständige Feedback über die Encoder, über die der Roboter seinen Kurs laufend anpasst und korrigiert, ist die Bewegung nicht absolut geradlinig.

Das Programm Test for Trim.c

Wie arbeitet das Programm?

Außer dem Befehl pause(8000) entstammen alle anderen Befehle der Bibliothek abdrive.

drive_trimSet(0, 0, 0) löscht alle Trimmungseinstellungen, die vielleicht vorher schon eingegeben worden waren.

drive_speed(32, 32) versetzt beide Räder in eine Geschwindigkeit mit 32 Ticks (1/2 Umdrehung) pro Sekunde über eine Zeit von 8s. Der Befehl

drive_speed(0, 0) stoppt beide Servos.

Was du wissen solltest!

Updates - Der ActivityBot aktualisiert über die Rückmeldung der Encoderdaten die Motorgeschwindigkeit 50x pro Sekunde. Dabei wird verglichen, wie weit sich das Rad gedreht haben sollte und wie weit es sich tatsächlich gedreht hat.

 

Encoder Ticks und Entfernungen - Bei jedem Encoder Tick hat sich das Rad um 3,25mm vorwärts bewegt. Ein Tick ist immer der Abstand von einer Speiche zu einem Loch oder von einem Loch zu einer Speiche. Es gibt 32 Speichen und 32 Löcher in jedem Rad, insgesamt also 64 Encoder Ticks pro Radumdrehung.

 

Ramping - Ramping meint die allmähliche Geschwindigkeitserhöhung oder Absenkung, so dass der Roboter Fahrmanöver sanft beginnt und beendet und nicht abrupt startet oder stoppt.

Versuch mal dies!

Wenn die eben durchfahrene Strecke doppelt so schnell abgefahren werden soll, dann probiere mal das folgende Programm aus.

Schneller sein
Aufgaben
  • Klicke im SimpleIDE Editor auf Save Project As und benenne es neu mit Schneller sein.
  • Ändere den Programmcode so ab, wie im Programmlisting gezeigt.
  • Stelle den PWR-Schalter in Position 1 und klicke auf Load EEPROM & Run.
  • Setze den PWR-Schalter auf 0 und löse die USB-Kabelverbindung.
  • Stelle den Roboter auf den Boden während der Reset-Knopf gedrückt wird. Stelle den PWR-Schalter auf 2 und lasse den Roboter fahren.

Programm Schneller sein.c

Jetzt kommst du!

Im folgenden Programm wird das Prinzip des Rampings klar und an der Bewegung des Roboters kann man es dann auch noch einmal gut sehen. In einer LOOP-Schleife und mit Hilfe einer Variablen speed wird die Umdrehungsrate der Räder zunächst erhöht und später erniedrigt.

Schneller sein
Aufgaben
  • Klicke in SimpleIDE auf Project und New und nenne es ramping.
  • Übertrage das Programm ramping.c in den Editor von SimpleIDE und speichere es ab.
  • Klicke auf Load EEPROM & Run.
  • Lässt sich beobachten, dass die Startgeschwindigkeit langsam anwächst und beim Bremsen langsam wieder abnimmt?

Das Programm ramping.c

2 - Entfernungen zurücklegen

Natürlich ist es möglich durch die Wahl einer bestimmten Geschwindigkeit und Vorgabe der Zeit eine bestimmte Strecke zurückzulegen. Kompliziert wird es, sobald man rampings beim Start und Stopp einbaut. In der Bibliothek abdrive gibt es eine Funktion drive_goto, die dies alles berücksichtigt. Zusätzlich steuert sie den Vortrieb jedes Rades in Einheiten von 3,25mm.

(Courtesy of Parallax Inc.)

3 - Gerade Strecken, Drehungen und Encoder Ticks

Ein Rad des Propeller ActivityBot hat 32 Speichen und 32 Zwischenräume; das macht für den Encoder 64 Ticks. Dreht sich das Rad um 1/64 (das entspricht einem Tick), bewegt es sich 3,25mm.

(Courtesy of Parallax Inc.)

Soll der ActivityBot eine bestimmte Streckenlänge s abfahren, dann muss s in der Einheit mm durch 3,25mm geteilt werden, um herauszufinden, wie viele Ticks im Programm gezählt werden müssen.

 

Der Drehradius eines ActivityBots liegt bei typisch 105,8mm.

(Courtesy of Parallax Inc.)

Stoppt das rechte Rad und dreht sich nur das linke, dann entspricht die Laufstrecke des Rades dem Kreisumfang: 2 x Pi x r. In diesem Fall ist r der Kreisradius; er entspricht dem Abstand der beiden Räder: 105,8mm. Der Kreisumfang errechnet sich zu: 664,76 mm. Eine Vierteldrehung entspräche dann eine Umfangstrecke von 166,2 mm oder 166,2 / 3,25 Ticks = ca. 51 Ticks.

(Courtesy of Parallax Inc.)

Testprogramm

Mit diesem Programm bewegt sich der ActivityBot 256 Ticks vorwärts und dreht dann nach rechts um 90 Grad.

Testprogramm
Aufgaben
  • Klicke auf den Button Open Project im SimpleIDE Editor.
  • Öffne die Datei Forward Stop Face Right.side aus dem Verzeichnis ...Documents\SimpleIDE\Learn\Examples\ActivityBot.
  • Bringe den PWR-Schalter in Position 1.
  • Klicke auf den Button Load EEPROM & Run. Der PWR-Schalter muss zurück in Position 0 nach dem Ladevorgang.  
  • Entferne das USB-Kabel vom Board und stelle den ActivityBot auf den Boden. Der PWR-Schalter kommt in Position 2.
  • Überzeuge dich, dass der ActivityBot vier Radumdrehungen vorwärts fährt, stoppt und dann nach rechts dreht.

Wie arbeitet das Programm?

Zeile 12

Der ActivityBot fährt 256 Ticks vorwärts (vier Radumdrehungen).

Zeile 14

Der Roboter führt eine 90° Drehung nach rechts aus.

4 - Geschwindigkeit einstellen

Mit der Funktion drive_speed aus der Bibliothek abdrive kann jeder Antriebsservo auf eine bestimmte Geschwindigkeit (in Encoder-Ticks pro Sekunde) eingestellt werden. Positive Vorzeichen stehen für Vorwärts- und negative für Rückwärtsbewegungen. Wird eine Radgeschwindigkeit auf 64 Ticks eingestellt, entspricht das einer vollen Umdrehung pro Sekunde. Und wir werden die drive_ramp Funktion einsetzen und den Roboter langsam abbremsen und langsam anfahren lassen.

(Courtesy of Parallax Inc.)

Programmbeispiel zur Geschwindigkeitssteuerung

In diesem Beispiel fährt der Roboter mit einer Geschwindigkeit von 64 Ticks/Sekunde für 200 Ticks vorwärts, führt dann eine 45° Rechtsdrehung aus, indem das linke Rad mit 32 Ticks/Sekunde dreht und bewegt sich dann für weitere 200+ Ticks mit einer Geschwindigkeit von 128 Ticks/Sekunde.

Geschwindigkeit einstellen
Aufgaben
  • Klick im SimpleIDE Hauptprogramm auf den Button Open Project.
  • Öffne die Datei Speeds for Navigation.side im Verzeichnis ...Documents\SimpleIDE\Learn\Examples\ActivityBot.
  • Klicke auf den Button Load EEPROM & Run.
  • Überprüfe, ob der Roboter ca. 200 Ticks (entspricht mehr als 3 Radumdrehungen) vorwärts fährt, nach rechts dreht um 45° und noch einmal ca. 3,5 Radumdrehungen weiterfährt.

Das Programm Speeds for Navigation.c

Wie arbeitet das Programm?

Das Programm startet mit beiden Servos, die sich über 2 Sekunden lang mit 64 Ticks/Sekunde drehen. Macht insgesamt 128 Ticks.

Drive_speed(26, 0) dreht das linke Rad mit ca. 26 Ticks/Sekunde, während das rechte Rad still steht. Dieser Vorgang dauert 1 Sekunde; das linke Rad dreht mit 26 Ticks, das entspricht einem Winkel von ca. 45°.

Drive_speed(0, 0) lässt beide Räder für eine Sekunde still stehen. Das sich anschließende letzte Manöver geht über die gleiche Strecke wie das erste, nur diesmal doppelt so schnell (128 Ticks/Sekunde statt 64) aber dafür auch nur eine Sekunde, statt 2.

Druckversion | Sitemap
© Reinhard Rahner - Gettorf