miércoles, noviembre 03, 2010

Acerca del acelerómetro MMA7260

Tenemos desde hace algún tiempo en nuestra tienda el acelerómetro MMA7260, hemos vendido varios a diferentes clientes, pero no habíamos creado ningún proyecto hasta hace unos días.

En nuestras pruebas encontramos algunas cosas interesantes, como por ejemplo que el eje "Y" no está bien calibrado, y por eso reporta aproximadamente 10 grados de inclinación en una posición de reposo, cuando debería de indicar 0 grados o lo que es igual a un voltaje de 1.65 V, y no 1.79 V.

Algo parecido sucede con el eje "Z", cuando en reposo debería indicar un ángulo de inclinación de 90 grados y sólo indica 80 grados.

Aquí un resumen de los datos obtenidos mientras el acelerómetro está en posición plana:

Z = (0756) 2.43V Ángulo = 80.36 Grados
Y = (0557) 1.79V Ángulo = 10.57 Grados
X = (0515) 1.66V Ángulo = 0.80 Grados


El dato entre paréntesis es el valor leído por el convertidor analógico a digital de un microcontrolador LPC1342 con una resolución de 10 bits, el segundo dato es el valor expresado en voltaje, y luego el ángulo de inclinación del acelerómetro.

En teoría y según la hoja de datos del MMA7260, debería de indicar:

Z = 2.45V Ángulo = 90.00 Grados
Y = 1.65V Ángulo = 0.00 Grados
X = 1.65V Ángulo = 0.00 Grados

Para descartar un componente averiado se probaron dos, como se puede observar en la foto, y además se usaron diferentes herramientas de medición, y los resultados fueron los mismos.

Así que la solución es realizar una calibración en el programa que estemos realizando, para eliminar el error:

Lectura real del eje "Y" = 1.79V
Lectura esperada del eje "Y" = 1.65V

Así tenemos que la desviación es de: 1.79 - 1.65 = 0.14 voltios o 43 para el ADC del LPC1342.

Otras aclaraciones y notas:

  • Lo anterior es válido para la sensibilidad por defecto (1.5g), ya que al seleccionar otra sensibilidad (2g, 4g o 6g), la desviación del error cambia.
  • En la nota de aplicación AN3107, el fabricante indica que el producto tiene una resolución de 0.229 grados, en su punto de mayor sensitividad (0 grados), y 3.26 grados de resolución en su punto de menor sensitividad (90 grados), usando un ADC de 10 bits.

Está claro que este acelerómetro no es para realizar mediciones científicas, de hecho, su uso más común es como ratón controlado por acelerómetro, pero aplicando las correcciones indicadas aquí podemos esperar medidas satisfactorias en aplicaciones que no requieran mucha precisión.