Buongiorno a tutti,
Vogliate scusarmi per il mio italiano se non è del tutto perfetto, non lo scrivo mai.
Ho bisogno di un consiglio da parte Vostra perché non sono per niente un esperto in elettronica (vecchie conoscenze di almeno 25 anni) e non conosco niente di microcontrollore. La programmazione di applicazioni di gestione la conosco, ma non di programmazione in "tempo reale". Vorrei che il mio progetto o parte di esso sia realizato con una o più schede Arduino.
Come dice il mio titolo, desidero "gestire" il plastico con un microcontrollore. Il plastico è composto da circa 15 blocchi (troncchi, sezioni, ...) ogni blocco ha circa 10 entrate (10 * 15 = 150 entrate) e 5 uscite (10 * 5 = 50 uscite). Ho fatto qualche ricerca sul net per vedere se qualcuno aveva già fatto qualcosa di simile, ma non ho trovato. Ho trovato degli articoli per guidare un treno con una scheda Arduino, ma nulla che spiega come fare quando si hanno così tante I/O. I progetti trovati sono sempre per pilotare un treno con accelerazione e frenata con degli H-bridge, ma questo è tutto.
Le domande che vorrei porre sono:
Qualle architettura hardware (numero di schede Arduino e che tipo e quale elettronica da mettere in torno alle carte ARDUINO) e quale architettura software devo mettere in atto per gestire le 150 I e 50 O ?
Qualora l'applicazione deve essere flessibile e scalabile per aggiungere blocchi all'avenire, se necessario.
D'altra parte, è difficile da realizzare se piu schede Arduino devono essere collegate (communicare) tra di loro ?
In un primo tempo, l'entrate e le uscite sono solo informazioni di livello logico (1 o 0), con le Entrate determino programmaticamente lo stato delle uscite. L'alimentazione trazione (invio della corrente sui binari) è gestita al di fuori del Arduino da un'elettronica di potenza. L'informazione all'entrate può essere indicata da un pulsante o da un contatto del relè o da una uscita del Arduino che va all'entrata di un altro Arduino (da vedere se è possibile).
Ecco ho descritto il mio progetto. Se avete bisogno di ulteriori informazioni per potere rispondermi, non esitate a chiedermi.
In anticipo vi ringrazio per le vostre risposte e non vedo l'ora di leggerle.
Cordiali saluti
Dario.
[CONSIGLIO] Gestione di un plastico con ARDUINO
Moderatore:
Paolino
14 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
Buongiorno,
quali dovrebbero essere i tempi di risposta che il sistema deve avere sui vari pin?
Mi spiego meglio. Quanto tempo massimo può passare tra una lettura e la siccessiva di uno dei 150 ingressi?
Chiedo questo perché se il tempo di lettura/elaborazione degli ingressi non è troppo stretto si potrebbe pensare ad una soluzione diversa dall'utilizzo di tanti Arduino (o microcontrollori in genere).
Si potrebbe ad esempio utilizzare dei MAX7318 (I/O Port Expander, 16 bit). Con soli 4 pin (I/O) di Arduino si potrebbero comandare 16 di questi IC per arrivare ad avere fino a 256 pin di input/output digitali completamente configurabili: posso decidere in qualsiasi momento quali siano ingressi e quali uscite.
Probabilmente esistono anche IC simili con più di 16 I/O ciascuno, il che consentirebbe di ridurre ancora il numero di IC necessari.
L'impiego di questi IC però ha per contro l'impossibilità di gestire in modo "molto rapido" tutti gli ingressi/uscite.
quali dovrebbero essere i tempi di risposta che il sistema deve avere sui vari pin?
Mi spiego meglio. Quanto tempo massimo può passare tra una lettura e la siccessiva di uno dei 150 ingressi?
Chiedo questo perché se il tempo di lettura/elaborazione degli ingressi non è troppo stretto si potrebbe pensare ad una soluzione diversa dall'utilizzo di tanti Arduino (o microcontrollori in genere).
Si potrebbe ad esempio utilizzare dei MAX7318 (I/O Port Expander, 16 bit). Con soli 4 pin (I/O) di Arduino si potrebbero comandare 16 di questi IC per arrivare ad avere fino a 256 pin di input/output digitali completamente configurabili: posso decidere in qualsiasi momento quali siano ingressi e quali uscite.
Probabilmente esistono anche IC simili con più di 16 I/O ciascuno, il che consentirebbe di ridurre ancora il numero di IC necessari.
L'impiego di questi IC però ha per contro l'impossibilità di gestire in modo "molto rapido" tutti gli ingressi/uscite.
Fabio
0
voti
Ciao Fabio,
Grazie per la tua risposta. E interessante l'idea ma ci sono due cose che mi pongono qualche problema e che mi fanno un po' paura.
Communque e dato che mi hai dato un consiglio voglio cercare a capirlo e se sarei in grado di realizarlò !!!
Allora ti pongo un paio di domande.
Sul datasheet vedo A0, A1, A2 ma no A3, dove si trova il quarto bit per arrivare a 16 possibilità ?
Sono sensibili al’ambiente perché ci sarano molti fili e qualche metro di cavo per ogni uscita o entrata ?
Per favore saresti in grado di farmi un piccolo schema di come conettare un MAX ?
Grazie mille e buona notte
Cordialmente
Dario
Grazie per la tua risposta. E interessante l'idea ma ci sono due cose che mi pongono qualche problema e che mi fanno un po' paura.
- 1. Vorrei avere il meno possibile componenti elettronici perché non sono un esperto.
2. Temo che la programmazione sia complicata per me perché in tempo reale e programmazione di MC non ne capisco niente.
Communque e dato che mi hai dato un consiglio voglio cercare a capirlo e se sarei in grado di realizarlò !!!
Allora ti pongo un paio di domande.
Non lo so ancorà quanto sara lungo il programma e quanto tempo prenderà per eseguire una loop() però quello che ti posso dire è che se ci sono 15 sezioni, arrontondiamo a 20, ogni sezione dovrebbe avere a dsiposizione 1000ms / 20 sezioni = 50ms al massimo. Infatti, immagino che tutto il plastico dovrebbe essere gestito in 1 secondo (ed è già lungo) se no c'è il rischio che certi dati non siano presi in considerazione oppure che un treno sia passato in ultra sezione.quali dovrebbero essere i tempi di risposta che il sistema deve avere sui vari pin?
Mi spiego meglio. Quanto tempo massimo può passare tra una lettura e la siccessiva di uno dei 150 ingressi?
Se capisco bene, 4 uscite = 16 possibilità quindi 16 MAX ad esempio « 0001 » MAX 1… « 1111 » MAX 16. Ma dopo i dati dove gli fai passare ? L’elettronica a mettere in torno ai MAX è complicatà oppure con qualche componente lo si fa ? Mi sembra di avere capito che ogni uscità del MAX si puo tirare 80mA e giusto ? Si puo conetare una LED a anodo o/e catodo comune ?Si potrebbe ad esempio utilizzare dei MAX7318 (I/O Port Expander, 16 bit). Con soli 4 pin (I/O) di Arduino si potrebbero comandare 16 di questi IC
Sul datasheet vedo A0, A1, A2 ma no A3, dove si trova il quarto bit per arrivare a 16 possibilità ?
Sono sensibili al’ambiente perché ci sarano molti fili e qualche metro di cavo per ogni uscita o entrata ?
Per favore saresti in grado di farmi un piccolo schema di come conettare un MAX ?
Grazie mille e buona notte
Cordialmente
Dario
0
voti
Ciao,
l'idea potrebbe essere questa:
Come vedi si dovranno utilizzare due BUS I2C, in ogni bus puoi collegare fino ad 8 MAX.
Nello schema ho disegnato solo 3 MAX per ogni BUS.
Lo schema è poco meno di quanto in realtà serve: mancano i collegamenti dei pin A0, A1, A2 che ho indicato come scritte all'interno del MAX, mancano i collegamenti di alimentazione e tutti i pin di input/output.
Ma l'elettronica di contorno ai MAX, per il collegamento ad Arduino ed il loro funzionamento, è quella indicata nelle schema: praticamente nulla.
Ci sarà un po' di software, per altro io Arduino non lo conosco e quindi non ti saprei nemmeno aiutare nella stesura del software, ma troverai sicuramente qualcuno qui nel forum che ti saprà aiutare.
I dati, sia in input che in output, passano per i pin SDA e SCL: il protocollo I2C con cui lavorano questi MAX è un protocollo di comunicazione seriale, quindi su quei 2 fili passano tutti i dati che desideri.
I 50ms per elaborare ogni input/output, così su due piedi, credo non siano pochi: penso insomma che potresti farcela, ma molto dipende dal tipo di elaborazioni che vorresti fare sugli ingressi per ottenere i valori delle uscite.
Un normale led necessita di una corrente attorno ai 20mA, sei quindi in grado di pilotarlo tranquilamente.
Diverso invece il problema della distanza. Stiamo parlando di segnali digitali e qualche metro di cavo direi che è troppo. Dovresti riuscire a rimanere attorno al metro, massimo 1,5 metri per ogni segnale.
Buona notte
l'idea potrebbe essere questa:
Come vedi si dovranno utilizzare due BUS I2C, in ogni bus puoi collegare fino ad 8 MAX.
Nello schema ho disegnato solo 3 MAX per ogni BUS.
Lo schema è poco meno di quanto in realtà serve: mancano i collegamenti dei pin A0, A1, A2 che ho indicato come scritte all'interno del MAX, mancano i collegamenti di alimentazione e tutti i pin di input/output.
Ma l'elettronica di contorno ai MAX, per il collegamento ad Arduino ed il loro funzionamento, è quella indicata nelle schema: praticamente nulla.
Ci sarà un po' di software, per altro io Arduino non lo conosco e quindi non ti saprei nemmeno aiutare nella stesura del software, ma troverai sicuramente qualcuno qui nel forum che ti saprà aiutare.
I dati, sia in input che in output, passano per i pin SDA e SCL: il protocollo I2C con cui lavorano questi MAX è un protocollo di comunicazione seriale, quindi su quei 2 fili passano tutti i dati che desideri.
I 50ms per elaborare ogni input/output, così su due piedi, credo non siano pochi: penso insomma che potresti farcela, ma molto dipende dal tipo di elaborazioni che vorresti fare sugli ingressi per ottenere i valori delle uscite.
Un normale led necessita di una corrente attorno ai 20mA, sei quindi in grado di pilotarlo tranquilamente.
Diverso invece il problema della distanza. Stiamo parlando di segnali digitali e qualche metro di cavo direi che è troppo. Dovresti riuscire a rimanere attorno al metro, massimo 1,5 metri per ogni segnale.
Buona notte
Fabio
0
voti
Ciao Fabio,
Grazie per lo schema.
E quello che temevo un po', non sono sicurò di capire tutto. Gli ingressi A0, A1, A2 sono commandati da SDA e SCL oppure sono messi alla massa e al VCC a secondo dell’indirizzo che si vuole ?
Mi dispiace ma ho veramente cercato di capire il datasheet del MAX ma non havendo mai letto questo tipo di documento devo dire che non ci capisco tanto comme si farebbe a programmare i dati.
I pin SDA e SCL non devono passare dal TX e RX del’Arduino ?
Se è così come si fa ad avere 2 bus perché ci sono solo due TX e RX.
Se non è così, si prendono i pin che si vuole e si invia i dati su questi pin ?
Se hai un po' di tempo per spiegarmi come si dovrebbe fare te ne sarei molto grato. Un disegno o uno schema, anchè a mano, e sempre più parlante.
Grazie se mi concedi un po' di tempo.
Buon pomeriggio.
Cordialemente
Dario
Grazie per lo schema.
E quello che temevo un po', non sono sicurò di capire tutto. Gli ingressi A0, A1, A2 sono commandati da SDA e SCL oppure sono messi alla massa e al VCC a secondo dell’indirizzo che si vuole ?
Mi dispiace ma ho veramente cercato di capire il datasheet del MAX ma non havendo mai letto questo tipo di documento devo dire che non ci capisco tanto comme si farebbe a programmare i dati.
I pin SDA e SCL non devono passare dal TX e RX del’Arduino ?
Se è così come si fa ad avere 2 bus perché ci sono solo due TX e RX.
Se non è così, si prendono i pin che si vuole e si invia i dati su questi pin ?
I 50ms sono per elaborare un blocco (10 Input e 5 Output) e non solo un I/O !!!Fabio ha scritto:I 50ms per elaborare ogni input/output, così su due piedi, credo non siano pochi: penso insomma che potresti farcela, ma molto dipende dal tipo di elaborazioni che vorresti fare sugli ingressi per ottenere i valori delle uscite.
Se hai un po' di tempo per spiegarmi come si dovrebbe fare te ne sarei molto grato. Un disegno o uno schema, anchè a mano, e sempre più parlante.
Grazie se mi concedi un po' di tempo.
Buon pomeriggio.
Cordialemente
Dario
0
voti
Ciao, perdonami ma non riesco a fare disegni, ti rispondo da cellulare e sono alquanto impedito.
I pin A0 A1 e A2 devono essere collegati a massa o a vcc per dare ad ogni MAX un diverso indirizzo.
I segnali SDA e SCL non sono RX e TX. Ti converebbe cercare una guida sul Protocollo I2C, vedrai che poi anche i datasheet del MAX sarà più chiaro.
I segnali SDA e SCL possono essere generati dal software, andranno bene quindi 2 pin qualsiasi di Arduino.
Non ho fatto calcoli precisissimi, ma con la soluzione che ti ho proposto e con una schedina tipo il Pierin PIC18 (quindi penso anche con Arduino), dovresti riuscire a gestire l'intero plastico (256 segnali tra input r output) in massimo 10ms: molto meno dei 50ms per sezione che dicevi.
I pin A0 A1 e A2 devono essere collegati a massa o a vcc per dare ad ogni MAX un diverso indirizzo.
I segnali SDA e SCL non sono RX e TX. Ti converebbe cercare una guida sul Protocollo I2C, vedrai che poi anche i datasheet del MAX sarà più chiaro.
I segnali SDA e SCL possono essere generati dal software, andranno bene quindi 2 pin qualsiasi di Arduino.
Non ho fatto calcoli precisissimi, ma con la soluzione che ti ho proposto e con una schedina tipo il Pierin PIC18 (quindi penso anche con Arduino), dovresti riuscire a gestire l'intero plastico (256 segnali tra input r output) in massimo 10ms: molto meno dei 50ms per sezione che dicevi.
Fabio
0
voti
Ciao Fabio,
Non c'è bisogno di scusarti, è gia tanto che puoi rispondermi e ti ringrazio.
Leggerò il protocolo I2C e tentero di capire.
Credo dunque di avere capito per gl'ingressi A0, A1, e A2.
Però mi pongo una domanda, nel mio primo pots havevo scritto:
Grazie ancorà per le tue risposte.
Buona giornata.
Cordialmente
Dario
Non c'è bisogno di scusarti, è gia tanto che puoi rispondermi e ti ringrazio.
Leggerò il protocolo I2C e tentero di capire.
Credo dunque di avere capito per gl'ingressi A0, A1, e A2.
Ma sempre per 8 MAX e quindi 4 pin per i 16 MAX ?I segnali SDA e SCL possono essere generati dal software, andranno bene quindi 2 pin qualsiasi di Arduino.
Però mi pongo una domanda, nel mio primo pots havevo scritto:
Se si mettono 16 MAX e che doppo vorrei ingrandire il plastico, sarei bloccato oppure potrei usare di nuovo due altri pin dell'Arduino per gestire nuovi blocchi ?Quall'ora l'applicazione deve essere flessibile e scalabile per aggiungere blocchi all'avenire, se necessario.
Grazie ancorà per le tue risposte.
Buona giornata.
Cordialmente
Dario
0
voti
Devi utilizzare 2 pin di Arduino ogni 8 MAX.
Quindi per 16 MAX ti servono 4 pin di Arduino.
La soluzione con i MAX ti consente di aumentare il numero di input/output quando vuoi solo aggiungendo altri MAX: naturalmente altri 2 pin di Arduino ogni 8 MAX che aggiungi.
Aumenteranno anche i tempi di elaborazione aggiungendo dei MAX.
Ciao
Quindi per 16 MAX ti servono 4 pin di Arduino.
La soluzione con i MAX ti consente di aumentare il numero di input/output quando vuoi solo aggiungendo altri MAX: naturalmente altri 2 pin di Arduino ogni 8 MAX che aggiungi.
Aumenteranno anche i tempi di elaborazione aggiungendo dei MAX.
Ciao
Fabio
0
voti
Ciao Fabio,
Grazie per la risposta.
OK, la soluzione sarebbe anchè evolutiva (scalabile).
Ho capito che l'indirizzo del MAX è fisso mettendo fisicamente l'ingressi A0, A1, A2 a massa o VCC, ma ho due domande :
In un post precedente avevo scritto:
Mi dispiace farvi queste domande un po' di base
, ma lo sono, e non vorrei sbagliarmi prima di prendere una dritta.
A tutti, se avete delle proposte o riflessioni saranno molto apprezzate, non esitate ad aiutarmi.
Ancora grazie e buona giornata.
Cordialmente
Dario
Grazie per la risposta.
OK, la soluzione sarebbe anchè evolutiva (scalabile).
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 ?
In un post precedente avevo 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.Sono sensibili all’ambiente perché ci sarano molti fili e qualche metro di cavo per ogni uscita o entrata ?
Mi dispiace farvi queste domande un po' di base
A tutti, se avete delle proposte o riflessioni saranno molto apprezzate, non esitate ad aiutarmi.
Ancora grazie e buona giornata.
Cordialmente
Dario
0
voti
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
Potete per favore spiegarmi come funziona ?
Cordialmente
Dario
14 messaggi
• Pagina 1 di 2 • 1, 2
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 7 ospiti

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)


