cancel
Showing results for 
Search instead for 
Did you mean: 

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.

SVasu
Associate

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.

3 REPLIES 3
Miroslav BATEK
ST Employee

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

SVasu
Associate

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.

Miroslav BATEK
ST Employee