Tengo un arduino uno y quiero usar un no MLX90614. Planeo usar más de un sensor en el mismo Arduino pero no sé cómo usar dos MLX90614 en el mismo bus I2C.
Tengo un arduino uno y quiero usar un no MLX90614. Planeo usar más de un sensor en el mismo Arduino pero no sé cómo usar dos MLX90614 en el mismo bus I2C.
Para obtener dos dispositivos I2C idénticos en un solo bus I2C, debe utilizar un dispositivo I2C adicional llamado "multiplexor de bus I2C". El dispositivo típico de 2 canales es PCA9540B . El multiplexor tiene su propia dirección I2C, por lo que deberá agregar un código que lo programe para alternar entre dos "canales", y luego usar la misma rutina para acceder a su (s) sensor (es). Aquí está la conexión típica:
Como beneficio adicional, el chip puede realizar una traducción de nivel si lo necesita.
Si bien las respuestas que sugieren el uso de chips mux I2C son buenas. En el caso de solo dos dispositivos superpuestos, sugeriría un traductor de direcciones I2C, como el LTC4317 . Dichos dispositivos le permiten cambiar efectivamente la dirección de los dispositivos posteriores. Esto es, no es necesario tener el software adicional para operar el mux.
Este dispositivo funciona al reescribir la dirección I2C sobre la marcha al XORing un byte en él. Por lo tanto, si desea utilizar dos dispositivos con la misma dirección pero hacer uno con un LSB diferente, debe configurar el traductor para XOR 0b0000001 en el bus antes del segundo dispositivo de destino.
Probablemente, la forma más fácil de hacerlo es utilizar un multiplexor de direcciones I2C como el multiplexor I2C de 1 a 8 TCA9548A. Este en particular le permitirá abordar hasta 8 dispositivos del mismo dispositivo utilizando una única dirección I2C. Todo lo que debe hacer para contactar a cada sensor individual es escribir un byte al multiplexor con el número de sensor deseado y luego comunicarse con él como un dispositivo I2C singular regular.
Lea otras preguntas en las etiquetas i2c arduino temperature atmega328p smbus