Dirk (Diskussion | Beiträge) K (→Port-Verwendung) |
Dirk (Diskussion | Beiträge) K (→Motor) |
||
Zeile 974: | Zeile 974: | ||
** Timer 1 OVF Interrupt für Delays, Stopwatches ... | ** Timer 1 OVF Interrupt für Delays, Stopwatches ... | ||
** Funktion PID_ResetIntegrator() hinzugefügt (für PID Controller) | ** Funktion PID_ResetIntegrator() hinzugefügt (für PID Controller) | ||
− | ** Makros PULSE_MM, PULSE_CM und | + | ** Makros PULSE_MM, PULSE_CM und PULSE_M hinzugefügt |
** Makros nop() und sysSleep() hinzugefügt | ** Makros nop() und sysSleep() hinzugefügt | ||
** Namen der Variablen Typen geändert zu ISO C99 | ** Namen der Variablen Typen geändert zu ISO C99 |
Version vom 16. August 2017, 19:31 Uhr
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
Einrichtung
Siehe hier!
Motor
Main
Windows Application
Installation
Siehe hier!
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 | Z_ACC | HDR4: 4 | ADC_Z_ACC * | ||
PA5 | ADC5/PCINT5 | In | 0 | Y_ACC | HDR4: 3 | ADC_Y_ACC * | ||
PA6 | ADC6/PCINT6 | In | 0 | X_ACC | HDR4: 2 | ADC_X_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
Die hier vorgestellten Software Projekte (Libraries, Demos) für den WTR findet ihr auch in der Datei WTR_Software.zip!
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
Config Main | Main | Main UART | Config Motor | Motor | Motor UART | Config | I2C Master | I2C Slave |
2.1 | 2.1 | 1.1 | 2.2 | 2.2 | 1.0 | 2.2 | 1.0 | 1.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: ALPHA!!!
- 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_M 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
Das Programm im Main Controller bestimmt, wie sich der WTR bewegt bzw. auf seine Umwelt reagiert. Zur Vereinfachung der Programme wird eine Main Library benötigt. Der Main Controller wird als I2C Master arbeiten, d.h. er sendet Befehle an den I2C Slave über den I2C Bus. I2C Slave ist der Motor Controller.
Die aktuelle Library für den Main Controller baut auf der mitgelieferten Library (Version 1.0) auf, enthält aber folgende Änderungen/Verbesserungen/Fehlerbeseitigungen:
- AKTUELLE Version 2.1 (08.10.2015):
- LED- und Textanzeige kann jetzt ausgeschaltet werden
- Kleinere Änderungen
- Version 2.0 (07.10.2015):
- PINB0/1 (BUMPER1/2) jetzt als EINGÄNGE definiert
- Makros nop() und sysSleep() hinzugefügt
- Namen der Variablen Typen geändert zu ISO C99
- Unnötige Includes und Defines entfernt
- Funktion delayCycles() und Makro delay_us() hinzugefügt
- Universelle timer Variable mit 100µs Auflösung hinzugefügt
- JTD Bit in MCUCR gesetzt (JTAG deaktiviert!) im Makro portInit()
- Kleinere Änderungen
- Version 1.2 (26.08.2015):
- Kleinere Änderungen
- Version 1.1 (12.08.2015):
- ACS_Check_Right() -> LED8, ACS_Check_Front_Right() -> LED9
WT_Config_Main.h
WildThumperLib_Main.h
WildThumperLib_Main.c
WT_UART
Die UART Library für den Main Controller wurde bisher nur geringfügig angepasst, um sie für die neuen Programme ab Version V2 nutzen zu können.
- AKTUELLE Version 1.1 (11.12.2015):
- Kompatibilität mit den neuen Main Programmen V2
Common
WT_Config.h
WT_I2Cmaster
WT_I2Cslave
Demo-Programme
AVR-GCC
Motor
Main
Windows Application
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 18:41, 13. Dez 2015 (CET)