Segnali digitali via cavo +shiftregister

Ciao a tutti,

Ho la seguente problematica: un Arduino Uno rev3 che, tramite cavo lungo circa 2 metri, dovrà essere connesso ad una scheda Arduino mega portando ad esso 14 segnali high/low.

Come cavo pensavo ad un cavo Ethernet per scambiare sia l’alimentazione (arriverebbe dal mega) che 3 segnali digitali. Nello specifico da Arduino uno partirò con tre segnali che finiscono, dopo due metri di cavo, in due shiftregister in cascata per ampliare i segnali a 16 uscite finendo infine sull’arduino mega.

Può funzionare? Alternative o accorgimenti?

Seriale, oppure un amplificatore (extender) IIC.

Optando invece per i tre stati logici + i due shiftregister c’è il rischio di perdita segnale?

Probabilmente si, ma mi pare abbastanza inutile. Dai un'occhiata alle funzioni shiftIn() e shiftOut(), fanno esattamente quello che ti serve senza dover usare gli shiftregister .

Ciao, Ale.

Usare due shift register per poi leggere semplicemente le loro uscite con 14 ingressi del Mega è un passaggio in più.

L'alternativa più sensata in questo caso è una comunicazione seriale, a maggior ragione visto che ArduinoMega ha tre seriali aggiuntive. Così basterebbero in tutto tre fili compresa alimentazione.

Arriverebbero i segnali logici a due metri? Si. Magari sarebbero da rendere un po' più lenti rispetto ai circa 60 kbit/s di una shiftout.

Vi ringrazio per le preziose risposte.
Ho scelto di intraprendere la strada della comunicazione seriale. Non ho provato via cavo lungo 2 metri, ma con cavetti di fortuna lunghi 15cm funziona.

Per comodità il modulo master stampa il singolo carattere ‘a’, ‘b’,’c’ ecc secondo una tabella di corrispondenze da me stabilita. Il modulo slave riceve e a seconda del numero corrispondete alla lettera avvia funzioni specifiche.

Me la sono risolta così. Funziona.

Ma per curiosità esistevano procedure più eleganti di utilizzo della seriale?

1 Like

No, dal punto di vista concettuale i bus di campo di tipo serale sono lo standard anche nel mondo industriale (con protocolli di comunicazione più articolati ovviamente).

Quello che potresti migliorare è il tipo di interfaccia elettrica dei segnali per aumentare affidabilità e velocità della comunicazione.

Per 2 metri e per un'applicazione così semplice non so quanto ne valga la pena, ma se vuoi informarti, modbus, canbus, RS485, RS232 sono tutte tipi di interfacce e/o protocolli facilmente utilizzabili con un Arduino.