I am currently working on a project where I would like to measure X/Y inclinations changes, without worrying too much about the acceleration. I decided to use ADXL335 accelerometers in order to measure static changes of g ! To give a little bit of background, the project aims to use the Arduino Leonardo as a mouse, where the X/Y movement will be the readout of the ADXL335 placed on an object.

However, I'm now facing some issue with the reading resolution. In fact the object only provide angle inclination of +/- 10° from its 0 position, and the increments value from 0° to +10° does not provide enough steps to move the mouse from let say 512px on the right (1024 width resolution).

My question is : first, do you reckon any solutions using the actual sensor I have ? Smart coding or anything you could propose would be welcome. If not, what solution would you suggest ? I've been looking into inclinometer, but those 0,0031° resolution sensor are very very expensive ...

Thank you very much for your help !


1 Answer 1


You might consider doing what was implemented for traditional mice - relative positioning. Make your angle represent the velocity of your cursor instead of the absolute location and you'll find that you decrease your resolution requirement.

Alternatively, you could have 1 step equal more than one pixel of movement.

Now, looking at the system to see any other issues, the ADXL335 is an analog output device with a sensitivity of 300mV/g. That isn't going to be a whole lot of change at 10 degrees.

\$ \sin(10 ) = 0.174g \$

\$2 \times 0.174g \times 300 mV/g= 104.2mV\$

Trying to sense 10 bits of accuracy from 105mV is going to be a bit tricky, and susceptible to noise. With a 5V Arduino, you'd get only 86 ADC counts over that range. You could try amplifying this signal - it will take a signal of about 1.25 V to give you that 10 bits of resolution, so you need a voltage gain of about 12. With some filtering, you could probably do this with an op-amp.

You could also try mechanically amplifying the magnitude of the the swing, but you may start reaching some complicated mechanisms.

  • \$\begingroup\$ Thank you very much for your usefull answer ! I also kinda figured out that the ADXL355 analog resolution would be too low ... For the mechanical amplification that idea as already been used to go from +/- 2° to +/- 10° and there is not much room left to upgrade the mechanism ! However the idea of relative positioning is new to me ! Would you mind developing a bit more, if that could be a solution with the current system ! Thanks ! \$\endgroup\$
    – Waz
    Jun 3, 2014 at 17:14
  • \$\begingroup\$ @user3014150 An example might be at 2 degrees inclination, you would increment the cursor by a pixel every second. At 4 degrees, you might increment the pixel twice every second. It's going from (Angle -> position) to (Angle -> position rate of change). You would probably need to tune your system for what feels controllable. \$\endgroup\$
    – W5VO
    Jun 3, 2014 at 18:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.