Inhaltsverzeichnis
Allgemein
In diesem Artikel geht es um die Programmierung des AREXX Wild Thumper Roboters (JSR-6WD) mit AREXX Wild Thumper Controller (WTR-CK1).
Zu den Grundlagen des Wild Thumper Roboters ("WTR") gibt es eine eigene Seite.
RobotLoader
Der RobotLoader ist die Weiterentwicklung des RP6Loaders.
Loader Versionen
Hier eine Tabelle der (mir) bekannten RobotLoader Versionen für den Wild Thumper Controller:
ZIP-Datum | Version | Bemerkungen | Examples |
16.06.2011 | 1.6b | Version auf der AREXX Wild Thumper CD-ROM! | ab Juli 2011 |
Hinweise: Neuere Versionen des RobotLoaders ab Version 2.0 findet ihr hier.
Projekte
Siehe hier!
Dokumentation
Manuals
Die "Anleitung" zum WTR gibt es hier.
Die Anleitung zum WTR-CK1 könnt ihr hier herunterladen.
Schematics
Einen Schaltplan zum WTR gibt es nicht. Die Stromkabel der rechten und linken Motoren sind bei Auslieferung jeweils an einer Lüsterklemmen-Leiste parallel geschaltet, siehe die Abb. "Lüsterklemmen-Leiste" in diesem Abschnitt!. Am Ende dieses Abschnitts zeigt die Abb. "Encoderstecker" die Belegung der Encoderstecker. Die Schaltung der Encoder-Motoren des WTR könnt ihr hier herunterladen.
Die Schaltpläne zum WTR-CK1 sind in der Anleitung von Seite 63 bis 67 einzusehen.
Datasheets
Das Datenblatt der WTR Motoren könnt ihr hier herunterladen.
Die Datenblätter relevanter Bauteile des WTR-CK1 sind im Ordner \Datasheets der CD-ROM zum Controller enthalten. Sie sind darüber hinaus problemlos kostenfrei im Internet erhältlich.
Demo-Programme
AVR-GCC
Windows Application
Installation
Auf der Wild Thumper CD-ROM AREXX WTR-CK1 befindet sich die Windows Application im Verzeichnis \Software\WT_install.
Die Datei heisst "setup.exe". Sie ist unter Windows XP mit Service Pack 2 nutzbar, mit nachfolgenden Windows Versionen ggf. nur im Kompatibilitätsmodus.
Unter Windows 10 Home (64-bit) sieht die Installation laut Patrick WTR z.B. so aus:
- Microsoft Visual Basic Power Packs 3.0 hier herunterladen und installieren.
- Microsoft Visual Basic Power Packs 10.0 hier herunterladen und installieren.
- Den PC neu starten.
- Virenscanner (z.B. Avast) vorübergehend deaktivieren.
- Mit Rechtsklick auf setup.exe das Kontextmenü der Datei öffnen:
- "Eigenschaften" anklicken.
- Den Reiter "Kompatibilität" wählen.
- Unter "Kompatibilitätsmodus" im dortigen Kästchen einen Haken setzen und "Windows XP (Service Pack 2)" auswählen.
- Auf "Übernehmen" und "Ok" klicken.
- setup.exe als Administrator ausführen.
HINWEIS: In Windows 10 gehört der dotNetFix 4.0 Client zum Betriebssystem. Wenn dies nicht der Fall sein sollte, muss der Client noch aus dem Verzeichnis \Software\WT_install\dotnetfx40client installiert werden.
Mit der Windows Application Wild Thumper kann der WTR nun ferngesteuert werden.
Voraussetzungen:
- Die APC-220 Dongles sind auf dem WTR und auf dem USB-Interface montiert.
- Das USB-Interface ist (via USB) mit dem Windows PC verbunden.
- Im Main Mikrocontroller läuft das Programm Wild_Thumper_Main.hex.
- Im Motor Mikrocontroller läuft das Programm Wild_Thumper_Motor.hex.
Verbinden:
- Main und Motor Programm mithilfe des RobotLoaders starten, danach den USB-Port schließen.
- Auf der Main Seite der Application den COM-Port wählen und auf "Connect" klicken.
- Im Feld "Status" unter "Wireless dongle" erscheint "Found", wenn die Verbindung zum APC-220 Dongle auf dem USB-Interface hergestellt werden konnte.
- Wenn im Feld "Status" unter "Connection Wild Thumper" und "Status Wild Thumper" der Text "No Signal" verschwindet und unter "Battery Voltage" die Akkuspannung angezeigt wird, steht die Verbindung zum WTR.
Entwicklung
Library
Die Libraries für den WTR-CK1 bestehen aus folgenden 14 Dateien:
Library | Datei | Funktion |
Main | WT_Config_Main.h | Main Konfiguration |
Main | WildThumperLib_Main.h | Main Library Header |
Main | WildThumperLib_Main.c | Main Library Source |
Main UART | WT_UART.h | Main UART Funktionen Header |
Main UART | WT_UART.c | Main UART Funktionen Source |
Motor | WT_Config_Motor.h | Motor Konfiguration |
Motor | WildThumperLib_Motor.h | Motor Library Header |
Motor | WildThumperLib_Motor.c | Motor Library Source |
Motor UART | WT_UART.h | Motor UART Funktionen Header |
Motor UART | WT_UART.c | Motor UART Funktionen Source |
I2C Master | WT_I2Cmaster.h | I2C Master Funktionen Header |
I2C Master | WT_I2Cmaster.c | I2C Master Funktionen Source |
I2C Slave | WT_I2Cslave.h | I2C Slave Funktionen Header |
I2C Slave | WT_I2Cslave.c | I2C Slave Funktionen Source |
Versionen
Hier eine Tabelle der (mir) bekannten Library Versionen des WTR-CK1:
Version | Config Main | Main | Main UART | Config Motor | Motor | Motor UART | I2C Master | I2C Slave |
1.0 * | 13.07.2011 | 11.07./18.07.2011 | 08.07.2011 | 30.06.2011 | 18.07.2011 | 28.06.2011 | 01.12./16.12.2010 | 25.11./01.12.2010 |
Zu *: Auf der Wild Thumper Controller CD-ROM!
Motor
Die Wild Thumper Motor Library besteht aus der Motor und der Motor UART Library.
WildThumperLib_Motor
Bug-Report
Konfiguration
Port-Verwendung
Die Verwendung der Ports des WTR-CK1 Motor Microcontrollers wird festgelegt in der Header-Datei "WT_Config_Motor.h". In dieser Datei wird auch noch Folgendes aufgeführt:
- Quarzfrequenz (F_CPU)
- True/false Definition
- Definitionen für das APC-220 Funkmodul (?)
Hier eine Tabelle mit den Port-Definitionen für den Motor Microcontroller des WTR-CK1:
Erklärung der Spalten: Port -> Atmel Portpin Bezeichnung Name -> Atmel Funktionsbezeichnung In/Out -> Eingang (In) oder Ausgang (Out) Pullup -> Falls Eingang: Pullup ein- (1) oder ausgeschaltet (0) Wert -> Falls Ausgang: Logikpegel high (1) oder low (0) Funktion -> Schnittstellenfunktion Bezeichnung -> Portpin Bezeichnung der Library Stecker -> Portpin verfügbar an STECKER: Pin Anmerkungen -> Kommentare (ADC_xx: ADC-Kanal Bezeichnung)
Port | Name | In/Out | Pullup | Wert | Funktion | Bezeichnung | Stecker | Anmerkungen |
PA0 | ADC0/PCINT0 | In | 0 | I_MOTOR6 | ADC_MOTOR6 | |||
PA1 | ADC1/PCINT1 | In | 0 | I_MOTOR5 | ADC_MOTOR5 | |||
PA2 | ADC2/PCINT2 | In | 0 | I_MOTOR4 | ADC_MOTOR4 | |||
PA3 | ADC3/PCINT3 | In | 0 | I_MOTOR3 | ADC_MOTOR3 | |||
PA4 | ADC4/PCINT4 | In | 0 | I_MOTOR2 | ADC_MOTOR2 | |||
PA5 | ADC5/PCINT5 | In | 0 | I_MOTOR1 | ADC_MOTOR1 | |||
PA6 | ADC6/PCINT6 | In | 1 | EF_MOTOR2 | Fehler Motor 2 | |||
PA7 | ADC7/PCINT7 | In | 1 | EF_MOTOR1 | Fehler Motor 1 | |||
PB0 | T0/XCK/PCINT8 | In | 1 | EF_MOTOR5 | Fehler Motor 5 | |||
PB1 | T1/CLKO/PCINT9 | In | 1 | EF_MOTOR4 | Fehler Motor 4 | |||
PB2 | AIN0/INT2/PCINT10 | In | 1 | EF_MOTOR3 | Fehler Motor 3 | |||
PB3 | AIN1/OC0A/PCINT11 | Out | 0 | MOTOR2_PWM | PWM Motor 2 | |||
PB4 | SS/OC0B/PCINT12 | Out | 0 | MOTOR1_PWM | PWM Motor 1 | |||
PB5 | MOSI/ICP3/PCINT13 | Out | 0 | ISP | SR_DATA | HDR1: 4 | ISP MOSI | |
PB6 | MISO/OC3A/PCINT14 | Out | 0 | ISP | SR_STR | HDR1: 1 | ISP MISO | |
PB7 | SCK/OC3B/PCINT15 | Out | 0 | ISP | SR_SCK | HDR1: 3 | ISP SCK | |
PC0 | SCL/PCINT16 | In | 0 | I2C-Bus | I2C_SCL | HDR2: 7, 8 | I2C SCL | |
PC1 | SDA/PCINT17 | In | 0 | I2C-Bus | I2C_SDA | HDR2: 5, 6 | I2C SDA | |
PC2 | TCK/PCINT18 | Out | 0 | JTAG | I2C_INT | HDR2: 9, 10 | I2C Interrupt ** | |
PC3 | TMS/PCINT19 | In | 0 | JTAG | SIG_MOTOR4 | J11: 2 | Encoder Motor 4 ** | |
PC4 | TDO/PCINT20 | In | 0 | JTAG | SIG_MOTOR3 | J8: 2 | Encoder Motor 3 ** | |
PC5 | TDI/PCINT21 | In | 0 | JTAG | SIG_MOTOR2 | J7: 2 | Encoder Motor 2 ** | |
PC6 | TOSC1/PCINT22 | In | 0 | SIG_MOTOR1 | J4: 2 | Encoder Motor 1 | ||
PC7 | TOSC2/PCINT23 | In | 1 | EF_MOTOR6 | Fehler Motor 6 | |||
PD0 | RXD0/PCINT24 | In | 1 | UART0 | RX_MOTOR | HDR3: 2 | UART0 RX | |
PD1 | TXD0/PCINT25 | Out | 0 | UART0 | TX_MOTOR | HDR3: 3 | UART0 TX | |
PD2 | RXD1/INT0/PCINT26 | In | 0 | UART1 | SIG_MOTOR6 | J15: 2 | Encoder Motor 6 | |
PD3 | TXD1/INT1/PCINT27 | In | 0 | UART1 | SIG_MOTOR5 | J12: 2 | Encoder Motor 5 | |
PD4 | XCK1/OC1B/PCINT28 | Out | 0 | MOTOR6_PWM | PWM Motor 6 | |||
PD5 | OC1A/PCINT29 | Out | 0 | MOTOR5_PWM | PWM Motor 5 | |||
PD6 | ICP/OC2B/PCINT30 | Out | 0 | MOTOR4_PWM | PWM Motor 4 | |||
PD7 | OC2A/PCINT31 | Out | 0 | MOTOR3_PWM | PWM Motor 3 |
Zeichen: ** JTAG muss deaktiviert werden! Abkürzungen der IO-Stecker (Spalte Stecker): HDR1 ISP-2X3HDR HDR2 I2C-2X5HDR HDR3 UART-2X5HDR
Timer-Nutzung
Timer 0
Timer 1
Timer 2
WT_UART
Main
Die Wild Thumper Main Library besteht aus der Main und der Main UART Library.
WildThumperLib_Main
Bug-Report
Konfiguration
Port-Verwendung
Die Verwendung der Ports des WTR-CK1 Main Microcontrollers wird festgelegt in der Header-Datei "WT_Config_Main.h". In dieser Datei wird auch noch Folgendes aufgeführt:
- Quarzfrequenz (F_CPU)
- True/false Definition
- Definitionen für das APC-220 Funkmodul
Hier eine Tabelle mit den Port-Definitionen für den Main Microcontroller des WTR-CK1:
Erklärung der Spalten: Port -> Atmel Portpin Bezeichnung Name -> Atmel Funktionsbezeichnung In/Out -> Eingang (In) oder Ausgang (Out) Pullup -> Falls Eingang: Pullup ein- (1) oder ausgeschaltet (0) Wert -> Falls Ausgang: Logikpegel high (1) oder low (0) Funktion -> Schnittstellenfunktion Bezeichnung -> Portpin Bezeichnung der Library Stecker -> Portpin verfügbar an STECKER: Pin Anmerkungen -> Kommentare (ADC_xx: ADC-Kanal Bezeichnung)
Port | Name | In/Out | Pullup | Wert | Funktion | Bezeichnung | Stecker | Anmerkungen |
PA0 | ADC0/PCINT0 | In | 0 | BAT_VOLTAGE | HDR4: 8 | ADC_BAT_VOLTAGE | ||
PA1 | ADC1/PCINT1 | In | 0 | LDR1 | HDR4: 7; HDR5: 8 | ADC_LDR1 (links) | ||
PA2 | ADC2/PCINT2 | In | 0 | LDR2 | HDR4: 6; HDR5: 10 | ADC_LDR2 (rechts) | ||
PA3 | ADC3/PCINT3 | In | 0 | TEMPERATURE | HDR4: 5 | ADC_TEMPERATURE | ||
PA4 | ADC4/PCINT4 | In | 0 | X_ACC | HDR4: 4 | ADC_X_ACC * | ||
PA5 | ADC5/PCINT5 | In | 0 | Y_ACC | HDR4: 3 | ADC_Y_ACC * | ||
PA6 | ADC6/PCINT6 | In | 0 | Z_ACC | HDR4: 2 | ADC_Z_ACC * | ||
PA7 | ADC7/PCINT7 | In | 0 | BUTTON | HDR4: 1 | ADC_BUTTON (Taster S2) | ||
PB0 | T0/XCK/PCINT8 | Out ² | 1 | BUMPER1 | HDR6: 8; HDR5: 12 | Bumper rechts | ||
PB1 | T1/CLKO/PCINT9 | Out ² | 1 | BUMPER2 | HDR6: 7; HDR5: 11 | Bumper links | ||
PB2 | AIN0/INT2/PCINT10 | In | 0 | IR_RECEIVER | HDR6: 6 | IR Empfänger (TSOP) | ||
PB3 | AIN1/OC0A/PCINT11 | Out | 1 | IR_H | HDR6: 5; HDR5: 6 | ACS Sendedioden HiPwr | ||
PB4 | SS/OC0B/PCINT12 | Out | 1 | IR_L | HDR6: 4; HDR5: 4 | ACS Sendedioden LoPwr | ||
PB5 | MOSI/ICP3/PCINT13 | Out | 0 | ISP | MOSI | HDR6: 3; HDR11: 4 | ISP MOSI | |
PB6 | MISO/OC3A/PCINT14 | In | 0 | ISP | MISO | HDR6: 2; HDR11: 1 | ISP MISO | |
PB7 | SCK/OC3B/PCINT15 | Out | 0 | ISP | SCK | HDR6: 1; HDR11: 3 | ISP SCK | |
PC0 | SCL/PCINT16 | In | 0 | I2C-Bus | SCL_PC | HDR7: 8; HDR12: 7, 8 | I2C SCL | |
PC1 | SDA/PCINT17 | In | 0 | I2C-Bus | SDA_PC | HDR7: 7; HDR12: 5, 6 | I2C SDA | |
PC2 | TCK/PCINT18 | In | 1 | JTAG | TCK | HDR7: 6; HDR13: 1 | ** | |
PC3 | TMS/PCINT19 | In | 1 | JTAG | TMS | HDR7: 5; HDR13: 5 | ** | |
PC4 | TDO/PCINT20 | In | 1 | JTAG | TDO | HDR7: 4; HDR13: 3 | ** | |
PC5 | TDI/PCINT21 | In | 1 | JTAG | TDI | HDR7: 3; HDR13: 9 | ** | |
PC6 | TOSC1/PCINT22 | Out | 1 | ACS__LF | HDR7: 2; HDR5: 7 | ACS Sendediode vorn links | ||
PC7 | TOSC2/PCINT23 | Out | 1 | ACS__L | HDR7: 1; HDR5: 9 | ACS Sendediode links | ||
PD0 | RXD0/PCINT24 | In | 1 | UART0 | RX_MAIN | HDR8: 8; HDR14: 2 | UART0 RX | |
PD1 | TXD0/PCINT25 | Out | 0 | UART0 | TX_MAIN | HDR8: 7; HDR14: 3 | UART0 TX | |
PD2 | RXD1/INT0/PCINT26 | In | 0 | UART1 | RX_APC | HDR8: 6; APC: 4 | UART1 RX | |
PD3 | TXD1/INT1/PCINT27 | Out | 0 | UART1 | TX_APC | HDR8: 5; APC: 5 | UART1 TX | |
PD4 | XCK1/OC1B/PCINT28 | Out | 1 | SET_APC | HDR8: 4; APC: 7 | APC-220 SET | ||
PD5 | OC1A/PCINT29 | Out | 1 | ACS__RF | HDR8: 3; HDR5: 5 | ACS Sendediode vorn rechts | ||
PD6 | ICP/OC2B/PCINT30 | Out | 1 | ACS__R | HDR8: 2; HDR5: 3 | ACS Sendediode rechts | ||
PD7 | OC2A/PCINT31 | In | 0 | I2C_INT | HDR8: 1; HDR12: 9, 10 | I2C Interrupt |
Zeichen: * Frei, da U13 (Accelerometer) nicht bestückt ist! ** Frei, wenn JTAG deaktiviert wird! ² Anmerkung: Sollte eher In sein! Abkürzungen der IO-Stecker (Spalte Stecker): HDR11 ISP-2X3HDR HDR12 I2C-2X5HDR HDR13 JTAG-2X5HDR HDR14 UART-2X5HDR APC APC-220 Sockel
Timer-Nutzung
Timer 0
Timer 1
Timer 2
WT_UART
Common
WT_I2Cmaster
WT_I2Cslave
Projekte
Libraries
Hier sollen die Libraries für den Wild Thumper mit WTR-CK1 Controller weiter entwickelt werden. In diesem Abschnitt sind immer meine neuesten Versionen (ab Version 2.0) zu finden.
Versionen
Version | Config Main | Main | Main UART | Config Motor | Motor | Motor UART | Config | I2C Master | I2C Slave |
2.0 |
Config
WT_Config.h
Motor
Am Anfang der Entwicklung neuer Libraries für den WTR mit WTR-CK1 Controller steht die Library für den Motor Controller. Dieser Controller wird als I2C Slave arbeiten, d.h. er nimmt Befehle vom I2C Master über den I2C Bus entgegen. I2C Master ist der Main Controller.
Die aktuelle Library für den Motor Controller baut auf der mitgelieferten Library (Version 1.0) auf, enthält aber folgende Änderungen/Verbesserungen/Fehlerbeseitigungen:
- AKTUELLE Version 2.2 (08.10.2015):
- PID Controller Task hinzugefügt
- Drive Control Task hinzugefügt mit 5 Kontroll-Modes: OFF (keine Kontrolle), DIRECT (PWM = SetPoint), PID (Kontrolle durch PID Controller), SOFT (verzögertes Beschleunigen/Abbremsen), SOFTPID (SOFT & PID)
- Aktueller Stand: TESTPHASE!!!
- Version 2.1 (18.09.2015):
- Aufruf des PID Controllers in festem Zeit-Intervall
- Kleinere Änderungen im PID Controller Code
- Encoder Impuls-Auswertung neu geschrieben
- Version 2.0 (06.09.2015):
- Hardware PWM zur Ansteuerung der Motoren (anstelle von Software PWM)
- Timer 1 OVF Interrupt für Delays, Stopwatches ...
- Funktion PID_ResetIntegrator() hinzugefügt (für PID Controller)
- Makros PULSE_MM, PULSE_CM und PULSE_MM hinzugefügt
- Makros nop() und sysSleep() hinzugefügt
- Namen der Variablen Typen geändert zu ISO C99
- Unnötige Includes und Defines beseitigt
- Funktion delayCycles() und Makro delay_us() hinzugefügt
- Universelle Timer Variable mit 100µs Auflösung hinzugefügt
- Version 1.2 (26.08.2015):
- Entfernungs-Zähler (Motoren 2 und 5) hinzugefügt
- WTR Config Header Datei (WT_Config.h) hinzugefügt
- Abweichung der Stopwatches um 10% berichtigt
- Version 1.1 (19.08.2015):
- ISR(PCINT2_vect) und ISR(PCINT3_vect) verbessert, um die Quadratur-Encoder des WTR (anstelle der WTR-CK1 Radencoder) nutzen zu können
- JTAG Schnittstelle deaktiviert
- Hinweis: Die Änderungen dieser Version gegenüber der Version 1.0 werden im Abschnitt Anpassen der Libraries - Motor Library beschrieben!
WT_Config_Motor.h
WildThumperLib_Motor.h
WildThumperLib_Motor.c
WT_UART
Main
WT_Config_Main.h
WildThumperLib_Main.h
WildThumperLib_Main.c
WT_UART
Common
WT_Config.h
WT_I2Cmaster
WT_I2Cslave
Demo-Programme
Motor
Main
Erfahrungsberichte
Siehe auch
- Wild Thumper
- RP6
- RP6 - Programmierung
- RP6v2
- RP6 Sensor Board und Xtra Module
- RP6 Kamera - Mitmach-Projekt
- RP6v2 I2C-Portexpander
- RP6v2 USB-RS232-Adapter
- RP6v2 Orientierung
- RP6 Multi IO Projekt
- RP6 Multi IO Projekt - Software
- RP6 ArduIO
- RP6 ArduIO - Software
- Induktive Ladestation für den RP6
- IR-bake für den RP6
- CCRP5
- Yeti
- Asuro
- C't-Bot
Weblinks
Einzelne Projekte
Schule, Lehre und Ausbildung
Autoren
--Dirk 17:01, 06. Sep 2015 (CET)