Skip to main content
SVasu
Associate
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.

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

SVasu
SVasuAuthor
Associate
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