Feb 042014
 

 

Per lungo tempo l’articolo più letto di questo blog è stato quello sul collegamento di un relè 12V ad Arduino. Ultimamente lo scettro di articolo più letto è passato a quello sugli infrarossi. Ho pensato perciò di unire le due cose a fare un nuovo articolo sperando di farvi cosa gradita. Ho deciso di creare un piccolo circuito che da una parte attende un certo comando da un telecomando ad infrarossi, dall’altra comanda un relè 12V così quando viene identificata la pressione di quel determinato tasto su un certo tipo di telecomando si attiva o disattiva il relè. Condensando le informazioni, creeremo un dispositivo che accende o spegne qualcosa con il semplice utilizzo di un telecomando IR. Starà poi a voi decidere cosa sia quel “qualcosa”, potrebbe essere una lampada, una serratura elettrica, un cancello o quel che preferite. 

Se avete letto i precedenti articoli in questione, vi sembrerà sin troppo facile creare questo semplice progetto. Non dobbiamo far altro che prendere gli schemi già visti ed unirli insieme. Dando per scontato che chi conosce l’elettronica non ha bisogno di questi articoli e che invece li legge lo fa perché non ha ben chiaro come fare, userò parole molto semplici, cercherò di semplificare al massimo.

Ingresso Infrarossi

Se ricordate la scorsa volta abbiamo usato un TSPOP2238 come ricevitore infrarossi. Se ricordate lo schema di collegamento del primo articolo, ricorderete che è possibile collegarlo direttamente a 5V e ad un pin di Arduino anche se opzionalmente possono essere usate anche due resistenze ed un condensatore aggiuntivi per ridurre il rumore. Per fare le cose nel modo più semplice possibile userò il primo tipo di configurazione per cui per ricevere i segnali infrarossi ci basterà il solo TSPOP2238  e due pezzi di cavo. Vorrei ricordare alcune cose basilari. In primis il 38 finale della sigla di questo componente che indica il fatto che ha la sua massima sensibilità per impulsi a 38KHz che sono guarda caso quelli usati da gran parte dei telecomandi. Ci possono però essere situazioni particolari in cui avete un telecomando a 36KHz per cui TSPOP2236 sarà più sensibile del TSPOP2238 , ma funzionerà ugualmente anche se non altrettanto bene. L’altre cosa che volevo ricordarvi è che questi componenti contengono al loro interno un amplificatore ed un filtro (e non solo), ma in linea teorica potremmo usare anche un semplice led IR per ricevere i segnali, cosa che però ci complicherebbe la vita notevolmente. Per chiudere la prima fase diciamo pure che per leggere segnali IR (infrarossi) ci basta Arduino, il TSPOP2238  e due pezzi di cavo. Semplice vero?

Uscita a relètransistorsset

Ricordate cosa ci occorre per collegare un relè? A parte il relè vero e proprio ci servirà una resistenza, un transistor ed un diodo. A cosa servono? Vi faccio un breve riassunto. Il relè può usare o meno la stessa tensione di Arduino (5V). Se usiamo un relè a 12V si capisce immediatamente che sarà impossibile “accendere” un relè semplicemente con l’uscita di Arduino che funziona a 5V, non sono infatti sufficienti perchè non raggiungono i 12V necessari al relè. Allora mi direte: usiamo un relè a 5V. Bene, facciamolo, ma un relè mediamente assorbe almeno 50-70mA che sono decisamente troppi visto che Arduino ne eroga solo 40. Ricordiamo comunque che è buona norma cercare di mantenersi non oltre la metà della massima erogazione, perciò dobbiamo cercare di non assorbire oltre 20mA, ben lontani da quelli necessari al relè.

Tornando a noi come facciamo? Con il transistor. Chi non è molto pratico con l’elettronica si spaventa un po’ davanti a questa parola, anche perché il transistor può essere usato con modalità differenti e fare un bel po’ di cose. Ma a noi interessa solamente una proprietà del transistor, ossia quella di funzionare come interruttore. Come vi dicevo la scorsa volta non dobbiamo cercare un particolare modello di transistor ed impazzire perché non troviamo quello usato in un tutorial piuttosto che un’altro. Ne basta uno qualunque per “uso generico”, se ne trovano in commercio già in pacchi in pacchi preconfezionati. L’unica accortezza è accertarsi che sia di tipo NPN e non PNP, è solo una questione di polarità. Abbiamo detto che possiamo usare il transistor come un interruttore, ma ovviamente non ha un pulsante da premere come quelli che usiamo a casa per accendere le luci e tanto meno Arduino non ha le mani per attivare un interruttore vero e proprio. Come facciamo? Molto semplice. Arduino invia una certa tensione al transistor e questo magicamente apre o chiude il contatto come un vero interruttore. Nella foto vicino vedete il mio “set” di transistors. La scorsa volta ho usato il BC547B, questa volta non sono riuscito a trovarlo per cui ho usato il BC337, come vi dicevo infatti basta che sia un NPN.

A questo punto dovremmo calcolare la resistenza da mettere alla base del transistor. Eh già ricordiamoci che i piedini del transistor prendono il nome di base, collettore ed emettitore. Alla base ci va la resistenza che a sua volta è collegata all’uscita di Arduino. Possiamo calcolare un valore preciso magari usando il mio calcolatore online, ma in questa lezione ci interessano le cose semplici per cui usiamo una resistenza da 4.7K senza ulteriori seccature. Scusate ma a cosa serve la resistenza? Da una parte permette di limitare la corrente impedendo di friggere il transistor, dall’altra fà in modo che quest’ultimo funzioni solamente negli stati “on e off” senza valori intermedi. Quindi in una delle uscite che decideremo in seguito colleghiamo la resistenza che va alla base del transistor. L’emettitore viene collegato a terra mentre al collettore andrà collegato il relè. Quest’ultimo sarà collegato alla linea di alimentazione ma finché il transistor non riceve il comando di chiusura “dell’interruttore” non circolerà corrente. Quando arriva il comando il transistor mette in conduzione il collettore con l’emettitore e dato che quest’ultimo è collegato alla massa di fatto facciamo si che il secondo polo del relè venga collegato alla massa. Dato che l’altro polo, come dicevamo, è collegato all’alimentazione, il relè si ecciterà. Ora però quando facciamo l’inverso, ossia togliamo la tensione alla base del transistor questo si riapre ed impedisce alla corrente di fluire verso la massa. Ciò crea un problema che si verifica in tutti i casi in cui ci siano dispositivi composti da una spirale metallica in cui passa corrente. Cerco di spiegarvelo con un esempio. Facciamo finta di avere un piccolo canale in cui scorre dell’acqua. Se improvvisamente chiudiamo il canale con una paratia, l’acqua non può passare ma comunque si vicino alla paratia si formerà una sorta di onda che sbatterà contro la paratia o, se bassa, la sovrasterà. Tutta quest’acqua ha una sua forza e se la paratia non è sufficientemente robusta la romperà. Con gli induttori, ossia le spirali di cui parlavamo, avviene lo stesso processo per cui una volta che il transistor “chiude” il passaggio alla corrente, ci sarà un picco di corrente che “sbatte” sul transistor distruggendolo. E’ a questo punto che scopriamo a cosa serve il diodo. Esso infatti permetterà alla corrente in eccesso di tornare indietro finché non si esaurisce, cosa che avviene in tempi impercettibili a noi umani. Nell’esempio dell’acqua potremmo pensare ad un canale secondario che riporta l’acqua in eccesso a monte, questa circolerà fino a fermarsi del tutto in poco tempo. 

Lo schema

relay e ir

No, non ditemi che è difficile. A sinistra c’è Arduino e fin qui nulla di difficile. Abbiamo le alimentazioni a 12V a 5V e la massa, e anche qui nulla di particolare anche se vi faccio notare che le masse della linea a 12V e quella a 5V sono unite insieme. IR1 è il sensore ad infrarossi, collegato ai 5V, la terra e al pin numero due di Arduino. Al pin 3 di Arduino è collegata la resistenza da 4.7K la quale a sua volta è collegata alla base del transistor. L’emettitore del transistor (Q1) è collegato a massa, mentre il collettore è collegato sia al relè che al diodo (D1).

 

Nota: Come m’ha fatto notare Elvis Del Tedesco , c’è un errore nel disegno, il transistor e la 5V sembrano collegati alle uscite del relè mentre devono invece essere collegate alla bobina del relè.

Vi faccio notare dall’immagine presa dalla confezione dei transistor che in alto è specificato che guardandoli dal lato “piatto” abbiamo da sinistra a destra CBE, ossia collettore, base ed emettitore. Basta perciò guardare le specifiche fornite dal produttore per conoscere il corretto orientamento dei pin. Non date per scontato che l’orientamento di questi transistor sia lo stesso di quello che avete nel vostro cassetto, dovete sempre verificare. Se non avete la confezione, cercate su internet, prendete il codice scritto sul transistor, ci aggiungete la parola datasheet e cercate. Troverete i documenti ufficiali dei vari produttori, saranno in inglese ma anche se non lo capite a voi basta la figura con l’indicazione della disposizione dei pin.

Il circuito

Qui sotto potete vedere lo schema realizzato su breadboard. Non c’è molto da aggiungere a quanto già detto. Abbiamo già parlato della piedinatura del transistor mentre quella del ricevitore infrarossi la trovate nel precedente articolo, comunque ricordiamo che guardandolo da davanti, con la porzione bombata rivolta verso di noi, da sinistra a destra abbiamo dati, vcc e massa (ground). Si noti perciò la differenza con il diagramma riportato sopra. Quasi sempre c’è questa discrepanza tra lo schema e la piedinatura fisica, bisogna SEMPRE controllare con attenzione i dati riportati sullo schema che devono essere confrontati con quelli messi a siposizione dal produttore. Credo che la foto qui sotto sia auoesplicativa. Vorrei solamente sottolineare che il dido è stato messo all’esterno della breadboard per il semplice motivo che i piedini troppo grossi per entrare nei fori della breadboard per cui ho adottato una soluzione sterna.

 IMAG0014b

Il software

Ora passiamo alla parte software. Se ancora non avete la libreria IR remote, potete scaricare una delle versioni da me modificata seguendo il link in fondo a questa pagina. Ovviamente dopo aver dezippato il contenuto dovete mettere la relativa cartellina nella cartella libraries nella directory di installazione dell’IDE di Arduino. Se l’avete fatto, lanciando l’IDE Arduino, nel menu esempi troverete l’IR-Remote da cui sceglierete IRRecvDemo. L’unica modifca da fare è cambiare int RECV_PIN = 11; con int RECV_PIN = 2; visto che il nostro ricevitore IR è sul piedino numero due. A questo punto aprite il monitor seriale, prendete il telecomando che intendete usare per comandare Arduino e premete il tasto che desiderate utilizzare per attivare il relè ed il tasto che desiderate invece usare per disattivarlo. Sul monitor seriale compariranno dei codici di cui dovete prendere nota, potrebbe essere qualcosa del tipo 0xE0E0E01F ; per semplicità li chiamerò CodiceAcceso e CodiceSpento. Una volta identificati i codici dei tasti a cui vogliamo abbinare le funzioni di accensione e spegnimento del relè, passiamo al listato di oggi:

#include    // includo la libreria
int RECV_PIN = 2;       //il pin di ricezione IR è il 2
IRrecv irrecv(RECV_PIN);  // istanza al ricevitore
decode_results results;

void setup()
{
 Serial.begin(9600);
 irrecv.enableIRIn(); //abilito la ricezione
 pinMode(3, OUTPUT); // uscite relè
 digitalWrite(3, HIGH); // accendo relè
 delay(200);
 digitalWrite(3, LOW); // spengo il relè
 Serial.println("START....");
 
}
void loop() 
{
 if (irrecv.decode(&results))  // se ho ricevuto qualcosa via infrarossi
 {
   Serial.println("Data found...");
   if(results.value==CodiceAcceso) // se corrisponde al codice di attivazione
 {
 digitalWrite(3, HIGH); // accendo relè
 Serial.println("Accendo");
 } // if
 else if(results.value==CodiceSpento) // ... o a quello di spegnimento....
 {
 digitalWrite(3, LOW); // spengo relè
 Serial.println("Spengo");
 } // else
 
  delay(50);
 irrecv.resume(); 
 delay(50);
 
 } //if 

} // loop

Ovviamente dovete sostituire CodiceAcceso e CodiceSpento con i valori che avete annotato (mi raccomando lo 0x iniziale senza spazi, visto che si tratta di codici esadecimali). A questo punto il gioco è fatto, appena andate a prendere il pulsante che avete stabilito per l’accensione il relè si ecciterà e viceversa con l’altro pulsante si spegnerà. Per verificare il funzionamento ho inserito nella fase di setup un’accensione e spegnimento del relè in modo da sentire il “click” all’avvio, inoltre durante il funzionamento, sul monitor seriale compariranno alcune scritte che fanno capire se sono stati ricevuti dati sulla porta infrarossi, se è stata richiesta l’accensione del relè o il suo spegnimento.

Note finali…

Nei miei esempi utilizzo in genere relè a 12V in quanto mediamente permettono di comandare carichi maggiori, li ho disponibili a casa e rappresentano un caso leggermente più complesso e meno discusso in rete. Ma se volete usarne uno da 5V non cambia assolutamente nulla, anzi, sarete agevolati dal fatto che vi è solamente una linea di alimentazione che alimenterà sia Arduino che il relè. Spero che questo articolo sia stato di vostro interesse, specie per chi è alle prime armi e cerca di costruire i suoi primi progetti. E’ ovvio che se avete una boad a relè singolo o multiplo che già contenga il transistor, magari relè di accensione e quant’altro, sarà sufficiente collegare il pin digitale di Arduino prescelto alla “relay-board” il che semplifica la costruzione del progetto….ma non vi fa’ imparare nulla 🙂