Per chi utilizza RocPro, l'ottimo addon di RocRail che permette di programmare tutti i decoder DCC in modo grafico, spero di fare cosa gradita rendendo disponibili i file xml relativo ai decoder Khuen N045 e Khuen N025, due ottimi decoder del noto produttore tedesco.
Ricordo che per attivare RocPro è necessario effettuare una donazione di 10€ agli autori che dà diritto anche di utilizzare le connessioni con AndRoc o iRoc per interfacciare RocRail con i Tablet o cellulari Android/iOS
Per utilizzare i file non bisogna far altro che posizionarli nella cartella decspecs che si trova (per la versione Windows) nella cartella Documenti\Rocrail dell'utente corrente.
Il file può essere tuttavia copiato in qualsiasi cartella e aperto mediante il pulsante "Open"
Insieme ai decspecs allego anche il link per lo scaricamento delle immagini del decoder già in formato corretto.
Quando per esigenze di scena o semplicemente di percorso nel nostro tracciato ferroviario si viene a creare un cappio di ritorno, il nostro sistema digitale rileverà necessariamente un corto circuito quano un rotabile lo impegnerà.
Questo succede perchè una fase (in digitale non si ragiona in poitivo-negativo) del segnale DCC vene in contatto con l'altra quando il rotabile raggiunge il deviatoio che crea il loop.
Per poter gestire questo evento straordinario bisogna innanzitutto a livello di cablaggio isolare completamente la tratta del loop dal deviatoio mediante scarpette isolanti. L'azione da svolgere è semplicemente quella di invertire le due fasi tra loro quando il rotabile è completamente nel tratto sezionato.
Esistono numerosi dispositivi che svolgono questa funzione automaticamente il più famoso è il Lenz LK-200.
In questo articolo tuttavia illustrerò un metodo per gestire i loop in maniera totalmente automatizzata mediante Arduino.
Le principali funzionalità del sistema sono:
Comando dello scambio motorizzato mediante servocomando.
Rilevazione dell'occupazione del loop mediante barriera IR
Possibilità di utilizzare pulsanti esterni per movimentare il deviatoio.
Possibilità di utilizzare il DCC per movimentare il deviatoio.
Il principio di funzionamento è semplicissimo. Quando la barriera IR viene interrotta (quindi il treno stà ancora transitando) il sistema attenda che la barriera venga liberata (quindi il treno è completamente nel loop). Dopo un ritardo impostabile il sistema predispone il deviatoio per l'uscita al loop e commuta un relè che inverte le fasi del segnale DCC.
Mediante pulsanti esterni o mediante un comando DCC è quindi possibile scegliere il verso di percorrenza nel loop.
Ecco un piccolo video per illustrare il funzionamento del sistema
Nel precedente post ho tentato di interfacciare Arduino con RocRail per poter utilizzare gli ingressi come ingressi di retroazione.
Si sa, l'appetito vien mangiando, quindi ho deciso di effettuare alcune prove per permettere ad Arduino di dialogare direttamente con una command station dotata di interfaccia Xpressnet. Nel mio caso la scelta è ricaduta sul Multimaus Roco dotato di booster 10764.
Una piccola considerazione sui layer più bassi del protocollo Xpressnet. Innanzitutto il layer fisico è costituito dallo standard EIA RS485, in modalità half duplex e configurazione master-slave, quindi la trasmissione può avvenire in modo bidirezionale da e verso il master ma non contemporanamente.
Il master è costituito dal multimaus Roco collegato alla presa "master" del booster e può esserne presente uno solo in tutta la rete. Gli slave possono essere fino a 31 e collegati in parallelo sulla presa Slave.
Dal sito Lenz è possibile scaricare la piedinatura del cavo di collegamento tra i nodi, tipicamente un RJ11 per gli slave (6P/4C) a 4poli, AeB del segnale RS485 e alimenatzione 12Vcc, oppure un RJ12 per il master (6P/6C) in quanto i due pin in più servono per trasportare il segnale DCC verso il booster.
Fonte: specifiche protocollo scaricabile dal sito LENZ
Passando al layer successivo si nota che Xpressnet adotta una comunicazione a pacchetti con:
1 bit di start - 9bit di dati - 1 bit di stop - nessuna parità
con una velocità di 62,5 Kbps.
Questo è un problema con arduino e poi vedremo il perchè...
HARDWARE
Per quanto riguarda l'hardware ho realizzato il prototipo con un Arduino MEGA, in quanto innanzitutto dotato di 3 UART interne, a differenza degli altri Arduini (UNO, NANO) che ne hanno una sola, quindi è possibile sfruttare la seriale collegata al convertitore di serie come monitor di debug ed utilizzare la prima seriale per collegarci il convertitore RS232-RS485.
L'inrefaccia si realizza mediante un IC MAX485 oppure il più economico SN75176 terminando le linee A e B della RS485 con un resistore da 120Ohm e ricordandosi di collegare il negativo del bus al negativo di Arduino. (ATTENZIONE ALLA POLARITA' sulla spina RJ)
Come dicevo prima la trasmissione con Xpressnet prevede 8 bit di dati, mentre nel core di Arduino è prevista solo una trasmissione ad 8 bit. Per modificare questa limitazione ho utilizzato una modifica al core come descritto nel forum di Arduino e scaricabile da questo link
Una volta estratti i due file hardwareserial.cpp e hardwareserial.h vanno sostituti ai file omonimi in
A questo punto è necessario scaricare il codice sorgente dentro Aarduino e il gioco è fatto.
CLICCA QUI PER SCARICARE IL CODICE SORGENTE
(attualmente in fase beta appena pronto lo renderò disponibile)
Nel video seguente è possibile vedere come si riesca ad intergire con un Multimaus Roco visualizzando ed attiavndo lo stop di emergenza da tutti i dispositivi e ad attivare un deviatoio mediante due pulsanti su Arduino.
Si ringrazia Nicolas Zin per lo scheletro della struttura di comunicazione Xpressnet visionabile e scaricabile dal suo repository presso Github https://github.com/nzin/xpressnet_arduino
Sistemata l'elettronica ho iniziato le prime prove di percorribilità del plastico con convogli completi.
Non ho notato nessun particolare problema all'armamento e al movimento dei deviatoi.
Il test è stato svolto con una E444R Mehano in livrea XMPR titolare di una teoria di vetture X in grigio ardesia di 1 e seconda classe tutte Rivarossi+ vagone letto LIMA.
Il protocollo Xpressnet fu inventato da Lenz per connettere tra loro dispositivi di gestione quali Command Station, palmari, booster moduli feedback ecc. ecc. e si basa sullo standard RS485.
Il protocollo è di pubblico dominio ed è liberamente scaricabile dal seguente link .www.lenzusa.com/1newsite1/Manuals/xpressnet.pdf
Visto che Arduino monta una seriale perchè non sfruttarla per dialogare con un software di gestione plastico per veicolare i segnali di feedback (ad assobimento, a pedale oppure a reed)?
Presto fatto, con poche righe di codice e studiando attentamente il protocollo si riesce a implementare abbastanza facilmente una emulazione del gateway LI 101F Lenz, il quale monitorando costantemente gli ingressi che, nel caso di una board Arduino Uno sono 12 escludendo i due pin 0 e 1 per la seriale, riesce a comunicare a RocRail lo stato dei sensori.
RocRail mappa i sensori a partire dal 512, in quanto da 0 a 511 sono riservati ai feedback posizionali per i deviatoi.
Naturalmente 12 ingressi sono pochini, ma già con una board Mega si hanno a disposizione 54 input di Feedback, oppure utilizzando i modulini di espansione di arriva ad una configurazione performante.