I am also using ADXL335 with Arduino UNO and I also need to calibrate my data. I have followed your instruction from the start to here, but when I run your Python and Octave code, I meet the same trouble with Arpit Kumar. My beta values I have got:

5.1922e+002 5.1922e+002 5.1922e+002 1.1130e-003 1.1138e-003 1.1092e-003

I realized that my beta(4), (5) and (6) values are much smaller than yours (about 10 times) and cause my acceleration values smaller than it should be for about 10 times (for example, instead of

0.10 0.10 1.00 now they turn to 0.01 0.01 0.10). Could you please explain me about this difference between your result and mine? Even if I use the result of 6-point calibration you posted in previous post, the beta values are still not the same with ones you posted here.

Thanks a lot,

trungoc

]]>5.1922e+002 5.1922e+002 5.1922e+002 1.1130e-003 1.1138e-003 1.1092e-003

Compare to yours I realize that my beta(4), (5) and (6) are smaller for about 10 times. Could you please explain this for me?

]]>Applying a sensitivity scaling (deltas) transforms the raw accelerometer output to g (gravitational acceleration) units. If no external acceleration is applied to the accelerometer (i.e. when it is still), it will only detect the gravitational acceleration, which measured in g’s is 1.

The formula is merely Phytagoras theorem squared in 3D linear space. To get the resulting acceleration for all three directions, you would apply the square root to it. Since sqrt(1) = 1, the 1 remains intact.

]]>thanks,

Ted

]]>So I have a few questions and wondering if you can answer;

1) Is your calibration method based on gauss-newton also applicable on other accelerometers/magnetometers ? I’m using MPU9150.

2) In BestSphereGaussNewtonCalibrator.cpp the calibrate method，should the change be

change = JtR[0]*JtR[0] + JtR[1]*JtR[1] + JtR[2]*JtR[2] + JtR[3]*JtR[3]/(_beta[3]*_beta[3]) + JtR[4]*JtR[4]/(_beta[4]*_beta[4]) + JtR[5]*JtR[5]/(_beta[5]*_beta[5]);

instead of

change = JtR[0]*JtR[0] + JtR[1]*JtR[1] + JtR[2]*JtR[2] + JtR[3]*JtR[3]*(_beta[3]*_beta[3]) + JtR[4]*JtR[4]*(_beta[4]*_beta[4]) + JtR[5]*JtR[5]*(_beta[5]*_beta[5]);

I’m appreciate for your answer;

thanks,

Ted

]]>Thanks for your great post. Really appreciate your works. ]]>