Arduino e il mistero della resistenza sul pin 13

Sul pin 13 delle board del sistema Arduino si può collegare direttamente un led?

Questa domanda ricorrente è stata lo spunto per questo post.

Facciamo un passo indietro e cerchiamo di spiegare il senso della domanda.

Quando sono state realizzate le prime schede (board) del sistema Arduino, i progettisti hanno pensato di inserire anche un led che consentisse semplicemente di avere un riscontro visivo per le prime operazioni che di solito si fanno da principianti.

Installate l’ambiente software sul PC, collegate la vostra scheda e fate girare il vostro primo programma. Cosa c’è di più immediato che far lampeggiare un led?

Per aiutare ulteriormente i primi passi il led c’è già montato, basta utilizzare l’uscita predisposta. Se parliamo della scheda Arduino Uno rev.3 ad esempio, il led montato a bordo è collegato al pin PB5 del microcontrollore e quindi al pin “13” del connettore di espansione.

I led sono dei diodi particolari che emettono luce, hanno la propria tensione di funzionamento, che di solito è 1,5/2 Volt . Siccome i pin di uscita del microcontrollore arrivano a 5 volt è necessario inserire in serie al led una resistenza per evitare di far scorrere eccessiva corrente e quindi rischiare di danneggiare permanentemente sia il led che il microcontrollore. Verificando con gli schemi elettrici delle principali schede vediamo che il led a bordo scheda infatti è correttamente collegato con una resistenza in serie.

Scheda Arduino Nano. Evidenziata in giallo la circuiteria relativa al led interno. Evidenziato in rosso il percorso fra il pin del microcontrollore e il pin 13 del connettore. Si nota chiaramente la connessione diretta, senza resistenza

arduino nano
Fonte www.arduino.cc

 

Scheda Arduino Uno rev.3. Evidenziata in giallo la circuiteria relativa al led interno. In questa scheda il led interno è stato collegato attraverso un circuito operazionale che funge da buffer Evidenziato in rosso il percorso fra il pin del microcontrollore e il pin 13 del connettore, di nuovo con connessione diretta, senza resistenza.

arduino uno
Fonte www.arduino.cc

 

Scheda Arduino Mega. Evidenziata in giallo la circuiteria relativa al led interno.  Evidenziato in rosso il percorso fra il pin del microcontrollore e il pin 13 del connettore, di nuovo con connessione diretta, senza resistenza. In questo schema è chiarissima la differenza.

ardmega

Ma il pin “13” può essere utilizzato anche come normale linea di ingresso/uscita, esattamente come le altre. Qui nasce purtroppo l’equivoco. Nell’uso comune il pin 13 viene considerato il “pin del led” e ci sono in rete decine di esempi che mostrano un led, stavolta esterno, collegato al pin 13 senza resistenza.

ledbarrato

E’ un errore, infatti nella stragrande maggioranza delle schede del sistema Arduino e compatibili, il pin 13 del connettore di espansione è connesso direttamente al pin del microcontrollore senza nessuna resistenza. Per quello che ho potuto vedere esistono solo alcune schede molto vecchie che prevedono una resistenza, come la Arduino NG ad esempio.

I pin di uscita per fortuna sono limitati in corrente e i led tutto sommato sono abbastanza robusti…. solo questo li salva da morte prematura!

In definitiva, se volete collegare un led esterno, fatelo inserendo anche una resistenza in serie da 470/1000 ohm, su qualsiasi pin di uscita decidiate di usare.

led+res

Ho realizzato un video con la misurazione della corrente assorbita dal led, sia con la resistenza in serie che collegato direttamente.

 

Documentazione Arduino su Amazon

2 thoughts on “Arduino e il mistero della resistenza sul pin 13

  1. Che resistenza di pullup bisogna inserire nel caso di un pulsante nc collegato al pin 13. Con una da 10k non viene visto il livello high, con un da 4,7 viene visto il livello high con tensione di circa 2,65 volt. Occorre ridurre ancora la resistenza? E’ gradita risposta.

    1. Dipende da quale Arduino stai utilizzando… Comunque in generale il problema che lamenti esiste perché puoi trovarti in serie alla resistenza di pull_up un’altra resistenza e un diodo led e quindi la tensione risultante sul pin è data dal partitore. Se puoi utilizza un altro pin come ingresso o utilizza la logica contraria mettendo una resistenza di pull down e utilizzando 5 volt come livello alto. Puoi anche smontare fisicamente il led e/o la resistenza relativa. Questa di seguito è una nota del sito arduino.cc:

      NOTE: Digital pin 13 is harder to use as a digital input than the other digital pins because it has an LED and resistor attached to it that’s soldered to the board on most boards. If you enable its internal 20k pull-up resistor, it will hang at around 1.7V instead of the expected 5V because the onboard LED and series resistor pull the voltage level down, meaning it always returns LOW. If you must use pin 13 as a digital input, set its pinMode() to INPUT and use an external pull down resistor.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *