# Interpretacion de los datos de un acelerometro triaxial con un pic



## transistor007 (Mar 24, 2009)

hola que tal estoy tratando de interpretar los datos de un sensor acelerometro triaxial que es el adxl330, leo los canales con un pic y obtengo los mv y segun la hoja de especificaciones obtengo la fuerza g que mide el sensor. lo pienso utilizar como inclinometro, como sensor de vibracion y como sensor de desplazamiento... hasata ahorita ya obtengo datos del sensor con un pic, y esos datops los envio a la pc mediante rs232...  todo va bien! pero como o contra que lo comparo? como interpreto esa información?
alguien ha tenido experiancia en esto?

saludos camaradas..


----------



## Chico3001 (Mar 24, 2009)

Debes tener una rutina de calibracion para poder saber contra que los comparas, lo usual seria dejar el sensor quieto y en modo horizontal y leer los datos que arroja, despues ir repitiendo la operacion para los 3 ejes

Debido a que esta afectado por la gravedad uno de los ejes siempre sera mayor a los otros 2 y con eso puedes determinar la posicion angular y espacial, midiendo el incremento de señal puedes saber aceleracion y aplicando ecuaciones mas complejas puedes medir mas efectos....


----------



## transistor007 (Mar 24, 2009)

si asi es chico 3001 uno de los valores z me da mayor a los otros 2 eso es correcto, estoy leyendo los 3 canales del micro, el chip lo  tengo de forma horizontal en una mesa, me gustaria convertir esos valores a unidades g o a angulos... saludos...


----------



## kain589 (Mar 24, 2009)

¿Has leido el datasheet del acelerómetro? Lo digo porque a lo mejor ahi te dice como calibrarlo o como interpretarlo.


----------



## Chico3001 (Mar 24, 2009)

Para hacer conversiones necesitas tener una tabla de valores con la cual puedas hacer una comparacion, o aplicar reglas de 3 dentro del micro de la siguiente manera:

Si en estado horizontal tienes el maximo en el eje Z, volteandolo 180° (o 90| no recuerdo) debes tener el minimo en el eje Z sin afectar a los otros ejes... asi que con una tabla comparativa puedes saber cada angulo individual segun el voltaje de salida que leas(en el rango de 0 a 180° por que el acelerometro no diferencia entre positivos y negativos) , este proceso lo tienes que repetir 2 veces mas para cada eje, y ademas considerar que estos valores son en modo estatico, si el acelerometro esta en movimiento la tabla comparativa no te va a servir de nada por que el acelerometro se va a ver afectado por fuerzas externas... 

Si quieres medir otro tipo de parametros tienes que tomar otro tipo de consideraciones, pero esta nota de aplicacion te puede servir:
http://www.freescale.com/files/sens...ALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation


----------



## transistor007 (Mar 25, 2009)

hola que tal gracias por responder, claro que si lo he leido.. mi acelerometro se alimenta con 3.5v, por lo que como tiene salida radiometrica presenta una sensibilidad de 350mv/g y un offset de 1.75v...
al leer los valores en los 3 canales obtengo salidas proporcionales en aceleracion...
tambien estoy calculando los angulos gama y alfa,,, solo que estos  no son constantes aun cuando mi acelerometro se encuentra sin movimiento alguno....

se supone que al tener 350mv/g =1g. pero esos 350mv/g van  sobre una señal de offset de 1.75v... por lo que en total cuando se tiene 1g=2.1v......
de igual manera cuando mi sensor registra 0g=1.75v (es decir solo tengo mi voltajke de offset a la salida)...

al parecer todo va bien, pero no se bien si los calculos de g  y de los angulos se deben de realizar con o sin ofsset,,y porque mis angulos que calculo varian tanto? aun cuando mi sensor se encuentra atado a una mesa sin movimiento, tampoco entiendo muy bien que significa que el eje z se encuentre ligado con la gravedad? 

chico3001 gracias por el link lo checare..

saludos y gracias muchachos... seguire en esto


----------



## Chico3001 (Mar 25, 2009)

transistor007 dijo:
			
		

> tambien estoy calculando los angulos gama y alfa,,, solo que estos  no son constantes aun cuando mi acelerometro se encuentra sin movimiento alguno....



No son constantes por que un acelerometro mide aceleraciones y no angulos, para medir angulos de manera efectiva necesitarias un giroscopio, el acelerometro nos permite medir angulos de forma limitada gracias a que lo afecta la gravedad



			
				transistor007 dijo:
			
		

> se supone que al tener 350mv/g =1g. pero esos 350mv/g van  sobre una señal de offset de 1.75v... por lo que en total cuando se tiene 1g=2.1v......
> de igual manera cuando mi sensor registra 0g=1.75v (es decir solo tengo mi voltajke de offset a la salida)...
> al parecer todo va bien, pero no se bien si los calculos de g  y de los angulos se deben de realizar con o sin ofsset



Nunca lo he echo pero yo diria que debes hacer los calculos sin offset y solo sumarselo al final, lo que si recuerdo es que 0G solo se obtiene cuando el sensor esta en caida libre.... si se mantiene quieto sobre la mesa vas a obtener 1G en algun eje, y si lo golpeas es la suma vectorial de 1G (la gravedad de la tierra) mas la componente vectorial del golpe



			
				transistor007 dijo:
			
		

> Y porque mis angulos que calculo varian tanto? aun cuando mi sensor se encuentra atado a una mesa sin movimiento, tampoco entiendo muy bien que significa que el eje z se encuentre ligado con la gravedad?



Si estas agarrando el acelerometro con la mano te van a variar las lecturas por que es tan sensible que el mismo movimiento de tu mano debido a los impulsos del corazon lo puede afectar, ademas de que es casi imposible para nosotros manenernos quietos... mejor apoyalo contra algo para dejarlo perfectamente quieto

No solo el eje Z se encuentra ligado a la gravedad, TODOS los ejes se encuentran afectados por la gravedad, pero el nivel de afectacion depende de la posicion del sensor con respecto a la tierra (matematicas vectoriales)


----------



## transistor007 (Mar 25, 2009)

De leer el sensor se obtienn los siguientes datos
X=1.8377v
Y=1.842v
Z=2.052v

De la formula de arcotan(y/x) obtengo el angulo de 45°? Que significa eso? No se supone que mi sensor se encuentra sin movimiento en un lugar plano? Como convierto los mv a valores g?

Que opinan?


----------



## Chico3001 (Mar 25, 2009)

transistor007 dijo:
			
		

> No se supone que mi sensor se encuentra sin movimiento en un lugar plano?



Se encuentra sin movimiento pero afectado por la gravedad del planeta tierra... es decir 1G, si tu lo sueltas desde un punto alto vas a notar que todas las mediciones se hacen iguales.... debido a que va en caida libre no siente ninguna fuerza sobre el.... es el equivalente entre nosotros y un astronauta... nosotros ya estamos acostumbrados a la gravedad y nos movemos pegados al planeta, pero un astronauta debido a la rotacion y a la lejania no siente ese efecto de gravedad y se mueve volando....


----------



## tiopepe123 (Mar 26, 2009)

Si miras en la pagina de analog  hay un application note que habla de la calibracion utilizando una rueda para facilitat la toma de medidas. Tambien hay otro como detectar una caida.



En  tu caso tienes dos medidas, el valor estatico y el dinamico.

El estatico es "facil", simplemente haz el promediado durante un tiempo superior al de las posibles vibraciaones, por ejemplo 1 minuto, ese valor seria utilizado para la inclinacion.
Tambien puedes hacer un promediado infinito, aunque los primeros valores no sirven.

promediado=valor de arranque a 1G

bucle{
valor actual=ADC
promediado=promediado+valor actual /2
}

(lo ideal seria eliminar las señales repentinas o brusca y despues un filtro pasabajos digital/promediado )





Para el dinamico: Restas el valor estatico al valor actual y calculas.

Por cierto, si utilizas las patillas Vref+ del pic y lo fijas a una tension por ejemplo 3.3V aumentas la precision del ADC y puedes utilizar todos los 10bits. Se puede hacer desde un simple divisor o un zener o utilizando un ref02 o similar descompensandolo.


----------



## transistor007 (Mar 26, 2009)

perfecto gracias por responder y aportar camaradas!

ahora realizo el calculo de las gs:

este chip mide de+-3g.. yo obtengo los siguientes:  
en g de x 0.41, en g de y 0.39 y en g de z 0.99... es correcto? mi sensor se encuentra totalmente estable en una mesa!

gracias.


----------



## transistor007 (Mar 26, 2009)

[Si en estado horizontal tienes el maximo en el eje Z, volteandolo 180° (o 90| no recuerdo) debes tener el minimo en el eje Z sin afectar a los otros ejes... 


el valor minimo es -g?

no veo ese valor! cuando giro mi sensor!

como puedo simular?


----------



## tiopepe123 (Mar 26, 2009)

Para que leas un poquito

Aunque es de freescale, los chip son casi identicos
http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=0112691118&tid=rspf
http://www.analog.com/en/other/multi-chip/adisusb/products/faqs/CU_faq_MEMs/resources/fca.html
http://www.analog.com/en/mems-and-s...oducts/application-notes/resources/index.html


En el pdf calibracion accel explica que si colocamos el acelerometro en una rueda y la hacemos girar tomando valores obtenemos:

El valor maximo o gravedad
El valor minimo o -gravedad
El offset que debe ser restado de la medida.

El offset es el hueso duro de roer


----------



## transistor007 (Mar 27, 2009)

hola que tal graciaspor responder compañeros les comento..

he realiozado pruebas y ya encuentro las gs mediante una regla de 3... solo que me ocurre algo curioso que no se si sea correcto:
se supone que mi acelerometro tiene salida radiometrica de 0.36v/g cuando se alimenta a 3.6v... como es un acelerometro de +-3g.... el maximo valor de g+ es 3 y su respectivo valor en mv es 1.080 (0.36*3), ese valor de 1.080v va montado sobre una dc de 1.8v, que en total da una señal maxima positiva de 2.88!

empiezo a mover el sensor con mi mano con una fuerza brusca (la que un brazo puede dar) y me deja 2 dudas:

1._ me marca 4 g! es decir al moverlo con esa fuerza da un voltaje mayor al maximo valor entregado por el sensor (2.88) eso es posible?

2._ un brazo puede dar una fuerza g de 3 o 4g?


gracias camaradas...


----------



## transistor007 (Mar 30, 2009)

hola que tal camaradas!
no hay mucha ayuda de su parte pero igual les coemento que he trabajado mucho en este proyecto... y me he encontrado con que el angulo alfa me da 45° cuando tengo mi sensor totalmente plano!
yo esperaba que me diera 0 °... seguire intentanto...


----------



## kain589 (Abr 12, 2009)

He empleado el acelerometro ADXL320, igual pero solo para dos ejes y que la tension de alimentacion es menor, en el datasheet explica como hacer un inclinometro en la pagina 16, prueba a mirar ahi.


----------



## andromeda (Oct 1, 2009)

Hola,

Les cuento que estoy trabajando con el acelerometro ADXL 202E com sensor de vibracion, pero estoy tomando la salida en PWM donde mido en el microcontrolador el ancho de pulso de la señal pwm por medio del input capture y este valor lo reemplazo en la formula 

A(g) = (T1/T2 -0.5)/12.5% donde T1 es el ancho de pulso y T2=Rset/125MΩ.

lo que no he podido hacer es el analisis en frecuencia de estos valores ya que no se como realizar la transformadorrmada de fourier en el microcontrolador, y el otro problema que tengo es hacer el analisis de los dos ejes (x,y) juntos.

Gracias


----------



## Victronica (Mar 2, 2010)

hola amigos, voy a empezar a trabajar en un proyecto en el cual necesito un acelerometro, he leido todo y me ha servido mucho, gracias por la paginas y por toda la informacion, seguire escribiendo para comunicar como me fue con las pruebas y las practicas que he haré.

haaaaa, por favor si me pueden colaborar diciendomen en donde puedo comprar el sensor, gracias


----------



## tanypatricia (Mar 14, 2010)

hola,
estoy empezando un proyecto de el diseno de un inclinometro digital para ver la elevacion o inclinacion en milesimas de un canon de artilleria, tengo un acelerometro MMA7260Q, pic 18F452, LCD. Deseo recibir asesoria acerca del tema y mejor si alguien me facilita un plano del montaje para iniciar el mio. grasias.


----------



## ordnajelA (May 24, 2010)

andromeda dijo:


> Hola,
> 
> Les cuento que estoy trabajando con el acelerometro ADXL 202E com sensor de vibracion, pero estoy tomando la salida en PWM donde mido en el microcontrolador el ancho de pulso de la señal pwm por medio del input capture y este valor lo reemplazo en la formula
> 
> ...



Hola!!! OYe muy interesante lo que estas haciendo. Este es la primera vez en la vida que hago un comentario en una pagina de electronica... o de cualquier cosa ... entrando al tema... Necesito medir la frecuencia de vibracion, es decir hacer un vibrometro, cuento con un acelerometro MMA7260Q de freescale... y no he podido conseguir medir la vibracion... lo pudiste hacer??? como?????


----------

