Small angle sine approximation doesn't work that well for angles in degrees.
so each "bit" corresponds to 1/256g. or 90/256 ~= 0.4 degree, in theory.In reality, you would be lucky to get to within 2-3 degrees.
we can calculate orientation (from -90° to 90°) on one axes byasin(val);where val HAVE to be from -1 to 1, somaxValue = 1024half=maxValue/2; //because we have value from 0 to 1024, 0 is -G, 1024is +G and 512 is 0Gval = (rawRead-half)/half; //the /zero assure that we will have a result in range of -1, +1(notice you have to use acos if this axis is parallel to gravity vector, so asin for x and y, acos for Z)now we have to set our precision. with a precision of +-4g, 1g = 512/4 = 128LSB so 1LSB = 1/128 Gprecision now is asin(0) - asin(1/128)asin of 0 is 0 (how convenient!)asin of (1/128) is 0.44°, so 0.44° is your precisionbut we don't need 4g, because any value above 1G is just noise from acceleration, so we can use the lowest resolution witch is +-2G, 1G= 512/2=256LSB, so 1LSB=1/256asin(1/256) = 0.22°
The number to look for is the sensitivity figure. This particular chip has the max sensitivity ratings of 256lsb/g, so each "bit" corresponds to 1/256g. or 90/256 ~= 0.4 degree, in theory.In reality, you would be lucky to get to within 2-3 degrees.
calculation are made in radiant and translated to degree for easy reading
i can understand drift and other approximation/errors give you to wrong value, but i still cant' understand where this "90/256 ~= 0.4" come from, in particular the "90"
Please enter a valid email to subscribe
We need to confirm your email address.
To complete the subscription, please click the link in the
email we just sent you.
Thank you for subscribing!
via Egeo 16