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

1 - Funktion der Encoder prüfen

Das folgende Testprogramm stellt sicher, dass die Encoder die Speichen der Räder erkennen. Wenn sie korrekt arbeiten, dann geht jedesmal, wenn eine Speiche erkannt wird, eine LED auf dem Activity Board kurz an und erlischt wieder, sobald das Rad weiterdreht und der Zwischenraum zwischen zwei Speichen den Encoder passiert.

Kalibrieren der Encoder
Aufgaben
  • Übertrage das folgende Programm in den SimpleIDE Editor und speichere es ab.
  • Bringe der PWR-Schalter auf dem ActivityBoard in Position 2.
  • Starte das Programm im SimpleIDE Editor mit Load EEPROM & Run.
  • Bewege mit der Hand vorsichtig das rechte Rad des Roboters hin und her. LED27 sollte jetzt aufleuchten und wieder ausgehen, wenn das Rad gedreht wird.
  • Wiederhole diesen Vorgang auch mit dem linken Rad. Auch hier sollte LED26 an und aus gehen, wenn das Rad bewegt wird.

 

 

 

 

Abbildung 1

Durch Hin- und Herdrehen des Rades wird der Encoder überprüft. Bei der Überprüfung des rechten Rades muss die LED P27 an- und ausgehen, wenn eine Speiche des Rades am Encoder vorbeigeführt wird. Im Bild ist diese Situation gut zu sehen. Die gelb leuchtende Diode zeigt an, dass der Encoder korrekt arbeitet.

Testprogramm Encoder.c

2 - Fehler suchen

Einige Fehler lassen sich sofort erkennen, andere muss man mühsam suchen. Was kann passieren?

P26 LED bleibt aus, obwohl das Rad gedreht wird

  • Das rechte Encoderkabel könnte in P15 statt P14 eingesteckt sein.
  • Der 20kOhm Widerstand hat keinen Kontakt zu P14 oder zur Spannungsversorgung von 3,3V.
  • Der rechte Encoder könnte falsch herum montiert sein (fast nicht möglich, aber wer weiß ...)

 

P27 LED bleibt aus, obwohl das Rad gedreht wird

  • Das linke Encoderkabel könnte in P14 statt P15 eingesteckt sein.
  • Der 20kOhm Widerstand hat keinen Kontakt zu P15 oder zur Spannungsversorgung von 3,3V.
  • Der linke Encoder könnte falsch herum montiert sein (s.o.).

 

P27 LED leuchtet statt P26, wenn das rechte Rad gedreht wird (oder umgekehrt)

  • Die Encoder-Kabelverbindungen müssen getauscht werden. Kabel aus P14 in P15 und aus P15 in P14.

 

Eine der beiden LED leuchtet ständig, wenn das Rad gedreht wird

  • Der Widerstandswert des Widerstandes an P14 oder P15 ist zu klein und sollte 20kOhm betragen. Bitte überprüfen.

 

Die Encoder LEDs leuchten ständig, oder meistens und flackern

  • Die Encoder sind falsch herum montiert worden.

 

Beide LEDs P26 und P27 leuchten die ganze Zeit während des Testlaufs

  • Die Jumper bei P14 und P15 haben keinen richtigen Kontakt oder sind fehlerhaft. Überprüfe, ob sie lose, gebrochen oder irgendwie beschädigt sind.

 

Wenn beide Encoder arbeiten wie sie sollen

  • Herzlichen Glückwunsch! Jetzt sollten wir daran gehen, den Activity Bot zu kalibrieren.

3 - Kalibrieren

Die Prozedur dazu wird einmal durchgeführt, um Geschwindigkeiten und Entfernungen zu messen und zu korrigieren, die über die Encoder eingelesen werden. Dieser Prozess sammelt Daten über angeforderte und tatsächlich gemessene Geschwindigkeiten und speichert sie im EEPROM auf dem Activity Board. Von dort lassen sie sich jederzeit wieder aufrufen, auch wenn zwischenzeitlich die Spannungsversorgung einmal unterbrochen wurde.

Wenn das Programm eine bestimmte Geschwindigkeit einfordert, werden die Kalibrierungsdaten aus dem EEPROM geladen und mit Hilfe der Bibliothek abdrive die Motoren mit der geforderten Geschwindigkeit angetrieben.

Das Programm zur Kalibrierung benötigt etwa zwei Minuten um alle Daten zu sammeln. Dazu ist ein ebener Boden ohne Hindernisse von ca. 1m x 1m notwendig. Solange das Kalibrierungsprogramm läuft, wird der Activity Bot mit verschiedenen Geschwindigkeiten im Kreis fahren, dabei nur ein Rad antreiben und am Ende signalisieren, dass er fertig ist. Dazu schaltet er die LEDs P26 und P27 ab.

Wichtiger Hinweis! Die Bibliothek ActivityBot muss installiert sein und sollte sich im Verzeichnis ...Documents\SimpleIDE\Learn\SimpleLibraries\Robotics befinden, bevor das Kalibrierungsprogramm oder andere ActivityBot Programme gestartet werden.

Kalibrieren des Roboters
Aufgaben
  • Schiebe den PWR-Schalter auf dem Activity Board in Position 1.
  • Klicke im SimpleIDE Editor auf den Button Open Project.
  • Öffne im Verzeichnis ... Documents/SimpleIDE/Learn/Examples/ActivityBot  die Datei ActivityBot Calibrate.
  • Klicke auf den Button Load EEPROM & Run. (Wichtig: das Programm muss in das EEPROM geladen werden)
  • Wurde das Programm korrekt geladen, leuchten die beiden LED P26 und P27. Sobald sie angehen, schiebe den PWR-Schalter in Position 0.
  • Löse das USB- Kabel und die Verbindung mit dem Steckernetzteil vom Roboter und stelle ihn auf eine 1m x 1m große, flache und hindernisfreie Fläche.
  • Schiebe den PWR-Schalter in Position 2 und tritt einen Schritt zurück, damit der Roboter Platz für seine Bewegungen hat.
  • Unternimm nichts, lass den Roboter laufen, bis die LEDs P26 und P27 aus gehen (Dauer: ca. 2 Minuten). Danach ist die Kalibrierung abgeschlossen und der PWR-Schalter kann wieder in Stellung 0 geschoben werden.

Das Programm ActivityBot Calibrate.c

Wie arbeitet das Programm?

In Zeile 17 und 18 werden die beiden LEDs P26 und P27 auf HIGH gesetzt. Anschließend wird in Zeile 19 die Funktion cal_activityBot() aus der Bibliothek abcalibrate.h aufgerufen. Sie lässt den Roboter verschiedene Fahrbefehle ausführen, die du vorhin beim Kalibrierungslauf gesehen hast. Während die einzelnen Fahrmanöver ausgeführt werden, erstellt die Funktion cal_activityBot eine Liste mit Geschwindigkeitswerten zu den entsprechenden Fahrbefehlen. Diese Werte werden im EEPROM abgelegt, so dass jedes ActivityBot Fahrprogramm auf sie zugreifen kann. Damit ist sichergestellt, dass für jede Geschwindigkeit die entsprechende Einstellung gefunden wird. Nach Abschluss der verschiedenen Kalibrierungsläufe werden die LEDs P26 und P27 auf LOW gesetzt (Zeilen 20 und 21) und das Programm ist beendet.

Encoder Ticks

Jeder ActivityBot Encoder sendet IR-Licht auf die vor ihm befindlichen 32 Speichen des Rades. Wird das ausgesendete Licht an einer Speiche reflektiert und an den Lichtsensor im Encoder zurückgeworfen, erhält der Propeller Controller ein LOW-Signal; wird das ausgesendete Licht nicht reflektiert (im Raum zwischen zwei Speichen), dann wird ein HIGH-Signal gesendet. Bei jedem Wechsel von HIGH nach LOW oder von LOW nach HIGH zählt der Propeller Controller einen Encoder Impuls oder Encoder Tick.

 

Richtungen erfassen

Der Propeller Chip weiß in welche Richtung die Servos drehen aufgrund der Signale, die den Servo antreiben. Vom Encoder erhält er die Rückmeldung wie schnell die Drehbewegung ausgeführt wird, indem die Encoder Ticks über eine Zeiteinheit gezählt werden. Die Bibliotheken überwachen all dies ohne unser Zutun, so dass die zukünftigen Roboterprogramme dem Activity Bot nur sagen müssen wie weit und wie schnell er sich bewegen soll.

(Courtesy of Parallax Inc.)

Die Funktion cal_activityBot erstellt eine Datentabelle für die Motoransteuerung und die aktuelle Geschwindigkeit, mit der sich die Räder drehen. Steuerungsprogramme nutzen diese Daten um herauszufinden wie schnell ein Rad drehen muss, um eine bestimmte Geschwindigkeit zu erreichen. Liegt die von einem Programm angeforderte Geschwindigkeit zwischen zwei Datenpunkten, versucht die Steuerungsbibliothek anhand von zwei bestehenden Messwerten den besten Wert zu ermitteln.

 

Ein Beispiel

Enthält die Tabelle Daten für 60 und 80 Encoder Ticks pro Sekunde und das Programm fordert 70 Ticks an, dann wählt die Steuerungsbibliothek eine Motoreinstellung, die mittig zwischen 60 und 80 Ticks pro Sekunde liegt. Diesen Prozess nennt man Interpolation und das Datenmaterial wird als lineare Interpolationstabelle bezeichnet.

Versuch mal dies!

Willst du mal die Interpolationstabelle deines kalibrierten ActivityBot ansehen? Sie enthält Daten über die Ansteuerung und die gemessenen Rotationsgeschwindigkeiten der Räder in Encoder Ticks pro Sekunde.

Interpolationstabelle
Aufgaben
  • Öffne im SimpleIDE Editor über ...Documents/SimpleIDE/Learn/Examples/ActivityBot die Datei ActivityBot Display Calibration.
  • Schiebe den PWR-Schalter auf dem Activity Board in Position 1.
  • Klicke auf Run with Terminal. Die Interpolationstabelle erscheint im SimpleIDE Terminal.

Terminalausgabe der Interpolationstabelle

Die Interpolationstabelle eignet sich hervorragend zur Fehlersuche, wenn der Roboter nach der Kalibrierung einmal nicht so läuft wie beabsichtigt.

Druckversion Druckversion | Sitemap
© Reinhard Rahner - Gettorf