Domanda:
Ho davvero bisogno di resistenze quando controllo i LED con Arduino?
taiduckman
2012-05-31 18:14:56 UTC
view on stackexchange narkive permalink

Sto provando Arduino Uno per la prima volta con 2 LED lampeggianti su una breadboard. Tutti i tutorial su Internet sembrano utilizzare un resistore. Conosco la funzione delle resistenze, ma è davvero importante qui? Questi LED funzionano perfettamente senza una resistenza.

Dipende se vuoi che il tuo LED si sciolga o meno.Se non ti dispiace, ometti il resistore.:-).
Sei risposte:
stevenvh
2012-05-31 18:21:43 UTC
view on stackexchange narkive permalink

Cattivo! :-). Se dicono di usare un resistore c'è una buona ragione per questo! Spegnilo, ORA!

Il resistore serve a limitare la corrente del LED. Se lo ometti, la limitazione di corrente deve provenire dall'output di Arduino e non gli piacerà. Come fai a sapere cosa deve essere il resistore? Conosci la legge di Ohm? Se non lo fai, scrivilo a grandi lettere:

\ $ V = I \ cdot R \ $

La tensione è uguale alla corrente per la resistenza. Oppure potresti dire

\ $ R = \ dfrac {V} {I} \ $

È la stessa cosa. Il voltaggio lo sai: Arduino funziona a 5V. Ma non tutto ciò andrà oltre il resistore. Il LED ha anche una caduta di tensione, tipicamente di circa 2 V per un LED rosso. Quindi rimangono 3 V per il resistore. Un tipico indicatore LED avrà una corrente nominale di 20mA, quindi

\ $ R = \ dfrac {5V - 2V} {20mA} = 150 \ Omega \ $

Arduino Uno utilizza il microcontrollore ATmega328. Il datasheet dice che la corrente per qualsiasi pin I / O non dovrebbe superare i 40mA, ciò che è comunemente noto come Absolute Maximum Ratings. Dato che non hai nulla per limitare la corrente c'è solo la (bassa!) Resistenza del transistor di uscita. La corrente potrebbe essere superiore a 40 mA e il microcontrollore subirà danni.

modifica
Il grafico seguente dalla scheda tecnica di ATmega mostra cosa succederà se guidi il LED senza resistenza di limitazione della corrente:

enter image description here

Senza carico la tensione di uscita è 5V come previsto. Ma maggiore è la corrente assorbita, minore sarà la tensione di uscita, scenderà di circa 100 mV per ogni carico aggiuntivo di 4 mA. Questa è una resistenza interna di 25 \ $ \ Omega \ $. Quindi

\ $ I = \ dfrac {5V - 2V} {25 \ Omega} = 120mA \ $

Il grafico non va così lontano, la resistenza aumenterà con la temperatura, ma la corrente rimarrà molto alta. Ricordare che la scheda tecnica ha fornito 40 mA come valore massimo assoluto. Hai tre volte quello. Questo danneggerà sicuramente la porta I / O se lo fai per molto tempo. E probabilmente anche il LED. Un LED indicatore di 20 mA avrà spesso 30 mA come valore massimo assoluto.

Al momento non ho resistenze. Per il momento, posso semplicemente collegare un gruppo di LED in serie per imitare il resistore?
Non proprio. 3 e non otterrai alcuna luce, perché 3 x 2V> 5V e 2 avrai lo stesso problema, solo 1V cadono invece di 3V. Ho aggiunto alla mia risposta per spegnerlo ora!
Ho perso il conto su quante volte ho scritto quel calcolo nelle risposte qui. Dovrei avere uno script per questo :-)
Un LED rosso scende di 1,7 V e 10 mA è sufficiente per un uso occasionale in interni. La resistenza di limitazione della corrente standard del settore per un LED rosso e un'alimentazione a 5 V è di 330 ohm.
Ci sono molte risposte su questo sito e molte altrove che spiegano PERCHÉ è necessario un resistore in serie e come calcolarlo. Ci sono molte cose nella vita che sembrano OK da fare nonostante venga detto diversamente e che si rivelano avere conseguenze negative in molti casi. Questo è uno di questi. La combinazione complessiva potrebbe non essere troppo difficile per il LED o l'Arduino. O forse. La durata del LED potrebbe essere ridotta. La vita di Arduino potrebbe improvvisamente non esserlo. Ma POTREBBE funzionare bene abbastanza a lungo da farti essere felice. O no.
I LED sono progettati per funzionare a una determinata corrente massima. La tensione che li guida significa che la corrente è incontrollata. Le porte sono realizzate per fornire una certa corrente massima. Metterli in cortocircuito o sovraccaricarli POTREBBE provocare la distruzione dell'intero circuito integrato o semplicemente causare sottili problemi di funzionamento. O no.
@JohnR.Strohm Non lo definirei uno standard del settore.
@JohnR.Strohm - Come dice m.Alin, non è uno standard del settore. Digikey elenca LED nominali da 10 mA da 0,4 mcd a 1000 mcd e LED da 20 mA da 0,1 mcd a 54000 mcd. Non c'è linea e nessuna garanzia che il tuo LED da 10mA sarà ben visibile. La tensione del LED rosso in genere [intervalli] (http://www.oksolar.com/led/led_color_chart.htm) da 1,8 V a 2,2 V. Per un LED rosso 1,6 V è eccezionalmente basso.
ort
2015-04-04 20:13:27 UTC
view on stackexchange narkive permalink

40plot,

Devo dire che guidare un LED senza una resistenza NON è RACCOMANDATO a meno che tu non sappia cosa stai facendo. Tuttavia, se capisci come si comporta un LED, puoi guidarlo senza una resistenza in sicurezza. In effetti, spesso è meglio pilotare un LED senza un resistore limitatore di corrente.

Perché pilotare un LED senza un resistore? Semplice, per rendere il tuo circuito più efficiente dal punto di vista energetico.

Se guidi il tuo LED con PWM impostato su un ciclo di lavoro costante (cioè 5 V PWM al 34% del ciclo di lavoro per ottenere una tensione media di 1,7 V )?

Sì e no. L'uso del PWM può funzionare altrettanto bene dell'applicazione di una tensione specifica (se stai attento), ma ci sono modi migliori. Cose di cui preoccuparsi quando si adotta l'approccio PWM.

  1. La frequenza del PWM è importante. Quando si utilizza PWM in questo scenario, ci si affida alla capacità dei componenti del circuito di gestire temporaneamente correnti elevate. Le tue maggiori preoccupazioni saranno come il LED gestisce una corrente elevata temporanea e come il circuito di uscita del tuo chip può gestire una corrente temporaneamente elevata. Se queste informazioni non sono specificate nel foglio dati, gli autori del foglio dati erano pigri. MA!!! Se tali informazioni sono specificate nella scheda tecnica, puoi trarne vantaggio in tutta sicurezza. Ad esempio, il LED che ho accanto ha una corrente massima di 40mA. Tuttavia, ha anche una "corrente di picco diretta" di 200 mA, con una nota che la corrente non può rimanere a 200 mA per più di 10 us. Soooo ... posso pilotare il LED con 1.7V (la tensione diretta tipica dei LED dal datasheet). Con un ciclo di lavoro del 34% e un'alimentazione di 5 V (34% di 5 V = 1,7 V) produrrà una tensione media di 1,7 V, devo solo assicurarmi che il mio PWM in tempo sia 10us o meno. Durante il tempo di accensione, la corrente attraverso il LED aumenterà probabilmente a circa 58 mA (58 mA = assorbimento di corrente tipico a 1,7 V del mio diodo diviso per il 34%). 58mA supera di 18 mA la corrente costante massima dei miei LED di 40 mA. Infine ... avrei bisogno di una frequenza PWM di 33,3 kHz o superiore per pilotare in sicurezza il mio LED (33,3 kHz = l'inverso di [10us tempo di accensione diviso per il 34% per ottenere il periodo PWM]). Nella REALTÀ, potrei tranquillamente usare PWM per alimentare il mio LED con una frequenza PWM più lenta. Il motivo è questo: i fogli dati di solito non specificano tutti gli scenari operativi validi di un componente. Non specificano quegli scenari perché il venditore non vuole investire tempo nello speci fi care e nel supportare l'uso del proprio componente per casi d'uso d'angolo. Ad esempio, con il mio LED, se riesco a far funzionare il LED a 40 mA per sempre (40 mA è il valore massimo di corrente costante) e posso far funzionare il LED a 200 mA per 10us. Quindi, posso essere sicuro al 99,99999% di poter azionare in sicurezza il LED a 100 mA per un periodo superiore a 10us, probabilmente vicino a 20us.

NOTA: tutti i componenti possono gestire in modo sicuro picchi di corrente temporanei al di sopra del valore nominale massimo, purché la durata dei picchi di corrente sia PICCOLO SUFFICIENTE . Alcuni componenti saranno più indulgenti di altri e, se sei fortunato, la scheda tecnica del componente specificherà quanto bene può gestire i picchi di corrente.

  1. La tensione del tuo PWM è importante. Dimostrerò il mio punto con un esempio invece che tramite una spiegazione. Se utilizziamo il LED a cui mi riferivo prima, sappiamo che il ciclo di lavoro del 34%, a 33,3kHz, a 5V è sicuro. Tuttavia, se la nostra tensione fosse 12V, dovremmo rielaborare i nostri calcoli per mantenere la stessa quantità di corrente che scorre attraverso il LED. Il nostro ciclo di lavoro dovrebbe scendere al 14,167% (1,7 V diviso 12 V) e la nostra frequenza PWM minima scenderebbe a 14,285 kHz (l'inverso di [10us diviso 14,167%]). TUTTAVIA! , questo è motivo di preoccupazione. Nello scenario 5V applichiamo 5V per 10us e nello scenario 12V applichiamo 12V per 10us. Abbiamo più che raddoppiato la tensione durante quei 10us, ci devono essere alcune conseguenze. E sì, ci sono! La mia scheda tecnica LED non mi fornisce i dati necessari per sapere quanto alto è il voltaggio che posso utilizzare per 10us prima di danneggiare il mio LED. Sicuramente 1000V per 10us friggerà il mio LED. Ma come faccio a sapere se 5V a 10us friggerà il mio LED? o 12V per 10us? Se non c'è una specifica per questo, stai correndo un rischio. Quindi ... 5V per 10us è rischioso, ma molto probabilmente sicuro.

NOTA: puoi aggiungere un condensatore al circuito per calcolare la media del PWM e risolvere il problema.

  1. Devi essere consapevole delle capacità del pin di uscita a cui hai collegato anche il tuo LED. Il parametro più importante sarà la massima corrente di uscita. Per Arduino Uno, credo che sia 40mA. È necessario scegliere un ciclo di lavoro PWM la cui tensione media mantiene la corrente che attraversa il LED al di sotto di 40 mA. Per sapere quali tensioni produrranno tanta corrente, è necessario esaminare la curva IV dei LED (grafico corrente vs. tensione). Per un LED tipico una tensione compresa tra 0,7 V (tipica tensione minima necessaria per emettere luce dal LED) e 1,25 V sarà quasi certamente sicura. Perché 1,25 V è probabilmente sicuro? Ebbene, la maggior parte dei LED non supererà i 40 mA a 1,25 V, anche senza un resistore di limitazione della corrente. Un'altra cosa che aiuta a proteggere qualcuno nel caso in cui applichi troppa tensione, è che il circuito di uscita digitale di Arduino avrà la propria impedenza di uscita, quell'impedenza di uscita sarà bassa, ma anche un'impedenza di uscita di 20 ohm fornirebbe un valore non trascurabile quantità di protezione. Arduino uno ha un'impedenza di uscita digitale di circa 250 ohm. Per farla breve, se hai guidato un LED utilizzando PWM a 1.0V ad alta frequenza, per un tipico LED, non ci sono possibilità di danneggiare l'uscita digitale su un Arduino Uno.

  2. L'approccio PWM guida il LED in modo ad anello aperto (e così fa utilizzando un'alimentazione da 1,7 V senza PWM). Stai applicando una tensione media al LED che è solo il valore giusto per accendere il LED ma non abbastanza alta da danneggiare il LED. Sfortunatamente, la gamma di tensione da ON (e abbastanza luminosa da vedere) al LED danneggiato è molto piccola (quella gamma sul mio LED è di circa 0,7 V). Ci sono vari motivi per cui l'1,7 V che pensi di applicare non sarà sempre 1,7 V ...

a. Cambiamenti nella temp. E se avessi un driver del motore, un regolatore di tensione, ecc. In una scatola chiusa che conteneva anche il LED. Non sarebbe raro che questi altri componenti aumentino la temperatura ambiente all'interno della custodia da 25 ° C a 50 ° C. Questo aumento di temperatura CAMBIA il comportamento del tuo LED, del tuo regolatore di tensione, ecc. I tuoi 1,7 V una volta sicuri non saranno più 1,7 V e il tuo LED che prima friggeva a 2,5 V ora friggerà a 2,2V.

b. Cambiamenti nella tensione di alimentazione. E se la tua alimentazione fosse una batteria. Quando la batteria si scarica, la tensione scende notevolmente. E se progettassi il tuo circuito per funzionare bene con una batteria da 9V leggermente usata, ma poi avessi aggiunto una nuova batteria da 9V. Le nuovissime batterie al piombo acido da 9 V hanno in genere una tensione effettiva di 9,5 V. A seconda del circuito che fornisce i 5 V utilizzati per il PWM, tale 0,5 V aggiuntivo potrebbe portare il 5 V PWM a 5,3 V. E se stessi usando una batteria ricaricabile? Hanno una gamma di tensioni ancora più ampia durante l'intero ciclo di scarica.

c. Ci sono altri scenari, come la corrente indotta da EMI (i motori lo faranno).

Avere un resistore limitatore di corrente ti evita molti di questi problemi.

Usare PWM per pilotare un LED non è una soluzione molto buona, esiste un modo migliore che non richieda un resistore limitatore di corrente?

Sì! Fai quello che fanno con le lampadine a LED per la tua casa. Guidare il LED con un controller di corrente. Imposta il controller di corrente per guidare la corrente per cui è classificato il tuo LED.

Con il controller di corrente appropriato, puoi aumentare notevolmente e puoi guidare in sicurezza il LED senza preoccuparti della maggior parte dei problemi coinvolti con il circuito aperto pilotando un LED.

Lo svantaggio: hai bisogno di un controller corrente e hai aumentato la complessità del circuito di 10 volte. Non scoraggiarti però. È possibile acquistare circuiti integrati per controller di corrente, circuiti integrati per driver LED o creare il proprio convertitore boost controllato in corrente. Non è così difficile. Prenditi un po 'di tempo dalla tua fitta agenda e impara a conoscere i convertitori boost e buck. Informazioni sulla commutazione degli alimentatori. Sono ciò che alimenta il tuo computer e sono estremamente efficienti dal punto di vista energetico. Quindi, creane uno da zero o acquista un circuito integrato economico per fare la maggior parte del lavoro per te.

Ovviamente, come con tutti i progetti elettronici, ci sono sempre più cose che puoi fare per realizzare il tuo circuito meglio. Dai un'occhiata alla figura 3 nel seguente PDF per vedere quanto possa essere complessa anche una lampadina a LED per uso domestico in questi giorni ...

http://www.littelfuse.com/~/media/electronics/ design_guides / led_protectors / littelfuse_led_lighting_design_guide.pdf.pdf

In sintesi: devi decidere tu stesso quanto rischio sei disposto a correre con il tuo circuito. L'uso di 5V PWM per pilotare il tuo LED funzionerà probabilmente bene (specialmente se aggiungi un condensatore per appianare l'onda quadra PWM e massimizzare la frequenza PWM). Non aver paura di spingere i tuoi dispositivi elettronici al di fuori delle loro normali condizioni operative, ma sii informato quando lo fai, conosci i rischi che stai correndo.

Buon divertimento!

Cordiali saluti : Sono sorpreso da quante persone saltano subito alla risposta "DEVI USARE UNA RESISTENZA DI LIMITAZIONE DI CORRENTE". Questo è un consiglio ben intenzionato, ma eccessivamente sicuro.

Ort

Sono sorpreso di vedere quante persone hanno considerato questa risposta un prezioso consiglio di progettazione.Guidare un LED senza limitazione di corrente utilizzando PWM è altrettanto dannoso per il LED quanto ciò che sta facendo l'OP, inoltre genererà EMI e ondulazione VCC come una follia.
@DmitryGrigoryev, mi sono reso conto di non essere riuscito a indirizzare la massima corrente di uscita dell'uscita digitale.Ho aggiunto un nuovo proiettile per coprirlo. PWM consente a qualcuno di pilotare in sicurezza un LED senza un resistore limitatore di corrente. EMI e VCC ripple vengono creati ogni volta che si guidano carichi con un segnale digitale, ma questo è comune (es. H Bridge, Boost Converter, Hobby Servo Control, ecc.) E non è certo un motivo per evitare il PWM.Esistono soluzioni ragionevoli per gestire l'EMI e l'ondulazione VCC, se necessario.La maggior parte delle persone non si preoccuperà delle piccole quantità di ondulazione EMI e VCC create dal pilotaggio di un LED con PWM.
eadmaster
2017-09-05 00:32:16 UTC
view on stackexchange narkive permalink

Puoi utilizzare le resistenze pullup integrate come suggerito qui:

Le resistenze pullup forniscono corrente sufficiente per illuminare debolmente un LED collegato a un pin che è stato configurato come ingresso.

Non per i LED, può essere utilizzato per i pulsanti, ma per i LED c'è il pericolo di interrompere l'uscita
se non è sicuro perché lo dicono i documenti ufficiali?(Ho provato anche me stesso e ha funzionato come descritto.)
Si prega di leggere fino a `OUTPUT`, menziona che ha bisogno di un resistore in serie:" Questa è abbastanza corrente per illuminare intensamente un LED (non dimenticare il resistore in serie), o per far funzionare molti sensori, per esempio, ma non abbastanza correnteper far funzionare la maggior parte dei relè, solenoidi o motori. "
Ejo60
2015-11-28 16:04:49 UTC
view on stackexchange narkive permalink

La risposta breve è sì e no, dipende dal tuo arduino e dal colore del tuo led. Ad esempio, una scheda da 3,3 V non richiede un resistore in serie con un piccolo LED verde, perché la tensione diretta del LED è piuttosto alta, vedi questo. La resistenza interna è di circa 25 Ohm, prendi (3,3 - 3) / 25 = 12 mA, quindi va ancora bene, non dovresti superare la corrente massima per pin che è 40 mA per il processore atmel 328p utilizzato sulle schede UNO (a meno che usi un derivato del 328p dove potrebbe essere una storia diversa). Tuttavia, per un arduino che funziona a 5V si verificheranno problemi con un LED a infrarossi che ha una tensione diretta molto più bassa, tipicamente 1.2V, (5-1.2) / 25 = 150mA, e questo è decisamente troppo, quindi usa un limitatore di corrente come come resistenza per pilotare quel tipo di LED. Il pin 13 sulle schede Arduino (o un altro pin sulle varianti) ha già un led e una resistenza in serie. Inoltre, l'alimentazione della scheda ha una potenza massima, tipicamente 200mA, e devi rimanere sotto questo livello, e non puoi disegnare più di una certa quantità di mA per gruppo di pin, questo è spiegato qui. Se vuoi pilotare molti LED, considera di utilizzare un driver LED a matrice che esegue il multiplexing per te, vedi ad esempio la mia area di YouTube dove mostro il driver MAX7219CNG. Ma anche Arduino Uno può fare il multiplexing per te, guarda il mio termometro IR con 4 LED a sette segmenti su youtube. Buon hacking.

Fix It Until It's Broken
2014-12-08 23:53:13 UTC
view on stackexchange narkive permalink

La risposta di stevenvh spiega cosa devi fare, ma devi anche calcolare la dissipazione di potenza attraverso il LED in modo da non bruciare il resistore di caduta di tensione. Ad esempio, se la tensione di alimentazione è 5 V e la tensione diretta del resistore è 1,0 V, si perde 4 V. Utilizzando un resistore da 220 ohm si otterrà una corrente di (I = V / R) di 18 mA e una dissipazione di potenza (P = IV) di 72 mW.

0402 Le resistenze di dimensioni imperiali (1005 metriche) sono generalmente 1 / 16W, ovvero 62,5 mW. Quindi in questo caso non funzionerebbe; surriscalderebbe il resistore e ne ridurrebbe la vita operativa. Quindi dovresti passare a un resistore 0402 con classificazione 1 / 10W o ​​un resistore 0603 più grande.

Ogni volta che esegui calcoli come questi, aggiungili allo schema, in modo che il revisore possa raddoppiare- controlla facilmente il tuo lavoro.

Notare che la tensione diretta (e quindi il valore della resistenza) è una funzione del LED e i diversi colori dei LED avranno valori diversi. I LED blu, in particolare, hanno un'elevata tensione diretta (~ 3.0V tipico). Quindi, se stai cercando di ottenere quattro diversi LED per avere la stessa luminosità, dovrai ripetere i calcoli per ciascun LED. Per farlo davvero bene, guarda le caratteristiche ottiche di ogni LED alla sua corrente nominale e regola di conseguenza.

Gaspar de Elias
2014-12-08 21:43:09 UTC
view on stackexchange narkive permalink

SÌ! Si può fare.

Anche se ciò che è stato detto è corretto ... c'è un altro modo. Un modo più efficiente dal punto di vista energetico di pilotare i LED con 5v.

Questo è un po 'non documentato e non è noto se la soluzione consumerà i LED, ma può essere fatto. In realtà lo sto facendo.

Utilizzo PWM dall'hardware: ecco un esempio:

  #include <avr / io.h> # include <util pwm_init /delay.h>void () {// inizializzare TCCR0 secondo il requisito, dichiaro quanto segue TCCR0 | = (1<<WGM00) | (1<<COM01) | (1<<WGM01) | (1<<CS00); // assicurati di impostare il pin OC0 (pin PB3 per atmega32) come pin di output DDRB | = (1<<PB3);} void main () {uint8_t duty; duty = 1; // duty cycle = 0,39% del tempo (dipende dall'oscillatore.) // inizializza il timer in modalità PWM pwm_init (); // eseguito all'infinito while (1) {OCR0 = duty; }}  

PWM può anche essere simulato utilizzando il software e i timer avrs. Puoi trovare un esempio all'interno della libreria lufa, chiamato LEDNotifier.c.

La mia conclusione: è possibile pilotare un led a 5V.

PROS : Non c'è bisogno di una resistenza. Anche un po 'di risparmio energetico (~ 50%)

CONTRO: Non so se il componente è stressato e riguardo alla sua riduzione della durata.

C'è un ragazzo che ha anche fatto questo esperimento a Stanford e ha pubblicato alcune informazioni sul suo sito.

Questa non sembra proprio una buona idea.Probabilmente stai prelevando più corrente dal controller di quella per cui è valutato, anche se non lo fai per molto tempo.
Come detto questo non è documentato.L'uscita IO di Arduino UNO può guidare intorno a 40ma-50ma.Questo è costante.Di sicuro posso gestire impulsi molto brevi con più corrente.Dai un'occhiata a [wikipedia] (http://en.wikipedia.org/wiki/LED_circuit#Pulsed_LED_operation).
Nell'ambiente Arduino, si può ottenere PWM più facilmente con `analogWrite ()` sul pin corrispondente.Non sono ancora sicuro che questa sia una buona idea, ma almeno per i LED IR, è comune che le schede tecniche consentano correnti di picco notevolmente più elevate per cicli di lavoro inferiori al 100%.
Sono abbastanza sicuro che il risparmio energetico sarà ** negativo ** rispetto a una soluzione basata su resistore, perché l'efficienza dei LED diminuisce all'aumentare della corrente.
@ScottSeidman Perché non è una buona idea?solo perchè la maggior parte delle persone crede che non sia consigliabile utilizzare un led senza resistore?questa risposta si è rivelata un'indagine, una fonte molto rispettosa come la Stanford University e da quello che posso sperimentare, funziona.Adoro i post con voto negativo perché dicono che coloro che hanno votato contro sono solo di parte.Che paradosso ...
@Ivanzinho generalmente non è una buona idea fare cose che non sono documentate nella scheda tecnica, per una serie di motivi.Il comportamento non documentato non è garantito, né per i chip esistenti, né per eventuali modifiche tecniche ai chip.In questo caso, non per tutti i tipi di LED.Tendiamo a progettare in base a ciò che ci dicono le schede tecniche, perché così facendo si otterranno progetti che funzionano in modo affidabile, che generalmente utilizzano meno risorse (tempo, denaro, aggravamento) rispetto a fare le cose in modo marginale che funzionerà in alcuni casi e non inaltri.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...