AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Accéléromètre 3 axes

Description détaillée

Ce module permet de gérer un accéléromètre 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 :

Graphe de collaboration de Accéléromètre 3 axes:

Fonctions

int iAccelero3dCalibrate (uint16_t usNumOfSamples)
 Calibration de l'accelero. Plus de détails...
 
int iAccelero3dInit (void)
 
int iAccelero3dRead (float *fAcc)
 Lecture des accelérations d'un Accelero. Plus de détails...
 
int iAccelero3dReadRaw (int *iAcc)
 Lecture des accelérations d'un Accelero. Plus de détails...
 
void vAccelero3dAttitude (float *fAtt, const float *fAcc, float fAlpha)
 Calcul des angles de piqué (x) et de roulis (y) par rapport à la verticale à partir des accélérations. Plus de détails...
 
void vAccelero3dSetZero (const int *iZero)
 Modification du calage du zéro. Plus de détails...
 
void vAccelero3dZero (int *iZero)
 Lecture du calage du zéro. Plus de détails...
 

Macros

#define ACCELERO3D_NOT_CALIBRATED   (1)
 Indique que le gyroscope n'a pas été calibré
 

Documentation des fonctions

int iAccelero3dCalibrate ( uint16_t  usNumOfSamples)

Calibration de l'accelero.

Calcul la valeur du zéro par moyennage d'un certains nombre de mesures et stocke le résultat en EEPROM

Paramètres
usNumOfSamplesNombre d'échantillons de mesure utilisés pour le calcul
Renvoie
0 en cas de succès, une valeur négative sur erreur.
int iAccelero3dInit ( void  )

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 ACCELERO3D_NOT_CALIBRATED.

Renvoie
0 en cas de succès, ACCELERO3D_NOT_CALIBRATED si une calibration est nécessaire, une valeur négative sur erreur.
int iAccelero3dRead ( float *  fAcc)

Lecture des accelérations d'un Accelero.

Paramètres
[out]fAccPointeur sur le vecteur dans lequel sont stockées les accelérations (en g)
Renvoie
0 en cas de succès, une valeur négative sur erreur.
int iAccelero3dReadRaw ( int *  iAcc)

Lecture des accelérations d'un Accelero.

Paramètres
[out]iAccPointeur sur le vecteur dans lequel seront stockées les accelérations (en LSB)
Renvoie
0 en cas de succès, une valeur négative sur erreur.
void vAccelero3dAttitude ( float *  fAtt,
const float *  fAcc,
float  fAlpha 
)

Calcul des angles de piqué (x) et de roulis (y) par rapport à la verticale à partir des accélérations.

Paramètres
[in]fAccPointeur sur le vecteur dans lequel sont stockées les accelérations (en g)
[in,out]fAttPointeur sur le vecteur dans lequel seront stockées les angles (x: roulis, y: piqué ou tangage).
fAlphaLa composante z ( $\alpha$) de ce vecteur permet de passer à la fonction le coefficient du filtre numérique passe-bas intégré à la fonction:

\[y_{t} = \alpha \cdot x_{t} - (1 - \alpha) \cdot y_{t - 1}\]

  • $y_{t}$ sortie du filtre (l'accélaration filtrée)
  • $x_{t}$ entrée du filtre (l'accélaration mesurée)
  • $y_{t - 1}$ sortie du filtre au calcul précédent
  • $\alpha$ coefficient du filtre. Plus la valeur de ce paramètre est faible est plus le filtrage sera important.
    La valeur doit être dans l'intervalle ]0 ; 1[ car 1 correspond à une absence de filtrage ( $y_{t} = x_{t}$) et 0 à un filtrage complet du signal d'entrée. En conséquence, les valeurs suivantes de $\alpha$ seront interprétées de la façon suivante :
    • $\alpha=1$ : pas de filtrage
    • $\alpha=0$ : remise à zéro du filtre ( $y_{t} = 0$)
    • $\alpha\in]0,1[$ : filtrage
void vAccelero3dSetZero ( const int *  iZero)

Modification du calage du zéro.

La valeur est aussi stockée en EEPROM afin d'être rechargée lors de l'initialisation.

Paramètres
[in]iZeroPointeur sur le vecteur de zéro
void vAccelero3dZero ( int *  iZero)

Lecture du calage du zéro.

Paramètres
[out]iZeroPointeur sur le vecteur dans lequel sont stockées les accelérations calculées lors du calibrage(en LSB)