lunedì 17 novembre 2014

Giochi di luci con i Led ed Arduino UNO R3 per Natale - 1a parte

Ciao e ben ritrovato sul Blog Aspettando il Bus.
Fra poco più di un mese è Natale ed è il momento di darsi da fare per preparare i giochi di luci per abbellire l'alberello e il presepe. Avrei voluto mostravi anche altri progetti ma il tempo è tiranno e non sono riuscito a finirli per la pubblicazione, ma non preoccupatevi... è questione di qualche giorno.

Oggi vi propongo di comandare dei LED con Arduino UNO R3 e di realizzare qualcosa di simile a questo:
Modulo con 14 LED e 14 Bjt - Foto di Paolo Luongo
Modulo con 14 LED e 14 Bjt - Foto di Paolo Luongo

Arduino è in grado di pilotare direttamente i LED ma collegandone molti si corre il rischio di superare la sua massima potenza elettrica. Per potenza elettrica intendo la potenza che il chip deve dissipare per comandare i dispositivi collegati: ogni uscita può erogare 40 mA, al massimo, ma non contemporaneamente con tutte le porte. Per maggiori informazioni consultate il datasheet della Board Arduino UNO R3, basata sul chip ATmega328, sul sito ufficiale di Arduino.

Ma procediamo con ordine ed iniziamo dai LED.
Il LED è un diodo e quindi è un dispositivo polarizzato che funziona in corrente, nel senso che facendolo attraversare da una corrente continua (CC) emette luce. L'intensità di corrente necessaria varia fra i 10 e 25 mA (milli Ampere) per i consueti modelli disponibili per l'hobbista  da 3 o 5mm. Se si dispone del relativo datasheet si può leggere la corrente nominale per il suo corretto pilotaggio, ma quasi sempre, il negozio dietro l'angolo (che ci vende i LED) non ha il relativo datasheet e quindi vale la regola empirica di cui accennavo prima. Per limitare la corrente, di solito, si una un resistore il cui valore viene calcolato utilizzando la legge di Ohm. La tensione presunta ai capi dei LED è piuttosto grossolana e si basa su prove empiriche sui normali LED in commercio che propongono 2 Volt per i LED Rossi, 3 Volt per i Blu e i Verdi, fino ai 4 Volt dei Bianchi e di quelli ad  Infrarossi.

Facciamo qualche esempio che vi invito a provare con una breadbord ed un multimetro digitale. Come ogni cosa, meglio fare delle prove con i LED che si riescono a trovare.

Ad esempio:
Tensione 5V, Corrente 0,010A (10 mA), tensione (presunta) ai capi del LED 2 Volt perché utilizziamo un LED Rosso da 5 mm.
Calcoliamo il valore del resistore: (Vingresso-VLed) diviso 0,01 => (5-2)/0,01 = 3/0,01 => 300 Ohm. Questo valore non è un valore standard e si può scegliere il valore di 330 Ohm o di 270 Ohm.
Col valore più basso sarà un poco più luminoso. I puristi utilizzano 3 resistori da 100 Ohm in serie, ma credo sia esagerato!

Per ottenere una maggiore luminosità basta scegliere i LED ad alta luminosità e pilotarli con una corrente maggiore: 20 mA possono andare bene. Ricordatevi di fare prima delle prove per valutare la durata e l'intensità luminosa del LED.

L'idea che vi propongo oggi è quella di collegare un LED su ogni uscita di Arduino (da Pin0 a Pin14) interponendo un Bjt per il controllo. Inoltre ho intenzione di aumentare la tensione con cui alimentiamo i LED da 5 a  9 Volt per non sovraccaricare il regolatore a 5Volt presente su Arduino UNO R3.

Come Bjt ho scelto il BC337-40 della Motorola. Vediamo, per sommi capi, le sue caratteristiche:

Parte del datasheet del BC337-40 - Fonte Motorola
Parte del datasheet del BC337-40 - Fonte Motorola
In sintesi il circuito è questo:

Schema elettrico del circuito di Paolo Luongo
Schema elettrico del circuito di Paolo Luongo
I componenti necessari per ogni singolo canale, con una tensione di 9 Volt (prelevata dal Pin Vin di Arduino) sono :
Ricordiamoci una capacità da 100µF 16Volt e una da 100nF in parallelo alla Vin e alla GND, prelevati da Arduino UNO R3, per "attenuare" i piccoli sbalzi di tensione generati.

Il funzionamento, in modo semplice, è che quando il Bjt riceve una corrente di base sufficiente passa dallo stato di interdizione a quello di saturazione. In parole (molto) povere (e grossolane) quando il Bjt è nello stato di interdizione non circola corrente fra il Collettore e l' Emettitore e quindi il LED resta spento. Quando il Bjt passa nello stato di saturazione si può considerare il Collettore collegato direttamente all' Emettitore con una modesta caduta di tensione di 0,7V circa e quindi il LED emetterà luce.

Spero che vogliate perdonare la "spiegazione" ma, per il momento, non è il caso di fare un corso di elettronica, basta avere un'idea di massima sul funzionamento. In fondo, non dobbiamo fare delle luci per Natale? Ovviamente se avete dei dubbi o perplessità, basta mandarmi una email o commentare il post e proverò ad essere più chiaro.  :-)

In ogni caso, ho creato la pagina delle F.A.Q.  di questo progetto.

Per oggi vi lascio, ma non prima di avervi invitato alla lettura della 2a parte in cui vi mostrerò un semplice sketch, da adattare per i vostri giochi di luce e come comandare più LED per ogni Bjt.

Vai alla versione personalizzabile facilmente, con un foglio di calcolo per i nuovi sketch.

Se il progetto ti è piaciuto passa parola e leggi gli altri articoli del Blog.

Ora ... scappo altrimenti perdo...il BUS :-)
Ciao
Paolo :-)



6 commenti:

Fabio Di Benedetto ha detto...

Buongiorno.
Perché il valore 330ohm per il resistore?

Paolo PerCdS ha detto...

Ciao Fabio, è spiegato nell' articolo.
;-)

Fabio Di Benedetto ha detto...

Nell'articolo si fa riferimento ad una corrente di 5V per il calcolo della resistenza.
Ma poi, ha applicato una tensione di 9V. Andrebbe rivista la resistenza forse?

Paolo PerCdS ha detto...

Ciao Fabio,
hai ragione nell'articolo non sono proprio chiaro chiaro. Infatti per l'esempio uso una tensione di 5 Volt ed una corrente di 10 mA, mentre nella realizzazione pratica uso una tensione di 9 Volt ed una corrente di circa 20 mA. Se applichiamo la legge di Ohm, con questi nuovi valori, il resistore è da 330 Ohm circa, come quello usato nel circuito proposto. Comunque, ora aggiungo un approfondimento nelle FAQ del progetto sperando di essere, almeno li, più chiaro.
Grazie per la segnalazione.
;-)

Fabio Di Benedetto ha detto...

Ciao Paolo.
Andrebbe bene comunque se usassi il transistor 2N3904 ? Il condensatore va cambiato? Anche la resistenza da 1Kohm va cmabiata?

Paolo PerCdS ha detto...

Ciao Fabio, il 2N3904 ha una corrente di collettore di 200mA mentre il BC337 della Motorola ne ha 800mA. Per questa applicazione la sostituzione è possibile e non serve cambiare nulla nello schema.
Ciao e buon anno !