Saltar al contenido

Múltiples sensores I2C con la misma dirección

[*]Después de consultar con expertos en el tema, programadores de diversas ramas y maestros dimos con la respuesta al problema y la plasmamos en este post.

Solución:

[*]Si está utilizando IMU MPU6050, hay un truco fácil: póngalos todos en el bus I2C y conecte cada IMU AD0 pin a un pin digital separado en el Arduino[*]. Cuando desee leer desde una IMU específica, configure todos AD0s a HIGHexcepto el que desea leer LOW. Todas las IMU con AD0 ajustado a HIGH con una dirección I2C de 0x69, mientras que el único en LOW tendrá una dirección de 0x68.

[*]Si desea leerlos todos, simplemente realice un bucle y configure el que desea LOWlos demás a HIGHy listo.

[*][*] Si quieres 20 IMU, será mejor que te hagas con una Mega o, mejor aún, una Maple. Factor de forma pequeño, bastante empuje, muchos pines y flash, y algunos clones cuestan casi nada; por ejemplo, Itead vende clones de Maple por 6 dólares. ElecFreaks los vende por 9 dólares. Puede usar los 16 pines en la parte inferior para el AD0s.

[*]Este truco funciona con cualquier tipo de dispositivo I2C que tenga un esquema de direcciones personalizable a través de uno o más pines. Lo hago con EEPROM AT24Cxx, que tienen un rango de direcciones de 0x50-57. Cuando desee tener más de ocho chips, establecer todos menos uno en 0x50 y uno en 0x51 resuelve el problema rápidamente.

[*]Referencia: https://github.com/PaulStoffregen/FreeIMU_original/blob/master/documents/PS-MPU-6000A-00v3.4.pdf

[*]También puede obtener multiplexores I2C como el TCA9545A que puede dividir una línea I2C en 4 buses. He conectado hasta 9 MPU9150 en una línea con eso.

Reseñas y puntuaciones

[*]Acuérdate de que tienes autorización de parafrasear si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *