# Acelerometro y Giroscopio



## mauxx5 (Abr 27, 2011)

Hola necesito diseñar un control de tal forma que pueda emular al mando del Wii. 
Eh leido los datos que me entrega un acelerometro y un giroscopio y por ahora solo he podido 
rotar figuras (usando una interfaz grafica) con respecto al eje X,Y.

Lo que necesito es que al desplazar el control (sin rotarlo) sobre el eje X,Y,Z me de una señal.

Con que dispositivo puedo hacerlo?? se puede hacer con una combinacion entre el acelerometro y el giroscopio?


----------



## elbrujo (Abr 27, 2011)

con acelerometro de 3 ejes tenes las 3 mediciones espaciales


----------



## dekovai (Abr 27, 2011)

Pues mira puedes usar los dos con el acelerometro de 3 ejes tienes tres grados de libertad ahora q por si solo el acelerometro es muy sensible a ruidos y te detecta aceleracion estatica tambien si quieres que te responda mejor entonces agregale el gyro para que sea estable al acelerometro le tendrias que poner un filtro pasa bajas digital, al gyro lo tendrias que integrar y despues aplicarle un filtro pasa altas digital y al final solo lo sumas lo que seria el filtro complementario, no se q tanta exactitud y control quieres


----------



## mauxx5 (Abr 29, 2011)

gracias por tu respuesta, entiendo lo que me dices, pero lo que yo necesito es desplazar un dispositivo en linea recta (sin realizar ningun tipo de giro ) y me mande una señal. No he podido hacerlo con el acelerometro tampoco con el giroscopio, pero he leido que  el control del wii tiene un acelerometro y si realiza esa funcion. Gracias, saludos


----------



## elbrujo (Abr 29, 2011)

Postea lo que hiciste y donde no pudiste o que no te anduvo


----------



## mauxx5 (Abr 29, 2011)

La imagen A son los movimientos que he podido realizar y eso es util para mi. Pero necesito realizar los movimientos de la imagen B. Se pude lograr con un acelerometeo y giroscopio?? como le hago?? Sino se puede alguien conoce otro dispositivo???

esta es la IMAGEN del los movimientos que necesito


----------



## elbrujo (Abr 29, 2011)

Leiste mi post #2? con un acelerometro podes. El giroscopo te da estabilidad al movimiento como mas aplomado. Para sensar/controlar que cosa estas buscando?


----------



## FREDDYR (May 1, 2011)

Hola mauxx5. teóricamente sería complicado medir el desplazamiento con un acelerometro y/o con un giroscopio, ya que el primero mide la variación de velocidad con respecto a una unidad de tiempo, y el segundo se basa en cambios en la velocidad angular.
Si únicamente requieres medir desplazamiento, sin que sea muy preciso, te sugeriría que te bases principalmente en 2 medidas (con un acelerometro), una cuando inicias el movimiento y la otra cuando acaba, lo cual generaría una aceleración "positiva" y otra "negativa", en la positiva miras cual fue la magnitud e inicias un contador y de acuerdo a esta calculas una velocidad, cuando detectes una aceleracion negativa paras el contador, ya teniendo velocidad y tiempo puedes calcular una distancia aproximada.
Espero sea de ayuda. Saludos


----------



## Sebastian1989 (May 2, 2011)

Yo pude hacer un medidor de distancia y velocidad con un acelerometro. Lo unico que tienes que hacer es una interrupción cada un tiemto t constante, dentro de la interrupción haces la lectura del acelerometro y de esta forma puedes calcular la integral de la aceleracion en el tiempo como una integral de Riemann y a si calcular la velocidad y si vuelves a hacer lo mismo con los datos de la velocidad te da el desplazamiento. 
Cuantas mas interrupciones por segundo mejor por que de esta manera el valor de t disminuye lo que hace una aproximación mas exacta.


----------



## mauxx5 (May 2, 2011)

Gracias, me podrias pasar un ejempplo?? porfavor. Ya comprobe que si se puede realizar lo que yo necesito. gracias


----------



## Sebastian1989 (May 2, 2011)

Perdí el programa que hice hace un tiempo, tal vez el fin de semana pueda hacerlo de nuevo.
Por lo que recuerdo hice una interrupción cada 1 ms app. y dentro de la interrupción leía el valor del acelerometro con un ADC de 14 bits y lo transformaba a m/s^2 por que el adsl335 entrega mV/g luego en el programa principal tenia una función para que cuando uno apretara un botón mandara v=0 y d=0 para que la velocidad y distancia inicial sea igual a cero, en la interrupción tenia una variable v += t*a (t=tiempo de la interrupción, a= aceleración) de esta forma calculo el área de la aceleración con respecto al tiempo que es lo mismo que la velocidad y si vuelvo a repetir el mismo procedimiento con la velocidad puedo calcular el desplazamiento.

Espero que se entienda mas la idea, cuando tenga tiempo pongo el programa nuevo.


----------



## mauxx5 (May 2, 2011)

muchas gracias de nuevo la idea la entendi voy a comenzar a realizar el programa. Yo tambien tengo el adxl335. De cualquier forma espero puedas subir tu programa.


----------



## curioso207 (May 2, 2011)

aqui tienes un ejemplo de un programa para un acelerometro con un freescale mcf51qe128

espero te sirva
saludos


----------



## Sebastian1989 (May 11, 2011)

Perdón por no poner el programa el fin de semana pero e estado lleno de pruebas en la U y no e tenido tiempo, yo creo que para el lunes tal ves lo pueda poner.


----------



## mauxx5 (May 12, 2011)

Sebastian1989 dijo:


> Perdón por no poner el programa el fin de semana pero e estado lleno de pruebas en la U y no e tenido tiempo, yo creo que para el lunes tal ves lo pueda poner.



ok gracias, espero me puedas ayudar


----------



## Sebastian1989 (May 14, 2011)

Con este programa se puede tener una aproximación de la velocidad y distancia recorrida con un acelerómetro.
Es importante que en alguna parte del programa se reinicie la velocidad a 0 para que la distancia no se vea afectada cuando uno está quieto ya que los errores de lectura de la aceleración se van acumulando de forma indefinida en la variable de la velocidad afectando de esta forma a la distancia.
Hay que tener en cuenta que la inclinación del acelerómetro va a afectar la medida de la distancia y velocidad por lo que es ideal compensarla con algún sensor externo ya que cuando se está acelerando en una pendiente es imposible separar la lectura de la gravedad a la de la aceleración del objeto.
Si uno quiere mayor precisión debe poner un operacional al acelerómetro para hacerlo mas sensible a mínimos cambios, aumentar la resolución del adc, poner un sensor externo para compensar la pendiente de por donde se mueva el objeto y sería ideal que el micro tenga una entrada para igualar a 0 la velocidad cuando el objeto este inmóvil.


----------



## sokoloko (May 16, 2011)

hola mauxx,

Si aun estas desarrollando el proyecto, te comento que puedes usar un nunchako de la Wii que tiene un acelerometro de 3 ejes y vale menos de 5€ puesto en casa.

Y el metodo de leer los datos esta mas que implementado en la red, pues se usa para muchas aplicaciones entre ellas los quadricopteros.

Saludos.


----------



## mauxx5 (May 25, 2011)

una pregunta en esta instruccion:
_
 set_adc_channel( 0 );
 v=read_adc();           //leo el voltage del acelerometro/2_

dices que lees el voltaje del acelerometro. Físicamente cual seria esa entrada? o que pin del acelerometro es el que va a la AN0 del microcontrolador???

GRACIAS

*hola* una pregunta en esta instruccion:
_
 set_adc_channel( 0 );
 v=read_adc();           //leo el voltage del acelerometro/2_

dices que lees el voltaje del acelerometro. Físicamente cual seria esa  entrada? o que pin del acelerometro es el que va a la AN0 del  microcontrolador???

GRACIAS





Sebastian1989 dijo:


> Con este programa se puede tener una aproximación de la velocidad y distancia recorrida con un acelerómetro.
> Es importante que en alguna parte del programa se reinicie la velocidad a 0 para que la distancia no se vea afectada cuando uno está quieto ya que los errores de lectura de la aceleración se van acumulando de forma indefinida en la variable de la velocidad afectando de esta forma a la distancia.
> Hay que tener en cuenta que la inclinación del acelerómetro va a afectar la medida de la distancia y velocidad por lo que es ideal compensarla con algún sensor externo ya que cuando se está acelerando en una pendiente es imposible separar la lectura de la gravedad a la de la aceleración del objeto.
> Si uno quiere mayor precisión debe poner un operacional al acelerómetro para hacerlo mas sensible a mínimos cambios, aumentar la resolución del adc, poner un sensor externo para compensar la pendiente de por donde se mueva el objeto y sería ideal que el micro tenga una entrada para igualar a 0 la velocidad cuando el objeto este inmóvil.


----------



## Sebastian1989 (May 30, 2011)

El canal 0 del ADC va conectado a un divisor de tensión formado por dos resistencias iguales de precisión que van conectadas entre Vcc y Gnd, de esta forma puedo saber con qué voltaje exactamente se está alimentando el acelerómetro, esto es muy importante ya que el acelerómetro entrega un voltaje a la salida de Vo= Vcc/2+Vcc*G/10.

Perdón por tardar con la respuesta pero no me había dado cuenta de tu pregunta.


----------



## golumx (May 31, 2011)

Los aceerometros son muy "nerviosos" por lo que es recomendale ponerles a la salida un amplificador operacional configurado como seguidor de linea para estabilizarlo un poco, tambien es interesante que la misma alimentacion del acelerometro este conectada con el voltaje de referencia del ADC ya que generalmente los acelerometros son radiometricos. Como te han comentado antes para obtener el desplaamiento del acelerometro has de resolver la integral doble de la aceleracion respecto el tiempo. Pero has de saber que ademas de registrar la aceleracion del movimiento tambien esta sometido a la aceleracion de la gravedad, por lo que todas las medidas obtenidas se ven desvirtauadas por este efecto.


----------



## albenisnieves1 (Jun 18, 2011)

Sebastian1989 dijo:


> Con este programa se puede tener una aproximación de la velocidad y distancia recorrida con un acelerómetro.
> Es importante que en alguna parte del programa se reinicie la velocidad a 0 para que la distancia no se vea afectada cuando uno está quieto ya que los errores de lectura de la aceleración se van acumulando de forma indefinida en la variable de la velocidad afectando de esta forma a la distancia.
> Hay que tener en cuenta que la inclinación del acelerómetro va a afectar la medida de la distancia y velocidad por lo que es ideal compensarla con algún sensor externo ya que cuando se está acelerando en una pendiente es imposible separar la lectura de la gravedad a la de la aceleración del objeto.
> Si uno quiere mayor precisión debe poner un operacional al acelerómetro para hacerlo mas sensible a mínimos cambios, aumentar la resolución del adc, poner un sensor externo para compensar la pendiente de por donde se mueva el objeto y sería ideal que el micro tenga una entrada para igualar a 0 la velocidad cuando el objeto este inmóvil.



buenos dias amigo.. estoy tratando de usar el acelerometro para calcular metros recorridos lei el programa que colocaste pero no se como compilarlo y necesitaria cambiar un par de cosas como para mostrar en una lcd de 16x2 y utilizar un microcontrolador pic16f877 a 20mhz. 

bueno quisiera saber si me puedes ayudar y donde consigo el programa para compilar y obtener el .hex

espero estes bien y gracias de antemano...


----------



## circuitmaker (Ago 6, 2011)

Amigo me podrías explicar que es eso de la sensibilidad de un acelerómetro, q*UE* se da en gramos
cual es mejor? el de mayor sensibilidad o inferior, como calculo el q*UE* n*E*cesito para mi proyecto


----------



## oliva (Dic 3, 2011)

dekovai dijo:


> Pues mira puedes usar los dos con el acelerometro de 3 ejes tienes tres grados de libertad ahora q por si solo el acelerometro es muy sensible a ruidos y te detecta aceleracion estatica tambien si quieres que te responda mejor entonces agregale el gyro para que sea estable al acelerometro le tendrias que poner un filtro pasa bajas digital, al gyro lo tendrias que integrar y despues aplicarle un filtro pasa altas digital y al final solo lo sumas lo que seria el filtro complementario, no se q tanta exactitud y control quieres



Como se hace un filtro pasa altas digital para el giroscopio? es que ando usando uno y ocupo
que sea mas fiable la señal leída!

saludos!! =)


----------



## IMASDPIC (Dic 4, 2011)

hola que tal tal vez os interese esto dadle un vistazo
http://www.x-robotics.com/sensores.htm#Aceleracion
un saludo


----------

