Tengo un microcontrolador que necesita comunicarse a través de un cable, que será de aprox. 5m de largo, con otro microcontrolador muy pequeño. Los dispositivos se utilizarán al aire libre en diversas condiciones. La tasa de datos no será muy alta. Cuando conecta el uC pequeño con el cable al uC grande, se envía una cadena de identificación y actualizaciones de batería periódicas (cada minuto) desde el uC pequeño.
Pensé en I2C pero no estoy seguro de si está diseñado para tales necesidades. CAN también es posible, pero creo que es un poco exagerado para mis necesidades. ¿Alguien tiene buenas ideas?
EDITAR: quiero usar la menor cantidad posible de pines para el cable.
Si bien CAN puede ser un poco "exagerado", siempre es preferible si tiene esa opción. Breve comparación entre CAN y RS232/RS422/RS485:
Puede ventajas:
PUEDE desventajas:
El costo de los transceptores CAN en comparación con los transceptores RS-xxx debería ser aproximadamente el mismo (excepto si elige transceptores viejos como MAX232 que necesitan tapas de desacoplamiento de 5x 1uF). Los niveles de voltaje de la señal no importan, hay transceptores CAN y RS-xxx para 3.3V y 5V.
El número de hilos para un sistema semidúplex será de 3 en cualquier caso. En el caso de CAN, tienes CAN H, CAN L y tierra de señal. En el caso de, por ejemplo, RS-422, tiene T +, T- y señal de tierra. Saltarse la señal de tierra realmente no se recomienda para ninguno de los dos casos, no escuche a las personas que le dicen lo contrario.
También votaré por RS232, pero debes tener cuidado con una cosa que nadie más ha mencionado. No dice qué microcontroladores está usando, pero lo siguiente es cierto para la mayoría de los que he usado ...
Su microcontrolador tendrá al menos una línea de transmisión de datos (TX) y al menos una línea de recepción de datos (RX). Estas líneas alternarán entre bajo y alto a medida que transmite/recibe entre niveles de voltaje de 0 V y ~ 5 V o 0 V y 3,3 V, según el dispositivo. Suponiendo que ambos microcontroladores usen los mismos niveles de voltaje, entonces, en principio, podría conectar TX de un micro a RX del otro y viceversa. Esto funciona para distancias cortas y velocidades de datos bajas, pero creo que 5 m es demasiado largo para esto y también creo que es una mala práctica hacer esto entre sistemas.
Es mejor utilizar un convertidor de nivel (como la familia MAX232 para sistemas de 0-5V o el MAX3232 para sistemas de 0-3V) en cada extremo. Estos convierten el 0 lógico a ~+12 V y un 1 lógico a ~-12 V para que su línea de comunicaciones se ajuste eléctricamente al estándar RS232.
Espero que esto ayude,
José
Ignorando la cuestión de las mejores alternativas (realmente no lo recomiendo, pero puede funcionar), he ejecutado con éxito largas distancias I2C (entre edificios) en producción y funcionó durante años.
Consulte la sección 19 Interbloqueo del bus I2C en http://www.i2cchip.com/pdfs/bl233_b.pdf
Majenko
perotomo
Sincrondino
Nick Alexeev
Sincrondino
Robherc KV5ROB
perotomo
broma
Transeúnte
Transeúnte
perotomo
broma
perotomo
broma
perotomo
broma
broma
perotomo
broma