sabato 22 ottobre 2016

Arduino, Loconet e Feedback

La flessibilità del sistema di sviluppo di Arduino ormai è arcinota, anche in campo fermodellistico con l'avvento dei sistemi digitali, le  possibilià date da queste piccole schedine sono pressochè infinite. I miei esperimenti questa volta si sono rivolti verso il bus Loconet, ormai uno standard defacto per l'interconnessione di sistemi per la gestione di un plastico di medio/grandi dimensioni.

Il bus Loconet

Il bus Loconet fu sviluppato inizialmente da Digitrax. Loconet è un'architettura di rete basata su CSMA/CD (Carrier Sense Multiple Access/Collision Detect), similare per funzionamento fisico alla classica Ethernet.
Carrier Sense significa che ogni nodo connesso alla rete riesce a leggere il pacchetto in transito sulla rete stessa, ogni nodo riesce a stabilire se la rete è occupata o meno. Multiple access significa che ogni nodo può generare o ricevere pacchetti, quindi niente polling o master/slave.
Collision Detect significa che quando due nodi tentano di strasmettere allo stesso tempo creando una collisione possono risolvere la situazione in autonomia ritrasmettendo i pacchetti.
Loconet è ottimizzata per avere meno di una collisione ogni 300 messaggi al 100% di sfruttamento della rete, meno di quanto Ethernet permetta.
I collegamenti al bus avvengono mediante spine e cavi RJ12  medante lo schema sottostante


Come si può osservare i segnali trasportati dal cavo sono ridondanti e speculari. I segnali di Rail Sync trasportano il segnale DCC ognuno in opposizione di fase all'altro. per eventuali dispositivi che lo necessitassero, ad esempio i booster.In questo caso si parla di bus Loconet-B Se questo segnale non è necesario su questi pin e' possibile trasportare una tensione di alimentazione per alimentare i dispositivi, tipicamente 12VDC. In questo caso si parla di Loconet-T.


Arduino e Loconet

In nostro soccorso vengono in soccorso di nuovo le librerie MRWWA scaricabili e consultabili all'indirizzo  https://github.com/mrrwa, le quali contengono un intero framework per gestire al meglio la rete Loconet. L'idea è quella di realizzare una scheda ad 8 ingressi da utilizzare come feedback o altro da collegare al bus. La scelta è caduta su Arduino Nano, data la compattezza e la relativa economicità. Per maggiori informazioni consultare la scheda a questo indirizzo. https://www.arduino.cc/en/Main/ArduinoBoardNano. Volutamente questa versione non contiene nessun tipo di sensore, che dovrà essere implementato esternamente. In futuro sicuramente prevederò però una scheda con già i sensori integrati.

Innanzitutto occorre realizzare una piccola interfaccia per poter permettere al nostro Arduino di leggere e trasmettere i segnali disponibili su bus Loconet. Di seguito lo schema elettrico della scheda.
Da notare la presenza di un jumper per selezionare l'alimentazione da bus Loconet oppure esterna mediante i morsetti. In questo caso si raccomanda di utilizzare tensioni di alimentazione compatibili con la scheda Arduino Micro quindi da 7 a 12V DC.

AGGIORNAMENTO:

Ho realizzato una nuova board con una sezione di alimentazione stabilizzata per l'alimentazione d Arduino in modo da non stressare in modo anomalo il suo stabilizzatore interno.



Di seguito il PCB, come si può notare abbastanza compatto.


Una volta terminato il montaggio questo dovrebbe essere il risultato finale.

ATTENZIONE 

Giustamente mi è stato fatto notare che la il NANO in foto è inserito al contrario di come dovrebbe essere. In effetti la foto è riferita alla primissima versione del PCB quando venivano usati gli ingressi analogici. Appena possibile verrà pubblicata la foto corretta. In ogni caso se avete la board con revisione 2.0 o superiore LA PORTA USB DEL NANO DEVE ESSERE ORIENTATA VERSO IL BORDO DEL PCB.


Si ringrazia per il testing e per la realizzazione del prototipo di interfaccia Pietro Russo e Alessandro B.
Si ringrazia inoltre Atonino (Antogar) per lo sviluppo dello Sketch da caricare su Arduino.

Di seguito i link per scaricare i files:

Schema elettrico  formato EAGLE  Download VERSIONE 4.0
PCB  formato EAGLE Download VERSIONE 4.0

Sketch da caricare in Arduino  Download VERSIONE 4.0

Un breve video per dimostrare il funzionamento sia su PC che collegata ad una Intellibox.


A presto!