Qual è la lunghezza massima del filo per la comunicazione seriale tra due Arduinos?


9

Sto realizzando un progetto in cui due Arduinos saranno collegati da tre fili: TX e RX per la comunicazione seriale e un GND comune. Quale sarebbe la lunghezza massima dei fili qui prima che la comunicazione venga compromessa?

Sto usando un Arduino Mega R3 da un lato e un Arduino Mini dall'altro.

Non ho requisiti particolari per il Baud rate, potrei usare quello più basso se questo aiuta in qualche modo.

Risposte:


4

Devi specificare

  • L'ordine di portata che ti interessa - è nell'ordine di metri, decine di metri, chilometri o da uno stato all'altro? :-). TUTTI sono possibili con adeguato compromesso.

  • Come si intende connettersi al circuito: pin Arduino diretti, buffer alto / basso, driver differenziali, ...

Se usi "unipolare" a 5 V / 0 V, ad esempio 9600 baud puoi ottenere molti metri con i driver adatti. Se si utilizza un pin Arduino, la resistenza del filo e l'induttanza inizieranno a importare man mano che aumenta la portata.

A 300 baud puoi raggiungere centinaia di metri con cavi a doppino intrecciato. Man mano che la portata aumenta aspetti come il cross-talk dell'altro circuito e il rumore esterno aumentano di importanza. A intervalli più lunghi con 4 fili con segnale + terra attorcigliati in ciascun caso aiuta MA È probabile che a intervalli di interesse 2 fili più terra funzionino correttamente.

Se sei pronto a utilizzare una tensione sufficiente e segnali abbastanza lenti puoi segnalare oltre migliaia di miglia, come è stato fatto con i primi cavi telegrafici. Le migliaia di volt necessarie e la velocità di segnalazione di forse pochi bit al secondo saranno disincentivi nella maggior parte dei casi.


La distanza che vorrei percorrere è di circa 40-50 metri dall'interno della casa al cancello esterno. La mia intenzione era quella di collegare i relativi pin Arduino direttamente con un cavo che avevo trovato in una precedente installazione di interfono.
hobie,

2
Qualche pericolo per Arduino con lunghe piste di cavi. Induzione, perdita, carica elettrostatica. (I fulmini e la massa aumentano per mancanza di alimentazione, ma forse ...). Una buona idea è quella di invertire i diodi a morsetto sulle guide di alimentazione di tutte le linee. IC driver di base un'ottima idea. Anche un IC inverter Schmitt esadecimale xx74xx14 su ciascuna estremità sarebbe utile. (dove xx varia in base alla famiglia). I driver di linea corretti sono ancora meglio, ma è un inizio. Se il tuo Arduino è prezioso usa un buffer.
Russell McMahon,

Grazie a tutti per i commenti e i suggerimenti. Per scoprire se riesco a coprire una determinata distanza (circa 40 m) con una semplice connessione, ho provato con due Arduino Uno, rispettivamente impostati come mittente e destinatario. Le schede sono collegate direttamente tramite le linee TX / RX (pin 0 e 1) a 9600 bit al secondo. Il mittente invia una stringa di prova ogni secondo mentre il destinatario sta ascoltando i dati in arrivo. Sto usando una linea esistente (nessuna informazione sulla qualità / specifiche di questo cavo. Comunque, la coppia mittente / ricevitore sembra funzionare senza problemi a questa distanza e configurazione.
hobie

Grazie, avresti qualche suggerimento / collegamento particolare a un chip IC o driver?
Hobie,

@hobie A 50 metri e 9600 baud puoi probabilmente ottenere risultati OK (provalo e vedi) con quasi tutti i circuiti integrati dei driver digitali a 5 V e persino solo i circuiti integrati di uscita digitali. Un utile punto di partenza sono gli inverter CMOS trigger Schmitt in genere 74xxx14, CDxxx14, MM ..... 14. Cerca gli inverter innescati Schmitt, evita quelli di potenza più bassa.
Russell McMahon
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.