Progetto DCC decoder per deviatoi/accessori

Area di lavoro per portare all'attenzione degli appassionati, soluzioni pratiche che fanno uso della piattaforma Arduino e Processing.

Moderatore: liftman

Rispondi
Avatar utente
Docdelburg
Socio GAS TT
Messaggi: 5206
Iscritto il: mar set 04, 2012 6:16 pm
Nome: Mauro
Regione: Lombardia
Città: Borgo Priolo
Età: 63
Stato: Non connesso

Progetto DCC decoder per deviatoi/accessori

Messaggio da Docdelburg » mer mar 29, 2017 1:39 pm

Ciao, sto ultimamente giocando con Arduino; chi mi conosce sa che faccio il medico e quindi fate conto che sto giocando al "piccolo" elettrotecnico! [:I]
Mi incuriosisce la sfida a programmarmi un Arduino Uno Rev.3 in un decoder DCC in grado di pilotare motori per deviatoi, ma ci devo arrivare da solo, pur con tutti gli aiuti del caso.
Al di là che siano motori a bobina, lenti o servo, sono arenato al momento al problema di decodificare e interpretare i pacchetti di segnali in arrivo dal bus DCC.
In pratica ho adottato uno schema frequentemente riportato in rete per connettere il bus DCC alle porte digitali di Arduino con un sistema otpoisolato per evitare guai visti i diversi voltaggi.
Lo schema è questo

Immagine:
Immagine
36,99 KB

Ho caricato librerie e sketch da questo sito e in effetti il tutto funziona:

http://www.mynabay.com/dcc_monitor/

Posso vedere a monitor (seriale) i vari pacchetti DCC che cambiano man mano che invio comandi ad un ipotetico decode deviatoi.

Immagine:
Immagine
121,35 KB

Pur essendoci in rete altri esempi, quello che non riesco a capire è come diversificare un comando impartito allo stesso indirizzo per la deviata o il corretto tracciato.
Mi spiego, ci sono esempi in rete in cui ad ogni indirizzo si associa un'azione di arduino. Ma se allo stesso indirizzo arrivano due comandi opposti, deviata e corretto tracciato appunto, come faccio a distinguere tali due comandi e di conseguenza impartire ad esempio un "HIGH" in un pinoutput per deviata e un altro "HIGH" in un secondo pinoutput per il corretto tracciato?

Grazie a chi mi potrà dare un suggerimento
Mauro Menini - CMP - GAS TTGalleria dell’orso - Deposito merci di Casteggio - Ponte sul fiume Po

Salva una pianta, mangia un vegano!

Avatar utente
gavinca
Socio GAS TT
Messaggi: 1816
Iscritto il: mar mag 22, 2012 1:07 pm
Nome: Carlo
Regione: Piemonte
Città: Bellinzago
Età: 47
Stato: Non connesso
Contatta:

Messaggio da gavinca » mer mar 29, 2017 3:14 pm

Ciao Doc
non conosco nello specifico la libreria e gli sketch che hai scaricato, ma tempo fa quando per curiosità avevo studiato l'interfaccia tra arduino e DCC, per comandare gli accessori usavano il pacchetto dcc delle "funzioni", quindi F0, F1, F2, ecc che possono valere 1 o 0 (deviata o corretto tracciato).

Avatar utente
Docdelburg
Socio GAS TT
Messaggi: 5206
Iscritto il: mar set 04, 2012 6:16 pm
Nome: Mauro
Regione: Lombardia
Città: Borgo Priolo
Età: 63
Stato: Non connesso

Messaggio da Docdelburg » mer mar 29, 2017 4:26 pm

Grazie Carlo,
a furia di cercare le decodifiche sono riuscito a capire lo sketch di Papeniglio che ho modificato e che ai primi test sembra funzionare egregiamente.

http://www.papeniglio.net/elettronica/decoder-dcc/

Da questo sketch si parte per comandare ad ogni indirizzo un relè monostabile; ora sono di fretta ma farò tutta una serie di prove e poi relazionerò......

Stay tuned! :wink:
Mauro Menini - CMP - GAS TTGalleria dell’orso - Deposito merci di Casteggio - Ponte sul fiume Po

Salva una pianta, mangia un vegano!

Avatar utente
matteob
Messaggi: 895
Iscritto il: ven giu 12, 2015 12:06 pm
Nome: matteo
Regione: Veneto
Città: San Bonifacio
Età: 39
Stato: Non connesso

Messaggio da matteob » mer mar 29, 2017 4:53 pm

Docdelburg ha scritto:

Grazie Carlo,
a furia di cercare le decodifiche sono riuscito a capire lo sketch di Papeniglio che ho modificato e che ai primi test sembra funzionare egregiamente.

http://www.papeniglio.net/elettronica/decoder-dcc/

Da questo sketch si parte per comandare ad ogni indirizzo un relè monostabile; ora sono di fretta ma farò tutta una serie di prove e poi relazionerò......

Stay tuned! :wink:


Non ti ferma nessuno! :wink:
Matteo

Avatar utente
Fabio_C
Messaggi: 97
Iscritto il: ven nov 18, 2011 9:15 pm
Nome: Fabio
Regione: Campania
Città: Napoli
Età: 42
Stato: Non connesso

Messaggio da Fabio_C » dom apr 02, 2017 10:02 am

Buongiorno,

Ho utilizzato il progetto Rudy sul mio plastico senza alcuna difficoltà.
La IB con la IB Switch ci lavorano senza problemi.

Prossimo step gli S88......
Fabio Cavuoto

Avatar utente
Docdelburg
Socio GAS TT
Messaggi: 5206
Iscritto il: mar set 04, 2012 6:16 pm
Nome: Mauro
Regione: Lombardia
Città: Borgo Priolo
Età: 63
Stato: Non connesso

Messaggio da Docdelburg » lun apr 03, 2017 4:18 pm

Fabio_C ha scritto:

Buongiorno,

Ho utilizzato il progetto Rudy sul mio plastico senza alcuna difficoltà.


Buongiorno Fabio,
concordo che il progetto di Rudy è il più calzato per le nostre necessità; in effetti permette di dare un impulso a due uscite di Arduino con un indirizzo unico in modo da muovere correttamente un motore a solenoide. Ovviamente lo fa a soli 5V e servono sovrastrutture che diano un impulso di maggior potenza.
Quello che non ho capito, nella mia ignoranza circa il linguaggio C, è come replicare correttamente le istruzioni dell'indirizzo 1 per avere fino a 6 indirizzi diversi. Sono riuscito a cambiare i punti di output ma replicando le istruzioni mi chiede definizioni che non so.

DECODER SOLENOIDI.doc (34,41 KB)
Mauro Menini - CMP - GAS TTGalleria dell’orso - Deposito merci di Casteggio - Ponte sul fiume Po

Salva una pianta, mangia un vegano!

Avatar utente
Fabio_C
Messaggi: 97
Iscritto il: ven nov 18, 2011 9:15 pm
Nome: Fabio
Regione: Campania
Città: Napoli
Età: 42
Stato: Non connesso

Messaggio da Fabio_C » lun apr 03, 2017 10:11 pm

Ciao Doc, ecco quanto funzionante sul mio plastico

Arduino con DCC Sniffer
Immagine

Relè d'interfaccia con i motori a solenoide Hornby/Peco dotati di circuito a scarica capacitiva
Immagine

Sottoriportato lo sketch contenete 8 deviatoi
Code.txt (10,13 KB)
Fabio Cavuoto

Avatar utente
Docdelburg
Socio GAS TT
Messaggi: 5206
Iscritto il: mar set 04, 2012 6:16 pm
Nome: Mauro
Regione: Lombardia
Città: Borgo Priolo
Età: 63
Stato: Non connesso

Messaggio da Docdelburg » lun apr 03, 2017 10:32 pm

Grazie Fabio, mi hai tolto qualche dubbio! :smile:
Tu però, per avere porte digitali oltre la 13 hai evidentemente un Mega, giusto?
Io arrivo a 6 motori con le porte digitali; potrei usare anche le analogiche?
Mauro Menini - CMP - GAS TTGalleria dell’orso - Deposito merci di Casteggio - Ponte sul fiume Po

Salva una pianta, mangia un vegano!

Avatar utente
SteaMarco
Socio GAS TT
Messaggi: 831
Iscritto il: dom dic 06, 2015 8:30 am
Nome: Marco
Regione: Piemonte
Città: Moncalieri
Età: 42
Stato: Non connesso

Messaggio da SteaMarco » lun apr 03, 2017 10:41 pm

Ciao,

a volte penso che non sò come intervenire, non capisco a volte dite che di elettronica non sapete nulla e poi si scopre che siete programmatori della nasa... :grin:
Non ho letto gli sketc ma secondo me basta un banale datashift per moltiplicare le uscite ad Arduino...

Ma quà sul forum non c'è H0Master che ha pubblicato cose simili? Non trovo più la discussione sennò la linkavo.

Ciao Marco
Marco - Non è il mezzo che fà la differenza ma l'uomo

Avatar utente
Fabio_C
Messaggi: 97
Iscritto il: ven nov 18, 2011 9:15 pm
Nome: Fabio
Regione: Campania
Città: Napoli
Età: 42
Stato: Non connesso

Messaggio da Fabio_C » lun apr 03, 2017 11:49 pm

Docdelburg ha scritto:

Grazie Fabio, mi hai tolto qualche dubbio! :smile:
Tu però, per avere porte digitali oltre la 13 hai evidentemente un Mega, giusto?
Io arrivo a 6 motori con le porte digitali; potrei usare anche le analogiche?

Uso 8 deviatoi (maxaccesories) tab 0 a 7 con indirizzo DCC da 10 a 16 (il 9 é libero e usato x alcuni test)

Il primo lo chiamo tab (0) in DCC 10 e le uscite Arduino sono quelle pin 6e5 ecc...
A volte le uscite non sono in sequenza per esempio DCC 12 per non scablare i relè con i comandi di Normale\Rovescio ho fatto prima ad invertirli via software, sai noi della NASA facciamo cosí :geek:
Fabio Cavuoto

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4269
Iscritto il: ven ott 28, 2011 12:59 am
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Età: 54
Stato: Non connesso
Contatta:

Messaggio da Edgardo_Rosatti » mer apr 05, 2017 12:55 am

Docdelburg ha scritto:

Grazie Fabio, mi hai tolto qualche dubbio! :smile:
Tu però, per avere porte digitali oltre la 13 hai evidentemente un Mega, giusto?
Io arrivo a 6 motori con le porte digitali; potrei usare anche le analogiche?


Si, tecnicamente e limitatamente al funzionamento di Arduino, le 6 uscite PWM D3,D5,D6,D9,D10,D11 (non analogiche) dell'UNO sono configurabili anche come digitali, quindi arrivi a 12 (D2-D13). Sarebbero 14 con la D0 e la D1, ma queste ultime sono usate per la comunicazione seriale tra PC e Arduino.

Inoltre è possibile utilizzare i 6 pin di ingressi analogici A0-A5 come pin digitali definendoli nel seguente modo:
Pin 14 = Analog in 0
Pin 15 = Analog in 1
Pin 16 = Analog in 2
Pin 17 = Analog in 3
Pin 18 = Analog in 4
Pin 19 = Analog in 5

Es. Per dichiarare A0 come uscita digitale:
pinMode(14,OUTPUT);
oppure come ingresso digitale:
pinMode(14,INPUT);

e i soliti comandi di scrittura/lettura:
digitalWrite();
digitalRead();

arrivando così a 18 porte I/O digitali

http://alessandro-riva-elettronica.blog ... -come.html

http://www.mauroalfieri.it/informatica/ ... ogici.html

Avatar utente
SteaMarco
Socio GAS TT
Messaggi: 831
Iscritto il: dom dic 06, 2015 8:30 am
Nome: Marco
Regione: Piemonte
Città: Moncalieri
Età: 42
Stato: Non connesso

Messaggio da SteaMarco » mer apr 05, 2017 11:22 am

La discussione che mi riferivo era questa che mi sembra avesse risolto già queste cose...

topic.asp?TOPIC_ID=12113

P.S. Io ivece appartengo alla categoria Copia/incolla! :wink:

Marco
Marco - Non è il mezzo che fà la differenza ma l'uomo

Avatar utente
sal727
Messaggi: 2987
Iscritto il: dom apr 26, 2015 5:22 pm
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Età: 61
Stato: Connesso

Re: Progetto DCC decoder per deviatoi/accessori

Messaggio da sal727 » gio giu 28, 2018 3:12 pm

ho costruito il filtro per Arduino, ho provato lo sketch del monitor e non funziona non legge nessun dato
Cattura.JPG
Ciao, Salvatore

Avatar utente
antogar
Messaggi: 55
Iscritto il: mer dic 31, 2014 1:52 pm
Nome: Antonino
Regione: Campania
Città: C.mare
Età: 53
Stato: Non connesso

Re: Progetto DCC decoder per deviatoi/accessori

Messaggio da antogar » sab giu 30, 2018 8:52 am

Doc se ti può essere utile...
viewtopic.php?f=117&t=11205
Ciao :)
Antonino

Avatar utente
sal727
Messaggi: 2987
Iscritto il: dom apr 26, 2015 5:22 pm
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Età: 61
Stato: Connesso

Re: Progetto DCC decoder per deviatoi/accessori

Messaggio da sal727 » sab giu 30, 2018 10:29 am

Grazie Antonino per la risposta, girovagando in rete mi ero imbattuto nel forum dove hai postato il tuo sketch ed avevo già salvato il link,
http://www.rmweb.co.uk/community/index. ... nts/page-2
il file col codice che hai postato qui sul forum, nel link che mi hai indicato, purtroppo in txt me lo legge tutto di seguito ed è piuttosto problematico riuscire ad ordinare le varie righe, penso che sia lo stesso che hai pubblicato sul forum inglese, è un progetto molto interessante ed è quello che era mia intenzione fare, se ho capito bene c'è la possibilità di poterlo usare sia in analogico che in DCC, correggimi se sbaglio.
Ciao, Salvatore

Avatar utente
antogar
Messaggi: 55
Iscritto il: mer dic 31, 2014 1:52 pm
Nome: Antonino
Regione: Campania
Città: C.mare
Età: 53
Stato: Non connesso

Re: Progetto DCC decoder per deviatoi/accessori

Messaggio da antogar » mar lug 03, 2018 4:23 pm

Si è così: il circuito pilota i servo sia in analogico con degli interruttori, sia indigitale. Ha la possibilità di regolare "in campo" l' escursione di ogni singolo servo.

ciao
Antonino

Avatar utente
sal727
Messaggi: 2987
Iscritto il: dom apr 26, 2015 5:22 pm
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Età: 61
Stato: Connesso

Re: Progetto DCC decoder per deviatoi/accessori

Messaggio da sal727 » mar lug 03, 2018 7:49 pm

@Antonino
verificando il codice mi segnala un problema di poca memoria rimasta disponibile, se si usa arduino uno o nano col rischio di eventuali malfunzionamenti, con il mega invece è tutto ok, inoltre leggevo sul forum inglese che la tua modifica con registrazione in memoria col tempo potrebbe esaurire il numero di uso della memoria dell'arduino, se ho capito bene dopo non si può più programmare la scheda e tanto meno usarla per quello scopo.
Ciao, Salvatore

Avatar utente
antogar
Messaggi: 55
Iscritto il: mer dic 31, 2014 1:52 pm
Nome: Antonino
Regione: Campania
Città: C.mare
Età: 53
Stato: Non connesso

Re: Progetto DCC decoder per deviatoi/accessori

Messaggio da antogar » mer lug 04, 2018 9:20 am

Si, il sw usa la EEPROM per memorizzare le posizioni dei servo e le rilegge alla accensione.
Scritture e cancellazioni della EEPROM hanno un numero limitato di cicli, se non sbaglio per Arduino la ATMEL dichiara 100.000 cicli, dopodichè si potrebbero avere difficoltà nello scrivere e leggere dati.

In pratica, una volta memorizzate le posizioni dei servo, potrai farlo altre 100.000 volte. Secondo me può bastare :)

ciao
Antonino

Avatar utente
sal727
Messaggi: 2987
Iscritto il: dom apr 26, 2015 5:22 pm
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Età: 61
Stato: Connesso

Re: Progetto DCC decoder per deviatoi/accessori

Messaggio da sal727 » mer lug 04, 2018 10:29 am

Per ovviare a questo eventuale inconveniente, non si potrebbero salvare i dati in una sd
Ciao, Salvatore

Avatar utente
antogar
Messaggi: 55
Iscritto il: mer dic 31, 2014 1:52 pm
Nome: Antonino
Regione: Campania
Città: C.mare
Età: 53
Stato: Non connesso

Re: Progetto DCC decoder per deviatoi/accessori

Messaggio da antogar » mer lug 04, 2018 3:15 pm

beh... per me 100.000 scritture non rappresentano un inconveniente. Se proprio fossi preoccupato comprerei qualche Arduino Nano in più (per quello che costano!)

ciao
Antonino

Rispondi

Torna a “GAS TT LAB”