NiboRoboLib 3.6 - NIBO Library
copro.h-Dateireferenz

Routinen zum Ansprechen des Coprozessors. Dieses Modul erlaubt den Zugriff auf die Motoransteuerung und die Distanzmessung mittels IR, beide Funktionen sind im ATmega88 integriert. Da die Kommunikation über die SPI Schnittstelle abgewickelt wird, muss vor der Benutzung der Funktionen spi_init() aufgerufen werden. Mehr ...

#include <stdint.h>

gehe zum Quellcode dieser Datei

Aufzählungen

enum  { COPRO_IR_PASSIVE = 0, COPRO_IR_RC5TX = 1, COPRO_IR_MEASURE = 2 }
 

Funktionen

uint8_t copro_update ()
 
uint8_t copro_stop ()
 
uint8_t copro_stopImmediate ()
 
uint8_t copro_setPWM (int16_t left, int16_t right)
 
uint8_t copro_setSpeed (int16_t left, int16_t right)
 
uint8_t copro_setTargetAbs (int16_t left, int16_t right, uint16_t speed)
 
uint8_t copro_setTargetRel (int16_t left, int16_t right, uint16_t speed)
 
uint8_t copro_setSpeedParameters (int8_t kp, int8_t ki, int8_t kd)
 
uint8_t copro_setPositionParameters (int8_t ki, int8_t kp, int8_t kd)
 
uint8_t copro_resetOdometry (int16_t left, int16_t right)
 
uint8_t copro_ir_stop ()
 
uint8_t copro_ir_startMeasure ()
 
uint8_t copro_transmitRC5 (uint16_t code)
 

Variablen

int16_t copro_speed_l
 
int16_t copro_speed_r
 
int16_t copro_ticks_l
 
int16_t copro_ticks_r
 
int16_t copro_current_l
 
int16_t copro_current_r
 
uint16_t copro_target_distance
 
uint8_t copro_ir_mode
 
uint16_t copro_distance [5]
 
uint16_t copro_rc5_cmd
 
uint8_t copro_sysconf [4]
 

Ausführliche Beschreibung

Routinen zum Ansprechen des Coprozessors. Dieses Modul erlaubt den Zugriff auf die Motoransteuerung und die Distanzmessung mittels IR, beide Funktionen sind im ATmega88 integriert. Da die Kommunikation über die SPI Schnittstelle abgewickelt wird, muss vor der Benutzung der Funktionen spi_init() aufgerufen werden.

Autor
Nils Springob (nils@.nosp@m.nica.nosp@m.i-sys.nosp@m.tems.nosp@m..de)
Datum
2008-11-16

Dokumentation der Funktionen

uint8_t copro_ir_startMeasure ( )

Reflexionsmessung starten

uint8_t copro_ir_stop ( )

Aussenden von IR-Licht stoppen, nur Empfang

uint8_t copro_resetOdometry ( int16_t  left,
int16_t  right 
)

Odometriewerte auf angegebene Werte zurücksetzen

Parameter
leftWert für linkes Rad
rightWert für rechets Rad
uint8_t copro_setPositionParameters ( int8_t  ki,
int8_t  kp,
int8_t  kd 
)

Regelungsparameter setzen.

Siehe auch
copro_setTarget und
copro_setTargetRel verwenden jetzt die selben Parameter wie
copro_setSpeed !
Parameter
kiIntegralanteil
kpProportionalanteil
kdDifferentialanteil
Veraltet:
uint8_t copro_setPWM ( int16_t  left,
int16_t  right 
)

PWM Werte für die beiden Motoren setzen. Die PWM Werte sind bei idealisierter Mechanik und Elektonik proportional zum Drehmoment.

Parameter
leftWert für linkes Rad (-1024 ... +1024)
rightWert für rechets Rad (-1024 ... +1024)
uint8_t copro_setSpeed ( int16_t  left,
int16_t  right 
)

Geschwindigkeit für die beiden Motoren setzen. Die Werte werden in Ticks/Sekunde angegeben. 40 Ticks entsprechen einer Radumdrehung. Beispiel:

// mit 29 Ticks/s (=10cm/s) vorwärts fahren
Parameter
leftSollwert für linkes Rad
rightSollwert für rechets Rad
uint8_t copro_setSpeedParameters ( int8_t  kp,
int8_t  ki,
int8_t  kd 
)

Regelungsparameter für

Siehe auch
copro_setTarget,
copro_setTargetRel und
copro_setSpeed setzen. Die Standardwerte sind im Normalfall ausreichend Die Werte werden im EEPROM gespeichert. Weitere Infos im Wiki unter http://www.nibo-roboter.de/wiki/Motorcontroller-Firmware
Parameter
kiIntegralanteil, Standardwert: 6
kpProportionalanteil, Standardwert: 5
kdDifferentialanteil, Standardwert: 7
uint8_t copro_setTargetAbs ( int16_t  left,
int16_t  right,
uint16_t  speed 
)

Zielposition für Räder setzen. Die Werte werden in Ticks angegeben. 40 Ticks entsprechen einer Radumdrehung.

Parameter
leftabsoluter Sollwert für linkes Rad
rightabsoluter Sollwert für rechets Rad
speedWert für maximale Geschwindigkeit
uint8_t copro_setTargetRel ( int16_t  left,
int16_t  right,
uint16_t  speed 
)

Zielposition für Räder setzen. Die Werte werden in Ticks relativ zur aktuellen Position angegeben. 40 Ticks entsprechen einer Radumdrehung.

// mit 29 Ticks/s (=10cm/s) 290 Ticks (1m) vorwärts fahren
copro_setTargetRel(290, 290, 29);

Beispiel für eine Drehung:

// mit 10 Ticks/s (=3cm/s) um 90 Grad drehen:
copro_setTargetRel(27, -27, 10);
Parameter
leftrelativer Sollwert für linkes Rad
rightrelativer Sollwert für rechets Rad
speedWert für maximale Geschwindigkeit
uint8_t copro_stop ( )

Motoren anhalten (passiv Stoppen - rollt aus)

uint8_t copro_stopImmediate ( )

Motoren unverzüglich stoppen (aktiv Stoppen - bremst)

uint8_t copro_transmitRC5 ( uint16_t  code)

Aussenden von IR-Licht stoppen und einen RC5 Code übertragen RC5Code: [SXTAAAAACCCCCC] - 14 bit S: Startbit, immer 1 X: Command Extension Bit, 1: Command 0-63, 0: Command 64-127 T: Toggle Bit, wechselt bei jedem neuen Tastendruck zwischen 0 und 1 AAAAA: 5 Address Bits (0-32) CCCCCC: 6 Command Bits (0-63) bzw. (64-127)

Parameter
codeRC5 Code 0x0000 - 0x1fff, 13 Bit - das Startbit wird automatisch hinzugefügt
uint8_t copro_update ( )

Aktualisiert alle Daten

Variablen-Dokumentation

int16_t copro_current_l

Aktueller Strom im linken Motor in Milli-Ampere, der genaue Umrechnungsfaktor ist 1.0742

int16_t copro_current_r

Aktuelle Strom im rechten Motor in Milli-Ampere, der genaue Umrechnungsfaktor ist 1.0742

uint16_t copro_distance[5]

Aktuelle Reflexionswerte der Distanzsensoren

uint8_t copro_ir_mode

Aktueller Modus des IR-Controllers

uint16_t copro_rc5_cmd

Zuletzt empfangenes RC5 Kommando

int16_t copro_speed_l

Aktuelle Geschwindigkeit des linken Rades in Ticks pro Sekunde, 40 Ticks entsprechen einer Radumdrehung.

int16_t copro_speed_r

Aktuelle Geschwindigkeit des rechten Rades in Ticks pro Sekunde, 40 Ticks entsprechen einer Radumdrehung.

uint8_t copro_sysconf[4]

Systemkonfigurationsdaten

uint16_t copro_target_distance

Verbleibende Distanz zum Ziel bei Durchführung von copro_setTargetAbs() bzw. copro_setTargetRel() Die Distanz ist der maximale Wert von den verbleibenden linken und rechten Ticks.

int16_t copro_ticks_l

Aktuelle Inkrements des linken Rades in Ticks, 40 Ticks entsprechen einer Radumdrehung.

int16_t copro_ticks_r

Aktuelle Inkrements des rechten Rades in Ticks, 40 Ticks entsprechen einer Radumdrehung.