January 27, 2007

A simpler XBox 360 Tilt Controller

Adam Thole has constructed a very nice tilt enabled xbox 360 controller using a Freescale MMA6260Q 2-axis accelerometer. Adam is reading the output from the accelerometer using a ADC into a microcontroller, processing it, then outputting the result back to the 360 controller using an DAC. This to me seemed a little complex since we are going analogue -> digital -> analogue.

Up on reading the specifications for MMA6260Q, I find the MMA6260Q accelerometer outputs a linear signal. Now the analogue stick in the 360 controller are also linear, so we can simply map between the 2 voltage ranges. Further more we note that using a supply voltage of 3.3V the MMA6260Q outputs 0.85V at -1g acceleration and 2.45V at 1g acceleration. To map this range of voltages to 0-1.61V we simply need a voltage offset of -0.85V, and we can get damn close using a normal silicon diode which has a typical forward voltage drop of 0.7V. This gives us then output in the range of 0.15-1.75V - whether or not this discrepancy is noticeable at all is up to experimentation. This however has the advantage of being extremely simple to construct, all it requires is a diode between the output of the accelerometer and the input of the 360 controller.

If we want exactly 0-1.6V however, we can. Seeing as the output of the accelerometer is ratiometric - the output is a ratio of the supply voltage - we should be able to offset the -1g output to 0.7V which with the diode in place will give us 0V. Then using a simple op-amp we can amplify the output voltage at 1g to the desired 1.6V. This however will involve more electronics.

By using more diodes, we can make say, the output of -60 degree tilt map to 0V, and by constructing a proper negative feedback amplifier, map +60 degree tilt to 1.6V, achieving the same effect as Adam's current version of circuitry.