Tag-Archiv für 'Elektronik'

Eurobot 2011 Testfahrt

In Leipzig wird momentan kräftig am neuen Roboter für den Eurobot 2011 gearbeitet. Viele Konzepte für die Elektronik und Programmierung sind aus dem letzten Jahr übernommen und verbessert wurden. Hier sieht man unseren 2010er Roboter auf der neuen Spielplatte bei einer autonomen Testfahrt.

Hardware-PWM für Foxboard G20

Für bestimmte Anwendung, wie zum Beispiel die Steuerung von Gleichstrommotoren über einen Motortreiber, werden häufig PWM-Signale benötigt. Sollen diese mit Mikroprozessoren erzeugt werden ist die Umsetzung meist relativ einfach, da direkt PWM-Ausgänge genutzt werden können und diese einfach zu programmieren sind. Wenn das erzeugende System (z.B. Foxboard G20 mit ARM9) mit einem Betriebssystem wie Linux versehen ist, dann ist die Umsetzung von PWM-Ausgängen meist aufwendiger. Viele Lösungen nutzen dann das GPIO-Interface und erzeugen das PWM-Signal über ein Programm im Userspace. Diese Technik wird auch als Bit-Banging bezeichnet, da hier jede Veränderung am Pin in Software realisiert werden muss. Damit kann allerdings das Timing nur unzureichend eingehalten werden und es sind auch nur geringe Träger-Frequenzen möglich.

Besser Ergebnisse erzielt man mit einem PWM-Treiber, der die Timer-Einheiten des ARM9-Prozessors, in diesem Fall des Atmel AT91SAM9G20 nutzt. Im vorliegenden Kernel-Modul für das Foxboard G20 wird ein zwei-kanaliger 12-Bit-PWM-Generator mit Trägerfrequenz um die 10 kHz prototypisch umgesetzt. PWM0 ist an J7 Pin 9 verfügbar, PWM1 liegt an J7 Pin 10 an. Für die Signalmasse kann jeder Massepin genutzt werden.

Zum Kompilieren des Moduls muss das richtige Verzeichnis mit den Kernelquellen (vorkonfiguriert und kompiliert) in make_modul.sh eingetragen werden, momentan ist der Quellcode für Kernel 2.6.31 angepasst und es wird ein Cross-Compiler genutzt. Nach dem Kompilieren kann das Kernel-Modul auf das Zielsystem aufgespielt werden, das Laden erfolgt mit insmod.

Das Setzen des Duty-Cycle kann dann mit

echo 2048 > /sys/devices/platform/atmel_pwm/pwm0

beziehungsweise

echo 2048 > /sys/devices/platform/atmel_pwm/pwm1

durchgeführt werden. Für den Duty-Cycle können Werte im Bereich 1-4096 genutzt werden, dies entspricht einem Duty-Cycle zwische 0% und 100%.

Der Quellcode für den Hardware-PWM-Treiber steht unter at91_g20_pwm.tar.gz zur Verfügung.

Serielle Schnittstelle am AVR Butterfly

Um die serielle Schnittstelle am AVR Butterfly nutzen zu können ist nicht viel Arbeit erforderlich. Ein serieller Pegelwandler von Low-Voltage-Seriell auf den höheren Pegel an der seriellen Schnittstelle eines PCs ist bereits auf dem Butterfly integriert.
Es bietet sich an den Butterfly mit Stiftleisten zu bestücken um Kabel einfach anschließen zu können. Ich habe ein paar günstige Bauteile von Reichelt genutzt, dieses Material gibt es aber auch bei anderen Elektronik-Händlern.

  • 3 Stifte einer 36-poligen, einreihigen geraden Stiftleiste mit Rastermaß 2,54 (SL 1X36G 2,54)
  • eine 3-poligen Platinensteckverbinder gerade, weiss (PS 25/3G WS)
  • D-SUB-Buchse, 9-polig, Lötkelch zum PC-Anschluss (D-SUB BU 09)

Das ganze ist schnell verlötet, die PIN-Belegung ist aus der Grafik ersichtlich und ist im User-Manual des Butterfly dokumentiert. (RXD an Pin 3, TXD an Pin 2 und GND an Pin 5)

butterfly_serial_1

butterfly_serial_2

Das Ganze kann man dann in der Beispielanwendung bei der Namenseingabe mit dem Terminalprogramm Minicom testen. Die genaue Vorgehensweise ist unter Punkt 2.2.2 des Usermanual beschrieben. Zur Kommunikation unter Linux stellt man am besten als Supernutzer den Default von Minicom mit

minicom -s

unter “Serial Port Default” auf Serial Device /dev/ttyS0, Communication Parameter auf 19200 8N1 und keine Hardware- und Software-Flusskontrolle. Das ganze speichert man als Default dfl. Nun kann man entsprechend der Anleitung einen ersten Test der Kommunikation durchführen, der eingegebene Name sollte auch wenn kein Echo im Terminal eingestellt ist oder vom Butterfly zurückgegeben wird nach Bestätigen mit Enter auf dem Display erscheinen.

AVR Butterfly

Der AVR Butterfly ist eine Evaluationsumgebung für den Mikroprozessor ATmega169 von Atmel.

avrbutterfly_front

Die Ausstattung an Schnittstellen und Sensor ist für so ein kleines und günstiges System recht beachtlicht. Für um die 20 Euro bekommt man ein 6-stelliges LCD, einen 4-Wege-Taster mit Druckknopf, 512 kByte Flash-Speicher, Licht- und Temperatursensor, einen Piezo-Schallwandler und einen Zugang über serielle Schnittstelle (mit Pegelwandler auf dem Board). Als weitere Kommunikationspfade mit dem System kann man JTAG, SPI und I2C nutzen. Zudem arbeitet der Butterfly sehr stromsparend und ist mit einer Lithium-Batterie autark spannungsversorgt.

Das System ist in C programmierbar, einen entsprechenden Compiler und Werkzeuge zur Datenübertragung auf das System gibt es auch für Linux.

Microcontroller-Bastelei

Hardware-Bastelei und Programmierung liegt ja zur Zeit total im Trend. Die einen basteln Fnordlichter, manche spielen mit dem Butterfly oder der halvedDisc, wieder andere bauen Mini-Roboter wie den Asuro.

atmega8

Allem gemeinsam ist, dass die Intelligenz der Geräte durch Microcontroller verwirklich wird. Bei mikrocontroller.net findet man gute Dokumentation, unter anderem ein umfassendes Tutorial zur Atmel-Programmierung in C.