RP6 CONTROL M32 Erweiterungsmodul RP6-M32 ©2007 AREXX Engineering www.arexx.
RP6 CONTROL M32 Bedienungsanleitung - Deutsch (German) Version RP6-M32-DE-20071031 WICHTIGE INFORMATION! Bitte unbedingt lesen! Bevor Sie dieses RP6 Erweiterungsmodul in Betrieb nehmen, lesen Sie bitte diese Anleitung UND die RP6 ROBOT SYSTEM Bedienungsanleitunug vollständig durch! Sie erläutert Ihnen die korrekte Verwendung und weist auf mögliche Gefahren hin! Weiterhin enthält sie wichtige Informationen, die für viele Anwender keineswegs offensichtlich sein dürften.
Impressum ©2007 AREXX Engineering Nervistraat 16 8013 RS Zwolle The Netherlands Tel.: +31 (0) 38 454 2028 Fax.: +31 (0) 38 452 4482 "RP6 Robot System" ist eingetragenes Warenzeichen von AREXX Engineering. Alle anderen Warenzeichen stehen im Besitz ihrer jeweiligen Eigentümer. Diese Bedienungsanleitung ist urheberrechtlich geschützt.
Inhaltsverzeichnis 1. Das RP6 CONTROL M32 Erweiterungsmodul ...................................... 5 1.1. Technischer Support ................................................................ 6 1.2. Lieferumfang .......................................................................... 6 1.3. Features und technische Daten ................................................. 7 2. Montage des Erweiterungsmoduls .................................................... 9 3. RP6 CONTROL Library .........................
RP6 ROBOT SYSTEM - 1. Das RP6 CONTROL M32 Erweiterungsmodul 1. Das RP6 CONTROL M32 Erweiterungsmodul Mit dem RP6 CONTROL M32 (oder kurz „RP6-M32“) Erweiterungsmodul können Sie dem Roboter einen zweiten Atmel ATMEGA32 Mikrocontroller hinzufügen, der jedoch doppelt so schnell getaktet ist wie der Controller auf dem Mainboard. Auch sonst steht dem Anwender auf dem RP6-M32 mehr Rechenzeit zur Verfügung, da der Controller nicht auch noch mit Motorregelung, ACS, IRCOMM, etc. beschäftigt ist.
RP6 ROBOT SYSTEM - 1. Das RP6 CONTROL M32 Erweiterungsmodul Normalerweise passiert nichts schlimmes wenn Sie sich mal vertun sollten, aber es kann hier für nichts garantiert werden! Der RP6Loader kann nicht unterscheiden für welchen Controller die Programme bestimmt sind, da die Hexfiles alle gleich aufgebaut sind.
RP6 ROBOT SYSTEM - 1. Das RP6 CONTROL M32 Erweiterungsmodul 1.3. Features und technische Daten Dieser Abschnitt gibt einen Überblick darüber, was das RP6 CONTROL M32 zu bieten hat und dient gleichzeitig der Einführung einiger Begriffe und Bezeichnungen von Komponenten des Moduls.
RP6 ROBOT SYSTEM - 1. Das RP6 CONTROL M32 Erweiterungsmodul ● LC-Display Port ◊ Zum Anschluss eines 16x2 Zeichen LC-Displays. Auch andere LC-Displays lassen sich hier anschlißen, z.B. 16x4 o.ä., allerdings lassen sich diese dann nur mit zwei Distanzbolzen befestigen und könnten an einer Seite überstehen... Am besten vor dem Kauf genau ausmessen und passendes Montagematerial mitbestellen! Ausserdem müssen Sie bei anderen Display Formaten als 16x2 evtl.
RP6 ROBOT SYSTEM - 2. Montage des Erweiterungsmoduls 2. Montage des Erweiterungsmoduls Wie Sie das Modul auf dem Roboter befestigen, hängt natürlich davon ab, welche anderen Erweiterungsmodule Sie evtl. bereits auf dem Roboter montiert haben. Um das Modul auf dem Roboter zu montieren, müssen Sie zunächst die vier Schrauben vom Mainboard lösen. Eventuell können Sie auch den kleinen Stecker der Bumperplatine vorsichtig lösen, damit Sie das Mainboard komplett anheben können.
RP6 ROBOT SYSTEM - 2. Montage des Erweiterungsmoduls Wenn Sie zusätzlich das 16x2 Zeichen LC-Display gekauft haben, sollten Sie es VOR der Montage auf dem Roboter an das Erweiterungsmodul anschließen und montieren. Das 14 polige Flachbandkabel des Displays ist sehr flexibel und kann problemlos gefaltet werden. Damit das Kabel gut unter das Display passt, sollten Sie es für das RP6 CONTROL M32 Erweiterungsmodul in etwa wie auf dem Foto gezeigt falten. Dann kann das Display z.B.
RP6 ROBOT SYSTEM - 2. Montage des Erweiterungsmoduls Jetzt können Sie kurz einen kleinen Funktionstest durchführen: Zunächst das am PC angeschlossene USB Interface über das 10 polige Flachbandkabel mit dem PROG/UART Anschluss auf dem RP6-M32 verbinden und den RP6Loader starten. Dann den Roboter anschalten – auf dem LC-Display sollte eine Textnachricht erscheinen und eine der LEDs sollte blinken.
RP6 ROBOT SYSTEM - 3. RP6 CONTROL Library 3.1.1. Mikrocontroller initialisieren void initRP6Control(void) Wie schon von der RP6Lib bekannt, muss diese Funktion IMMER als erstes in der Main Funktion aufgerufen werden! Sie heisst hier nur etwas anders... Die Funktion initialisiert die Hardwaremodule des Mikrocontrollers auf dem RP6-M32. Nur wenn Sie diese Funktion als erstes aufrufen, wird der Mikrocontroller korrekt arbeiten! Ein Teil wird zwar schon vom Bootloader initialisiert, aber nicht alles.
RP6 ROBOT SYSTEM - 3. RP6 CONTROL Library 3.1.3. Taster Anders als z.B. die Bumper, sind die 5 Taster auf dem RP6-M32 an einen ADC Kanal angeschlossen. Das hat den Vorteil, das nur ein Pin für alle 5 Taster benötigt wird. Der Nachteil ist allerdings, dass bei der einfachen Schaltung mit 5 gleichen Widerständen (s. Schaltplan auf der CD-ROM) die wir hier verwenden nur ein Taster gleichzeitig gedrückt werden kann.
RP6 ROBOT SYSTEM - 3. RP6 CONTROL Library 3.1.5. Mikrofonsensor Das RP6 CONTROL kann nicht nur Schall erzeugen, sondern auch darauf reagieren. Zwar nicht auf die Tonhöhe, aber auf die Lautstärke. Man kann z.B. den Roboter bei lauten Geräuschen losfahren lassen. Die Schaltung ist als „Peak Detektor“ ausgelegt. Es wird über einen variablen Zeitraum die Amplitude des Mikrofonsignals gemessen und der Maximalwert gehalten. Dann kann der Mikrocontroller mit einem ADC den Maximalwert messen und danach löschen.
RP6 ROBOT SYSTEM - 3. RP6 CONTROL Library void writeLCDCommand(uint8_t cmd) Diese Funktion ruft write4BitLCDData auf, setzt allerdings die RS Leitung auf low, um einen Befehl an das LCD zu senden. void clearLCD(void) Sendet den Befehl zum Löschen des Display Inhalts an das LCD. void clearPosLCD(uint8_t line, uint8_t pos, uint8_t length) Löscht einen bestimmten Bereich des Displays. Die Parameter sind: Zeile, Startposition in der Zeile und Länge des zu löschenden Bereichs.
RP6 ROBOT SYSTEM - 3. RP6 CONTROL Library on beide Zeilen des LCDs mit nur einem Aufruf beschreiben. Der Cursor wird automatisch richtig platziert und der Inhalt des Displays vorher gelöscht. Beispiel: showScreenLCD("LCD Zeile 1", "LCD Zeile 2"); void writeIntegerLCD(int16_t number, uint8_t base) Die schon von der seriellen Schnittstelle bekannte Funktion um Zahlen in den Formaten BIN, OCT, DEC oder HEX auf dem LCD auszugeben.
RP6 ROBOT SYSTEM - 3. RP6 CONTROL Library Wie gesagt – normalerweise benötigen Sie die SPI Funktionen nicht. Diese werden aber von den im Folgenden beschriebenen Funktionen verwendet, um auf das am SPI Bus angeschlossene EEPROM zuzugreifen. uint8_t SPI_EEPROM_readByte(uint16_t memAddr) Liest ein einzelnes Byte an Adresse „memAddr“ aus dem EEPROM aus. Die Addresse darf bei unserem 32 KB großen EEPROM im Bereich von 0 bis 32767 liegen.
RP6 ROBOT SYSTEM - 3. RP6 CONTROL Library 3.1.8. ADCs Die ADC Kanäle lassen sich mit der schon von der RP6Lib bekannten Funktion: uint16_t readADC(uint8_t channel) auslesen. Eine automatische Variante die der Reihe nach die ADC Kanäle im Hintergrund ausliest gibt es für das RP6-M32 (noch) nicht.
RP6 ROBOT SYSTEM - 3. RP6 CONTROL Library Man kann weiterhin die im Mikrocontroller integrierten Pullup Widerstände aktivieren indem man die Bits im PORTx Register setzt. Das ist z.B. für Tastsensoren oder ähnliche Sensoren sinnvoll. Folgende I/O Pins sind auf dem RP6 CONTROL M32 frei verfügbar (genaue Definition finden Sie in der Header Datei RP6Control.
RP6 ROBOT SYSTEM - 4. Beispielprogramme 4. Beispielprogramme Auf der CD finden Sie einige Beispielprogramme. Diese Beispielprogramme demonstrieren die grundlegenden Funktionen des RP6 CONTROL M32. Genau wie schon beim Roboter stellen sie keinesfalls die optimale Lösung dar und verstehen sich als Ausgangspunkt für eigene Programme. Das ist absichtlich so, damit Ihnen auch noch etwas zu tun bleibt – wäre ja langweilig einfach nur vorgefertige Programme auszuprobieren...
RP6 ROBOT SYSTEM - 4. Beispielprogramme Beispiel 2: Taster und Sound Verzeichnis: \RP6ControlExamples\Example_02_Buttons\ Datei: RP6Control_Buttons.c Das Programm erzeugt Ausgaben auf der seriellen Schnittstelle und auf dem LCDisplay! Der Roboter bewegt sich in diesem Beispielprogramm nicht! Dieses Beispielprogramm demonstriert die Verwendung der 5 Taster auf dem RP6 CONTROL.
RP6 ROBOT SYSTEM - 4. Beispielprogramme Dann wird im Programm die erste Page mit 64 Bytes beschrieben und danach wieder die ersten 128 Bytes gelesen, um zu verifizieren, dass die Bytes auch nur in der ersten Page geschrieben wurden und der Rest des EEPROMs nicht verändert wurde (dann ist der Inhalt jeder Speicherzelle 255). Auch einzelne Bytes können geschrieben und gelesen werden, was im Anschluss demonstriert wird.
RP6 ROBOT SYSTEM - 4. Beispielprogramme Beispiel 6: I²C Bus Interface – Master Modus Verzeichnis: \RP6ControlExamples\Example_06_I2CMaster\ Datei: RP6Control_06_I2CMaster.c Dieses Programm demonstriert wie man den Master Modus des I²C Busses verwenden kann. Der Controller auf dem Roboter Mainboard muss das I2C Slave Beispielprogramm geladen haben! Dieses Programm zeigt, wie man den Controller auf dem Mainboard im Slave Modus steuern kann.
RP6 ROBOT SYSTEM - 4. Beispielprogramme muss in der Hauptschleife immer die task_I2CTWI() Funktion aufgerufen werden, die den Ablauf der I2C Transfers regelt. Daher hätte es keinen großen Vorteil eine Interrupt Routine zu verwenden. Um genau zu sein, würde es sogar Probleme bereiten, denn so könnten bereits laufende I2C Bus Übertragungen unterbrochen werden. Also wird nur die Funktion task_checkINT0() verwendet um ständig das Interrupt Signal auszuwerten und ggf. eine Abfrage zu starten.
RP6 ROBOT SYSTEM - 4. Beispielprogramme Beispiel 8: I²C Bus Interface – kleine RP6 Library Verzeichnis: \RP6ControlExamples\Example_08_I2CMaster\ Datei: RP6Control_08_I2CMaster.c Dieses Programm demonstriert wie man den Master Modus des I²C Busses verwenden kann.
RP6 ROBOT SYSTEM - 4. Beispielprogramme Beispiel 10: I²C Bus Interface – Verhaltensbasierter Roboter Verzeichnis: \RP6ControlExamples\Example_10_Move2\ Datei: RP6Control_10_Move2.c Dieses Programm demonstriert wie man den Master Modus des I²C Busses verwenden kann.
RP6 ROBOT SYSTEM - ANHANG ANHANG A – Anschlussbelegungen In diesem Abschnitt finden Sie die Anschlussbelegungen der wichtigsten Stecker und Lötpads. Der Anschluss der seriellen Schnittstelle hat genau die gleiche Pinbelegung wie auf dem Mainboard. Das gilt natürlich auch für XBUS und USRBUS Anschlüsse! I/O Ports: Am Anschluss I/O sind alle freien I/O Ports und die Betriebsspannung verfügbar. PC2, PC3, PC4, PC5, PC6, PC7, PD5 und PD6.
RP6 ROBOT SYSTEM - ANHANG LCD Anschluss: Wenn Sie nicht das Standard LCD einsetzen möchten, können Sie anhand der nebenstehenden Anschlussbelegung ein eigenes Kabel für das LCD zusammenbauen. Die Leitungen D0, D1, D2 ,D3, RW sind fest mit GND verbunden, da wir das LCD nur im 4 Bit Modus betreiben und nicht davon lesen brauchen.