1. Versuch - LEGO-Roboter

Aufgabe


In diesem Versuch soll mit einem einfachen Mikrocontroller und minimalen Ressourcenangebot ein Miniaturroboter entwickelt werden, der einer vorgegeben Linie folgt. Erschwerend kommt hinzu, dass diese Linie an mehreren Stellen unterbrochen sein wird. Zur Entwicklung steht im Labor eine Teststrecke zur Verfügung (vgl. Abbildung). Die Abnahme des Versuchs findet jedoch auf einer zweiten unbekannten Strecke statt.

Image

Für den mechanischen Aufbau des Roboters stehen LEGO-Technik-Bauteile und LEGO-Antriebe zur Verfügung. Die Steuerung des Roboters ist mit einer Platine zu realisieren, welche mit einem Mikrocontroller (MSP430F1121) von Texas Instruments und einem Motertreiberbaustein (L6205) bestückt ist.

Um der Linie zu folgen, muss das Modell mit Fotowiderständen ausgestattet werden, deren Werte Sie mittels des im MSP430 eingebauten Komparators auswerten müssen. Aufgrund der Tatsache, dass Sie eine kurvige Linie, die zudem auch unterbrochen ist, abfahren müssen, kommen Sie nicht umhin, die Motoren mittles Pulsbreitenmodulation anzusteuern, um ggf. den eingeschlagenen Kurvenradius beizubehalten.

Werkzeuge


Die Programmierung kann entweder mit den zum EVA-Kit Von Texas Instruments beiliegenden Windows-Tools erfolgen, Linux-Begeisterte können sich auch gerne der GCC-Toolkette(external link) für den MSP430 bedienen. Unter http://www.mikrocontroller.net/articles/MSPGCC(external link) findet man eine Anleitung, wie die Toolkette in Berieb genommen werden kann. Dort findet man auch einige Hinweise zur Benutzung des Debuggers.

Die MSP430-gcc-Toolkette ist auf dem Rechner "elmo" installiert. Im Home-Verzeichnis von "laboruser" findet man ein Verzeichnis "~/praktikum_msp430/beispiele/blinking". In diesem Verzeichnis ist ein einfaches C-Programm, welches die LEDs auf dem Steuerungsboard blinken lässt. Die einzelnen Schritte zur Inbetriebnahme:
msp430-gcc -g -mmcu=msp430x1121 -o blinking_bat.elf blinking_bat.c


In einer neuen Shell:
msp430-gdbproxy --port=2000 msp430


In der alten Shell:
msp430-gdb blinking_bat.elf


Im gdb:
target remote localhost:2000
monitor erase all
load
monitor reset
continue


Dann sollte es blinken.

Im Beispielverzeichnis gibt es eine Datei .gdbinit, die Sie für Ihre Projekte auch gerne verwenden können. Die Einstellungen bewirken eine schnellere Übertragung der Daten. Dort können Sie natürlich auch weitere gdb-Kommandos eintragen, bspw. "target remote localhost:2000".

Bitte überprüfen Sie vor dem Anschalten der Versorgungsspannung, dass diese an dem richtigen Steckverbinder angeschlossen ist (mit + / - gekennzeichnet). Es werden ca. 9V Gleichspannung benötigt.

Dokumente


Um die Lego-Motoren mit der Steuerungsboard ansteuern zu können, wurde ein Motortreiber darauf integriert. Hier können Sie das Datenblatt des ICs herunterladen.

Schaltpläne für das Steuerungsboard

ACHTUNG: Die Platine enthält eine Brücke zwischen den Pins P1.2 und P1.3. Es ist auf jeden Fall zu vermeiden, unterschiedliche Pegel auf diese Ausgänge zu legen, da dies den MSP430 zerstört!



Probleme der Platinen

  • Board 1 (blaue LED's): Es ist kein Taktsignal ueber den externen Quarz (ACLK/LXCLK) zu erhalten. Das Board laesst sich ohne weitere Probleme ueber den internen 5Mhz RC Oszillator betreiben.

  • Board 4 (angeloetetes Kabel zu den Motorpins): Es ist kein Widerstand zwischen den Pins 10/SUP und 11/CA0 messbar (offene Leitung).

  • Des weiteren wurde an allen Boards ein Problem mit JTAG angetroffen, bei dem eine ueber den JTAG Controller aufgeladene Statusleitung nach dem abziehen des Programmierers nicht entladen wird. Der MSP430 probiert weiterhin im Debugmodus zu arbeiten, bis alle JTAG Pins kurzgeschlossen werden - dabei wird eine Kapazitaet entladen, die ausreichend ist, um den MSP430 fuer 1-2 Sekunden zu betreiben.

  • Der JTAG Controller haengt sich seinerseits gerne auf ("Device not found"). Um das Problem zu beheben, kann folgende Abfolge verwendet werden:
  1. GDB schliessen.
  2. Strom am uC entfernen.
  3. uC vom JTAG trennen.
  4. JTAG von der parallelen Schnittstelle trennen.
  5. 1-4 in inverser Reihenfolge abarbeiten, um das Board wieder anzuschliessen.


  • Board 2 Spannungsregler defekt
  • Board 3 Keine Verbindung zum PC, wahrscheinlich auch defekt


SpartanMC