MicroRobot-Projektdokumentation

Das MicroRobot-Projekt entstand mit dem Ziel, einen kleinen, extrem preiswerten Roboter-Bausatz zu schaffen, der von Schülern der 4. Klasse während einer Projektwoche aufgebaut werden kann. Da 25 Exemplare aufgebaut werden sollten, galt es, die Kosten möglichst gering zu halten – trotzdem sollten die Schüler den Mikrocontroller zu Hause selber am PC programmieren können, ohne dafür zusätzliche Programmieradapter, Software etc. anschaffen zu müssen.

Die Randbedingungen des aufgebauten Roboterprojektes sind:

Daraus ergaben sich folgende Designentscheidungen:

Bild des fertigen Roboters

Dokumentation

Stückliste (Text)
Schaltplan (Pdf)
Bestückungsplan (Pdf)
Oberseite Platine (Pdf)
Unterseite Platine (Pdf)

Die Motoren werden an den Lötpunkten “MOT1” bzw. “MOT2” angeschlossen, an “BAT” wird der Batteriehalter angeschlossen. Es muss entweder ein Batteriehalter mit Verpolungsschutz eingesetzt werden, oder es muss eine Schutzdiode (1N4001) in die Anschlussleitung zum Batteriehalter eingefügt werden.

Peripheriefunktionen des Mikrocontrollers

 

Pin Signal Arduino-
Pinnummer
Beschreibung
PC0/ADC0 VCC_SENSE analog0/
digital14
Messung der Versorgungsspannung. Spannungsteiler 0.239 : 1. Bei Verwendung der internen 1.1V-Referenz ergibt sich ein Messbereich von 0V – 4.61V
PC1/ADC1 IN4 analog1/
digital15
Analogeingang an Stecker CN4. Kann z.B. für Phototransistor verwendet werden.
PC2/ADC2 IN3 analog2/
digital16
Analogeingang an Stecker CN3. Kann z.B. für Phototransistor verwendet werden.
PC3/ADC3 IN1 analog3/
digital17
Kollisionsschalter rechts. Low bei Berührung. Internen Pullup-Widerstand aktivieren!
PC4/ADC4/SDA SPARE2 analog4/
digital18
Reserve. Das Signal steht an Stecker CN6 für Erweiterungen zur Verfügung.
PC5/ADC5/SCL SPARE1 analog5/
digital19
Reserve. Das Signal steht an Stecker CN6 für Erweiterungen zur Verfügung.
PD0/RXD RXD digital0 Reserve. Das Signal steht an Stecker CN6 für Erweiterungen zur Verfügung.
PD1/TXD TXD digital1 Reserve. Das Signal steht an Stecker CN6 für Erweiterungen zur Verfügung.
PD2 USB_D+ digital2 USB-Port. Wird zur Programmierung benutzt, während des Betriebs keine Funktion.
PD3 USB_D- digital3 USB-Port. Wird zur Programmierung benutzt, während des Betriebs keine Funktion.
PD4 LED1 digital4 LED1 (gelb), Unterseite. Kann zur Beleuchtung der optionalen Phototransistoren verwendet werden, oder als Status-LED. LED leuchtet bei High-Pegel.
PD5 USB_SENSE digital5 Erkennung, ob USB-Kabel angeschlossen ist. High bei aktivem USB-Port.
PD6 IN2 digital6 Kollisionsschalter links. Low bei Berührung. Internen Pullup-Widerstand aktivieren!
PD7 BUTTON1 digital7 Taster “SW1”. Steht im Programm zur freien Verfügung.
PB0 MOT2B digital8 Ansteuerung Motor 2, rechte Hälfte.
PB1/OC1A MOT1A digital9 Ansteuerung Motor 1, linke Hälfte. PWM-fähig.
PB2 MOT1B digital10 Ansteuerung Motor 1, rechte Hälfte.
PB3/OC2 MOT2A digital11 Ansteuerung Motor 2, linke Hälfte. PWM-fähig.
PB4 MISO digital12 LED3 (grün). Oberseite rechts. LED leuchtet bei High-Pegel.
PB5 SCK digital13 LED2 (rot). Oberseite links. LED leuchtet bei High-Pegel.

 

Errata – Layout-Version 5

Wenn der ISP-Stecker CN7 benutzt wird, gibt es eine Kollision mit dem MOSI- und SCK-Signal, welches im Betrieb  als Ausgang geschaltet wird. Bei Verwendung des ISP-Steckers muss daher ein 470Ohm-Widerstand in die Leitungen zwischen Stecker CN7 und dem Mikrocontroller eingefügt werden. Es wird empfohlen, den Stecker CN/ nicht zu bestücken, wenn nicht auch zugleich diese Modifikation durchgeführt wird.
Wenn der Mikrocontroller nur per USB-Port programmiert wird, ist keine Modifikation erforderlich.

Bootlader

der Bootlader muss einmalig in den Mikrocontroller programmiert werden, um eine Programmierung per USB zu ermöglichen. Die fertig kompilierte Datei “main.hex” ist im Verzeichnis firmware enthalten, die Fuse- und Lockbits sind im Makefile im Verzeichnis firmware aufgeführt. Der Bootlader steht unter GPLv2-Lizenz, die Quelltexte sind im Archiv enthalten.
Im Verzeichnis “commandline” findet sich das Programm “bootloadHID.exe”, welches auf dem PC ausgeführt wird und für die Übertragung zum Mikrocontroller zuständig ist. Dieses ist bereits in die modifizierte Arduino-Umgebung integriert.

Downloads

Bootloader: bootloadHID.2012-12-08.zip
Arduino: arduino-1.5.2-microrobot.7z
7-zip (universeller Gratis-Packer, zum Entpacken von 7z-Dateien): www.7-zip.de

Software

Für den Betrieb des aufgebauten Roboters gehen wir davon aus, daß ein mit dem Bootloader vorprogrammierter Microcontroller zur Verfügung steht. Dann reicht es, das Archiv mit der Arduino-Umgebung irgendwo auf die Festplatte zu entpacken – eine Installation ist nicht erforderlich. Der Start erfolgt durch Anklicken von “Arduino.exe” (bei Bedarf kann hierzu eine Verknüpfung erzeugt und auf den Desktop verschoben werden).
Nach der Installation müssen einmalig folgende Einstellungen durchgeführt werden:

Danach kann mit der Arduino-Umgebung gearbeitet werden. Der normale Ablauf ist wie folgt:

Die MicroRobot-Library

Die MicroRobot-Library übernimmt die Ansteuerung der Hardware und stellt dem Benutzer Funktionen zur Ansteuerung der Motoren und zur Abfrage des Sensoren zur Verfügung. Die Library übernimmt folgende Funktionen, ohne dass der Benutzer sich darum selber in seinem Hauptprogramm kümmern muss:

Da die Library als Erweiterung der Arduino-Umgebung ohne Eingriffe in die Arduino-Funktionen implementiert werden sollte, ist es nötig, die Initialisierungs-Funktion der Library in der setup()-Routine manuell auszuführen – eine Initialisierung im Konstruktor führt dazu, dass der Arduino-Code bereits initialisierte Teile der Hardware umkonfiguriert, was u.a. zu deutlich zu niedrigen PWM-Frequenzen führt. Aus dem gleichen Grund dürfen die Motoren nur über die entsprechenden Library-Funktionen angesteuert werden – die analogWrite-Funktionen aus der Arduino-Umgebung sind Tabu. Am besten startet man mit einem der Beispielprogramme als Basis für eigene Versuche.

Lizenz

Creative Commons Lizenzvertrag
Die Hardware sowie die Dokumentation zu MicroRobot steht unter einer Creative Commons Namensnennung 3.0 Unported Lizenz. Die MicroRobot-Library steht unter GPL.
Für die Fremdsoftware (bootloadHID sowie Arduino) gelten die Originallizenzen, die in den entsprechenden Download-Dateien enthalten sind.

2013-05-05 by rincewind