Grazie per la rapidissima risposta
Da quanto ho capito per comunicare via RS485 ho bisogno di un chip..
Sapresti indicarmi quale e come usarlo?
Grazie
QUI trovi una breakout board già fatta che ti evita saldature di chip di tipo SOIC e simili.
Comunque, il chip da usare è il MAX485 (... o un equivalente) che trovi descritto QUI ed il cui datasheet è QUI.
Se cerchi con Google troverai molti esempi d'uso
Guglielmo
Perfetto!
Grazie
Consiglio l'SN75176 come alternativa al MAX485, più economico e più immune ai disturbi della linea
Parliamo della disposizione dei cavi. Un sistema a stella dove tutti i cavi partono dal "master" e vanno ai vari "slave" puó non funziona bene.
Ciao Uwe
uwefed:
Parliamo della disposizione dei cavi. Un sistema a stella dove tutti i cavi partono dal "master" e vanno ai vari "slave" puó non funziona bene.
In realtà non fai una stella, ma un bus a 4 fili, un doppino TX ed un doppino RX (per avere il full-duplex) oppure un singolo doppino che raggiunge i vari devices (e lavori in half-duplex). Se le resistenze di terminazione sono messe bene e usi un protocollo affidabile, non hai alcun problema !
Ad esempio, su RS485, funziona bene il MODBUS di cui si trovano anche le librerie per Arduino
Guglielmo
Scusami Guglielmo
Se dal master partono tutti i collegamenti ai veri slave hai un collegamento stella indipendentemente se usi 4 o 2 fili.
o mi sbaglio??
Ciao Uwe
No Uwe, è un BUS, non una stella.
Dal master partono solo due fili intrecciati (il vecchio doppino), oppure 4 fili per il full-duplex (due coppie) e li mandi e li spezzi come ti pare. Il più lontano (l'ultimo) deve avere la resistenza di terminazione
Esempio Half-Duplex :
Esempio Full-Duplex :
Guglielmo
È proprio quelo che voglio dire.
Non funziona se usi dal master ad ogni slave un cavo dedicato.
Per avere un bus come é necessaro ( dove ogni slave é collegato con un cavo corto ai cavi che vanno dal master all'ultimo slave ) devi far passare il cavo dati attraverso tutta la casa da stanza a stanza.
Ciao Uwe
uwefed:
È proprio quelo che voglio dire. ...
Ah ... ok ... basta capirsi
E comunque SI, devi partire con un doppino e, in un modo o nell altro (puoi fare una dorsale e delle ramificazioni), devi arrivare a tutte le stanze. Ma questo penso che turipassaro lo immaginasse visto che .... voleva usare I2C XD XD XD
Guglielmo
In attesa dell'arrivo dei MAX485 pensavo (così in teoria XD ) alla realizzazione di un sistema "fatto in casa"..
Nel mio caso ad esempio io devo comunicare solo l'accensione e lo spegnimento dei vari relè, non potrei quindi creare un ciclo for che spenga e accenda un pin un tot di volte sul master e contarle sullo slave?
Salvo
E come stabilisci l'inizio e la fine della sequenza? Ed in caso di un disturbo sulla linea, come te ne accorgi che un impulso si è inserito in mezzo alla sequenza?
Forse con 2 linee, una da tenere alta durante la trasmissione ed una per l'invio dei dati.
PS:
tenendo comunque conto che con 5V non so se percorri pulito più di qualche decina di metri, dovresti usare almeno segnali a 12V.
turipassaro:
non potrei quindi creare un ciclo for che spenga e accenda un pin un tot di volte sul master e contarle sullo slave?
NO, in un ambiente "reale" (... e non sul tavolino del laboratorio) l'affidabilità di un detto sistema è praticamente pari a ZERO ! ... oltre alla complicazione di gestire e sincronizzare correttamente il tutto ...
Guglielmo
leo72:
E come stabilisci l'inizio e la fine della sequenza? Ed in caso di un disturbo sulla linea, come te ne accorgi che un impulso si è inserito in mezzo alla sequenza?
Forse con 2 linee, una da tenere alta durante la trasmissione ed una per l'invio dei dati.
Infatti io pensavo ad una cosa con due linee una HIGH in trasmissione..
Però per la lunghezza e l'affidabilità non saprei come fare XD
Salvo
turipassaro:
Però per la lunghezza e l'affidabilità non saprei come fare XD
Come t'ho detto, lascia stare e usa "protocolli" affidabili ed ampiamente collaudati.
Guglielmo
Nel mio progetto userò sicuramente i MAX485 (che lente le poste italiane! XD) ma, essendo in attesa, ho buttato giù un po' di codice.
Il tutto funziona ma in effetti riscontro un po' di "scomodità":
- i tempi di trasmissione diventano un po' lunghetti;
- Il mio codice usa le pull-up interne all'atmega qundi non penso possa percorrere distanze elevate (i miei test avvengono a circa 10cm di distanza XD)
Ci ho comunque provato..
turipassaro:
Ci ho comunque provato...
Hai fatto bene ... in ogni caso è "sperimentazione" (... ed esperienza)
Guglielmo
Arrivati finalmente i MAX485!
Sapreste darmi delle indicazioni su come interfacciarli con l'arduino (collegamenti) e qualche libreria?
Grazie
Salvo
Risolto con la libreria SoftwareSerial!
Grazie a tutti dell'aiuto!
Salvo