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

K (Probleme)
K (Probleme)
Zeile 110: Zeile 110:
 
** Die Application wurde nicht als Administrator gestartet -> Anwendung als Administrator starten.
 
** Die Application wurde nicht als Administrator gestartet -> Anwendung als Administrator starten.
 
* Im Feld "Error" der Application erscheinen Hinweise, dass die Encoder der Motoren 2, 3 und 4 nicht funktionieren:
 
* Im Feld "Error" der Application erscheinen Hinweise, dass die Encoder der Motoren 2, 3 und 4 nicht funktionieren:
** Dies liegt an der aktiven JTAG-Schnittstelle -> Das Programm Wild_Thumper_Motor.c mit der geänderten [[Wild_Thumper#Motor_Library|Motor Library V1.1]] neu kompilieren.
+
** Dies liegt an der aktiven [[Wild_Thumper#JTAG-Schnittstelle|JTAG-Schnittstelle]] -> Das Programm Wild_Thumper_Motor.c mit der geänderten [[Wild_Thumper#Motor_Library|Motor Library V1.1]] neu kompilieren.
 
* Im Feld "Current" der Application steigt der angezeigte Motorstrom für "Front (4)" nicht an, auch wenn der vordere rechte Motor 4 mit voller Beschleunigung läuft:
 
* Im Feld "Current" der Application steigt der angezeigte Motorstrom für "Front (4)" nicht an, auch wenn der vordere rechte Motor 4 mit voller Beschleunigung läuft:
 
** Dies liegt an einem falsch bestückten Widerstand auf der WTR-CK1 Platine. Der Widerstand R17 (6k2) wurde (auf meiner Platine!) mit 47k bestückt -> Dieser Fehler kann leider nur korrigiert werden, indem der falsche Widerstand ausgelötet und durch einen [https://www.conrad.de/de/dickschicht-widerstand-62-k-smd-0805-0125-w-1-100-ppm-samsung-electro-mechanics-rc2012f6201cs-rc2012f622cs-1-st-443985.html Widerstand 6k2 (SMD 0805)] ersetzt wird.
 
** Dies liegt an einem falsch bestückten Widerstand auf der WTR-CK1 Platine. Der Widerstand R17 (6k2) wurde (auf meiner Platine!) mit 47k bestückt -> Dieser Fehler kann leider nur korrigiert werden, indem der falsche Widerstand ausgelötet und durch einen [https://www.conrad.de/de/dickschicht-widerstand-62-k-smd-0805-0125-w-1-100-ppm-samsung-electro-mechanics-rc2012f6201cs-rc2012f622cs-1-st-443985.html Widerstand 6k2 (SMD 0805)] ersetzt wird.

Version vom 13. Dezember 2015, 16:36 Uhr

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

Windows Application

WTR 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" durch "OK" ersetzt wird und unter "Battery Voltage" die Akkuspannung angezeigt wird, steht die Verbindung zum WTR.

Nun kann der WTR vom PC aus getestet und ferngesteuert werden.

Probleme
  • Die Windows Application Wild Thumper kann nicht gestartet werden:
    • Ein Virenscanner und/oder eine Firewall verhindert die Ausführung -> Die Application in die Ausnahmeliste des Virenscanners / der Firewall aufnehmen.
    • Die Application wurde nicht als Administrator gestartet -> Anwendung als Administrator starten.
  • Im Feld "Error" der Application erscheinen Hinweise, dass die Encoder der Motoren 2, 3 und 4 nicht funktionieren:
  • Im Feld "Current" der Application steigt der angezeigte Motorstrom für "Front (4)" nicht an, auch wenn der vordere rechte Motor 4 mit voller Beschleunigung läuft:
    • Dies liegt an einem falsch bestückten Widerstand auf der WTR-CK1 Platine. Der Widerstand R17 (6k2) wurde (auf meiner Platine!) mit 47k bestückt -> Dieser Fehler kann leider nur korrigiert werden, indem der falsche Widerstand ausgelötet und durch einen Widerstand 6k2 (SMD 0805) ersetzt wird.
  • Im Feld "Communication test" zeigt der "Test RF" meistens an, dass der Test fehlerhaft verlaufen ist, obwohl die Funkverbindung mit den APC-220 Dongles anscheinend gut funktioniert:
    • Dies liegt an einer zu kurzen Pause in der Funktion "RF-Test()" des Programms Wild_Thumper_Main.c -> Den Befehl "mSleep(110);" dort ändern in "mSleep(120);" und das Programm neu kompilieren.

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



Weblinks

Einzelne Projekte

Schule, Lehre und Ausbildung



Autoren

--Dirk 17:01, 06. Sep 2015 (CET)


LiFePO4 Speicher Test