Fehlerbehebung

From www.wiki.ardumower.de
Jump to: navigation, search

Fehlersuche

Hardwarefehler finden

Um Fehler beim Zusammenbau oder den elektronischen Bauteilen zu finden wird empfehlen ein Oszilloskop zu verwenden (z.B. Pocket-Oszilloskop DSO201). Ein Oszilloskop ermöglicht das Messen von kurzzeitigen Einbrüchen bei der Versorgungsspannung, des Senders und Empfängers der Induktionsschleife, Odometrie-Signale und mehr.

Dso201.jpg

Anleitung für ein Pocket-Oszilloskop: http://www.ardumower.de/index.php/de/forum/anleitungen-hilfe/142-bedienung-oszilloskop-dso201


Fehlercodes

Wenn dein Ardumower periodisch piepst (4 Töne - Pause), ist er in einem Fehler-Status. Um den genauen Fehler zu finden, kann man die serielle Konsole oder die APP ('pfodApp->Error Counters') benutzen. Mögliche Lösungsvorschläge für jeden Fehler werden nachfolgend gegeben. Detaillierte Angaben zu deinen Robotereinstellungen, siehe Einstellungen.

 ERR_CPU_SPEED           Fehler CPU Geschwindigkeit
                         * I2C-Kabel überprüfen (z.B. Kabellängen kürzen)
 ERR_MOTOR_LEFT          Fehler  linker Getriebemotor
                         * Überprüfe Motortreiber und linken Getriebemotor
                         * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist
                         * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern
 ERR_MOTOR_RIGHT         Fehler rechter GetriebemotorRight gear motor error
                         * Überprüfe Motortreiber und rechten Getriebemotor
                         * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist
                         * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern
 ERR_MOTOR_MOW           Mähmotor Fehler 
                         * Überprüfe Motortreiber und Mähmotor
                         * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist
                         * Veringere Motor-Max-Power, damit Überstrom früher erkannt wird
 ERR_MOW_SENSE           Mähmotor Überstrom
                         * Überprüfe Mähmotor-Treiber und Mähmotor
                         * Vergrößere Motor-Max-Power, damit Überstrom später erkannt wird
 ERR_IMU_COMM            IMU Kommunikationsfehler
                         * Überprüfe die Verbindung zum IMU-Modul
 ERR_IMU_CALIB           IMU Abgleich-Fehler
                         * Start 'IMU Abgleich' (entweder über die Konsole oder über pfodApp->Settings->IMU)                     
 ERR_IMU_TILT            IMU Neigungsfehler
                         * Überprüfe IMU-Modul und Ausrichtung des Roboters
 ERR_RTC_COMM            RTC Kommunikationsfehler
                         * Überprüfe die Verbindung zum RTC-Modul, RTC-Batterie usw.
 ERR_RTC_DATA            RTC-Daten sind fehlerhaft
                         * stelle und speichere Datum und Zeit
 ERR_PERIMETER_TIMEOUT   Perimeter-Signal, Zeitüberschreitung 
                         * Überprüfe Perimeter-Sender, Schleife usw.
                         * Überprüfe die Polarität der Perimeterspule
                         * veringere 'Perimeter-smag', damit die Auszeit größer wird
                         * Erhöhe 'Perimeter-timeout-seconds', damit die Auszeit größer wird
                         * Überprüfe, ob das Signal-Rausch-Verhältnis größer 1 ist.
 ERR_TRACKING            Perimeter-Folge-Fehler 
                         * Überprüfe Perimeter-Sender, Schleife usw.
                         * Erhöhe 'Perimeter-tracking-timeout', damit die Auszeit größer wird
 ERR_ODOMETRY_LEFT       Odometrie-Fehler linker Motor 
                         * Überprüfe das linke Odometrie-Kabel
                         * Überprüfe die Drehrichtung des linken Motors 
 ERR_ODOMETRY_RIGHT      Odometrie-Fehler rechter Motor 
                         * Überprüfe das rechte Odometie-Kabel
                         * Überprüfe die Drehrichtung des rechten Motors
 ERR_BATTERY             Akku-Fehler 
                         * Überprüfe Akku-Verbindung
 ERR_CHARGER             Ladefehler 
                         * Überprüfe Verbindung zum Ladegerät 
 ERR_GPS_COMM            GPS Kommunikationsfehler 
                         * Überprüfe GPS-Kabel
 ERR_GPS_DATA            GPS Datenfehler 
                         * Überprüfe GPS-Antenne und -Kabel
 ERR_ADC_CALIB           ADC Abgleich-Fehler
                         * Starte 'ADC calibration' (entweder über Konsole oder pfodApp->ADC calibration)
 ERR_EEPROM_DATA         EEPROM Datenfehler 
                         * Speichere Benutzer-Einstellungen (entweder über Konsole oder pfodApp->Settings-Save)

Nach Behebung des Fehlers kann dieser gelöscht werden:

Konsole:
press...
d for menu
e=delete all errors

I2C Fehler

Der I2C Bus muss einwandfrei funktionieren. Eine Konsolenausgabe welche bei der Zeile 'initL3G4200D' anhält deutet auf einen fehlerhaften I2C Bus hin.

Serieller Monitor auf Android-App ausgeben

Für den mobilen Einsatz kann man den seriellen Monitor per USB auch auf einem Android-Smartphone oder Android-Tablett ausgeben.

  • Android-App "Simple Serial Monitor" von Bernard Bekker aus dem Playstore herunterladen
  • Smartphone oder Tablett mit der OTG-Funktion (Bereitstellung eines USB-Host)
  • passendes OTG-Kabel
  • USB-Kabel

Die USB-Schnittstelle des Arduino Mega mit dem USB-Stecker des OTG-Kabels verbinden und dann die Android-App "Simple Serial Monitor" aufrufen. Die Übertragungsgeschwindigkeit einstellen und den Button "Start" drücken.

Damit steht ein vollwertiger serieller Monitor analog zur Arduino-IDE zur Verfügung. Es werden alle Systemmeldungen ausgegeben. Über die Kommandozeile können die üblichen Befehle aufgerufen werden.

Deaktiviere alle Pins, die nicht angeschlossen sind

Stelle sicher, dass alle Pins und Eigenschaften die nicht angeschlossen sind (nicht verwendet werden), in der Roboter-Konfiguration deaktiviert sind.

Beispiel: Wenn du die Odometrie-Pins nicht beschaltet hast, muss Odometrie in der Roboter-Konfiguration deaktiviert werden. (mower.cpp):

odometryUse       = 0;       // use odometry?

Probebetrieb ohne Mähmotor-Treiber

Sofern man den Ardumower im Probebetrieb ohne Mähmotor-Treiber testen möchte, so ist der PIN "pinMotorMowFault" auf High zu setzen. Damit verschwindet die Fehlermeldung "Error: Motor mow fault" und der Mover kann getestet werden.

Drehen die Motoren richtig?

Führe einen Motortestlauf aus. Gehe in die serielle Konsole (Arduino IDE: STRG+SHIFT+M, 19200 Baud) drücke 'd' und ENTER um ins Menü zu gelangen. Dann drücke '1' und ENTER. Es startet der Motortest.

Unerwartete Sensorauslösung

Wenn dein Roboter etwas Unerwartetes tut, kann es an einem Sensor liegen, der fehlerhaft auslöst. Überprüfe das über die serielle Konsole:

Starte die serielle Konsole (Arduino IDE: CTRL+SHIFT+M, 19200 Baud), und schalte den Roboter ein. Jedes Mal, wenn ein Sensor auslöst, wird der Zähler dieses Sensors erhöht. Siehe Beschreibung der Sensoren weiter unten. Wenn sich also der Roboter nicht so verhält, wie er soll, dann schau dir die Sensor-Zähler an und stelle fest, welcher Zähler hochzählt, um das Problem zu lokalisieren.

Einige Sensoren lösen nicht aus?

...

Keine Verbindung über Bluetooth

  • Stelle sicher, dass die Baudrate des BT-Modules richtig eingestellt ist (verwende die Ardumower Konsole) - Aktiviere den Programmier-Modus des BT-Modules und stelle die Baudrate ein Bluetooth & App.
  • Stelle sicher, das das BT-Modul mit dem Handy "gepaart" ist
  • Überprüfe, dass der Arduino Mega nicht über USB mit Strom versorgt wird.

Roboter dreht sich im Kreis wenn er auf die Schleife trifft (Home Modus)

Zunächst sicherstellen, dass das Perimeter Tracking funktioniert: den Roboter manuell auf die Schleife setzen und via ArduRemote "Commands->Track" wählen und sicherstellen dass der Robote die Schleife abfährt. Falls dies nicht klappt könnte ein Tuning der Tracking PID-Parameter helfen.

Die Position der Spule sollte wie angegeben sein:

Wenn er über die Schleife fährt (Spule liegt dann also "außerhalb" der Schleife) muss er ja durch Drehen wieder mit der Spule nach "innerhalb" der Schleife kommen. Wenn das durch Drehen nicht klappt würde er nicht mehr aufhöhren mit dem Drehen.

Je weiter er drüber gefahren ist umso schlechter kann er die Spule durch Drehen wieder nach "innerhalb" bekommen. Die Fahrgeschwindigkeit zu reduzieren und die Positionierung der Spule nach weiter außen sollte helfen.

Folgender Test ist hilfreich: In der ArduRemote-App unter "Plot->Perimeter" lässt Du Dir den Schleifen-Plot anzeigen. Hier werden die einzelnen Werte erklärt: http://wiki.ardumower.de/index.php?title=Perimeter-Schleife#Problemanalyse_und_Fehlerbehebung_am_Empf.C3.A4nger

Dann setzt Du den Roboter mit der Hand manuell an die Position wo Du meinst dass er die Schleife erkannt hat ("mag" sollte dort von negativ zu positiv wechslen bzw. "in" zu "out"). Jetzt drehst Du den Roboter mit der Hand (also ohne Motor) und schaust ob "mag" wieder von positiv zu negativ wechselt (bzw. "out" zu "in"). Wenn das nicht klappt stimmt etwas mit der Position der Spule nicht bzw. der Roboter fährt zu weit über die Schleife (dann die Geschwindigkeit verringern).

Konsolen-Ausgabe

Beim Start des Roboters wird über die serielle Konsole beispielsweise folgendes ausgegeben:

 START 
 Ardumower rXXXX
 press...
   d zum Menü
   v um Konsolenausgabe zu ändern (Sensor-Zähler, Werte, Perimeter usw.)


t     0 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower
t     1 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower
t     3 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower


Wenn ein Sensor auslöst, wird sein Zähler erhöht. Beispiel (Mähmotor-Überstromsensor löst aus):

t     4 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower
t     5 l177 v0 REV  spd  -26  -26    0 sen    0    0    1 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  1 Ardumower


Hier ist eine Beschreibung jeder Spalte:

t - Zeit des akt. Maschinenzustands (ms)
l - Programmschleifen-Durchläufe/sek 
v - Anzeige-Modus des ausgewählten Sensors (0 = Zähler / 1 = Sensorwerte ​​/ 2 = Sensorwerte​​) 
- aktueller Status (FORW, REV, ROLL usw.) 
- Nachhause-Fahrt? (1/0) 
spd - Steuerung / Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (speed) 
sen - Motor-Überstromzähler:  links, rechts, Mähmotor 
bum - Bumperzähler: links, rechts 
son - Ultraschall- Distanz-Unterschreitung: Zähler 
pit, roll - inclination (berechnet mit Beschleunigungssensor) 
yaw - Kompass-Kurs
bat - Akkuspannung
chg - Ladespannung


---Befehle---

'd': Testmenü, Abgleich IMU, Bluetooth
'v': Anzeigemodus(zeigt Werte oder Zähler
'h': Fahr zur Ladestation
'p': Schleifenfahrt
'l': simuliert linken Bumper
'r': simuliert rechten Bumper
's': simuliert Rasensensor
'm': schaltet Mähmotor
'c': simuliert Laden
'+': drehen 90 Grad
'-': drehen 90 Grad 
'3': aktiviert Fernsteuerung
'0': Aus
'1': Automode, Mähmotor an

Wie melde ich einen Programmfehler/eine neue Eigenschaft/neuen Programmcode

Klicke auf 'this link' und erzeuge ein neues Thema - bitte teile uns folgendes mit:

   Deine Plattform (Arduino Mega 2560, Arduino Due)
   Deine Arduino IDE-Version (der letzte Programmcode erfordert 1.6.3)
   Dein genaues Betriebssystem (Windows 8, Linux usw.)
   Deine Ardumower-Programmversion  (eine Liste der Veröffentlichungen siehst du hier https://github.com/Ardumower/ardumower/releases)
   Jede andere Info, die brauchbar sein kann...

Weitere Links

  1. Diagnostic