Bonjour,
j'essaie de faire un simple capteur d'accélération sur l'axe Z, ça fonctionne si le capteur est bien a plat , dès qu'il penche les valeurs ne sont plus bonnes. j'imagine qu'il faut compenser avec les valeurs des deux autre axes , mais malgré mes recherches, je ne trouve pas sur le net.
esp32 dev kit et LSM303AGR.
résumé des principales lignes:
#include <Adafruit_LSM303_Accel.h>
sensors_event_t event;
accel.getEvent(&event);
float aZ = event.acceleration.z;
G = aZ - 9.8;
à mon avis elles sont bonnes, c'est bien la composante de l'accélération sur l'axe de Z que vous recevez
par exemple si votre capteur est immobile et à plat, la composante sur l'axe des Z sera juste la pesanteur. si vous penchez le module, ce vecteur gravité va se répartir en 3 vecteurs sur les 3 axes et la somme de ces 3 vecteurs vous redonne le vecteur de la pesanteur.
si votre capteur est en mouvement avec accélération et rotation, c'est plus compliqué...
Définissez plus clairement ce que vous voulez
PS:
bravo pour l'usage des balises de code mais ne postez pas de snippets (Snippets R Us!)
c'est ce que vous donne le capteur, la projection de l'accélération ressentie par le module sur 3 axes d'un repère orthonormé et dans le référentiel du module
Je vais tenter d’être plus clair
j'aimerais connaitre la valeur en G, par exemple dans une voiture lors de du freinage, d'un virage a droite ou gauche, de l'accélération ou dans un avion aussi quand l'avion pique ou remonte.
Je sais que ca fait plusieurs direction , mais juste une seule valeur qui indiquerait le nombre de G peut importe la direction.
si ax, ay et az sont les accélérations sur les trois axes vous calculez le vecteur résultant de la somme des trois vecteurs accélération et vous avez le sens de l'accélération et en prenant la norme de ce vecteur l'amplitude de cette accélération. Si vous la voulez en G, il faut exprimer les coordonnées vectorielles en G aussi
➜ il vous faut la norme du vecteur en bleu sur le dessin
float G = sqrt(aX * aX + aY * aY + aZ * aZ) / 9.81;
Serial.print("Acceleration en G = ");
Serial.println( G, 2); // Pour afficher 2 chiffres après la virgule