Saturday, September 5, 2015

Incrocio con semaforo con gestione Arduino/timer 555 e decade counter 4017

Nell'anno scolastico 2014/2015, con gli allievi della classe Operatore impianti elettrici 3^ annualità abbiamo provato a realizzare un progetto di simulatore di semaforo (in fase di progettazione ne avevamo già parlato quiqui)

A gruppi i ragazzi hanno provato a costruire un modellino di semaforo a LED, da comandare poi in 2 modalità:

- con timer 555 e 4017
- con Arduino

In particolare gli Allievi Xheni Ramaliu e Gheorghe Mocanu hanno concluso entrambi i progetti ed hanno costruito un bel modellino di semaforo:


Di seguito la documentazione del lavoro.

Lo studio:

Data la consegna, ovvero realizzare un semaforo per un incrocio a 4 vie, i ragazzi hanno ragionato sui tempi delle 3 luci per ogni semaforo, quindi sui diversi stati (vedi quaderno nella foto):




I semafori sono abbinati a coppie (1 e 3 / 2 e 4) quindi è sufficiente creare il comando per i semafori 1 e 2 in seguito derivare gli altri due.





Il modellino:

A prescindere dalla modalità di comando che verrà utilizzata, il modellino viene costruito in modo che sia abbastanza universale, quindi considerando valori di resistenza abbinate ai led che permettano di spaziare dai 5V di Arduino (anche se è possibile utilizzare un'alimentazione indipendente quindi con valore a piacimento) fino a 24V, nel caso si utilizzi un PLC.

La resistenza scelta è di 1 Kohm.









- Il circuito con timer 555 e integrato 4017

 Senza dilungarmi troppo su questo su questo circuito, i cui schemi si trovano numerosi (alcuni esempi qui, qui e qui), ecco il risultato su Bread-board:





I ragazzi hanno successivamente realizzato il circuito su basetta millefori aggiungendo anche la possibilità di scegliere la modalità Giorno /Notte, aggiungendo quindi un 555 in modalità lampeggiante collegato ai soli led gialli


- Il circuito con Arduino

Con Arduino è "bastato solamente scrivere lo sketch"...

// Gestione luci semaforo 13/04/2015
// Allievo Ramaliu Xheni

int ledv1 = 1 ;
int ledg1 = 2;
int ledr1 = 3;
int ledv2 = 4;
int ledg2= 5;
int ledr2= 6;
int ledv3= 7;
int ledg3= 8;
int ledr3= 9;
int ledv4= 10;
int ledg4= 11;
int ledr4= 12;

void setup() {
  pinMode(ledv1,OUTPUT);
  pinMode(ledg1,OUTPUT);
  pinMode(ledr1,OUTPUT);
  pinMode(ledv2,OUTPUT);
  pinMode(ledg2,OUTPUT);
  pinMode(ledr2,OUTPUT);
  pinMode(ledv3,OUTPUT);
  pinMode(ledg3,OUTPUT);
  pinMode(ledr3,OUTPUT);
  pinMode(ledv4,OUTPUT);
  pinMode(ledg4,OUTPUT);
  pinMode(ledr4,OUTPUT);

}

void loop() {
  //stato 1
  digitalWrite (ledv1, HIGH);
  digitalWrite (ledg1, LOW);
  digitalWrite (ledr1, LOW);
  digitalWrite (ledv2, LOW);
  digitalWrite (ledg2, LOW);
  digitalWrite (ledr2, HIGH);
  digitalWrite (ledv3, HIGH);
  digitalWrite (ledg3, LOW);
  digitalWrite (ledr3, LOW);
  digitalWrite (ledv4, LOW);
  digitalWrite (ledg4, LOW);
  digitalWrite (ledr4, HIGH);
  delay (20000);
  //stato 2
  digitalWrite (ledv1, LOW);
  digitalWrite (ledg1, HIGH);
  digitalWrite (ledr1,LOW);
  digitalWrite (ledv2, LOW);
  digitalWrite (ledg2, LOW);
  digitalWrite (ledr2, HIGH);
  digitalWrite (ledv3, LOW);
  digitalWrite (ledg3, HIGH);
  digitalWrite (ledr3, LOW);
  digitalWrite (ledv4, LOW);
  digitalWrite (ledg4, LOW);
  digitalWrite (ledr4, HIGH);
  delay (5000);
  //stato 3
  digitalWrite (ledv1, LOW);
  digitalWrite (ledg1, LOW);
  digitalWrite (ledr1,HIGH);
  digitalWrite (ledv2, HIGH);
  digitalWrite (ledg2, LOW);
  digitalWrite (ledr2, LOW);
  digitalWrite (ledv3, LOW);
  digitalWrite (ledg3, LOW);
  digitalWrite (ledr3, HIGH);
  digitalWrite (ledv4, HIGH);
  digitalWrite (ledg4, LOW);
  digitalWrite (ledr4, LOW);
  delay (20000);
  //stato 4
  digitalWrite (ledv1, LOW);
  digitalWrite (ledg1, LOW);
  digitalWrite (ledr1,HIGH);
  digitalWrite (ledv2, LOW);
  digitalWrite (ledg2, HIGH);
  digitalWrite (ledr2, LOW);
  digitalWrite (ledv3, LOW);
  digitalWrite (ledg3, LOW);
  digitalWrite (ledr3, HIGH);
  digitalWrite (ledv4, LOW);
  digitalWrite (ledg4, HIGH);
  digitalWrite (ledr4, LOW);
  delay (5000);

}


Altre foto dei lavori di costruzione del modello e della fase di collegamento della logica di comando:




Post a Comment