Arduino: pilotare relè in modo semplice con il chip ULN2003


Ciao!

Il tutorial di oggi mostra come collegare fino a 7 relè ad Arduino in modo molto semplice.
Infatti grazie al piccolo ma potente circuito integrato ULN2003 è possibile pilotare carichi come relè o piccoli motori senza usare altri componenti.


Ogni canale di questo integrato può pilotare un carico massimo di 500mA (600mA di picco)
e all'interno è già presente il diodo di protezione per i carichi induttivi (come relè o motori).

Per i più smanettoni allego anche lo schema elettrico di come è realizzato all'interno ogni singolo canale:






Ecco un video di un relè pilotato con questo integrato:





Ed ecco finalmente lo schema per collegare i nostri relè ad Arduino, come vedete è sufficiente un singolo ULN2003 per collegare 7 relè (ma potete collegarne anche solo alcuni se ve ne servono di meno).

Lo schema è molto semplice, basta collegare i pin di Arduino che vogliamo utilizzare agli ingressi dell' ULN2003, mentre le uscite del chip andranno collegate alle bobine dei relè.
infine l'altro polo delle bobine dei relè andrà collegato a 5V.
Se volete maggiori info sul collegamento di un relè vi rimando anche a questa pagina






Fatto questo basterà portare alta la porta di Arduino corrispondente per attivare il relè.
ad esempio se vogliamo attivare il relè R1 configureremo il numero della porta di Arduino che vogliamo utilizzare come uscita e nel loop quando necessario porteremo alta la porta per arrivare il relè.

ecco uno sketch di esempio per maggior chiarezza:


  1. void setup()
  2. {
  3.   pinMode(2, OUTPUT);
  4.   pinMode(3, OUTPUT);
  5.   pinMode(4, OUTPUT);
  6.   pinMode(5, OUTPUT);
  7.   pinMode(6, OUTPUT);
  8.   pinMode(7, OUTPUT);
  9.   pinMode(8, OUTPUT);
  10. }
  11. void loop()
  12. {
  13.   digitalWrite(2, LOW);  
  14.   delay(1000);            
  15.   digitalWrite(2, HIGH);  
  16.   delay(1000);  
  17.   digitalWrite(3, LOW);  
  18.   delay(1000);            
  19.   digitalWrite(3, HIGH);  
  20.   delay(1000);  
  21.   digitalWrite(4, LOW);  
  22.   delay(1000);            
  23.   digitalWrite(4, HIGH);  
  24.   delay(1000);
  25.   digitalWrite(5, LOW);  
  26.   delay(1000);            
  27.   digitalWrite(5, HIGH);  
  28.   delay(1000);
  29.   digitalWrite(6, LOW);  
  30.   delay(1000);            
  31.   digitalWrite(6, HIGH);  
  32.   delay(1000);
  33.   digitalWrite(7, LOW);  
  34.   delay(1000);            
  35.   digitalWrite(7, HIGH);  
  36.   delay(1000);
  37.   digitalWrite(8, LOW);  
  38.   delay(1000);            
  39.   digitalWrite(8, HIGH);  
  40.   delay(1000);
  41. }

Questo esempio è davvero molto semplice, verrà attivato e disattivato un relè alla volta in modo ciclico, dal primo all'ottavo.

Mi fa molto piacere ringraziare il simpaticissimo Alberto Panu che ho conosciuto all'Arduino Day 2015 per la dritta di utilizzare questo componente per pilotare relè.
vi rimando anche al suo sito, in particolare al bellissimo progetto Ardupower che utilizza proprio questo componente.

Per qualsiasi domanda come al solito lasciate un commento, cercherò di rispondervi il più presto possibile, ciao!

Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!

2 commenti:

  1. Ottima spiegazione. Ma se io volessi utilizzare l' ULN2003 con un altro dispositivo che funziona però a 3.3V, come per esempio un WEMOS D1mini ?

    RispondiElimina
    Risposte
    1. Ciao, grazie per il complimento! Si il chip è pilotabile anche con il 3.3v quindi puoi utilizzarlo con il Wemos.

      Elimina

Lascia un commento qui sotto, ti risponderò il prima possibile!

Altri Post