Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Rasenmaehroboter Test

AREXX Wild Thumper mit Controller

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

Wild Thumper Maße 1
Wild Thumper Maße 2


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

WTR 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



Weblinks

Einzelne Projekte

Schule, Lehre und Ausbildung



Autoren

--Dirk 20:33, 16. Aug 2017 (CET)


LiFePO4 Speicher Test