C't-Bot FAQ

Aus c't-Bot Wiki
Version vom 9. Oktober 2019, 20:41 Uhr von Nightwalker-87 (Diskussion | Beiträge) (Die Distanzsensoren liefern stark schwankende Werte)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Hardware, Aufbau und Inbetriebnahme

Wie kann man die IR-Bauteile überprüfen

Alle IR-Bauteile senden für Menschen unsichtbarer IR Licht aus. Mit einer Digital Kamera (Foto-Handy, Web-Cam etc.) kann man das IR- Licht auf dem Sucher als hellen Lichtfleck erkennen. Bei der aktuellen Firmware werden die IR-Lichtquellen gepulst, das Leuchten ist damit nicht mehr ganz so gut erkennbar. Die Distanzsensoren haben einen sehr schmalen Abstrahlwinkel. Man muß direkt in den Sensor hineinsehen um ein violettes Leuchten zu erkennen.

Einer oder beide Distanzsensoren funktionieren nicht

Dafür kann es mehrere Ursachen geben:

  • Kurzschluß oder Steckverbinder am Sharp Sensor verpolt. Das überleben die Sharp GP2D12 normalerweise nicht. Da hilft nur noch der Austausch.
  • Das Gehäuse der Sharp GP2D12 ist leitfähig. Beim Zusammenbau daher jeden Kontakt zwischen Gehäuse und den Sensorplatinen vermeiden. Am besten die Sensorplatinen mit einer Kunststofffolie oder -scheibe(n) isolieren und/oder Kunststoffschrauben statt Metallschrauben verwenden.

Die Distanzsensoren liefern stark schwankende Werte

Für schwankende Werte der Distanzsensoren gibt es mehrere Ursachen:

  • Schwankungen der Stromversorgung. Durch das gepulste IR Licht bricht die Versorgungsspannung über dem FET zusammen. Abhilfe schaffen hier ein 100µF Kondensator zwischen Versorgungsspannung und GND, so nahe wie möglich an den Sensoren angebracht oder eine Überbrückung des FET.
  • Spikes im Ausgangssignal. Abhilfe schaffen hier ein 100nF Kondensator und evtl. noch ein 10µF Tantal Elko zwischen Versorgungsspannung und GND, so nahe wie möglich an den Sensoren angebracht.
  • Interferenzen zwischen den beiden Sensoren. Abhilfe schaffen hier jeweils ein Stück Klebeband auf der Innenseite oder angeklebte Scheuklappen aus Pappe. Beide Maßnahmen minimieren das Übersprechen.
  • Halogen-Lampen können das Ausgangssignal ebenfalls stören.

Das LCD-Modul funktioniert nicht

Das Display zeigt gar nichts an:

  • Am Kontrastregler POT1 drehen (10-Gang Poti, mehrere Umdrehungen nötig). Man muß ziemlich lange am Poti im Uhrzeigersinn drehen bis der Text auf dem Bildschirm erscheint.
  • Evtl auch den Display Typ prüfen. Es gibt Displays für den erweiterten Temperaturbereich. Diese benötigen eine negative Kontrastspannung und können mit der Beschaltung funktionieren

Das Display zeigt nur 2 schwarze Balken in der 1. und 3 Spalte an:

  • Fusebits nicht korrekt. JTAGEN muß auf disable und externer Quarz muß eingestellt sein. Siehe auch Ponyprog Fusebits

Die Hintergrundbeleuchtung funktioniert nicht:

  • Evtl. liegt es an der Beschaltung des Displays. Es gibt Displays bei denen VCC und GND der Hintergrundbeleuchtung vertauscht sind.

Weitere mögliche Fehlerursachen:

  • fehlerhafte Verdrahtung, auf Kurschlüsse und kalte Lötstellen prüfen. Pin 1 am ST4 und am Display überprüfen.

Das LCD-Modul liefert nur wirre Anzeigen

  • Batteriespannung zu niedrig.
  • Seit einiger Zeit werden die c't-Bot Quellen mit Optimierung übersetzt (-Os). Das führt bei einigen Displays zu wirren Anzeigen. Abhilfe schafft hier das Abschalten der Optimierung (-O0). Der eigentliche Fehler ist aber die falsche Verdrahtung des Busy-Bits. Derzeit wird in der Software nur eine Warteschleife aufgerufen. Wenn man folgenden [viewtopic.php?&t=200 LCD-Busy-Bit Patch] einbaut und die Software entsprechend anpasst, sollte das Display auch mit eingeschalteter Optimierung korrekt funktionieren.

Nach dem Flashen funktioniert der Maussensor nicht mehr

Nach dem Flashen keine Funktion. Der Maussensor hängt an den gleichen Signalleitungen wie die ISP-Schnittstelle. Beim Flashen eines neuen Programmes kann sich der Maussensor aufhängen. Dann hilft nur Power off/on.

Der Maussensor liefert unbrauchbare Werte

Hier hilft das "tieferlegen" der Maus, wie in folgendem Thread ct-Bot Forum Thread: Maus tiefer gelegt... beschrieben.

Die Radencoder 'prellen' oder liefern unregelmässige Impulse

Der Grund sind zu geringen Pegelunterschiede zwischen Schwarz und Weiß an den Schmitt-Trigger Eingängen. Dafür gibt es mehrere Ursachen:

  • Schlechte Radencoderscheiben. Mit Laser auf Folie gedruckt. Noch schlechter mit Tintenstrahler auf Papier.
  • Fremdlichteinstreuung durch die Löcher in den Rädern.
  • Klebstoffreste zwischen den Zähnen auch bei den neuen V2 Encoderscheiben schlucken das IR-Licht.

Die neuen Radencoderscheiben von Victor Dierks (V2) funktionieren bringen deutliche Besserung. Den neuen Bausätzen liegen diese bereits bei. Für ältere Bausätze bekommt man diese auf Anfrage kostenlos (gegen Freiumschlag) von Segor zugeschickt.

Die Motoren laufen nur rückwärts

  • Motoranschlüsse wurden vertauscht.
  • Ein Grund dafür könnte auch das einprogrammierte Fluchtverhalten des c't-Bots sein. Dies wird durch die Abgrund- und Distanzsensoren aktiviert. Steht der Bot vor einen Abgrund, oder zu dicht vor einem Hindernis fährt er rückwärts.

Die Sensorwerte kann man mit dem LCD-Modul überprüfen und ggfs. folgende Werte ändern:

<c> /* Einstellunge fuer die Verhaltensregeln */

  1. define BORDER_DANGEROUS 0x3A0 /*!< Wert, ab dem wir sicher sind, dass es eine Kante ist */
  2. define COL_CLOSEST 200 /*!< Abstand in mm, den wir als zu nah betrachten */

</c>

Entwicklungsumgebung

Wie bekomme ich unter Eclipse die aktuellen Quellen aus dem CVS

Unter Eclipse den Menüpunkt "File/Import" die Option "Checkout Projects from CVS" auswählen , anschließend "Create a new repository location".

Die Einstellungen für den CVS Server:

Host: ctbot.heise.de
Repository path: /ctbot
User: anonymous
Passwort: ctrobot
Connection type: pserver
Use default port

Firmware flashen und Fusebits

Wie bekomme ich mein Programm in den c't-Bot?

Um ein Programm zum c't-Bot zu übertragen benötigt man einen ISP Programmier Adapter und die entsprechende Programmier Software. ISP-Adapter gibt es mit LPT, RS232 oder USB Anschluß. Neuere Rechner haben oftmals nur noch einen USB Anschluß. Als Programmier Software gibt es u.a. Ponyprog (nur für LPT Programmier Adapter) und AVRdude (für alle Programmier Adapter geeignet).

Welche Programmier Adapter kann man verwenden?

Das hängt von den zur Verfügung stehenden PC-Schnittstellen ab. Man unterscheidet 2 Arten von ISP Programmier Adapter.

Am preiswertesten und einfachsten sind die LPT Programmier Adapter, oft auch als STK200 kompatibler Adapter bezeichnet. Da keinerlei Intelligenz in diesen Adaptern steckt braucht man auch keine Treibersoftware. Der BlueMP3 ISP Adapter ist z.B. ein LPT Programmier Adapter.

RS232 Adapter beruhen auf der Application Note AN910 von Atmel. Deshalb nennt man diese Adapter oft auch AN910 kompatibel. Auf diesen Adaptern sitzt ein kleiner AVR Controller der über die RS232 mit dem PC kommuniziert und auf der anderen Seite über ISP mit dem Zielsystem.

Die USB Adapter sind ebenfalls AN910 kompatibel. Bei diesen Adaptern ist zusätzlich ein USB-UART Chip mit integriert. Es wird ein Hersteller-spezifischer USB-Treiber benötigt. Der mySmartUSB Programmer ist z.B. ein USB Programmier Adapter.

Das Flashen mit Ponyprog funktioniert nicht "Device missing or unknown device -24"

Wenn die Spannung am Prozessor anliegt (nachmessen!) und auch alle Pins zum ISP Port richtig verdrahtet sind (durchklingeln, auf Kurzschlüsse prüfen), kommen noch folgende Fehlerursachen in Betracht:

  • Falsche Einstellungen im Ponyprog Setup. Unter Setup, Interface Setup überprüfen: Parallel, AVR ISP-IO, LPTx, alle anderen Haken aus. Mit korrekten Interface Setup Einstellungen und Taste 'Probe' testen. Danach den Adapter mit der Taste 'Calibration' kalibrieren. Als Device stellt man AVR micro, ATmega32 oder Auto ein.
  • Maussensor abziehen. Dieser hängt an den selben Leitungen wie der ISP.
  • Notebook LPT Schnittstellen machen manchmal Probleme. Mit Desktop PC versuchen.
  • LPT-Einstellungen im BIOS überprüfen. (auf ECP oder EPP stellen)

Wenn nichts davon hilft, ist der LPT-Programmer wohl selbst defekt.

Beim Flashen mit Ponyprog gibt es "Write Failed" Messages

Vor dem Schreiben den Chip löschen (Chip erase). Wenn das nichts hilft, folgende Einstellungen der 'ponyprog.ini' Datei ändern:

   AVRByteWriteDelay=30         'Delay to complete the write of a single word
   AVREraseDelay=100            'Delay to complete the erase of all the memory
   ATMegaPageWriteDelay=50      'Delay to complete the write of a page of flash memory

Ponyprog unter Windows XP nur als Administrator ausführbar

Durch folgende Änderung klappt es auch auch als Benutzer mit eingeschränkten Rechten:

   Als Administrator, Geräte Manager starten -> Ansicht: Ausgeblendete Geräte anzeigen.
   Nicht-PnP Treiber aufklappen und nach 'DriverLINX Port I/O Driver' suchen.
   Für diesen Treiber -> Eigenschaften -> Treiber starten. Auf 'Start' setzen. System neustarten

Nach dem Setzen der Fusebits wird der Atmega32 nicht mehr erkannt

Dann wurden wohl die falschen Fusebits gesetzt, statt Externer Quarz wurde externer Oszillator eingestellt. Das heißt der Atmega32 erwartet dann einen sauberen externen Takt von einem Quarzoszillator. Ein Quarzoszillator erzeugt im Gegensatz zum Quarz oder Resonator direkt den Prozessortakt. Beim Quarz bzw. Resonator muß dieser zuerst vom Prozessor zum Schwingen angeregt werden, um dann den Prozessor Takt zu erzeugen. Unterscheiden kann man die Bauteile an der Anzahl der Pins und der Bauteil Größe. Quarzoszillator ist größer als ein Quarz und besitzt 4 Pins, der Quarz hingegen hat nur 2 Pins , ein Resonator hat 3 Pins (dort sind die beiden Kondensatoren bereits integriert). Beim c't-Bot wird ein Quarz mit 16MHz eingesetzt.

Um den scheinbar "toten" Mikrocontroller wieder zum Leben zu erwecken, gibt es 4 Möglichkeiten:

  • man nimmt einen Frequenzgenerator besitzt, diesen auf Rechteck Signal schalten und als Frequenz ca. 1Mhz,
  • oder man bastelt sich einen Quarzoszillator zusammen wie z.B. den AVR-Preserver von Klaus Leidinger,
  • oder man nimmt einen weiteren Prozessor und programmiert einen Ausgangsport als Taktausgang,
  • oder man nimmt einen High Voltage parallel Programmer bzw. das STK500 Kit (oder einen guten Bekannten, der so etwas besitzt).

Die Taktquelle wird mit dem Takteingang des Prozessors (Pin 13 XTAL1) verbunden, danach startet man Ponyprog oder Avrdude und setzt die Fusebits richtig. Der Quarz muß dazu nicht ausgelötet werden.