Ben arrivato! Fate login o registratevi per fruire di tutte le funzionalità del forum e del sito.
Se eri già registrato e non ti ricordi la password usa questo link per recuperare l'accesso
Sito e forum dedicati al fermodellismo, il nostro hobby viene praticato in molte maniere diverse, tutte ugualmente valide: hai un plastico? oppure sei un collezionista? oppure un semplice appassionato? Non esitare a scrivere nel forum, tutti gli interventi sono benvenuti ... Postate foto e video del vostro plastico e chiedete aiuto per ogni problema o curiosità inerente al nostro hobby.

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

Messaggio
Autore
Avatar utente
Docdelburg
Socio GAS TT
Messaggi: 5848
Iscritto il: martedì 4 settembre 2012, 18:16
Nome: Mauro
Regione: Lombardia
Città: Borgo Priolo
Stato: Non connesso

Progetto DCC decoder per deviatoi/accessori

#1 Messaggio da Docdelburg »

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



Avatar utente
gavinca
Socio GAS TT
Messaggi: 1882
Iscritto il: martedì 22 maggio 2012, 13:07
Nome: Carlo
Regione: Piemonte
Città: Bellinzago
Stato: Non connesso

#2 Messaggio da gavinca »

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: 5848
Iscritto il: martedì 4 settembre 2012, 18:16
Nome: Mauro
Regione: Lombardia
Città: Borgo Priolo
Stato: Non connesso

#3 Messaggio da Docdelburg »

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:

Avatar utente
matteob
Messaggi: 895
Iscritto il: venerdì 12 giugno 2015, 12:06
Nome: matteo
Regione: Veneto
Città: San Bonifacio
Stato: Non connesso

#4 Messaggio da matteob »

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: venerdì 18 novembre 2011, 21:15
Nome: Fabio
Regione: Campania
Città: Napoli
Stato: Non connesso

#5 Messaggio da Fabio_C »

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: 5848
Iscritto il: martedì 4 settembre 2012, 18:16
Nome: Mauro
Regione: Lombardia
Città: Borgo Priolo
Stato: Non connesso

#6 Messaggio da Docdelburg »

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)

Avatar utente
Fabio_C
Messaggi: 97
Iscritto il: venerdì 18 novembre 2011, 21:15
Nome: Fabio
Regione: Campania
Città: Napoli
Stato: Non connesso

#7 Messaggio da Fabio_C »

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: 5848
Iscritto il: martedì 4 settembre 2012, 18:16
Nome: Mauro
Regione: Lombardia
Città: Borgo Priolo
Stato: Non connesso

#8 Messaggio da Docdelburg »

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?

Avatar utente
SteaMarco
Messaggi: 831
Iscritto il: domenica 6 dicembre 2015, 8:30
Nome: Marco
Regione: Piemonte
Città: Moncalieri
Stato: Non connesso

#9 Messaggio da SteaMarco »

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: venerdì 18 novembre 2011, 21:15
Nome: Fabio
Regione: Campania
Città: Napoli
Stato: Non connesso

#10 Messaggio da Fabio_C »

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: 4537
Iscritto il: venerdì 28 ottobre 2011, 0:59
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Età: 57
Stato: Non connesso

#11 Messaggio da Edgardo_Rosatti »

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
ED
237
11101101

Avatar utente
SteaMarco
Messaggi: 831
Iscritto il: domenica 6 dicembre 2015, 8:30
Nome: Marco
Regione: Piemonte
Città: Moncalieri
Stato: Non connesso

#12 Messaggio da SteaMarco »

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: 3815
Iscritto il: domenica 26 aprile 2015, 17:22
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Stato: Non connesso

Re: Progetto DCC decoder per deviatoi/accessori

#13 Messaggio da sal727 »

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: 131
Iscritto il: mercoledì 31 dicembre 2014, 13:52
Nome: Antonino
Regione: Campania
Città: C.mare
Stato: Non connesso

Re: Progetto DCC decoder per deviatoi/accessori

#14 Messaggio da antogar »

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

Avatar utente
sal727
Messaggi: 3815
Iscritto il: domenica 26 aprile 2015, 17:22
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Stato: Non connesso

Re: Progetto DCC decoder per deviatoi/accessori

#15 Messaggio da sal727 »

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: 131
Iscritto il: mercoledì 31 dicembre 2014, 13:52
Nome: Antonino
Regione: Campania
Città: C.mare
Stato: Non connesso

Re: Progetto DCC decoder per deviatoi/accessori

#16 Messaggio da antogar »

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: 3815
Iscritto il: domenica 26 aprile 2015, 17:22
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Stato: Non connesso

Re: Progetto DCC decoder per deviatoi/accessori

#17 Messaggio da sal727 »

@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: 131
Iscritto il: mercoledì 31 dicembre 2014, 13:52
Nome: Antonino
Regione: Campania
Città: C.mare
Stato: Non connesso

Re: Progetto DCC decoder per deviatoi/accessori

#18 Messaggio da antogar »

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: 3815
Iscritto il: domenica 26 aprile 2015, 17:22
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Stato: Non connesso

Re: Progetto DCC decoder per deviatoi/accessori

#19 Messaggio da sal727 »

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

Avatar utente
antogar
Messaggi: 131
Iscritto il: mercoledì 31 dicembre 2014, 13:52
Nome: Antonino
Regione: Campania
Città: C.mare
Stato: Non connesso

Re: Progetto DCC decoder per deviatoi/accessori

#20 Messaggio da antogar »

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

Torna a “GAS TT LAB”