NIBO Library 2.11
|
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 |
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.
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
left | Wert für linkes Rad |
right | Wert 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.
ki | Integralanteil |
kp | Proportionalanteil |
kd | Differentialanteil |
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.
left | Wert für linkes Rad (-1024 ... +1024) |
right | Wert 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);
left | Sollwert für linkes Rad |
right | Sollwert 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
ki | Integralanteil, Standardwert: 6 |
kp | Proportionalanteil, Standardwert: 5 |
kd | Differentialanteil, 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.
left | absoluter Sollwert für linkes Rad |
right | absoluter Sollwert für rechets Rad |
speed | Wert 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);
left | relativer Sollwert für linkes Rad |
right | relativer Sollwert für rechets Rad |
speed | Wert 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)
code | RC5 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().
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.
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.