Skip to main content
Visitor II
December 14, 2018
Question

I am using magnetometer LIS3MDL to work more like a E-Compass. We are measuring azimuth angle. I am not able to get tilt compensation right. Is there any reference design specific to this chip.

  • December 14, 2018
  • 3 replies
  • 1173 views

This is the equation i am trying to use. Please let me know if there is something wrong. I am able to verify pitch and roll variations correctly.

roll= atan(accData.fy/accData.fz);

pitch= atan(-accData.fx/accData.fz);

cosRoll = cos(roll);

sinRoll = sin(roll);

cosPitch = cos(pitch);

sinPitch = sin(pitch);

Xh = (magData.fx)*cosPitch + (magData.fy*sinPitch*sinRoll) + (magData.fz*sinPitch*cosRoll);

Yh = (magData.fz)*sinRoll - (magData.fy)*cosRoll;

magHeading = atan2(Yh, Xh);

We will have to mount this on a metal structure, How can i compensate for soft iron.

Please find the attachment for sensor orientation.

    This topic has been closed for replies.

    3 replies

    ST Employee
    December 17, 2018

    You can use eCompass (MotionEC) and magnetometer calibration library (MotionMC) available in X-CUBE-MEMS1 package.

    https://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32cube-expansion-packages/x-cube-mems1.html

    SVasuAuthor
    Visitor II
    January 3, 2019

    Thank You Miroslav,

    Our team tried to use this library. The library seems to have hardware dependency, and only works for STM 32 controller. We are using LPC5411 controller form NXP.

    Can you point us to some other resource that we can use

    Thank you,

    Sujith Vasudevan.

    ST Employee
    January 6, 2019