En mi proyecto actual, necesito comunicarme entre un microcontrolador y algunos sensores a través de I2C. Uno de ellos es un sensor de temperatura, debe colocarse a aproximadamente 2 metros del microcontrolador. No puedo elegir otro protocolo (el sensor está en un módulo con conector / pines / protocolo dado).
¿Crees que es posible comunicarse en esta configuración? ¿Qué información debo buscar para asegurarme de que puede o no ser posible? ¿Tienes algún consejo?
Es la primera vez que me comunico con IC fuera de la PCB.
i2c
communication
cables
JackOfHearts
fuente
fuente
Respuestas:
I2C no está diseñado para usarse a largas distancias, pero conozco varias aplicaciones en las que realmente se usa a una distancia de aproximadamente 2 metros. También sé de un caso en el que tuvieron problemas con eso y que eventualmente se solucionó arreglando bucles de tierra, creo.
Para asegurarse de que funcionará, debe usar un extensor de bus I2C como el P82B715.
Sin embargo, la hoja de datos del PB2B715 dice lo siguiente en la sección 8.2:
Entonces, los expertos (NXP es el ex Philips, el inventor de I2C) dicen que se ha comprobado que una distancia de 30 metros es factible. Mi experiencia dice que 2 metros es una distancia factible, y las experiencias que me informaron indican que también son posibles autobuses I2C más cargados sin ningún extensor.
Los puntos clave para trabajar en autobuses I2C en largas distancias son:
Cálculo pullup
Texas Instruments tiene una buena nota de aplicación (SLVA689) sobre el cálculo de pull-up .
fuente
Generalmente está limitado por una capacitancia de bus máxima de 400 pF.
Debería funcionar bien si baja la frecuencia a algo así como 1 kHz y proporciona un desacoplamiento de la fuente de alimentación junto al sensor.
Si necesita algo más robusto, puede usar convertidores diferenciales I2C en ambos extremos, como PCA9615 .
fuente
Puedes, pero no es recomendable.
Diferentes autobuses para diferentes propósitos.
I2C, como SPI, está diseñado para la comunicación dentro de una placa o grupo de placas (piense en Raspberry Pi y sus sombreros o arduino y sus escudos). Puede funcionar a distancias más largas (ver otras respuestas) pero no debe usarse en esos casos, simplemente porque no es para eso para lo que fue diseñado, optimizado y calificado.
El riesgo que corre es que es posible que no pueda agregar más sensores en el futuro, o que su sistema no funcione en todas partes o falle en ciertas circunstancias.
Lo que debería estar buscando es un bus de campo, algo así como 1 cable, CAN, RS-485, ethernet, etc.
Los sistemas inalámbricos como bluetooth o zigbee también podrían ser una opción.
fuente
Como señaló @filo, I2C generalmente está limitado por la capacitancia del bus. Sin embargo, hay formas de evitar esto:
Eche un vistazo a AN10658 y AN11084 de NXP para obtener más información.
fuente
Me gustan las respuestas de filo y Caleb.
Otra opción es usar uno o varios puentes maestros DS28E17 1-Wire-to-I2C Master en los sensores individuales y conectar el bus como Onewire. Esto es bueno para autobuses de más de 100 my es muy adecuado para aplicaciones de matriz de sensores de bajo rendimiento como la temperatura distribuida y la gestión de la batería.
fuente