Hola
NANO1985, el problema de esos gyros es la falta de datos. Me explico, necesitas saber que grados/segundo puede medir como máximo para poder "escalar" el valor que obtienes del ADC, hazte esta pregunta ¿como obtengo grados/segundo de ese giroscopio?
jfmateos2,
Hay diferentes maneras de actuar, una sería dar por sentado que el valor del acelerómetro va a ser siempre algo errático y utilizar solo una parte pequeña de su valor para conformar el ángulo y el resto hacerlo con el giroscopio. Algo así:
angulo = (angulo calculado por giroscopio * 0.95) + (angulo acelerómetro * 0.05)
De esta forma el valor de "angulo" en cada ciclo es un 95% el valor del giroscopio y en un 5% el del acelerómetro. Digamos que angulo se va "refrescando" en cada ciclo del programa. Quizás no es la mejor manera pero funciona.
Existen otras maneras, por ejemplo si tienes encoders en las ruedas puedes saber cuando las aceleraciones son relativamente pequeñas y solo en esos casos "refrescar" angulo, en cambio cuando la aceleración sea mayor calcular el ángulo solo con el giroscopio.
Otra manera de detectar aceleraciones y vibraciones, quizás la mejor, es usando un acelerómetro de dos ejes dispuestos uno hacia el frente y otro hacia el cielo. De esta manera hay que usar trigonometría para calcular el ángulo de inclinación con la lectura de los dos ejes (arco tangente) y se también puede calcular la magnitud del movimiento, de manera que si no se encuentra dentro de unos parámetros que nosotros establecemos no utilizaremos el angulo que hayamos calculado con el acelerómetro.
Si te interesa, esta última parte la podemos ver con mas detalle pero ten en cuenta que mis explicaciones no van a ser las de una persona con grandes conocimientos en matemáticas, lamentablemente no tengo los conocimientos necesarios para ser todo lo correcto que debería (Dejé de estudiar demasiado pronto) Me baso en lo que he leído aquí y allá y en lo que mi cabeza ha entendido o cree que ha entendido.
Un saludo...