IL BLOCCO AUTOMATICO CON ARDUINO (rev 2)
IL BLOCCO AUTOMATICO CON ARDUINO (rev 2)
Il progetto del blocco automatico elettronico è basato sul diffusissimo "Arduino". La scheda comanda 5 segnali (10 outputs) tramite rele' optoisolati e gestisce 5 sezioni di contatto e 4 pulsanti di gestione, oltre a uno schermo LCD 16x2. Ho dovuto aumentare gli I/O con una espansione basata su 2 shift registers (74HC595). Il progetto del software non è stato affatto semplice: in pratica la scheda controlla i 5 blocchi di linea, per un massimo di 4 treni gestibili, mettendo al rosso un segnale dopo il superamento della sezione relativa. La linea è rappresentata da un "vettore" a 5 variabili booleane (1=occupato, 0= libero). Prima di dare il verde al blocco precedente, un timer di 4,5 secondi consente al treno uscente di liberare la sezione. Questo semplice accorgimento supplisce alla mancanza di un secondo sensore (come previsto in RocRail) ma alla prova pratica funziona benissimo, consentendo l'esercizio di treni in analogico con le loro velocità diverse senza problemi. Un menu' di gestione consente di impostare le funzioni di "INGRESSO TRENI" in modo automatico, "riempiendo" la linea in fase iniziale con 2,3 o 4 treni a piacere. Dopodiché' i comandi di RUN e STOP consentono di fermare il complesso traffico in modo totalmente automatico: allo stop i treni vengono fermati sempre nella stessa disposizione dei blocchi. Attualmente sto migliorando le funzioni di "USCITA 1 TRENO" per consentire il riavvio con N-1 treni, e l'introduzione di un nuovo treno nel traffico preesistente. La centralina salva i dati in memoria permanente allo STOP, consentendo di riaccendere il plastico e di riavviare il traffico da dove si era fermato. Il sistema ha richiesto molto lavoro, ma l'esperienza e il divertimento ripagano. Tutte le bobine interessate dei segnali hanno dovuto ricevere un "filtro" RC per impedire alle sovratensioni di commutazione di resettare la CPU, nonostante i rele' usati siano tutti optoisolati : ma non basta, con le "botte" di tensione delle tremende bobine Marklin! Fortunatamente i condensatori e i resistori usati hanno costo trascurabile: pian piano sto aggiungendo protezioni anche agli scambi limitrofi che possono disturbare anch'essi per induzione sui lunghissimi cavi di collegamento.
Ultimamente ho costruito anche la seconda centralina (una per ogni senso di marcia) e cambiato il Software: concezione ad "automi a stati " finiti! Le prime prove con 2 linee operative sono state effettuate ai primi di marzo 2024: al 31 Marzo il sistema è pienamente operativo con successo!
Ecco le prove a banco dell' Hardware appena costruito. Un grande sforzo è stato fatto per condensare le informazioni sui soli 16x2 caratteri, dovendo installare lo schermo nel pannello sinottico preesistente. Ho realizzato una piastra base con una millefori segata, mettendo i connettori di raccordo per Arduino ed i rele', riducendo cosi' al minimo i cablaggi (solo i cavi uscenti per gli I/O).
I binari di contatto marklin chiudono verso massa binario al passaggio della loco. Basta usare questa massa comune per ingressi digitali normalmente "pull-up" e i passaggi vengono rilevati perfettamente. I contatti non hanno piu' usura e sono sensibilissimi: cosi' il problema principale (usura dei contatti) è risolto e ora le sezioni di contatto (5146-5147) sono affidabili e praticamente eterne.
VIDEO: PRIMI TEST DEL SISTEMA
VIDEO: ALTRO TEST, ALTRE LINEE IN FUNZIONE
VIDEO: TEST CON TEMPORIZZAZIONE PROGRAMMABILE
VIDEO: 3-03-2024; SECONDA CENTRALINA IN ESERCIZIO , 8 TRENI SU DUE LINEE
VIDEO : 31-02-2024 : test completo 4+4 treni piu' 5 in elettromeccanico, dopo installazione dei filtri RC
Costruendo la seconda centralina gemella ne ho approfittato per rifare il software basandomi sugli "automi": nonostante il nome altisonante è un metodo classico di programmazione (Parliamo di Alan Turing , di Moore etc.. anni 50) che pero' permette di governare sistemi in modo pseudo-umano rispetto alla classica programmazione a sequenza (il famoso grafo di flusso). Col grafo puoi risolvere qualunque problema complesso che sia (lo dice Jacopini... nel suo teorema).. però il tuo grafo per un sistema complesso diventerà una stanza piena di segni :-)
Il principio degli automi è definire sempre in che stato sta il sistema .. e definire le regole logiche per passare di stato! Un solo stato può essere attivo di volta in volta. Si ma che c'entra con i nostri treni? Bene.. vediamo come si puo' fare: Nel caso di linea a senso unico (il caso della mia linea principale a doppio binario, ce ne sono 2) la linea se un umano guidasse, dovrebbe fare in modo di rispettare i segnali e di essere ammesso a una tratta di binario solo se è libera.
Allora, se abbiamo 5 tratte, ognuna di queste la gestisco con un automa. Se avessi 2 sensori, potrei fare IN e OUT per definire se e' FREE o BUSY. Sulla mia linea ne ho solo 5 di sensori, appena dopo i segnali. Allora ho ipotizzato che un treno in buona salute analogico al massimo dopo 5-10 secondi abbandona la sua tratta a velocità "cristiana".. normale diciamo meno di metà manopola trafo. Quindi se un treno entra in tratta faccio scattare un "Timer" che mi conta i secondi dopo i quali la tratta è ipotizzata di nuovo "FREE". Certo, sarebbe perfetto con 10 sensori.. magari in futuro aggiungo altre sezioni di contatto 5146/7 '.. per ora con il timer funziona benissimo, dopo prove. Il tempo è programmabile, in secondi a passi di mezzo secondo. Di norma uso 5-10 secondi...
Ecco un esempio del "pallogramma" che rappresenta 1 Automa di tratta e i suoi 3 stati. Contatti multipli accidentali nulla causano all'automa, che semplicemente cambia stato e nel prossimo ignora i contatti multipli. (Quindi i sensori potrebbero essere anche semplici binari isolati azioanti dagli assi o fotodiodi..) Dopo che il treno è "uscito" rilevato dal sensore C(n), la tratta n-1 diviene libera dopo il "tempo di tratta" impostato, cioe' 5-10 secondi o se volete una cadenza molto lenta...anche 30 o più secondi... !
Ovviamente disponendo di sensori ENTER e IN il sistema sarebbe piu' sicuro. Per ora ho adattato il tutto ai 5 sensori disponibili, ma il funzionamento complessivo è ottimo!
In parallelo girano anche gli automi dei segnali, che sono cosi' concepiti, per dare il giusto tempo alle bobine:
I segnali sono "pilotati" dalle tratte, che se divengono libere danno il verde al segnale precedente.
Scrivendo correttamente 5 automi di tratta e 5 automi di segnale, il tutto gira in modo eccellente !
Le fasi "intermedie" sono complesse per "l'umano" : avviare, inserire o fermare il tutto è complesso. Ho sviluppato le relative funzioni di controllo, e la gestione è veramente gradevole.
Ecco il primo test delle due linee controllate , 8 treni!
Il sistema gira in "loop" controllando continuamente le 5 sezioni: sul display è riportato lo stato dei 5 segnali R/V e lo stato di occupazione dei blocchi: l'alternanza dei comandi nel RUN a 4 treni sarebbe impossibile da gestire per l'uomo!
Ecco la centralina di controllo dal lato Rele'. Sono stati utilizzati i classici rele' optoisolati (montaggio su connettori, sono facilmente sfilabili). Al centro gli shift register che consentono di comandare 16 uscite usando solo 2 uscite del programmabile. La massa comune (massa comune sui binari) è riporata su tutti i COMUNI dei rele' tramite cavetto saldato sul retro schedina rele'. Cosi' si devono connettere ai rele' solo 2 cavetti per ogni segnale (Bobina ROSSO e Bobina VERDE)
Per lo schermo LCD ho usato la versione I2C, utilizzando un cavetto schermato per allarmi, visto l'ambiente molto rumoroso del pannello di comando, pieno di tensioni alternate, di inversione etc etc.
Dettaglio MENU' SEGNALI: Questo serve a impostare manualmente i 5 segnali, il cui stato è riportato nella seconda riga con la lettera
R=Rosso o V=Verde
Dettaglio MENU'OCCUPAZIONE BLOCCHI DI LINEA : Questo serve a impostare manualmente i blocchi di linea in caso di uscita accidentale di treni o operazioni non guidate automaticamente. Il puntino significa blocco occupato, deve corrispondere alla reale situazione prima di avviare il funzionamento automatico! Se si inseriscono i treni in linea da zero, l'occupazione viene automaticamente compilata.
Questo menu' SECTION TEST è utilissimo in fase di test dopo l'installazione o per manutenzione. Serve a controllare che i binari di contatto vadano bene. La rivelazione del contatto accanto a uno dei 5 binari riporta X se il contatto viene azionato.
Ecco il semplicissimo interfacciamento tra le classiche sezioni di contatto a pattino 5146/5147 e un generico input del programmabile. Basta mettere la massa in comune tra il programmabile e tutto il plastico. In questo modo la sezione diviene affidabilissima e sensibile. Non ci sono piu' socracorrenti di alcun genere.
Le notevoli sovratensioni di commutazione degli articoli magnetici Marklin vanno schermate, altrimenti possono resettere la CPU, nonostante l'optoisolamento dei consueti Rele'. I disturbi impulsivi si inducono sui cablaggi. Basta pero' un RC posto vicino alle bobine per "uccidere" tutti i distrurbi. Il costo, comperando sulla rete i resistori ed i condensatori è veramente risibile ed il montaggio rapido. Ce ne vorranno parecchi.. ogni commutazione che disturba (anche scambi nelle vicinanze..va "eliminata"
Installazione sotto il pannello di controllo. Sul frontale, un foro consente di inserire il connettore USB per la programmazione senza smontare nulla.