LED che lampeggia (Lezione 3)
Introduzione
Far lampeggiare un diodo LED (Light Emitting Diode) potrebbe sembrare un’operazione semplice e inutile dal punto di vista pratico didattico, ma dietro questa semplice funzione ci sono dei concetti molto interessanti, soprattutto, per chi si avvicina per la prima volta al mondo dell’elettronica e dei sistemi embedded.
Le nozioni che imparerai alla fine della lettura di questo articolo sono i seguenti:
- Concetti di base del diodo LED
- Breve cenno sulla legge di Ohm
- Come polarizzare un diodo LED
- Come calcolare la potenza dissipata da un resistore
- Scrivere un codice per far lampeggiare un diodo LED con la funzione “delay”
Schema elettrico
Il diodo LED è un dispositivo elettronico che emette luce, quando si applica una tensione ai suoi capi, esso lascia fluire la corrente in un solo verso, quindi, è fondamentale, che la polarità della tensione applicata sui suoi terminali sia corretta. Dalla figura , riportata di seguito, osserviamo che il diodo LED ha due reofori, quello più lungo è il positivo (anodo).
Il terminale negativo è anche indicato come catodo.
Di seguito ho riportato lo schema elettrico di polarizzazione di un diodo LED, si osserva che per alimentarlo, bisogna inserire in serie ad esso un resistore di valore opportuno, se fosse di valore troppo basso, il dido LED potrebbe bruciarsi per effetto joule, data l’eccessiva corrente che fluisce nel dispositivo, mentre, se il resistore è di valore troppo alto, il diodo LED potrebbe emette una luce fioca oppure può risultare completamente spento.
Approfondimenti
Per far circolare la corrente in un circuito elettrico è necessario applicare una differenza di potenziale (ddp). La corrente è proporzionale al valore della ddp e della resistenza, questo fenomeno è descritto dalla famosa legge di Ohm:
Dove “I” è la corrente , “V” è ddp ed “R” è il valore del resistore. Come possiamo osservare dalla relazione scritta sopra, maggiore è la tensione, a parità di resistenza, e maggiore è la corrente che circola nel circuito, lo stesso ragionamento si può fare con la resistenza, che si trova al denominatore e quindi dobbiamo aspettarci un comportamento opposto alla tensione, cioè, a parità di tensione , maggiore è la resistenza e minore e’ la corrente che circola nel circuito.
Fatta questa breve introduzione, per polarizzare un diodo, dobbiamo conoscere la corrente massima che può circolare nel componente e questa informazione la troviamo nel datasheet.
In questo caso possiamo applicare la legge di Ohm, precedentemente descritta, dobbiamo calcolare quale valore di resistenza deve avere il resistore affinché la corrente che fluisce nel diodo LED non superi i parametri indicati nel datasheet. Usiamo la formula inversa e otteniamo
La caduta di tensione sul diodo LED, riportata nel datasheet, prendiamo il valore tipico 2.25V e la corrente massima che può fluire nel diodo è di 20 mA ( If). Il diodo LED, è alimentato tramite l’uscita del microcontrollore, quindi, con una tensione di 5V, con questi valori abbiamo tutto il necessario per determinare la resistenza da usare. Scriviamo l’equazione alla maglia:
Dove Vf è la caduta di tensione sul diodo led 2.25 (sempre ricavata dal datasheet). Dall’equazione sopra possiamo ricavare Rx:
Per pilotare correttamente il diodo LED dobbiamo connettere in serie un resistore di 137 Ω , o un valore molto vicino, si potrebbe usare anche un resistore di 220 Ω, scorre meno corrente nel circuito, ma il diodo LED comunque riesce ad illuminarsi con un’intensità accettabile. Tutto questo non basta, dobbiamo calcolare il valore di potenza massima che il resistore dissipa nel circuito. La potenza dissipata dal resistore si calcola tramite questa equazione potenza:
Nel nostro circuito possiamo utilizzare un resistore che riesce a dissipare una potenza di 1/8 W, 125 mW.
Codice per il blink del diodo LED
// questo e' un commento const int LED = 9; // definiamo il pin 9 della scheda Arduino con un nome mnemonico void setup() { pinMode (LED, OUTPUT); // il pin LED e' configurato come uscita } void loop() { for (int i=100; i<=1000; i=i+100) { digitalWrite(LED, HIGH); delay(i); digitalWrite(LED, LOW); delay(i); } }
Uno sketch di Arduino, si divide in due principali blocchi:
- void setup():
In questo blocco, delimitato dalle parentesi graffe, c’è il codice che il microcontrollore esegue solo all’accensione, ossia, solo al Boot del sistema, per questo motivo, il codice inserito in questo blocco è dedicato alla configurazione del sistema , come per esempio l’impostazione dei pin di uscita e ingresso.
- void loop():
In questo blocco le istruzioni sono ripetute all’infinito, tutte le funzioni che deve svolgere il microcontrollore devono essere scritte in questo blocco, sempre delimitato dalle parentesi graffe.
- const int LED=9;
Dichiariamo una costante , di valore intero, questo significa che il valore 9 e’ associato alla label LED. A differenza di una variabile, può essere solo letta.
- pinMode (LED, OUTPUT);
Con questa istruzione indichiamo al compilatore di impostare il pin indicato dalla costante LED come uscita.
- for (int i=100; i<=1000; i=i+100)
il ciclo for si ripete fino a quando, nel nostro caso, la variabile i e minore o uguale a 1000, essa è incrementata di cento unità ad ogni interazione del codice, compreso tra le parentesi graffe, come indicato nella terza istruzione nella parentesi tonda (i=i+100).
- digitalWrite(LED, HIGH);
Setta a valore alto (circa 5V) l’uscita del microcontrollore collegata al diodo LED.
- delay(i);
E’ una funzione, compresa nella libreria di Arduino, che ferma l’esecuzione del programma , per il tempo in ms, indicato dalla variabile i. Il valore della variabile i cambia di 100 unità ad agni interazione, in questo codice ad ogni interazione l’intervallo temporale in cui rimane acceso o spento il diodo LED cambia.
- digitalWrite(LED, LOW);
Setta a valore basso (circa 0V) l’uscita del microcontrollore collegata al diodo LED.