MPU9255: Comunicaciones AK8963 no confiables

1

Actualmente estoy intentando comunicarme con la IMU de 9 ejes InvenSense MPU9255 usando el software FreeIMU en un Teensy3.2. Vea el comentario a continuación para ver el enlace al código FreeIMU que se está usando (no tiene suficiente reputación).

Sé que mi configuración es correcta por los siguientes motivos:

  • Puedo comunicarme exitosamente con la porción MPU6050 de manera confiable.
  • Puedo comunicarme con éxito con el AK8963 al inicio, leyendo la dirección correcta (72) así como también los datos.
  • He verificado dos veces el código FreeIMU para asegurarme de que lea 7 bytes (en lugar de 6) al recopilar datos para evitar el bloqueo.
  • El pin 1 está conectado a VDDIO.
  • Se agregaron retrasos importantes entre cada instrucción de lectura / escritura.

Cosas que he tratado de resolver el problema:

  • Apáguelo y vuelva a encenderlo (tiempo antes del fallo ~ instantáneo - > 10min)
  • Cambio entre diferentes IMU, cables y procesadores.
  • Reinicio suave de la IMU después de cada ciclo de lectura (muere después de 1 o 2 ciclos).
  • Mirando a través de los foros (en línea, y en el Rincón de desarrolladores de InvenSense).
  • Enviar correo electrónico a InvenSense para obtener más soluciones.
  • Agregar una capacitancia adicional de 10uF entre las líneas de potencia y tierra. (Sin efecto).
  • Definición del alcance del reloj I2C auxiliar y las líneas de datos:
pregunta user3303504

1 respuesta

0

Después de jugar más, resultó que la longitud del cable entre el Teensy y el MPU9255 / MPU9250 era una variable que, al ser corta, permitiría que el AK8963 funcione de manera confiable.

Después de más experimentos (alias, manteniendo todos los cables excepto 1, y el último cable largo) resultó que la línea del reloj (pin 23 NO el Reloj Auxiliar) era la fuente del problema.

En pocas palabras, agregando un condensador de 2nF adicional (o 2 condensadores de 1nF en mi caso) entre el pin del reloj y AD0 / SD0 (Pin 9, cerca de la IMU) permitido para una línea de reloj de 200 cm con funcionalidad confiable.

EDITAR:

Originalmente pensé que había conectado los condensadores a tierra. En realidad, los había conectado al pin 9. La diferencia aquí es que tengo varias IMU para leer en el mismo bus, por lo que el pin 9 (AD0, que cambia el último bit de la dirección de la IMU) está actuando como una especie de " selección de chip ".

No estoy seguro de por qué esto resuelve los problemas, o si esto también se traslada a la configuración de SPI. Si tengo tiempo, también probaré esto.

También, he probado esto cuando todos los cables tienen una longitud de 100 cm, y la solución aún funciona.

    
respondido por el user3303504

Lea otras preguntas en las etiquetas