Salve a tutti,
Non avendo più risposte sulle mie domande, forse che sono troppo impegnativene per voi e lo posso molto bene capire ?
Comunque, ho guardato un po' più da vicino tutti questi componenti e il protocolo I2C e inizio a capire come funziona tutto questo.
Allego uno schema che ho fatto per mostrarvi come immagino il progetto.
Vorrei farvi qualche domanda :
E possibile collegare delle schede Arduino tra di loro comme l'ho fatto ?
Cioè, senza protocolo di comunicazione solo con degli ingressi logici (1 o 0) e delle uscite di una scheda che possono andare sul'ingressi di un'altra scheda Arduino ?
Infatti, la mia idea sarebbe di non pilotare il plastico ma controllarlò. Tutti gli ingressi e uscite sono solo dei livelli logici (non uso I/U analogici, ne PWM).
Grazie per le vostre risposte e buon week-end.
Dario
[CONSIGLIO] Gestione di un plastico con ARDUINO
Moderatore:
Paolino
14 messaggi
• Pagina 2 di 2 • 1, 2
0
voti
- Allegati
-
- CommandeBlocArduino.JPG (209.79 KiB) Osservato 1904 volte
0
voti
Ciao
dbe8f,
far comunicare due schede arduino con due semplici pin I/O senza adottare nessun protocollo di comunicazione non è l'ideale. Questo perché ti limita notevolmente in termini di quantità di informazioni da scambiare. Normalmente per far comunicare due IC si utilizza un protocollo di comunicazione.
Ad esempio l' I2C sul quale ti sei documentato serve proprio per far comunicare più circuiti integrati fra di loro. Quindi se pensi di far comunicare due schede Arduino valutarei l'opzione di farle comunicare fra loro trammite un protocollo di comunicazione (I2C,..)
A proposito della lunghezza dei collegamenti, "I2C" nasce proprio per collegare IC fisicamente vicini fra loro (qualche decina di centimetri?), quindi se per qualche motivo devi decentralizzare il sistema facendo comunicare diverse schede piuttosto lontane forse è meglio che ti documenti su un protocollo più adatto (ModBus su RS485, CanBus, ..)
Ciao ;)
far comunicare due schede arduino con due semplici pin I/O senza adottare nessun protocollo di comunicazione non è l'ideale. Questo perché ti limita notevolmente in termini di quantità di informazioni da scambiare. Normalmente per far comunicare due IC si utilizza un protocollo di comunicazione.
Ad esempio l' I2C sul quale ti sei documentato serve proprio per far comunicare più circuiti integrati fra di loro. Quindi se pensi di far comunicare due schede Arduino valutarei l'opzione di farle comunicare fra loro trammite un protocollo di comunicazione (I2C,..)
A proposito della lunghezza dei collegamenti, "I2C" nasce proprio per collegare IC fisicamente vicini fra loro (qualche decina di centimetri?), quindi se per qualche motivo devi decentralizzare il sistema facendo comunicare diverse schede piuttosto lontane forse è meglio che ti documenti su un protocollo più adatto (ModBus su RS485, CanBus, ..)
Ciao ;)
-

grandegiove
1.151 1 4 8 - Expert

- Messaggi: 517
- Iscritto il: 18 ott 2010, 9:59
0
voti
Ciao Grandegiove,
Grazie per questa risposta ed il tempo preso.
Mi immagino che per me mi rendre più facile la gestione del programma se non adoperò un protocollo dato che non ho mai programmato in tempo reale e i MC. Cosa ne pensi del PIU FACILE ?
un'altra domanda si puo in un circuito con più schede Arduino adoperare un protocollo I2C e un protocollo RS485 inieme, voglio dire I2C per tutto quello che è vicino, ad esempio, e l'RS485 per tutto quello che sarebbe distante ?
Ti ringrazio anticipatamente Grandegiove se mi puoi rispondere alle due domande in blù.
Buon fine di domencica.
Cordialmente
Dario
Grazie per questa risposta ed il tempo preso.
In fatti, l'ho immagino che non è l'ideale. Ma nel mio caso non devo scambiare tante informazioni tra due schede, solo quelle che ho messo nel mio schema. Se capisco bene quello che mi dici è che si puo fare come il mio schema ma non è l'ideale !far comunicare due schede arduino con due semplici pin I/O senza adottare nessun protocollo di comunicazione non è l'ideale. Questo perché ti limita notevolmente in termini di quantità di informazioni da scambiare
Mi immagino che per me mi rendre più facile la gestione del programma se non adoperò un protocollo dato che non ho mai programmato in tempo reale e i MC. Cosa ne pensi del PIU FACILE ?
Se dovessi adoperare un protocollo, tutti gli elementi elettronici sarano vicino l'un l'altro.A proposito della lunghezza dei collegamenti, "I2C" nasce proprio per collegare IC fisicamente vicini fra loro (qualche decina di centimetri?), quindi se per qualche motivo devi decentralizzare il sistema facendo comunicare diverse schede piuttosto lontane forse è meglio che ti documenti su un protocollo più adatto (ModBus su RS485, CanBus, ..)
un'altra domanda si puo in un circuito con più schede Arduino adoperare un protocollo I2C e un protocollo RS485 inieme, voglio dire I2C per tutto quello che è vicino, ad esempio, e l'RS485 per tutto quello che sarebbe distante ?
Ti ringrazio anticipatamente Grandegiove se mi puoi rispondere alle due domande in blù.
Buon fine di domencica.
Cordialmente
Dario
1
voti
dbe8f ha scritto:Non avendo più risposte sulle mie domande...
Ciao, perdona il ritardo nella risposta, sono stato finalmente in ferie e sono rientrato solo ieri notte e non potevo rispondere prima di oggi.
Provo a rispondere alle tue domande poste in [9] e [10].
dbe8f ha scritto:Ho capito che l'indirizzo del MAX è fisso mettendo fisicamente l'ingressi A0, A1, A2 a massa o VCC, ma ho due domande :
1. Quando si vuole inviare un dato sul MAX numero 2, ad esempio, come lo si indirizza (quale istruzione si deve dare, anchè in C se l'Arduino non lo conosci) sapendo che il MAX 2 è "010" ?
2. E questo indirizzo lo si invia tramite SDA e SCL o diversamente ?
Tutti i dati, indirizzi e comandi sono inviati, se usi il protocollo I2C, tramite SDA e SCL.
Il primo byte della comunicazione inviato da Arduino ai dispositivi I2C connessi (in questo caso i MAX) è sempre l'indirizzo del dispositivo che vuoi indirizzare (utilizzare).
In pratica Arduino invierà un primo byte con l'indirizzo del max che vuole utilizzare, un byte con il comando da impartire al max e quindi una serie di byte (in lettura o in scrittura) in funzione del comando.
dbe8f ha scritto:Una domanda IMPORTANTE, tra il rilievo del dato sul plastico fino al MAX ci possono essere 4 o 5 metri di cavo, questo è un problema per i MAX ? Però tra il MAX e l'Arduino ci sono solo qualche decina di centimetri.
Il problema della distanza non è solo un problema dei MAX. 4 o 5 metri di cavo possono "raccogliere" molti disturbi ed il segnale che si presenta in ingresso al MAX (ma non solo ai MAX) potrebbe essere compromesso: il tuo sensore indica che il contatto è chiuso ma i disturbi lo fanno sentire come aperto.
Se il segnale che viaggia su quei cavi è un segnale ad alta frequenza il problema è sicuramente "grave", nel tuo caso mi sembra di capire si tratti di un segnale a bassa frequenza, pertanto penso che l'utilizzo di cavetti ben schermati possa risolvere il problema.
Tra Arduino ed i MAX, ma in generale tra dispositivi che comunicano con I2C, la distanza deve essere la minore possibile, non certo metri.
dbe8f ha scritto:Vorrei aggiungere al mio post precedente qui sopra che ; ho letto il protocolo I2C, ma sul datasheet del MAX 7318 non riesco a capire quale è la relazione fra gl'ingressi A0, A1, A2 e i dati inviati sul SDA. La pagina n°8 --> Table 1. non la capisco come interpretarla e le pagine n° 11 à 13 non vedo la relazione fra quello che Fabio mi ha fatto come disegno e la tabella perché ogni MAX avrà un indirizzo diverso e quindi una linea della tabella delle pagine 11 à 13 diversa !!!
Potete per favore spiegarmi come funziona ?
Cordialmente
Dario
La tabella 1 di pagina 8 elenca i comandi che Arduino deve inviare ai MAX. Come dicevo prima Arduino deve inviare ai MAX un primo byte che rappresenta l'indirizzo del MAX con il quale vuole comunicare, quindi un secondo byte con il comando che Arduino vuole il MAX esegua, questa tabella rappresenta i possibili valori del secondo byte. Tutti i byte sono inviati tramite SDA ed SCL.
Il MAX7318 prevede un sistema di indirizzamento che combina nei pin AD0, AD1, AD2 non solo 2 valori (massa e Vcc), ma 4 valori: massa, Vcc, SDA (pin ADx collegato al pin SDA) ed SCL (pin ADx collegato al pin SCL).
Questo consente di utilizzare nello stesso bus I2C (in soli 2 pin di Arduino) fino a 64 MAX. La tabella da pagina 12 a pagina 13 indica tutti i possibili indirizzi in funzione dei collegati dei pin AD0, AD1 e AD2.
Nello schema che ti ho proposto io utilizzavo solo 2 possibili valori per i pin ADx (quindi massimo 8 MAX collegati), perché? perché sono abituato a gestire in quel modo gli indirizzamenti dei dispositivo I2C e non ho mai utilizzato il sistema possibile con i MAX: una mia scelta. Non so inoltre quanto lontano da Arduino sarebbe il 64° MAX (vedi problema della distanza dei dispositivi I2C).
Spero di aver risposto alle tue domande in modo sufficiente e corretto.
Ciao.
Fabio
14 messaggi
• Pagina 2 di 2 • 1, 2
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 1 ospite

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)

