Chiedo alla comunità di consigliarmi su quali schede Arduino utilizzare per la gestione di un semplice plastico ferroviario. Devo movimentare due locomotori da 200-300 mA cad a 12 Vcc e vorrei farlo gestendo le tensioni in maniera progressiva per far accelerare/rallentare i convogli in maniera veritiera.
Nel dettaglio ho 10 sezioni che vanno alimentate dovendo anche invertire le polarità Dunque un massimo di 20 situazioni.
Inoltre devo gestire 5 o 6 scambi che come è noto, vanno a 12-15 Vca. ognuno ha un comune e due cavi per le due direzioni. Ovviamente funzionano per un secondo ciascuno e quasi mai in contemporanea.
Infine ho 9 semafori (che devo ancora autocostrirmi). Credo di utilizzare per ciascuno un led bicolore verde/rosso (2,5 Vcc - 20mA) dunque ognuno avrebbe un comune e due fili di commutazione. I semafori saranno sempre tutti accesi dunque la corrente totale è di poco meno di 200 mA)
Fare tutto questo a relè, oltre che antidiluviano, mi sembra sconveniente perchè spero col software di arduino di gestire anche la logica (se il semaforo diventa verde dai tensione alla sezione di binario).
Chiedo dunque se con Arduino Uno si può fare questo e quali ulteriori schede devo utilizzare per gestire la movimentazione, gli scambi e i semafori.
Arduino UNO ha pin di I/O digitali limitati (14) con la possibilità di sfruttare addizionalmente gli input analogici (6) come ulteriori pin digitali, quindi un totale di 20 I/O. E' vero che si potrebbero usare shift register, multiplexer, o collegamenti degli I/O a matrice, per aggiungerne altri ma eviterei di complicarsi la vita. Orientati su Arduino MEGA che dispone di ben 54 I/O di cui 15 utilizzabili come uscite in PWM, 16 input analogici. Invece dei relè puoi usare optoisolatori a go-go, i quali permettono di separare elettricamente Arduino dai circuiti esterni e nel contempo di poter comandare carichi di potenza modesta (dipende dal modello di optoisolatore). Gli optoisolatori li puoi usare sia per ricevere segnali in ingresso sia per generarne in uscita.
Devo movimentare due locomotori da 200-300 mA cad a 12 Vcc e vorrei farlo gestendo le tensioni in maniera progressiva per far accelerare/rallentare i convogli in maniera veritiera.
Questo vuol dire che con Arduino devi fare un controllo in PWM dei motori. Ho letto che esistono, ma non ho approfondito e non sono sicuro, degli optoisolatori adatti al funzionamento in PWM, cioè che commutano la propria uscita velocemente in funzione del comando PWM proveniente da Arduino.
Il discorso degli optoisolatori ha senso se usi un alimentatore dedicato ad Arduino la cui massa NON va a collegarsi all'altro alimentatore del circuito comandato. Infatti se si va a stabilire un collegamento di massa comune fra i due circuiti, la propagazione dei disturbi avviene tramite tale collegamento.
Video che spiegano i concetti citati applicandoli al contesto di Arduino:
14 e 6 sono 20 e non 21.
Un Arduino ha 20 Pin digitali.
Comunque con dei Shift Register, o dei Expander I2C o SPI si possono aumentare i pin.
Un Arduino MEGA oltre ad avere piú pin ha anche piú memoria.
Piú pin disponibili non vuol dire che puó dare in somma piú corrente e percui se si deve pilotare molti dispositivi é da fare anche molto precisamente i conti con la somma della corrente dati dai Pin messi in uscita.
... aggiungo solo che ... ogni pin di Arduino può dare al massimo, a Vcc, 40 mA (... ma quello è veramente un limite, nel normale funzionamento occorre stare al 60-70% di detto valore) ed inoltre la somma di tutti i pin e dell'assorbimento del chip, non deve superare al massimo i 200 mA (... e anche qui massimo va considerato come valore limite, ma nel normale funzionamento occorre stare al 60-70% di detto valore). Assorbimenti oltre detti limiti possono danneggiare irrimediabilmente il chip.
Aggiungo ... per le locomotive, puoi usare dei ponti H a mosfet (piu efficenti di quelli a transistor), pero' dato che si parla di locomotive, quindi di oggetti che non hanno la necessita' di avere inversioni brusche di direzione, consiglio un semplice mosfet piu un rele' a doppio scambio per ogni traccia ... il mosfet lo si pilota con un pin PWM, in modo da fare le rampe di accelerazione/decelerazione e variare le velocita' come si desidera, ed il rele' lo si usa come invertitore di polarita' (da azionare ovviamente solo a locomotiva ferma, con un semplice pin digitale), per cambiare la direzione quando serve ... ovviamente, per ottimizzare il tutto e ridurre i consumi, si colleghera' in modo che la posizione da diseccitato corrisponda alla direzione che si usa di piu ... in questo modo inoltre servono un pin PWM ed uno digitale per ogni traccia, invece che due pin PWM come con un ponte H autocostruito ...
il primo e' senza opto, il secondo con, mosfet ed opto possono essere qualsiasi equivalente di quelli
Per i rele' e gli scambi, a meno che non siano bobine che assorbono piu di 500mA, dei banali BC337 sono sufficenti (ricordarsi sempre i diodi in antiparallelo alle bobine ... e se gli scambi erano previsti per usare 12VAC, sarebbe bene alimentarli a 9V, oppure metterci in serie un paio di diodi 1N4007 o simili, usandoli in DC) ... per gli opto, la frequenza dei PWM di arduino non gli causa alcun problema, servirebbero opto "veloci" solo con frequenze superiori ai 200/300KHz, ed arduino non mi sembra possa superare il KHz ...
EDIT: non ho disegnato condensatori di filtraggio sulle alimentazioni solo perche' quelli sono schemi di principio, ovviamente si deve sempre abbondare, dato che il tutto comanda rele' e motori, ma questo non dovrebbe neppure servire dirlo ...
Claudio_FF:
Con gli optoisolatori si possono anche realizzare i comandi per gli scambi 12Vca:
...
Giusto anche quello ... io parlavo solo di alimentare in CC le bobine previste per la CA, ma avendo gia la linea in CA e dovendo usare quella, si puo fare come dici tu
Quello che non sappiamo noi profani è come devono essere collegate le 10 sezioni di rotaia. Immagino che ciascuna possa ospitare un solo locomotore alla volta, ma ciascuna deve poter essere collegata e scollegata dall'alimentazione a piacere...
"Quello che non sappiamo noi profani è come devono essere collegate le 10 sezioni di rotaia. "
Mi sembrava abbastanza ovvio: ho pure incluso uno schema. Essendo quindi il percorso "lineare" e non ad "anello" va da se che l'alimentazione selle sezioni deve avvenire nell'unica maniera logica per far compiere la corsa al locomotore.
Quello non e' "uno schema elettrico", ma pazienza, si capisce lo stesso che le varie sezioni sono indipendenti ... quindi ti serviranno una decina di circuiti uguali, pilotabili ognuno indipendentemente ... suggerirei anche qualche sensore o reed, se avanzano ingressi, giusto per "dire" al programma se una motrice ha passato o meno un certo punto quando devi invertire o fermare, tanto per evitare incidenti ... ad esempio, se una motrice per qualche motivo andasse piu lentamente del previsto e si trovasse ancora su una sezione che dovrebbe aver gia oltrepassato in un certo momento, o cose simili
... mi fa quasi venire voglia di tirare insieme una shield "ferroviaria" per la Mega
Secondo me i sensori si quali accenna il metademone sono necessari, più che utili
Occorre considerare che al passaggio tra una tratta e la successiva le due tratte devono essere alimentate alla stessa maniera, per evitare corti sull'alimentazione al passaggio degli assi, serve quindi sapere se la motrice si trova vicino oppure no a una interruzione di tratta
Inoltre la frase "va da se che l'alimentazione selle sezioni deve avvenire nell'unica maniera logica per far compiere la corsa al locomotore " non ha alcun senso per noi che leggiamo
È lo OP l'esperto in queste cose, sta a lui dircelo
Ah, da ultimo, dato che se ne parla, della logica, appare chiaro e logico che un tracciato del genere richiede motrici a rodiggio simmetrico
Etemenanki:
ti serviranno una decina di circuiti uguali, pilotabili ognuno indipendentemente...
È su questo che riflettevo. Nella versione "analogica" si ha UNA alimentazione e (immagino) una matrice di collegamento delle 10 sezioni (OFF / avanti / indietro). Dando alimentazione nei "momenti giusti" e nel verso giusto si fa percorrere ai locomotori la strada voluta.
Ma se parliamo di PWM multipli si può fare un'astrazione: due soli PWM: ciascuno dedicato a un locomotore specifico, e una rete di connessione che invia il PWM del locomotore voluto ai driver delle sezioni.
In questo modo la gestione delle sezioni diventa semplicemente:
collega(sezione, locomotore)
scollega(sezione)
...e non servirebbe pensare a "quanto" PWM dare a quella sezione e in che verso.
Ah, a margine, i 940Hz del PWM di Arduino si potrebbero sentire attraverso il motore.
Claudio_FF:
Ma se parliamo di PWM multipli si può fare un'astrazione: due soli PWM: ciascuno dedicato a un locomotore specifico, e una rete di connessione che invia il PWM del locomotore voluto ai driver delle sezioni.
In questo modo la gestione delle sezioni diventa semplicemente:
collega(sezione, locomotore)
scollega(sezione)
...e non servirebbe pensare a "quanto" PWM dare a quella sezione e in che verso.
Si, e' possibile, ma in quel modo saresti limitato a due sole motrici ... metti un giorno ti viene voglia di aggiungere una terza motrice, dovresti modificare tutto quanto per poterle far andare insieme ... mentre con un circuito per ogni sezione, e' vero che c'e' un minimo di lavoro in piu nella realizzazione, ma almeno poi il plastico e' a posto per sempre, qualsiasi modifica tu voglia fare al numero di motrici ...