NIBO Library  2.11
nibo/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

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@nicai-systems.de)
Datum:
2008-11-16

Dokumentation der Funktionen

uint8_t copro_ir_startMeasure ( )

Reflexionsmessung starten

Wird benutzt von nibocc::Copro::ir_start_measure().

uint8_t copro_ir_stop ( )

Aussenden von IR-Licht stoppen, nur Empfang

Wird benutzt von nibocc::Copro::ir_stop().

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

Wird benutzt von nibocc::Copro::reset_odometry().

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)

Wird benutzt von nibocc::Copro::set_pwm().

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
   copro_setSpeed(29, 29);
Parameter:
leftSollwert für linkes Rad
rightSollwert für rechets Rad

Wird benutzt von nibocc::Copro::set_speed().

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

Wird benutzt von nibocc::Copro::set_speed_parameters().

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

Wird benutzt von nibocc::Copro::set_target_abs().

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

Wird benutzt von nibocc::Copro::set_target_rel().

uint8_t copro_stop ( )

Motoren anhalten (passiv Stoppen - rollt aus)

Wird benutzt von nibocc::Copro::stop().

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

Wird benutzt von nibocc::Copro::transmit_rc5().

uint8_t copro_update ( )

Aktualisiert alle Daten

Wird benutzt von nibocc::Copro::update().


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.

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.


Erzeugt am Fre Jun 3 2011 15:48:39 für NIBO Library von doxygen 1.7.4-20110426