lunedì 25 maggio 2015

arduino e modulo relay per accensione di una lampada

In questo post vorrei mostrare la semplicità di utilizzo di un RELAY con arduino, in realtà come nel post precedente ho nuovamente usato l'olimexino 32u4 che mi ha permesso in questo caso di non utilizzare nemmeno la breadboard per montare un semplice pulsante in quanto l'olimexino ne ha uno on board programmabile per ogni necessità, nello specifico quello segnato come "BUT" nell'immagine qui sotto:

 

Per prima cosa voglio specificare che il relay del quale parleremo tra poco sarà collegato a 220v, quindi non sono responsabile di un utilizzo improprio del materiale, inoltre prima di collegare qualsiasi cosa alla corrente elettrica vi invito a porre estrema attenzione ed essere consapevoli di quello che state facendo.

Mi scuso per la premessa ma la corrente elettrica è un'"amica" pericolosa, quindi è assolutamente necessario sapere come trattarla.

Di seguito il materiale che ho usato e che vedrete nelle immagini e nel video alla fine del post:

1* olimexino 32u4
1* modulo relay 2 canali
3* Dupont maschio/femmina



Innanzitutto bisogna spiegare come funziona un relay.
Un relay è un semplice interruttore in grado di fare o non fare passare corrente, sul modulo relay infatti avrete la possibilità di utilizzare due configurazioni segnalate con due diversi simboli:

NO --> normally open (circuito aperto)

NC --> normally closed (circuito chiuso)

quale è la differenza e quale configurazione usare?
In realtà questo dipende da cosa volete ottenere, nel caso della prima opzione, NO, il circuito aperto non fa passare corrente (quindi lampada spenta) fintanto che dall'arduino non venga inviato il comando che farà accendere la lampada.
Nel secondo caso NC, il circuito è chiuso, quindi passa corrente (lampada accesa) e si potrà effettuare lo spegnimento tramite arduino con il relativo comando nello sketch.

Nell'esempio che state leggendo ho utilizzato una configurazione NO, quindi anche il codice che copierete è relativo a questo tipo di situazione, nel caso vogliate lavorare in NC basta invertire il collegamento sul modulo relay e ribaltare il codice come scritto sopra nello sketch.

Ecco lo schema di collegamento del mio olimexino 32u4 con il modulo relay, in caso stiate usando un arduino non cambia nulla eccetto che dovrete connettere un pulsante su breadboard.



Ribadisco di porre estrema attenzione al collegamento degli apparecchi utilizzatori e della tensione al modulo relay, nel caso non siate in grado rivolgetevi ad un amico elettricista o ad un esperto.

Come ho scritto all'inizio di questo post l'olimexino ha alcuni vantaggi in fase di prototipazione e sperimentazione rispetto ad un arduino o schede similari, ha "on board" due led (uno verde e uno giallo) sui pin 7 e 9 e un pulsante, oltre quello di reset, che è possibile utilizzare come un qualsiasi pulsante che montereste su breadboard, capite quindi che per sperimentare una semplice applicazione che richieda un pulsante non vi si rende nemmeno necessario collegare la breadboard.

Se state usando un arduino o una scheda compatibile e avete dovuto preparare un pulsante su breadboard utilizzate il secondo codice.

Di seguito il codice per l'olimexino 32u4 (ricordo che per caricare lo sketch dall'ide dovrete mettere leonardo come board):

//_________________START_____________________

//definiamo qui il pulsante dell'olimexino in quanto la scheda leonardo
//originale non ha un simile pulsante "onboard" e non c'è quindi nessuna
//definizione del pin per la porta E2 nel pins_arduino.h header


#define BBIT (PINE & B00000100)!=0   // controlla se il pulsante è stato premuto
#define BUTTONINPUT DDRE &= B11111011   // inizializza la porta
#define relayIn 7

void setup()
{
 BUTTONINPUT; //inizializza il pulsante
 pinMode(relayIn, OUTPUT);
}
void loop()
{
 while (BBIT){}
 digitalWrite(relayIn, HIGH);

 delay(500); //attendi prima di ricontrollare lo stato del pulsante
 while (BBIT){}
 digitalWrite(relayIn, LOW);
 delay(500); //attendi prima di ricontrollare lo stato del pulsante
}

//____________END______________
 

Ecco invece il codice per un arduino:

//____________START________________
 
#define button 6                // pulsante sul pin 6
#define relayIn 7              // relay sul pin 7
 
int val = 0;                      // si userà val per conservare lo stato del pin di input  
int buttonState= 0;         // ricorda lo stato del pulsante, stato = 0 circuito del relay aperto (se NO)
                                      // stato = 1 circuito del relay chiuso e lampada accesa
void setup() {  
pinMode(relayIn, OUTPUT);       // imposta il pin del relay come output 
pinMode(button, INPUT);            // imposta il pin del pulsante come input  
}  
  
void loop() { 
val = digitalRead(button);       // legge il valore dell'input e lo conserva  
 
// controlla che l'input sia HIGH (pulsante premuto)  
// e cambia lo stato del relay
if (val == HIGH) {  
buttonStato = 1 - buttonState; 
  if (buttonState == 1) {  
digitalWrite(relayIn, HIGH);   // chiude il circuito del relay e accende la lampada  
  }  
else { 
   digitalWrite(relayIn, LOW);    //apre il circuito del relay e spegne la lampada  

}  

//__________________END____________________


 
 

 
 
 
Qui sopra l'olimexino connesso al modulo relay, a seguire un breve video con il sistema ed il pulsante "on board" in azione:



Spero di esservi stato utile, per qualsiasi necessità o per avere il codice corretto per il vostro arduino con pulsante "esterno" chiedete pure!

Un saluto


 

Nessun commento:

Posta un commento