¿Cuál es la longitud máxima de cable para la comunicación en serie entre dos Arduinos?

9

Estoy construyendo un proyecto en el que dos Arduinos estarán unidos por tres cables: TX, un RX para comunicación en serie y un GND común. ¿Cuál sería la longitud máxima de los cables aquí antes de que la comunicación se vea afectada?

Estoy usando un Arduino Mega R3 en un lado y un Arduino Mini en el otro.

No tengo ningún requisito particular para la velocidad en baudios, podría usar el más bajo si esto ayuda de alguna manera.

hobie
fuente

Respuestas:

4

Necesitas especificar

  • El orden de alcance que le interesa: ¿está en el orden de metros, decenas de metros, kilómetros o interestatal? :-). TODOS son posibles con el compromiso adecuado.

  • Cómo pretende conectarse al circuito: pines Arduino directos, búfer alto / bajo, controladores diferenciales, ...

Si utiliza 5V / 0V "unipolar", entonces a 9600 baudios puede obtener muchos medidores con los controladores adecuados. Si usa un pin Arduino directamente, la resistencia del cable y la inductancia comenzarán a importar a medida que aumente el rango.

A 300 baudios puede alcanzar cientos de metros con cables de par trenzado. A medida que aumenta el alcance, aspectos como la conversación cruzada del otro circuito y el ruido externo aumentan en importancia. En rangos más largos, tener 4 cables con señal + tierra retorcidos juntos en cada caso ayuda, PERO es probable que en los rangos de interés 2 cables más tierra funcionen bien.

Si está preparado para usar suficiente voltaje y señalización lo suficientemente lenta, puede señalizar miles de millas, como se hizo con los primeros cables de telégrafo. Los miles de voltios necesarios y velocidades de señalización de quizás unos pocos bits por segundo serán un desincentivo en la mayoría de los casos.

Russell McMahon
fuente
La distancia que me gustaría recorrer es de aproximadamente 40-50 metros desde el interior de nuestra casa hasta la puerta exterior. Mi intención era conectar los pines Arduino relevantes directamente con un cable que encontré en una instalación de intercomunicador anterior.
hobie
2
Algún peligro para Arduino con largos tramos de cable. Inducción, fuga, carga electrostática. (Los rayos y la elevación del suelo por fallas de energía solo tal vez, pero ...). Una buena idea es invertir los diodos de sujeción en los rieles de suministro de energía en todas las líneas. El controlador básico IC es una MUY buena idea. Incluso un circuito inversor Schmitt hexagonal xx74xx14 en cada extremo sería útil. (donde xx varía según la familia). Los controladores de línea adecuados son aún mejores, pero eso es un comienzo. SI su Arduino es valioso, use un búfer.
Russell McMahon
Gracias a todos por los comentarios y sugerencias. Para averiguar si puedo cubrir la distancia dada (ca. 40m) con una conexión simple, lo probé con dos Arduino Uno, respectivamente configurados como emisor y receptor. Las placas se conectan directamente a través de las líneas TX / RX (pines 0 y 1) a 9600 bits por segundo. El remitente envía una cadena de prueba cada segundo mientras el receptor escucha los datos entrantes. Estoy usando una línea existente (no hay información sobre la calidad / especificaciones de este cable. De todos modos, el par emisor / receptor parece funcionar sin ningún problema a esta distancia y configuración.
Hobie
Gracias, ¿tiene alguna sugerencia / enlace en particular a un chip IC o controlador?
hobie
@hobie A 50 metros y 9600 baudios, probablemente pueda lograr resultados ACEPTABLES (pruébelo y vea) con casi cualquier IC de controlador digital de 5V e incluso solo IC de salida digital. Un punto de partida útil son los inversores CMOS de activación de Schmitt, generalmente 74xxx14, CDxxx14, MM ..... 14. Busque inversores activados por Schmitt, evite los de menor potencia de accionamiento.
Russell McMahon