Quelle est la longueur de câble maximale pour la communication série entre deux Arduinos?

9

Je construis un projet dans lequel deux Arduinos seront reliés par trois fils: TX un RX pour la communication série et un GND commun. Quelle serait la longueur maximale des fils ici avant que la communication ne soit affectée?

J'utilise un Arduino Mega R3 d'un côté et un Arduino Mini de l'autre.

Je n'ai pas d'exigence particulière pour le débit en bauds, je pourrais utiliser le plus bas si cela aide de quelque manière que ce soit.

hobie
la source

Réponses:

4

Vous devez spécifier

  • L'ordre de portée qui vous intéresse - est-ce dans l'ordre des mètres, des dizaines de mètres, des kilomètres ou entre les États? :-). TOUS sont possibles avec un compromis approprié.

  • Comment vous prévoyez de vous connecter au circuit - broches Arduino directes, tampon haut / bas, pilotes différentiels, ...

Si vous utilisez 5V / 0V "unipolaire", alors disons 9600 bauds, vous pouvez obtenir plusieurs mètres avec des pilotes appropriés. Si vous utilisez une broche Arduino directement, la résistance et l'inductance du fil commenceront à avoir de l'importance à mesure que la portée augmentera.

À 300 bauds, vous pouvez atteindre des centaines de mètres avec des câbles à paire torsadée. À mesure que la portée augmente, des aspects tels que la diaphonie provenant de l'autre circuit et le bruit externe augmentent en importance. Pour les plages plus longues, avoir 4 fils avec signal + masse torsadés ensemble dans chaque cas aide MAIS il est probable que dans les plages d'intérêt 2 fils plus la terre fonctionnent correctement.

Si vous êtes prêt à utiliser suffisamment de tension et une signalisation suffisamment lente, vous pouvez signaler sur des milliers de kilomètres - comme cela a été fait avec les tout premiers câbles télégraphiques. Les milliers de volts nécessaires et des vitesses de signalisation de peut-être quelques bits par seconde dissuaderont dans la plupart des cas.

Russell McMahon
la source
La distance que je voudrais parcourir est d'environ 40 à 50 mètres de l'intérieur de notre maison à l'extérieur de la porte. Mon intention était de connecter les broches Arduino pertinentes directement avec un câble que j'ai trouvé lors d'une précédente installation d'interphone.
hobie
2
Un certain danger pour Arduino avec de longs câbles. Induction, fuite, charge électrostatique. (La foudre et la mise à la terre d'un défaut d'alimentation ne sont peut-être que mais ...). Inverser les diodes de serrage pour alimenter les rails sur toutes les lignes est une bonne idée. Pilote de base IC une TRÈS bonne idée. Même un IC inverseur Schmitt xx74xx14 hex à chaque extrémité serait utile. (où xx varie selon la famille). Les pilotes de ligne appropriés sont encore meilleurs, mais c'est un début. SI votre Arduino est précieux, utilisez un tampon.
Russell McMahon du
Merci à tous pour les commentaires et suggestions. Afin de savoir si je peux couvrir la distance donnée (environ 40 m) avec une connexion simple, je l'ai essayé avec deux Arduino Uno, respectivement configurés comme émetteur et récepteur. Les cartes sont directement connectées via les lignes TX / RX (broches 0 et 1) à 9600 bits par seconde. L'expéditeur envoie une chaîne de test toutes les secondes pendant que le récepteur écoute les données entrantes. J'utilise une ligne existante (aucune information sur la qualité / spécifications de ce câble. Quoi qu'il en soit, la paire émetteur / récepteur semble fonctionner sans aucun problème à cette distance et configuration.
hobie
Merci, auriez-vous une suggestion / un lien particulier vers un circuit intégré ou une puce de pilote?
hobie
@hobie À 50 mètres et 9600 bauds, vous pouvez probablement obtenir des résultats OK (essayez-le et voyez) avec presque n'importe quel circuit intégré de pilote numérique 5V et même juste des circuits intégrés de sortie numérique. Un point de départ utile sont les onduleurs CMOS à déclencheur Schmitt, généralement 74xxx14, CDxxx14, MM ..... 14. Recherchez les onduleurs déclenchés par Schmitt, évitez les plus faibles.
Russell McMahon