Il passaggio a livello per plastici è un’esigenza che come modellista ferroviario, e non solo, ti sarai trovato ad affrontare.
L’esigenza è solitamente legata all’automazione del passaggio a livello per plastici di tipo dinamico ossia quelli in cui il treno è in movimento sulle rotaie ed automatizzarlo rende tutto il plastico più realistico.
Con arduino e pochi altri componenti puoi realizzare l’automazione che più ti soddisfa ed aggiungere oltre alla sbarra del passaggio a livello anche controlli sul treno e luci di avvertimento.
Se hai seguito i miei articoli sai che ai plastici ferroviari ho dedicato già l’articolo: Il plastico di Davide e Luca e successivamente un articolo dal titolo: Un semaforo con Arduino e i led.
Il progetto che ti presento oggi mette in relazione alcuni componenti per consentirti di realizzare il tuo passaggio a livello per plastici.
Materiale per realizzare il passaggio a livello per plastici
La lista dei componenti puoi variarla come ti piace se hai bisogno di gestire più sbarre o più semafori ecc…
Io ho reaizato questa prima versione del progetto pensando ad un passaggio a livello per plastici in cui passa un solo treno alla volta e in cui è presente un singolo servomotore collegato ad entrambe le sbarre meccanicamente in modo che si sollevino insieme.
Lista della spesa:
- n.1 Arduino Uno, Leonardo, Mini, …
- n. 2 led rossi (uno per lato)
- n. 1 servomotore collegato a entrambe le sbarre
- n. 2 pulsanti o microswitch a leva
- n. 2 resistenze di pull-down da 330Ω
- n.1 resistenza da 470Ω
Con questi componenti la realizzazione è davvero semplice.
Realizzazione del passaggio a livello per plastici
Ecco un esempio di massima del passaggio a livello per plastici che ho immagginato e sulla base del quale ho realizzato lo sketch per arduino, puoi realizzare il passaggio a livello con il metodo che più preferisci e nella forma che ritieni più opportuna.
la particolarità di quello illustrato risiede nella presenza di un unico servo per entrambe le sbarre e nella presenza di una sola sbarra per ogni lato del binario.
Schema elettrico del passaggio a livello
I collegamenti sono molto semplici in quanto in questa prima versione il numero di componenti è limitato:
I led possono essere alimentati attraverso un unico pin di arduino e questo riduce anche il numero di resistenze che devi inserire nel circuito.
Il servo puoi alimentarlo attraverso i +5v di Arduino che a sua volta prende alimentazione dai 12v del plastico, ricorda che le uscite Arduino erogano al massimo 40/50mAh per cui se il servo che utilizzi assorbe correnti maggiori devi provvedere ad alimentarlo con un circuito esterno.
Un’altra particolarità di alcuni servo è data dalla diversa velocità di rotazione se operano a 4,8/5v o se operano a 6v, valuta se la velocità di rotazione del servo a 5v è sufficiente al tuo scopo.
Osserva bene i collegamenti che hai realizzato, in particolare quelli diretti ai pin 2 e 3 di arduino, sono pulsanti o microswitch a leva:
Il loro funzionamento elettrico è semplice, normalmente tra il pin centrale ed uno di quelli esterni c’è continuità, si dice che è NC ( normalmente chiuso ) mentre tra gli altri due non c’è continuità ( NA = normalmente aperto ) alla pressione della leva il contatto si inverte portando il NC a NA e viceversa.
Nella connessione ad arduino dovrai collegare un pin del contatto NA ad arduino e l’altro al polo positivo ( +5v ) del circuito.
I due microswitch o pulsanti a leva serviranno a indicare che il treno è in arrivo e che il treno è passato oltre, dovrai pertanto posizionarli al centro dei binari in modo che il treno passando possa premerli prima uno e poi il secondo.
Lo sketch
/** * Passaggio a livello per pastici con Arduino * * Autore: Mauro Alfieri * Web: www.mauroalfieri.it * Tw: @mauroalfieri */ #include <Servo.h> #define servoPin 5 #define swClose 2 #define swOpen 3 #define ledSemaf 4 #define posMin 0 #define posMax 90 #define timePL 10 boolean statoPL=false; int currentGrad=posMax; Servo myservo; void setup() { pinMode( swClose,INPUT ); pinMode( swOpen,INPUT ); pinMode( ledSemaf,OUTPUT ); myservo.attach(servoPin); myservo.write(currentGrad); digitalWrite( ledSemaf,LOW ); } void loop() { if ( digitalRead(swClose) == HIGH ) { statoPL = true; } if ( digitalRead(swOpen) == HIGH ) { statoPL = false; } if ( statoPL == true && currentGrad > posMin) { digitalWrite( ledSemaf,HIGH ); while (currentGrad > posMin) { currentGrad--; myservo.write(currentGrad); delay(timePL); } } if ( statoPL == false && currentGrad < posMax) { while (currentGrad < posMax) { currentGrad++; myservo.write(currentGrad); delay(timePL); } digitalWrite( ledSemaf,LOW ); } }
Il funzionamento dello sketch prevede che al passaggio del treno sullo switch connesso al pin 2 il servo verifichi la posizione della sbarra e la abbassi progressivamente fino alla posizione 0° = sbarra chiusa accendendo i led rossi collegati al pin 4 di arduino. Al passaggio del treno sul secondo switch, quello connesso al pin 3, il servo ritorna in posizione 90°, ossia apre le sbarre dl passaggio a livello per plastici e spegne i led rossi.
Perché funzioni al primo colpo è necessario rispettare i seguenti accorgimenti:
- il microswitch swClose deve essere posizionato ad una distanza dal passaggio a livello sufficiente a consentire la corretta chiusura della sbarra prima che il treno giunga al passaggio a livello per plastici;
- il microswitch swOpen deve essere posizionato ad una distanza dal passaggio a livello sufficiente a consentire il passaggio dell’intero treno prima di aprire il passaggio a livello;
- le sbarre devono essere in posizione aperte quando il servo è a 90° in posizione chiuse quando il servo è a 0°
Puoi variare il tempo in cui il passaggio a livello si apre o si chiude cambiando il valore di timePL calcolandolo in questo modo: gradi/tempo ( 90° / 9sec. = 10 ) se vuoi che il passaggio a livello si apra in 5 secondi devi cacolare: 90°/5 = 18;
Un passaggio importante è costituito dalle linee 32-33: in cui posizioni il servo a 90° e spegni il led ad ogni avvio del programma, ossia quando alimenti arduino per la prima volta o quando esegui un reset;
linee 38-39: definisci lo stato in cui il sistema opera, alla pressione del microswitch swClose lo stato passa da false a true che comporta la chiusura del passaggio a livello, la pressione del microswitch swOpen comporta il passaggio della variabile statoPL da true a false che determina la chiusura del passaggio a livello per plastici.
Puoi evitare l’uso degli stati in questo tipo di sketch spostando la condizione digitalRead( swClose ) == HIGH al posto della condizione statoPL == true alla riga 41 e allo stesso modo spostando digitalRead( swOpen ) == HIGH al posto di statoPL == false alla linea 50 tuttavia l’utilizzo di un sistema a STATI è più comodo se vuoi realizzare interazioni più complesse come ad esempio verificare che il passaggio a livello per plastici sia in apertura o chiusura anche se lo switch non è più premuto perché il treno è passato.
In particolare è utile questo tipo di programmazione nei casi in cui hai un segnale per un breve periodo di tempo ( pressione del microswitch ) che può essere utile valutare più volte nello sketch.
Il video del passaggio a livello
un appassionato di plastici ferroviari: Gianfranco, ha realizzato un video per mostrarti come funziona il suo passaggio a livello:
Oggi 03 dicembre 2012, Gianfranco mi ha inviato il video del suo passaggio a livello collegato al servo ed arduino, non ho resistito alla tentazione di pubblicarlo subito:
Buon divertimento !!!
Prima di inserire un commento, per favore, leggi il regolamento
84 pings
Skip to comment form