Inclinómetro / Nivel con acelerómetro

Este proyecto es un Inclinómetro o Nivel basado en un acelerómetro ADXL213 de Analog, que utiliza como salida un display de Nokia 3310.
El proyecto está desarrollado en C30 para dsPIC y está gobernado por un 30F4011.


El ADXL213 es un acelerómetro de doble eje que está optimizado para medir variaciones de ±1,2G y entrega a su salida dos señales PWM, una por cada eje.

En nuestro caso, sólo nos interesa la lectura del eje Y, teniendo el acelerómetro en posición vertical. En caso de estar centrado nos entrega una señal PWM con un Duty del 50%. Al girarlo a la izquierda o la derecha completamente, o sea 90º, el Duty varía con un incremento o decremento del 30%, tal y como indica el siguiente esquema.

Para la lectura de la señal PWM he utilizado el módulo Input Capture del dsPIC que va almacenando el valor del Timer3 cada vez que le llegue un flanco de subida o de bajada alternativamente. Dicho módulo levanta una interrupción que controla si el flanco leído es el primero o el segundo, y en su caso almacena la lectura en una u otra variable.

De esta manera, cuando se han leído dos flancos, tenemos el tiempo total del periodo PWM en la variable segundo_flanco y el tiempo que estuvo a nivel alto en la variable primer_flanco.

En nuestro ciclo principal, nos limitamos a esperar que la interrupción haga su trabajo, comprobando que Int_flag está a 1, calculamos el % de Duty con la simple operación primer_flanco / segundo_flanco, traducimos a grados y enviamos al display el texto y la línea.

La función linea no hace más que calcular la inclinación de la misma y pintarla:

El resultado podemos verlo en este vídeo:

 

Si quieres probarlo tú mismo, podrás encontrar el código fuente completo en la sección Descargas.

 


 

Recientemente, el amigo Diego López ha diseñado otro nivel digital, cuya principal diferencia es que utiliza un MMA7260Q de tres ejes, y un display de 7 segmentos para ver la lectura de los grados.

Este es el esquema:

En la simulación Proteus, podemos jugar con el dispositivo moviendo hacia arriba o hacia abajo el potenciómetro que está dibujado dentro del acelerómetro.

Diego ha querido compartir con nosotros todos los ficheros de su proyecto: la simulación, el esquema y por supuesto, el código fuente en C para el PIC.

Puedes conseguirlo todo, en la zona de Descargas.

Gracias Diego

Share