8 votos

L3G4200D azar picos

He buscado en este foro un poco en lo que respecta a la L3G4200D giroscopio, y no he visto este problema mencionado, pero he visto a otros hablar de ella en otros foros. Estoy viendo a un extraño de gran valor en mi salida cuando el giroscopio es estacionaria. Por desgracia, parece que nadie ha sido capaz de responder a ¿por qué es esto, así que pensé en preguntar

Por lo tanto, estoy recopilando datos desde el giróscopo mediante i2c a 400 khz (modo rápido), recogiendo el giroscopio de datos el uso de varios bytes leídos (seis bytes en un momento). El muestreo de 100 hz (tratado de la parte superior 800Hz), también probé con el filtrado de encendido y apagado en valores diferentes. No estoy usando la interrupción pin, pero estoy usando el 'bloque de actualización de datos de atributos en el GYRCTRLREG4, por lo que los datos no se obtienen hasta que ambos LSB y MSB de leer. Completa 2000dps y no han hecho nada con el FIFO. Me pueden enviar a mi exacta de los valores de registro si ayuda, pero la figura que la mayoría de ustedes no tienen la hoja de datos a mano.

La siguiente imagen muestra mi problema. Los datos de salida es buena, calculado correctamente (a mi conocimiento) y en general, el ruido es muy aceptable. Pero luego me di cuenta de estos molestos "puntos de luz" aparecen de forma aleatoria cuando el dispositivo está en posición estacionaria. Si lo dejo quieto durante un par de segundos me voy a conseguir uno de estos picos, siempre equivale a alrededor de 250-255 (así ~18 cuando se convierte, mediante '(salida * 70) / 1000'). Los picos, como digo, son aleatorios, pueden aparecer en cualquier plano (en la siguiente imagen se puede ver el primer pico en el plano X, el segundo en la Y), siempre alrededor del mismo valor, y uno, dos, o las tres cosas pueden suceder al mismo tiempo. El gran valor es sólo para una sola muestra, a continuación, vuelve a la normalidad.

error blips

Vi en otro hilo en algún lugar que yo debería estar usando el bloque de datos de la función de espera en GYRCTRLREG4, como he mencionado antes, pero ningún cambio. He reducido el problema a ser cuando el MSB es cero o mayor, es decir, un número positivo, entonces cuando la MSB y LSB se combinan estoy recibiendo estos números grandes. Por ejemplo, me agarro a los dos bytes necesarios para el plano X, tengo un -6 en la LSB, y un 0 en el MSB, la combinación de ellos, me da 250, a continuación, convertir da (250 * 70) / 1000 = 17.5 dps (es decir, demasiado grande para fijo/incorrecto). En la misma muestra, los dos bytes para la Y el plano son -3 LSB y -1 MSN, la combinación de ellos da -3, y la conversión da -0.21 (es decir, espera/correcto).

En este problema desde hace unos días, yo también estoy viendo un poco de estos picos aleatorios con mi magnetómetro, así que estoy pensando es que me la lectura del dispositivo (a través de i2c) incorrectamente?

Cualquier sugerencia o cosas para probar son muy bienvenidos!

1voto

xilun Puntos 261

Debido a que usted está observando un problema similar con su magnetómetro mi conjetura es que usted tiene un problema en el bus I2C. Aunque bien podría ser un problema de código debido a la operación intermitente en primer lugar me gustaría comprobar cómo el bus está conectado. Un par de cosas para ver / probar:

  • Si usted no está en uso externo de las resistencias pull-up trate de 10K resistencias pull-up en SDA y SCL. La interna de pull-up en la mayoría de los microcontroladores no ser lo suficientemente fuerte.

  • Si es posible reducir la longitud de autobús tanto como sea posible y tratar de mantener siempre alejado de alta velocidad de las señales.

  • Si se utiliza un tablero de tratar de mantener las conexiones tan directa como sea posible para evitar el exceso de capacidad.

  • Si usted está utilizando placas de prototipos que ya incluyen las resistencias pull-up que se puede acabar en paralelo y puede que en efecto tiene una resistencia pull-up valor que es demasiado bajo.

  • Si se puede organizar el acceso a un ámbito que sería ideal para asegurarse de que el reloj y los datos de las líneas de aspecto agradable y de la plaza, y no sesgada demasiado.

Si estos pasos no funcionan Texas Instruments tiene la Solución de problemas Bus I2C Protocolo de solicitud de informe que entra en más detalles sobre el cálculo de las resistencias pull-up y los problemas que se pueden ejecutar con la capacitancia.

0voto

rodrigob Puntos 118

Lo que puede estar pasando es que una nueva muestra que se tome entre la lectura de la LSB y MSB. Así que si MSB = 0 y LSB = -4 usted debe obtener 252, o acerca de 1g. Si la siguiente lectura es MSB = 1 y LSB = 2, usted debe obtener 258, lo cual es razonable. Que problema es cuando para 1 muestra sólo la MSB ha actualizado a 1 y el LSB es todavía -4 usted obtener 508, acerca de 2g, lo que podría ser este bache.

El comandante general de CTRL_REG4 se supone que para evitar esto. Tal vez leer que registrar apagado el sensor y asegúrese de que el bloque se habilita?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X