Partage
  • Partager sur Facebook
  • Partager sur Twitter

Physique, élèctronique et programmation

azimut sur 3 axes d'un magnétomètre

    9 octobre 2020 à 12:15:01

    Bonjour à tous !

    Voici la situation, j'ai un magnétomètre (QMC5883L) et j'aimerai récupérer l'azimut de ce dernier en prenant en compte les 3 axes de rotation.

    Actuellement je récupère la valeur sur 2 axes en me basant sur la formule trouvé sur wikipédia (que je ne comprends pas vraiment mais je fais confiance)

    /*
     *Récupération de l'azimut avec capteur perpendiculaire au sol
    */
    
    int QMC5883L::getAzimuthStand(){
        int a = atan2( getY(), getZ() ) * 180.0 / PI;
        return a < 0 ? 360 + a : a;
    }

    Ce bout de code fonctionne correctement, j'utilise les valeurs en y et z car le capteur n'est pas à plat mais "debout".

    Le problème est que la surface à laquelle est accroché le capteur ne reste pas perpendiculaire au sol constament et l'azimut que je reçois a des variations de l'ordre de 10-20° et j'aimerai avoir une précision au dégré près (ce serai le top).

    Ma question est donc de savoir s'il existe une formule qui prends en compte les 3 axes, ce qui permettrai d'avoir un azimit "compensé" quand le capteur n'est pas parfaitement dans l'axe.

    N'hésitez pas si quelque chose n'est pas clair ou que vous avez besoin de précisions. Merci à vous.

    G.

    -
    Edité par joeletoutffu 9 octobre 2020 à 12:19:31

    • Partager sur Facebook
    • Partager sur Twitter

    Physique, élèctronique et programmation

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown