AvrIO
1.4.5
Bibliothèque C modulaire pour ATMEL AVR
|
Ce module permet de gérer un gyroscope 3 axes.
-----— Convention des axes utilisée -----—
La convention utilisée est celle des aéronefs :
En ce qui converne l'accélaration, la convention est que tout axe aligné sur la gravité terrestre vers le bas aura une valeur de +1g. Ainsi les accélérations en g seront :
Fonctions | |
int | iGyro3dAttitude (float *xAtt, const float *xRate, ticks_t xRateTime, float fA) |
Calcul des angles à partir des vitesses angulaires. Plus de détails... | |
int | iGyro3dCalibrate (uint16_t usNumOfSamples) |
Calibration du gyro. Plus de détails... | |
int | iGyro3dInit (void) |
Initialise le module Gyro. Plus de détails... | |
int | iGyro3dRead (float *xRate) |
Lecture des vitesses angulaires d'un Gyro. Plus de détails... | |
int | iGyro3dReadRaw (int *xRate) |
Lecture des vitesses angulaires brutes d'un Gyro. Plus de détails... | |
void | vGyro3dAttidudeClear (float *xAtt) |
Réinitialise le calcul d'attitude. Plus de détails... | |
void | vGyro3dSaveZero (void) |
Sauvegarde du calage du zéro courant en EEPROM. | |
void | vGyro3dSetZero (const int *xZero) |
Modification du calage du zéro. Plus de détails... | |
void | vGyro3dZero (int *xZero) |
Lecture du calage du zéro. Plus de détails... | |
Macros | |
#define | GYRO3D_NOT_CALIBRATED (1) |
Indique que le gyroscope n'a pas été calibré | |
int iGyro3dAttitude | ( | float * | xAtt, |
const float * | xRate, | ||
ticks_t | xRateTime, | ||
float | fA | ||
) |
Calcul des angles à partir des vitesses angulaires.
Requiert le module task et donc un timer kernel (AVRIO_TASK_ENABLE).
[in] | xRate | Pointeur sur le vecteur dans lequel sont stockées les vitesses angulaires (en g) |
[in,out] | xAtt | Pointeur sur le vecteur dans lequel seront stockées les angles (x: roulis, y: piqué ou tangage, z: lacet). |
fAlpha | La composante z ( ) de ce vecteur permet de passer à la fonction le coefficient du filtre numérique passe-bas intégré à la fonction:
|
int iGyro3dCalibrate | ( | uint16_t | usNumOfSamples | ) |
Calibration du gyro.
Calcul la valeur du zéro par moyennage d'un certains nombre de mesures et stocke le résultat en EEPROM
usNumOfSamples | Nombre d'échantillons de mesure utilisés pour le calcul |
int iGyro3dInit | ( | void | ) |
Initialise le module Gyro.
Le circuit est initialisé et la valeur du zéro est chargée de l'EEPROM. Si la valeur stockée en EEPROM est corrompue, la valeur du zéro est remise à zéro et stockée en EEPROM et la fonction retourne GYRO3D_NOT_CALIBRATED.
int iGyro3dRead | ( | float * | xRate | ) |
Lecture des vitesses angulaires d'un Gyro.
[out] | xRate | Pointeur sur le vecteur dans lequel seront stockées les vitesses d'angle (en °/s) |
int iGyro3dReadRaw | ( | int * | xRate | ) |
Lecture des vitesses angulaires brutes d'un Gyro.
[out] | xRate | Pointeur sur le vecteur dans lequel seront stockées les vitesses d'angle en LSB |
void vGyro3dAttidudeClear | ( | float * | xAtt | ) |
Réinitialise le calcul d'attitude.
Réinitialise le vecteur passé en arguments et les filtres passe-bas et d'intégration de la fonction iGyro3dAttitude()
[in,out] | xAtt | Pointeur sur le vecteur dans lequel seront stockées les angles (x: roulis, y: piqué ou tangage, z: lacet). |
void vGyro3dSetZero | ( | const int * | xZero | ) |
Modification du calage du zéro.
La valeur est aussu stockée en EEPROM afin d'être rechargée lors de l'initialisation.
[in] | xZero | Pointeur sur le vecteur de zéro |
void vGyro3dZero | ( | int * | xZero | ) |
Lecture du calage du zéro.
[out] | xZero | Pointeur sur le vecteur dans lequel sont stockées les vitesses calculées lors du calibrage (en LSB) |