Electronic – How to interpret TI Chronos watch accelerometer data

accelerometermsp430

I've been trying for an embaressing amount of time to figure out how to interpret the wireless accelerometer data from the TI Chronos. From my laptop with the usb-radio included, I read it into python basically following this recepie, then I throw it into a pyglet application to display the 3D acceleration vector. Its read in as unsigned chars, but I can't make any sense of the data. Neither have I find it documented anywhere. Here is an example printout from holding the watch still, while rotating it among 1 axis smoothly.

[253 245  24 255   6   7   1]
[  0 241  20 255   6   7 255]
[255 229  28 255   6   7 255]
[255 229  25 255   6   7 255]
[  1 229  19 255   6   7 255]
[249 224  21 255   6   7 255]
[254 219  17 255   6   7 255]
[255 218  11 255   6   7   1]
[247 211  15 255   6   7 255]
[251 209  10 255   6   7 255]
[251 212 255 255   6   7 255]
[243 194  16 255   6   7 255]
[243 200   7 255   6   7 255]
[247 197   3 255   6   7   1]
[246 190  10 255   6   7 255]

Obviously the first 3 bytes are the accelerometer data, and also clearly the numbers needs to be signed somehow. But why aren't the force vectors smooth? It's more obvious in the opengl visualization, but even in the small dataset above, one can observe for instance jumping from 255 to 1 in no time. Finally I want to get actual Gs from the data, but for now I'll settle with getting a smooth force vector that seems somewhat coherent with the rotation of the watch. Bonus points if anybody knows what the last 4 bytes means. Hopefully this is a chiphacker type question.

Best Answer

It looks like the data is using signed integers.

Therefore, 255 is -1, and 1 is +1.

Presumably, the forces are normalized somewhere, probably by taking a reading from the accelerometer when the watch is starting up. Afterwards, any increase in force is positive, and decrease in force is negative. That would seem to exactly match the given data.