mercoledì 22 giugno 2011

T.A.R.: Tutorial Arduino Relè

Oggi vi presento un tutorial che vi permetterà di utilizzare attraverso un piccolo circuito un relè con arduino, visto che in giro non ho trovato nulla in lingua italiana che lo spiegasse davvero bene.

MATERIALE NECESSARIO:
- Arduino (in questo tutorial utilizzeremo Arduino UNO ma va bene uno qualsiasi);
- Un transistore (in questo tutorial utilizzeremo un BC547B npn ma va bene un qualsiasi transistore npn basta calcolare l'oppurtuna resistenza poi vedremo come);
- Un resistore (in questo tutorial ne utilizzo 3 per ottenere la resistenza desiderata);
- Un diodo (in questo tutorial utilizzo 1N4007 ma si può utilizzare un 1N4004 oppure un qualsiasi altro diodo a secondo della vostra necessità);
- Un relè (in questo tutorial utilizzo un relè a 5V dc in maniera da alimentarlo con arduino, la sigla del relè è HFD41);
- Un buzzer (opzionale l'utilizzo per far emettere un suono quando il relè si eccita)

DESCRIZIONE:
Utilizzando un uscita digitale di arduino andiamo ad alimentare attravjavascript:void(0)erso la base il transistore BC547B. Il BC547B (transistore, da ora in poi lo chiamo bjt) deve essere utilizzato come interruttore il che vuol dire che deve funzionare in regione di saturazione. Al collettore del bjt va collegato il relè e l'emettitore deve andare a massa. Infine all'altro capo del relè mettiamo l'alimentazione di 5V che preveleremo comunque da arduino. Infine per cortocircuitare la corrente derivante dalla tensione di induzione nel momento di spegnimento del relè usiamo un diodo in parallelo al relè. Lo schema che ho appena descritto è questo:



ANALISI FUNZIONAMENTO:
Il funzionamento di questo circuito è davvero semplice. Quando il bjt è in regione di interdizione e cioè il pin 13 di arduino è nello stato LOW allora un terminale del relè si troverà a VCC=5V e l'altro sarà appeso perché il bjt è off quindi il relè non varierà il suo stato (quindi non chiuderà il contatto e quindi il buzzer sarà aperto e non emetterà suoni). Appena il pin 13 di arduino viene impostato a HIGH allora il bjt andrà in regione di saturazione e quindi lo possiamo assumere come un circuito chiuso e quindi un terminale del relè sarà a VCC=5V (prelevabile da arduino) mentre un altro sarà a massa allora in questo caso il relè varierà il suo stato (cioè chiuderà il contatto facendo emettere un suono al buzzer);

CALCOLO DEI PARAMETRI:
Ora non ci resta che calcolare i parametri del circuito. Visto la semplicità del circuito dobbiamo calcolare semplicemente la resistenza sulla base del bjt. Per fare ciò applichiamo la legge di Kirchhoff per la tensione alla maglia perccorsa dal pin 13 dell'arduino verso massa passando dalla base-emettitore del bjt (e sapendo che il pin 13 di arduino quando si trova sullo stato di high emette una tensione di circa 5V), quindi guardando la figura possiamo scrivere:

PIN13-Vr-Vbe=0

dove:
- PIN13 è la tensione sul pin 13 dell'arduino quando è HIGH cioè 5 V
- Vr è la tensione sul resistore che possiamo anche scrivere come R*I e I la conosciamo perché è la corrente che scorre nella base e leggendo dal datasheet del BC547B ci accorgiamo che la corrente di base affinchè il bjt sia in saturazione deve essere 0,0005 Ampere e quindi I=0,0005 Ampere
- Vbe è la tensione base-emettitore del transistore, leggendo il datasheet del BC547B capiamo che il bjt in regione di saturazione ha una Vbe=0,7 Volt

quindi riscrivendo possiamo affermare che:
R*I=PIN13-Vbe

e quindi calcoliamo la resistenza come:
R=(PIN13-Vbe)/I=(5-0,7)/0,0005=8600 Ohm

Quindi ora siccome personalmente non ho una resistenza da 8600 Ohm combino tre resistenze una da 10KOhm in parallelo con quella da 4,7KOhm e tutto in serie con una da 4,7KOhm che mi da una resistenza finale di circa 7,8KOhm. Ora anche se è più bassa di 8,6KOhm di circa un MegaOhm comunque mi assicura una corrente nella base leggermente superiore a 0,5mAmpere e quindi sono sicuro che sarà in saturazione.

COLLEGAMENTO DEL RELÈ:
Non potevo non descrivere il funzionamento del relè. Il mio relè è un HFD41 a 5 V DC. Prendendo il datasheet possiamo osservare come è fatto internamente il nostro relè:



Questa è una vista da sotto come possiamo capire dalla scritta. Quindi vediamo che il relè presenta un contatto normalmente aperto e che va a chiudere quando è eccitato. Quindi i terminali centrali vanno collegati rispettivamente uno al collettore del bjt e uno all'alimentazione di 5V mentre uno qualsiasi dei terminali a sinistra guardando la foto va collegato al pin 12 dell'arduino e l'altro terminale in alto a destra guardando la foto va collegato al positivo del buzzer. Infine giusto per completezza il negativo del buzzer va collegato a massa (questo lo si può vedere dallo schema circuitale postato a inizio pagina).

CODICE ARDUINO:
Infine per concludere eccovi lo sketch che deve andare caricato su arduino:
void setup(){
pinMode(13,OUTPUT); // viene settato il pin 13 come uscita
pinMode(0,OUTPUT); // viene settato il pin 0 come uscita
digitalWrite(0,HIGH); // viene posto il pin 0 a livello alto perché deve far suonare il buzzer
}

void loop(){
digitalWrite(13,HIGH); // mette il pin 13 a livello alto facendo andare il bjt in saturazione
// ed eccitando il relè e facendo suonare il buzzer
delay(100); // attende 1 millisecondo
digitalWrite(13,LOW); // pone il pin 13 a livello basso spegnendo il bjt e spegnendo il relè
delay(5000); // attende 5 secondi e poi il ciclo si ripete
}


Eccovi alcune foto che riguardano il montaggio dei componenti sulla breadboard:





Ecco un video del funzionamento, purtroppo senza audio (accontentatevi...):


Infine ecco il link ai datasheet:
relè HFD41
BC547

Con questo è tutto, ci sentiamo alla prossima!
Se avete qualche domanda non esitate!

1 commento: