Ho davvero bisogno di resistenze quando controllo i LED con Arduino?

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 dei resistori, ma è davvero importante qui? Questi LED funzionano perfettamente senza un resistore.

Commenti

  • Dipende se vuoi che il tuo LED si sciolga o no. Se ‘ non ti dispiace, ometti il resistore. :-).

Rispondi

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

Il resistore è lì per limitare la corrente del LED. Se se lo ometti, la limitazione di corrente deve provenire dalloutput di Arduino e non gli piacerà. Come fai a sapere cosa deve essere il resistore? Conosci la legge di Ohm? Se non la conosci, scrivila 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 che conosci: Arduino funziona a 5V. Ma non tutto ciò andrà oltre il resistore. Il LED ha anche una caduta di tensione, tipicamente intorno a 2 V per un LED rosso. Quindi rimangono 3 V per il resistore. Un tipico LED indicatore avrà una corrente nominale di 20 mA, quindi

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

Arduino Uno utilizza ATmega328 microcontrollore. 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 il (basso !) resistenza del transistor di uscita. La corrente potrebbe essere superiore a 40 mA e il microcontrollore subirà danni.

modifica
Il grafico seguente dal datasheet di ATmega mostra cosa succederà se pilotate il LED senza resistore limitatore di corrente:

inserisci qui la descrizione dellimmagine

Senza carico la tensione di uscita è di 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. Ricorda che la scheda tecnica indicava 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.

Commenti

  • Non proprio. 3 e hai vinto ‘ luce perché 3 x 2 V > 5 V e 2 tu ‘ avrò lo stesso problema, solo una caduta di 1V invece di 3V. Ho aggiunto alla mia risposta per spegnerla ora!
  • Ho perso il conto su quante volte ho scritto quel calcolo nelle risposte qui. Dovrei avere uno script per questo 🙂
  • I LED sono progettati per funzionare a una certa 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 dellintero circuito integrato o semplicemente causare sottili problemi operativi. Oppure no.
  • @ JohnR.Strohm Non lo definirei ‘ uno standard del settore.
  • @ JohnR.Strohm – Come m. Alin afferma che ‘ 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 contiene alcuna linea e nessuna garanzia che il LED da 10 mA sia ben visibile. La tensione del LED rosso in genere varia da 1,8 V a 2,2 V. Per un LED rosso 1,6 V è eccezionalmente basso.

Answer

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 (es. 5V PWM al 34% ciclo per raggiungere una tensione media di 1,7 V)?

Sì e no. Luso di PWM può funzionare altrettanto bene dellapplicazione di una tensione specifica (se stai attento), ma ci sono modi migliori. Cose di cui preoccuparsi quando si adotta lapproccio PWM.

  1. La frequenza del PWM è importante.Quando si utilizza PWM in questo scenario, si fa affidamento sulla capacità dei componenti del circuito di gestire temporaneamente correnti elevate. Le preoccupazioni maggiori saranno il modo in cui il LED gestisce una corrente elevata temporanea e il modo in cui il circuito di uscita del chip può gestire una temporanea corrente elevata. Se queste informazioni non sono specificate nella scheda tecnica, gli autori della scheda tecnica erano pigri. MA !!! Se tali informazioni sono specificate nella scheda tecnica, puoi trarne vantaggio in sicurezza. Ad esempio, il LED che ho accanto per me ha una corrente nominale massima di 40 mA. Tuttavia, ha anche una ” corrente di picco diretta ” nominale di 200 mA, con una nota che la corrente non può rimanere a 200mA per più di 10us. Soooo … Posso pilotare il LED con 1.7V (la tensione diretta tipica dei LED dal datasheet). Con un duty cycle del 34% e unalimentazione di 5V (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. n volta, la corrente attraverso il LED salirà 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 = linverso 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 fornitore non vuole investire tempo nello specificare e supportare luso del proprio componente per luso angolare Ad esempio, con il mio LED, se riesco a far funzionare il LED a 40 mA per sempre (40 mA è la corrente nominale massima costante) e posso far funzionare il LED a 200 mA per 10us. Quindi, posso essere sicuro al 99,99999% di poterlo fare 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 sicurezza picchi di corrente temporanei al di sopra della loro potenza massima purché la durata del i picchi attuali sono ABBASTANZA PICCOLO . Alcuni componenti saranno più indulgenti di altri e, se sei fortunato, i componenti “s datasheet 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 con una spiegazione. Se usiamo 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, noi 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 (linverso di [ 10us diviso per 14,167%]). TUTTAVIA! , questo è motivo di preoccupazione. Nello scenario 5V applichiamo 5V per 10us e nello scenario 12V stiamo applicando 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 dà i dati necessari per sapere quanto è alto di una tensione che posso usare 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? Bene, la maggior parte dei LED non supererà i 40 mA a 1,25 V, anche senza un resistore limitatore di corrente. Unaltra cosa che aiuta a proteggere qualcuno nel caso in cui applichi troppa tensione, è che il circuito di uscita digitale di Arduino avrà la sua impedenza di uscita, quellimpedenza di uscita sarà bassa, ma anche unimpedenza di uscita di 20 ohm fornirebbe una protezione non trascurabile. Arduino uno ha unimpedenza di uscita digitale di circa 250 ohm. Per farla breve, se guidavi un LED usando PWM a 1.0V ad alta frequenza, per un tipico LED, non ci sono possibilità di danneggiare la tua uscita digitale su un Arduino Uno.

  2. Lapproccio PWM guida il LED in modo ad anello aperto (e così fa usando 1.7V di alimentazione senza PWM). Stai applicando una tensione media al LED che è il valore giusto per accendere il LED ma non abbastanza da danneggiarlo 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 l1,7 V che pensi di applicare non sarà sempre 1,7 V …

a. Cambiamenti nella temperatura ambiente. 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 allinterno della custodia da 25 ° C a 50 ° C. Questo aumento della temperatura cambierà il comportamento del tuo LED, del tuo regolatore di tensione, ecc. Il tuo 1,7V una volta sicuro non lo farà sarà più lungo di 1,7 V e il LED che prima friggeva a 2,5 V ora friggerà a 2,2 V.

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 ulteriore 0,5 V potrebbe aumentare il 5 V PWM a 5,3 V. E se stessi usando una batteria ricaricabile? Hanno una gamma di tensioni ancora più ampia durante lintero ciclo di scarica.

c. Esistono 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. Guida 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 , può essere notevolmente aumentato e puoi pilotare il LED in sicurezza senza preoccuparti della maggior parte dei problemi legati al pilotaggio a circuito aperto di 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. Scopri come cambiare 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 poco costoso per svolgere la maggior parte del lavoro per te.

Ovviamente, come con tutti i progetti elettronici, ci sono sempre più cose che puoi fare per migliorare il tuo circuito. Controlla la figura 3 nella segui il PDF per vedere quanto può essere complessa anche una lampadina a LED domestica di questi tempi …

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 prendi con il tuo circuito. Luso di 5V PWM per pilotare il tuo LED funzionerà probabilmente bene (specialmente se aggiungi un condensatore per appianare londa quadra PWM e massimizzare la tua frequenza PWM). Non avere troppa paura di spingere i tuoi dispositivi elettronici fuori del loro solito op erating le condizioni, solo, sii informato quando lo fai, conosci i rischi che stai correndo.

Divertiti!

FYI: Sono sorpreso da quante persone saltano immediatamente alla risposta, ” DEVI UTILIZZARE UNA RESISTENZA DI LIMITAZIONE CORRENTE “. Questo è un consiglio ben intenzionato, ma eccessivamente sicuro.

Ort

Commenti

  • I ‘ 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 quello che sta facendo lOP, inoltre genererà EMI e ondulazione VCC come una follia.
  • @DmitryGrigoryev, mi sono reso conto che non sono riuscito a risolvere il problema la massima corrente di uscita delluscita 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 le ondulazioni EMI e VCC, se necessario. La maggior parte delle persone ‘ non si preoccuperà delle piccole quantità di EMI e ondulazione VCC create dallazionamento di un LED con PWM.

Risposta

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.

Commenti

  • Non per i LED, può essere usato per i pulsanti ma per i LED cè un pericolo di interrompere loutput
  • se non è sicuro perché lo dicono i documenti ufficiali? (Anche io ‘ ho provato me stesso e ha funzionato come descritto.)
  • Leggi fino a OUTPUT, menziona che ha bisogno di una resistenza in serie: ” Questa è una corrente sufficiente per accendere intensamente un LED (non ‘ t dimenticare la resistenza in serie) o azionare molti sensori, ad esempio, ma non una corrente sufficiente per far funzionare la maggior parte dei relè, dei solenoidi o dei motori. ”
  • @MenelaosVergis è sicuro farlo quando il pin è in modalità INPUT_PULLUP, non è sicuro farlo con un pin in modalità OUTPUT. Questo è chiaro nei documenti se leggi entrambe le sezioni (e dallestratto citato in questa risposta).

Risposta

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, poiché la tensione diretta del LED è piuttosto alta, vedere 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, lalimentazione 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.

Rispondi

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 scenderà di 4 V. Utilizzando una resistenza da 220 ohm si otterrà una corrente di (I = V / R) di 18 mA e una potenza dissipazione (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 la resistenza e ridurre la sua vita operativa. Quindi è necessario passare a un resistore 0402 con classificazione 1 / 10W o un resistore 0603 più grande.

Ogni volta che si eseguono calcoli come questi, aggiungerli allo schema, in modo che il revisore può ricontrollare facilmente il tuo lavoro.

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

Answer

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 si può fare. Lo sto facendo davvero.

Usando PWM dallhardware: ecco un esempio :

#include <avr/io.h> #include <util/delay.h> void pwm_init() { // initialize TCCR0 as per requirement, say as follows TCCR0 |= (1<<WGM00)|(1<<COM01)|(1<<WGM01)|(1<<CS00); // make sure to make OC0 pin (pin PB3 for atmega32) as output pin DDRB |= (1<<PB3); } void main() { uint8_t duty; duty = 1; // duty cycle = 0.39% of the time (depends on the oscillator.) // initialize timer in PWM mode pwm_init(); // run forever while(1) { OCR0 = duty; } } 

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

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

PRO: Non cè bisogno di un resistore. Un po di energia risparmio anche (~ 50%)

CONTRO: Non so se il componente è stressato e se la sua durata è ridotta.

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

Commenti

  • Questo non ‘ sembra una buona idea. ‘ probabilmente stai prelevando più corrente dal controller di quella per cui ‘ è classificata, anche se ‘ non lo fai da molto tempo.
  • Come detto questo non è documentato. LIO di uscita di Arduino UNO può guidare intorno a 40mA-50mA. Questo è costante. Posso sicuramente gestire impulsi molto brevi con più corrente. Dai unocchiata a wikipedia .
  • Nellambiente Arduino, è possibile ottenere PWM più facilmente con analogWrite() sul pin corrispondente. non sono sicuro che sia una buona idea, ma almeno per i LED IR, è ‘ comune per le schede tecniche consentire correnti di picco notevolmente più elevate per cicli di lavoro inferiori al 100% .
  • Sono ‘ sono abbastanza sicuro che il risparmio energetico sarà negativo rispetto a una soluzione basata su resistore, perché lefficienza dei LED diminuisce allaumentare 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 ha dimostrato unindagine, 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 …

Lascia un commento

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