Passaggio a livello per plastici con Arduino

Il passaggio a livello per plastici è un’esigenza che come modellista ferroviario, e non solo, ti sarai trovato ad affrontare.

Passaggio a livello per plastici

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.

disegno del passaggio a livello per plastici

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:

schema passaggio a livello per plastici

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:

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:

  1. 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;
  2. 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;
  3. 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

Permanent link to this article: https://www.mauroalfieri.it/elettronica/passaggio-a-livello-per-plastici.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.