Saturday, July 14, 2012

Tinkering Accelerometer + Gyro AKA IMU (Part 3)

Now that we know how to read the sensors, we need to make sense of it. Lets have a good look at the sensor datasheet.

ADXL335 3-axis Accelerometer
Accelerometer, measures resultant acceleration acting on the sensor.
This ADXL335 outputs an analogue voltage based on acceleration. Its sensitivity of the ADXL335 is 300mV/g, which means that the output will change by .30v per 9.8m/s2 .

The ADXL335 has a ratiometric output, meaning 0g is always around half of the supply voltage Vcc, The datasheet stated that the zero Voltage is typically at 1.5V.

Accel  = Vaccel - 1.5V

BUT I prefer to get the actual count reading when the accelerometer is resting on horizontal position

and Sensitivity is typically 0.3V/g, the Arduino ADC gives a 10-bit value based on a 3.3v reference, the gain on the raw ADC value can be calculated by:

(1g/0.3V) X (3.3V/1024) =0.01627 g/LSB


Position of  the accelerometer = Accel *0.011

IDG500 2-axis Gyro
This gyroscope measures angular rate and return a analogue voltage signal proportional to the rate of rotation. The at the 4.5x, IDG500 has a sensitivity of 9.1mV/°/s, i.e. the output changes 9.1.0mV for every °/s of rotation. Since the Arduino ADC gives a 10-bit value based on a 5v reference, the gain on the raw ADC value can be calculated by:

(1°/s/0.0091V) X (3.3/1024) = 0.354 °/s/LSD

deduct the factory set 1.35V from raw analogue input & multiplying result with 0.354°/s/LSD  will return the angular velocity in degrees-per-second.

Gyro rate =(Gyro_reading - 1.35V)*0.354 deg/sec

Since we are doing discrete maths with our controller, we multiply the known interval between gyro reading which is the loop time; we get the change in angular position in degree

Gyro Angular change = Gyro rate * Loop time

Now we have enough data to measure angular position with the gyro with the following line.

Gyro angle= Gyro angle + Gyro Angular change.

What we had just done is to rationalised both the accelerometer & gyro output to angular position with the same unit of measurement.

It is now convenient to write code to compare the sensors on the same page.