Calculate g in Any Direction from Tri-Axis Accelerometer

  • Context: Undergrad 
  • Thread starter Thread starter IMK
  • Start date Start date
  • Tags Tags
    Direction
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
4 replies · 2K views
IMK
Messages
61
Reaction score
0
Hello,
Could someone help me with this maths problem please?
I am working on a little project involving a Tri-Axis accelerometer and I need to be able to calculate the g in a particular direction when the devices installed orientation is initially unknown.

Thus when I power the device on I have three force values let us call these the initial values. ix, iy, iz. (From these initial values we have a sense of orientation also a static total g of 1.0 = sqrt( ix2 iy2 iz2 ))

Now I accelerate the device (keeping the orientation) in a straight line so as to get a g of 1.1 (static 1g plus 0.1 acceleration) this gives me a new set of calibration g values that we can call cx, cy, cz.

What I need please is a formula for calculating the g in any direction from the calibration line/direction.

Say if I move the device forward in the same direction as the calibration direction at 0.1g then the formula/function returns 0.1, if I moved it backward the formula/function returns -0.1. and if I acceleration the device at 90 degrees to the calibration direction the formula/function returns zero.

I have tried a few ideas based on dot products but I have become stuck, any help would be much appreciated.
Added the static/initial values and a set of calibration values:

ix = 0.34
iy = -0.74
iz = -0.68

cx = 0.54
cy = -0.58
cz = -0.84

Many thanks in advance IMK
 
Last edited:
Mathematics news on Phys.org
I am confused by your use of the symbol g, generally this is used to represent the acceleration due to gravity. As far as your accelerometer is concerned, g would be a constant acceleration in the direction of the center of the earth. You seem to be using it as your system acceleration. Could you please clarify just what your g is?
 
Hello, Integral and many thanks for your reply. Well I guess to be correct I should uses acceleration rather then g. But as the specs on the devices always use g, then for this case I think the terms g and acceleration are interchangeable.

Anyway I am finding some of the math for project a little tricky at times so if you have some input it would be more than appreciated.

Many thanks again IMK
 
I'm pretty sure that what you're looking to find is the difference between the accelerometer reading ("a") and the reference vector ("c") projected into the reference direction.

That is,

[tex]\frac { ( \vec{a} - \vec{c} ) \cdot \vec{c} } { \parallel \vec{c} \parallel }[/tex]
 
uart said:
I'm pretty sure that what you're looking to find is the difference between the accelerometer reading ("a") and the reference vector ("c") projected into the reference direction.

That is,

[tex]\frac { ( \vec{a} - \vec{c} ) \cdot \vec{c} } { \parallel \vec{c} \parallel }[/tex]

Hello Uart, and many thanks for your reply.
I have not had chance to do a proper test yet as the current data set I have has poor/noise calibration data, this I will do tomorrow and let you know. However I think the initial results look very good, although I mist the fact that it also filters deaccelleration in the reference vector as well as the turns. This I guess I can get arround by adding a second set of calibration data or figure a way to find the inverse.
Again Many thanks IMK