Prof. J. Walter - Informationstechnik, Mikrocomputertechnik, Digitale Medien Bedienungsanleitung
Hochschule Karlsruhe Logo Entwicklungsprojekt Master
FT32 - Positionserfassung
Sommersemester 2019
Alexander Haaf
Johannes Marquart

Bedienungsanleitung

Inbetriebnahme des Experimentalfahrzeugs, Starten und Pausieren des Programms

Inbetriebnahme
• Batterie Anschließen: Rot → +  Grün → -
• Stift in Stifthalter legen, es muss darauf geachtet werden, dass der Stift die Zeichenfläche berührt

Starten des Programms
• Starten des Programms wenn establishContactButton() einprogrammiert ist (Standard):
    2x Drücken des Tasters für min. 0,5sek.
• Starten des Programms wenn establishContactSerial() einprogrammiert ist:
    Im "Serial-Monitor" beliebiges Zeichen eingeben und absenden.

Pausieren des laufenden Programms
• 1x Drücken des Tasters pausiert das Programm (Motoren stoppen)
• 1x weiteres Drücken des Tasters lässt das Programm wieder fortsetzen
Experimentalfahrzeug Übersicht
Übersicht über Experimentalfahrzeug

Ändern des Programms

Dieser Punkt möchte erklären, wie einfach eingene Fahrwege mit der gegebenen Hardware und Software einprogrammiert werden können. Benutzt wird dabei das Beispielprogramm Das Haus vom Nikolaus (siehe auch Kapitel Quellcode).

Eigene Fahranweisungen kann man in der ESP32-MouseVehicle4-House.ino in der loop()-Funktion nach der Zeile
Serial.println("Start program");
einfügen.
Sollten hier bereits Anweisungen stehen (wie im Beispielprogramm), können diese auskommentiert werden.
Mit dem Befehl driveDist() fährt das Fahrzeug eine angegebene Strecke geradeaus.
Dabei wird die zu fahrende Strecke in [mm] angegeben und die gewünschte Geschwindigkeit in [mm/s].
Soll das Fahrzeug rückwärts fahren, kann die Strecke negativ angegeben werden, die Geschwindigkeit muss positiv sein.
Vorwärts für 200mm mit 60mm/s:

Rückwärts für 200mm mit 60mm/s:
Mit dem Befehl rotateAngle() dreht sich das Fahrzeug um einen angegebenen Winkel.
Dabei wird der zu fahrende Winkel in [rad] angegeben und die gewünschte Geschwindigkeit in [rad/s] (1rad/s entspricht beim Experimentalfahrzeug etwa 100mm/s).
Linksdrehung für π/2 = 90° mit 0,6rad/s

Rechtsdrehung für π/2 = -90° mit 0,6rad/s
Verschachtelt und mit den üblichen Kontrollstrukturen versehen lassen sich so beliebige Fahrabläufe kombinieren. Hier das Beispiel für das Haus vom Nikolaus.

Kalibrieren des Sensors

Die Umrechnung der Rohwerte des Sensors schließt die feinkalibrierung des Sensors mit ein. Korrigiert muss zum einen die eingestellte Auflösung des Sensors, sowie weitere Einflüsse, wie Einbaufehler, Unterschiede aufgrund des Untergrunds, etc.

DPI-Korrektur

Der Maussensor PAW3204DB-TJ3R bietet Auflösungen an von 400 DPI (dots per inch, auch cpi = counts per inch) bis 1600 DPI. Abhängig von der Auflösung müssen die vom Sensor gemessenen Rohwerte mit verschiedenen Faktoren in [mm] umgerechnet werden. Die Korrekturformel in readMouseSensor() ist so aufgebaut, dass für den Korrekturfaktor dpiCalib 1/1000 des DPI-Werts eingegeben werden kann (z.B. für 400 DPI: dpiCalib = 0.4; und für 1600 DPI: dpiCalib = 1.6;).
In der Regel müssen nach einem Wechsel der Auflösung noch weitere Fehlerkorrekturen vorgenommen werden (s.u.).

Fehlerkorrektur

Zur Kalibrierung der X-Achse des Sensors (in Fahrtrichtung des Fahrzeug) lässt man das Experimentalfahrzeug eine definierte Strecke geradeaus fahren und misst die tatsächlich gefahrene Strecke. Mit diesen Werten wird der Kalibrierwert in der Funktion readMouseSensor() korrigiert/verändert:

calibValX(neu) = calibValX(alt) · (tatsächliche Strecke)/(definierte Strecke).

Vergleichbar verfährt man mit der Y-Achse: man lässt hierfür das Experimentalfahrzeug einen definierten Winkel drehen und misst den tatsächlich zurückgelegten Winkel. Ebenso wird mit diesen Werten der Kalibrierwert in der Funktion readMouseSensor() korrigiert/verändert:

calibValY(neu) = calibVal(alt) · (tatsächlicher Winkel)/(definierter Winkel).

Modifizieren der Sensoreinstellungen

Möchte man weitere Einstellungen am Sensor vornehmen, z.B. die Auflösung oder den Sleep-modus ändern, kann man dies in der Sensorfunktion readMouseSensor() vornehmen. Unter dem Kommentar "//configure sensor here" sind bereits einige Einstellungen, welche auch geändert werden können (auf eigene Gefahr), siehe Abbildung unten.


Sensorkonfigurationsbereich in readMouseSensor()

Dabei müssen die Werte (wahlweise in Hex-Darstellung oder Binärdarstellung) entsprechend des PAW3204DB-Datenblatts geschrieben werden, eine falsche Beschreibung kann den Sensor unter Umständen zerstören.

Interessante Einstellungen können in den verschiedenen Registern sein:
• Operation_Mode (0x05): LED-Shutter ein und ausschalten, Sleep-Modes ein und ausschalten
• Configuration (0x06): Reset des Sensors, Auflösung (CPI) einstellen

Für die Folgenden Register muss in Write_Protect (0x09) erst das Schreiben zugelassen werden (0x5A schreiben):
• Image_Threshold (0x0D): Grenzwert der Bildqualität festlegen (Jedes vom Sensor aufgenommene Bild hat auch einen Qualitätsindex. Ist ein Bild schlechter als ein Grenzwert, wird keine Bewegungsinformation daraus gelesen. Dieser kann mit diesem Register geändert werden.)
• Image_Recognition (0x0E): Anpassen der Bildqualität (muss noch weiter untersucht werden.)


  Mit Unterstützung von Prof. J. Walter Sommersemester 2019