BMX160 PITCH,ROLL AND YAW

Hi everyone,

I worked on BMX160 IMU last few days, Till now i am able to get Raw readings of it like ACC(X,Y,Z),GYRO (X,Y,Z)and MAG(X,Y,Z) sensor.

I confirmed raw readings of ACC and GYRO are correct or not by placing sensor at rest state and then raw readings are came like acc: 0,0,-/+1 and

gyro: 0,0,0.(datasheet page no:106) but i didnot find any thing which is related to confirm Raw MAG readings are correct or not?

And also i converted Acc and Gyro raw readings in to gravity,m/s^2 by using below formulas,

//Here 2 is for 2g and 32768 for 16 bit value because ACC raw data is in 16 bit value 

Ax = (acc_raw_x * 2)/32768;

Ay = (acc_raw_y * 2)/32768;

Az = (acc_raw_z * 2)/32768;

//Here 250 is for 250dps and 32768 for 16 bit value because Gyro  raw data is in 16 bit value 

Gx = (gyro_raw_x * 250)/32768;

Gy = (gyro_raw_y * 250)/32768;

Gz = (gyro_raw_z * 250)/32768;

1) Can you please help me to find MAG Raw data correct or not?

2) I am just reading raw data from six registers of MAG(0x04 -0x09)?is it correct?

3) In BMX160 Datasheet for reading MAG data procedure given like below attached imge

 

4) What is bmi160 API for doing above image task? i did not find any API in bmi160.c file like above image suggested ?

5)  What king of fusion algorithm/filters  can i use to find pitch,roll and yaw from above readings?

Please help me to come out of this issue.

Thank you,

Amarr

 

 

 

Best reply by Minhwan

Hello Amar,

 

I don't think your code is bosch made. 

Let me explain based on our github source. 

Here is the our BMX160 source code as below. ( There is explanation about BMX160 in BMI160 github)

https://github.com/BoschSensortec/BMI160_driver

And when you call bmm150_aux_mag_data, there is compensation process. 

Then, you can get compensated data. 

Thanks, 

View original
11 replies
Resolved