ULN2803 : collegare tanti relè ad Arduino

In un precedente articolo abbiamo visto come collegare un relè ad Arduino, in questo invece vedremo come sia possibile collegare fino ad 8 relè con un singolo integrato, nello specifico stiamo parlando dell’ULN2803, si tratta di un array darlington, il quale racchiude al suo interno tutta la componentistica che serve per pilotare ogni singolo relè che andremo a collegarci.

8 relè sono tanti ma se non vi basta, il discorso si può espandere e collegare veramente tanti relè utilizzando gli shift register che abbiamo visto già in precedente articolo.

Datasheet dell’ULN2803

Ecco come si presenta l’ULN2803

uln2803_arduino

uln2803_arduino_array_darlington

I collegamenti

I collegamenti da fare sono abbastanza semplici dando un’occhiata alle seguenti immagini:

ULN2803_schema_collegamento

collegamento_uln2803_arduino

collegamento_uln2803_arduino

collegamento_uln2803_arduino

collegamento_uln2803_arduino

Sul datasheet si legge che è possibile mettere più uscite in parallelo nel caso ci sia la necessità di pilotare carichi superiori ai 500mA, ne consegue quindi che bisognerà pilotare due o più ingressi in parallelo, cioè, per ogni uscita utilizzata in parallelo andrà collegato in parallelo il rispettivo ingresso, tutto questo però non conviene farlo a casaccio altrimenti si rischia di cuocere l’uln2803, perciò si dovrà calcolare la potenza che l’uln2803 dovrà dissipare aggiungendo un’adeguata aletta di raffreddamento, tutto questo però è possibile entro determinati duty cycle, come ad esempio ci illustra la seguente tabella riportata sul datasheet dell’uln2803

duty_cycle_uln2803

A questo punto bisogna scrivere il codice, uno sketch di esempio che ognuno adatterà al proprio lavoro. In realtà il funzionamento è molto semplice, ogni volta che porteremo ad un valore logico alto l’uscita Arduino, collegata all’ingresso dell’uln2803, che andrà a pilotare il relè, quest’ultimo verrà eccitato andando così ad aprire/chiudere il proprio contatto.

int pin_relay = 7;

void setup() {
  pinMode(pin_relay, OUTPUT);
}

void loop() {
  digitalWrite(pin_relay, HIGH); // attivo il relè
  delay(3000); // attendo 3 secondi
  digitalWrite(pin_relay, LOW); // disattivo il relè
  delay(3000); // attendo 3 secondi
}

L’articolo termina qui e per ogni dubbio utilizzate i commenti, cercherò di rispondervi il prima possibile.
Ciao e buon divertimento 😉