Încerc doar Arduino Uno pentru prima dată cu 2 LED-uri care clipesc pe o placă de calcul. Toate tutorialele de pe Internet par să folosească un rezistor. Știu funcția rezistențelor, dar chiar contează aici? Aceste LED-uri funcționează foarte bine fără rezistență.
Comentarii
- Asta depinde dacă doriți ca LED-ul dvs. să se topească sau nu. Dacă nu aveți ‘ t minte, omiteți rezistorul. :-).
Răspuns
Obraznic! :-). Dacă spun că se folosește un rezistor acolo „este un motiv întemeiat! Opriți-l, ACUM!
Rezistorul este acolo pentru a limita curentul LED-ului. Dacă îl omiteți, limitarea curentă trebuie să provină din ieșirea Arduino și nu-i va plăcea. Cum afli ce trebuie să fie rezistorul? Știți legea lui Ohm? Dacă nu o faceți, scrieți-o cu litere mari:
\ $ V = I \ cdot R \ $
Tensiunea este egală cu rezistența la curenți . Sau ai putea spune
\ $ R = \ dfrac {V} {I} \ $
Este același lucru. Tensiunea pe care o știi: Arduino funcționează la 5V. nu toate acestea vor trece peste rezistor. LED-ul are, de asemenea, o cădere de tensiune, de obicei în jur de 2V pentru un LED roșu. Deci rămâne 3V pentru rezistor. Un LED indicator tipic va avea un curent nominal de 20mA, apoi
\ $ R = \ dfrac {5V – 2V} {20mA} = 150 \ Omega \ $
edit
Următorul grafic din foaia tehnică a ATmega arată ce se va întâmpla dacă conduceți LED-ul fără rezistor de limitare a curentului:
Fără încărcare, tensiunea de ieșire este de 5V conform așteptărilor. Dar cu cât curentul este mai mare, cu atât va fi mai mică tensiunea de ieșire, va scădea aproximativ 100mV pentru fiecare încărcare suplimentară de 4mA. Aceasta este o rezistență internă de 25 \ $ \ Omega \ $. Apoi
\ $ I = \ dfrac {5V – 2V} {25 \ Omega} = 120mA \ $
Graficul nu merge atât de departe, rezistența va crește odată cu temperatura, dar curentul va rămâne foarte mare. Amintiți-vă că foaia de date a dat 40mA ca Rating maxim absolut. Ai de trei ori asta. Acest lucru va cu siguranță deteriora portul I / O dacă faceți acest lucru pentru o lungă perioadă de timp. Și probabil și LED-ul. Un LED indicator de 20 mA va avea adesea 30 mA ca valoare maximă absolută.
Comentarii
- Nu chiar. 3 și ați câștigat ‘ să nu primiți lumină, deoarece 3 x 2V > 5V și 2 ‘ Voi avea aceeași problemă, doar 1V scădere în loc de 3V. Am adăugat la răspunsul meu pentru a-l opri acum!
- Am pierdut numărul de câte ori am scris calculul în răspunsuri aici. Ar trebui să am un script pentru acesta 🙂
- LED-urile sunt proiectate pentru a fi acționate la un anumit curent maxim. Tensiunea care le conduce înseamnă că curentul este necontrolat. Porturile sunt realizate pentru a asigura un anumit curent maxim. Scurtcircuitul sau supraîncărcarea lor se poate lăsa la fixarea sau distrugerea întregului CI sau poate cauza probleme subtile de funcționare. Sau nu.
- @ JohnR.Strohm Nu l-aș numi ‘ standard industrial.
- @ JohnR.Strohm – Ca m. Alin spune că ‘ nu este un standard industrial. Digikey listează LED-uri nominale de 10 mA variind de la 0,4 mcd la 1000 mcd și LED-uri de 20 mA variind de la 0,1 mcd la 54000 mcd. ‘ nu are nicio linie și nici o garanție că LED-ul de 10 mA va fi vizibil. Tensiunea LED-ului roșu de obicei variază de la 1,8V la 2,2V. Pentru un LED roșu 1,6V este extrem de scăzut.
Răspuns
40plot,
Trebuie să spun că conducerea unui LED fără rezistență NU ESTE RECOMANDATĂ decât dacă știi ce faci. Cu toate acestea, dacă înțelegeți cum se comportă un LED, îl puteți conduce fără rezistență în siguranță. De fapt, conducerea unui LED fără rezistor de limitare a curentului este adesea mai bună.
De ce ați conduce un LED fără rezistor? Simplu, pentru a vă face circuitul mai eficient din punct de vedere energetic.
În cazul în care vă conduceți LED-ul cu PWM setat la un ciclu de funcționare constant (adică 5V PWM la o sarcină de 34%) ciclu pentru a atinge o tensiune medie de 1,7V)?
Da și nu. Utilizarea PWM poate funcționa la fel de bine ca aplicarea unei tensiuni specifice (dacă sunteți atent), dar există modalități mai bune. Lucruri de care trebuie să vă faceți griji atunci când luați abordarea PWM.
- Frecvența PWM este importantă.Când utilizați PWM în acest scenariu, vă bazați pe capacitatea componentelor circuitului dvs. de a gestiona temporar curenți mari. Preocupările dvs. cele mai mari vor fi modul în care LED-ul gestionează un curent temporar ridicat și modul în care circuitul de ieșire al cipului dvs. poate gestiona temporar curent mare. Dacă aceste informații nu sunt specificate în foaia de date, atunci autorii foii de date au fost leneși. DAR !!! Dacă aceste informații sunt specificate în foaia de date, atunci puteți profita în siguranță de ele. De exemplu, LED-ul pe care îl am în continuare pentru mine are un curent maxim de 40 mA. Cu toate acestea, are și un ” curent de vârf înainte ” de 200 mA, cu o notă că curentul nu poate rămâne la 200mA mai mult de 10us. Soooo … Pot conduce LED-ul cu 1.7V (LED-urile tipice de tensiune înainte din foaia tehnică). Cu un ciclu de funcționare de 34% și o sursă de alimentare de 5V (34 % de 5V = 1,7V) va produce o tensiune medie de 1,7V, trebuie doar să mă asigur că PWM la timp este de 10us sau mai puțin. n-timp, curentul prin LED va crește probabil la aproximativ 58mA (58mA = curentul tipic de curent la 1,7V din dioda mea împărțit la 34%). 58mA depășesc LED-urile mele curent constant maxim de 40mA cu 18 mA. În sfârșit … aș avea nevoie de o frecvență PWM de 33,3 kHz sau mai mare pentru a-mi conduce LED-ul în siguranță (33,3 kHz = inversul timpului [10us ON împărțit la 34% pentru a obține perioada PWM]). În REALITATE, aș putea folosi în siguranță PWM pentru a-mi alimenta LED-ul cu o frecvență PWM mai lentă. Motivul este următorul: Fișele tehnice nu specifică de obicei toate scenariile de operare valide ale unei componente. Nu specifică aceste scenarii, deoarece furnizorul nu vrea să investească timp în specificarea și susținerea utilizării componentei lor pentru utilizarea în colț De exemplu, cu LED-ul meu, dacă pot folosi LED-ul la 40mA pentru totdeauna (40mA este curentul maxim constant) și pot folosi LED-ul la 200mA pentru 10us. Apoi, pot fi sigur 99,99999% că pot operați în siguranță LED-ul la 100mA pentru o perioadă mai lungă de 10us, probabil aproape de 20us.
NOTĂ: Toate componentele pot gestiona în siguranță vârfuri de curent temporare peste valorile maxime ale acestora, atâta timp cât durata vârfurile actuale sunt SUFICIENT MIC . Unele componente vor fi mai iertătoare decât altele și, dacă aveți noroc, componentele foaia tehnică va specifica cât de bine poate gestiona vârfuri de curent.
- Tensiunea PWM este importantă. Voi demonstra punctul meu de vedere în loc de explicații. Dacă folosim LED-ul la care mă refeream mai devreme, știm că 34% ciclu de funcționare, la 33,3 kHz, la 5 V este sigur. Cu toate acestea, dacă tensiunea noastră era de 12 V, ar trebui să refacem calculele noastre pentru a menține aceeași cantitate de curent care curge prin LED. Ciclul nostru de lucru ar trebui să scadă la 14,167% (1,7 V împărțit la 12 V) și frecvența noastră minimă PWM ar scădea la 14,285kHz (inversul [ 10us împărțit la 14,167%]). Oricum! , acesta este un motiv de îngrijorare. În scenariul de 5V aplicăm 5V pentru 10us și în scenariul de 12V aplicăm 12V pentru 10us. Am mai mult decât dublat tensiunea în timpul acelui 10us, trebuie să existe unele consecințe. Și da, există! Fișa mea cu date LED nu-mi oferă datele necesare pentru a ști cât de mare este de o tensiune pe care o pot folosi pentru 10us înainte de a-mi deteriora LED-ul. Sigur, 1000V pentru 10us îmi vor prăji LED-ul. Dar, de unde să știu dacă 5V la 10us îmi va prăji LED-ul? sau 12V pentru 10us? Dacă nu există o specificație pentru aceasta, atunci vă asumați un risc. Deci … 5V pentru 10us este riscant, dar cel mai probabil sigur.
NOTĂ: Puteți adăuga un condensator la circuit pentru a obține media PWM și a face ca această problemă să dispară.
-
Trebuie să fiți conștienți de capacitățile pinului de ieșire pe care v-ați conectat și LED-ul. Cel mai important parametru va fi curentul maxim de ieșire. Pentru Arduino Uno, cred că este de 40mA. Ar trebui să alegeți un ciclu de funcționare PWM a cărui tensiune medie menține curentul care trece prin LED sub 40mA. Pentru a ști ce tensiuni vor produce atât de mult curent, trebuie să vă uitați la curba LED-urilor IV (curent vs. grafic de tensiune). Pentru un LED tipic, o tensiune între 0,7V (tensiunea minimă tipică necesară pentru a emite lumină de la LED) și 1,25V va fi aproape sigură. De ce este probabil 1.25V sigur? Ei bine, majoritatea LED-urilor nu vor depăși 40mA la 1,25V, chiar și fără un rezistor de limitare a curentului. Un alt lucru care ajută la protejarea cuiva în cazul în care aplică prea multă tensiune, este că circuitul digital de ieșire al Arduino va avea propria sa impedanță de ieșire, acea impedanță de ieșire va fi scăzută, dar chiar și o impedanță de ieșire de 20 ohmi ar oferi o cantitate de protecție deloc neglijabilă. Arduino uno are o impedanță de ieșire digitală în jur de 250 ohmi. Pe scurt, dacă ați condus un LED folosind PWM la 1.0V la o frecvență ridicată, pentru un LED tipic, există șanse zero să vă deteriorați ieșirea digitală pe un Arduino Uno.
-
Abordarea PWM conduce LED-ul într-o buclă deschisă (și la fel se folosește 1.Alimentare de 7V fără PWM). Aplicați o tensiune medie la LED care este doar valoarea corectă pentru a porni LED-ul, dar nu suficient de mare pentru a se deteriora LED-ul. Din păcate, intervalul de tensiune de la ON (și suficient de luminos pentru a vedea) până la LED-ul deteriorat este foarte mic (Acea gamă a LED-ului meu este de aproximativ 0,7V). Există diverse motive pentru care 1,7V pe care crezi că îl aplici nu vor fi întotdeauna 1,7V …
a. Modificări ale temperaturii ambientale. Ce se întâmplă dacă ai avea un driver de motor, regulator de tensiune etc. într-o cutie închisă care conținea și LED-ul. Nu ar fi neobișnuit ca acele alte componente să ridice temperatura ambiantă din interiorul carcasei de la 25C la 50C. Această creștere a temperaturii VA schimba comportamentul LED-ului, regulatorului de tensiune etc. să nu mai fie 1,7 V, iar LED-ul dvs. care se prăjea la 2,5 V se va prăji acum la 2,2 V.
b. Modificări ale tensiunii de alimentare. Ce se întâmplă dacă alimentarea dvs. a fost o baterie. Pe măsură ce bateria se descarcă, tensiunea scade considerabil. Ce se întâmplă dacă ați proiectat circuitul dvs. pentru a funcționa bine cu o baterie de 9V ușor utilizată, dar apoi ați adăugat o baterie nouă de 9V. Bateriile plumb-acide noi de 9V au de obicei o tensiune reală de 9,5V. În funcție de circuitul care furnizează 5V utilizat pentru PWM, 0,5V suplimentar ar putea crește PWM-ul de 5V la 5,3V. Ce se întâmplă dacă utilizați o baterie reîncărcabilă? Au o gamă și mai mare de tensiuni pe parcursul întregului ciclu de descărcare.
c. Există și alte scenarii, cum ar fi curentul indus de EMI (motoarele vor face acest lucru).
Având un rezistor de limitare a curentului vă scutește de multe dintre aceste probleme.
Utilizarea PWM pentru a conduce un LED nu este o soluție foarte bună, există o modalitate mai bună de a nu necesita un rezistor de limitare a curentului?
Da! Faceți ceea ce fac în becurile cu LED-uri pentru casa dvs. Conduceți LED-ul cu un controler de curent. Setați controlerul de curent să conducă curentul pentru care LED-ul dvs. este evaluat.
Cu controlerul de curent adecvat , poate fi crescut dramatic și puteți conduce LED-ul în condiții de siguranță, fără a vă face griji cu privire la majoritatea problemelor legate de conducerea în buclă deschisă a unui LED.
Dezavantajul: Aveți nevoie de un controler de curent și ați crescut complexitatea circuitului cu 10x. Totuși, nu vă descurajați. Puteți cumpăra circuite integrate de controler curent, circuite integrate cu driver LED sau puteți crea propriul convertor de control controlat de curent. Nu este atât de greu. Luați ceva timp din programul încărcat și aflați despre convertoarele boost și buck. Aflați despre comutarea surselor de alimentare. Acestea alimentează computerul și sunt extrem de eficiente din punct de vedere energetic. Apoi, fie construiți unul de la zero, sau cumpărați un IC ieftin pentru a face cea mai mare parte a lucrului pentru dvs.
Desigur, la fel ca în cazul tuturor proiectelor electronice, există întotdeauna mai multe lucruri pe care le puteți face pentru a vă îmbunătăți circuitul. Consultați figura 3 din urmând PDF pentru a vedea cât de complexă poate fi chiar o bec cu LED-uri de uz casnic în aceste zile …
În rezumat: Trebuie să decideți singur cât de mult risc sunteți dispus să luați cu circuitul dvs. Utilizarea PWM de 5V pentru a conduce LED-ul dvs. va funcționa probabil foarte bine (mai ales dacă adăugați un condensator pentru a netezi unda pătrată PWM și a maximiza frecvența PWM). Nu vă fie prea frică să vă împingeți electronica în exterior din op condiții de erare, doar, informați-vă când faceți acest lucru, cunoașteți riscurile pe care le asumați.
Bucurați-vă!
FYI: Sunt surprins de cât de mulți oameni trec imediat la răspuns, ” TREBUIE SĂ UTILIZAȚI UN REZISTOR LIMITANT CURENT „. Acesta este un sfat bine intenționat, dar prea sigur.
Ort
Comentarii
- I ‘ Sunt surprins să văd câți oameni au considerat acest răspuns drept sfaturi valoroase de proiectare. Conducerea unui LED fără limitarea curentului utilizând PWM este la fel de rău pentru LED-ul ca și ceea ce face OP, plus că va genera o creștere EMI și VCC, cum ar fi crasy.
- @DmitryGrigoryev, am realizat că nu am reușit complet să curentul maxim de ieșire al ieșirii digitale. Am adăugat un glonț nou pentru a acoperi asta. PWM permite cuiva să conducă în siguranță un LED fără rezistor de limitare a curentului. Ripple-urile EMI și VCC sunt create de fiecare dată când conduceți sarcini cu un semnal digital, dar acest lucru este obișnuit (de exemplu, H Bridge, Boost Converter, Hobby Servo Control etc.) și nu este un motiv pentru a evita PWM. Există soluții rezonabile pentru a gestiona ondularea EMI și VCC, dacă este necesar. Cei mai mulți oameni nu s-au preocupat ‘ de grija cantităților mici de EMI și VCC ripple create prin conducerea unui LED cu PWM.
Răspuns
Puteți utiliza rezistențele de pullup încorporate așa cum este sugerat aici :
Rezistențele pullup furnizează suficient curent pentru a aprinde slab un LED conectat la un pin care a fost configurat ca intrare.
Comentarii
- Nu pentru LED-uri, aceasta poate fi utilizată pentru butoane, dar pentru LED-uri există un pericol de rupere a rezultatului
- dacă nu este sigur de ce spun documentele oficiale? (Am ‘ de asemenea m-am încercat și am funcționat așa cum este descris.)
- Vă rugăm să citiți până la
OUTPUT
, menționează că are nevoie de un rezistor de serie: ” Acesta este suficient curent pentru a aprinde puternic un LED (nu ‘ nu uitați rezistorul de serie) , sau rulați mulți senzori, de exemplu, dar nu este suficient curent pentru a rula cele mai multe relee, solenoizi sau motoare. ” - @MenelaosVergis este sigur să faceți acest lucru atunci când pinul în modul INPUT_PULLUP, nu este sigur să faceți cu un pin în modul OUTPUT. Acest lucru este clar în documente dacă citiți ambele secțiuni (și din extrasul citat din acest răspuns).
Răspuns
Răspunsul scurt este, da și nu, depinde de arduino și depinde de culoarea ledului. De exemplu, o placă de 3,3V nu necesită un rezistor în serie cu un LED verde mic, deoarece tensiunea de plecare a LED-ului este destul de mare, consultați acest . Rezistența internă este în jur de 25 Ohm, luați (3,3 – 3) / 25 = 12mA, deci este încă bine, nu ar trebui să treceți curentul maxim pe pin, care este 40mA pentru procesorul 328p atmel utilizat pe plăcile UNO (cu excepția cazului în care folosiți un derivat al 328p unde ar putea fi o poveste diferită). Cu toate acestea, pentru un arduino care rulează la 5V, va apărea o problemă cu un LED cu infraroșu care are o tensiune înainte mult mai mică, de obicei 1,2V, (5-1,2) / 25 = 150mA, iar acest lucru este cu siguranță prea mare, deci utilizați un limitator de curent ca rezistor pentru a conduce acele tipuri de LED-uri. Pinul 13 de pe plăcile Arduino (sau un alt pin pe variante) are deja un led și un rezistor în serie. De asemenea, sursa de alimentare a plăcii are un rating maxim, de obicei 200mA, și trebuie să rămâneți sub acest nivel și nu puteți extrage mai mult de o anumită cantitate de mA per grup de pini, acest lucru este explicat aici . Dacă doriți să conduceți mai multe LED-uri, atunci luați în considerare utilizarea unui driver LED cu matrice care face multiplexarea pentru dvs., vedeți, de exemplu, zona mea de YouTube, unde demonstrez driverul MAX7219CNG. Dar, de asemenea, Arduino Uno poate face multiplexarea pentru dvs., vedeți termometrul meu IR cu 4 LED-uri cu șapte segmente pe YouTube. Fericire fericită.
Răspuns
Răspunsul de la stevenvh explică ce trebuie să faceți, dar trebuie, de asemenea, să calculați disiparea puterii pe LED, astfel încât să nu ardeți rezistorul de cădere de tensiune. De exemplu, dacă tensiunea de alimentare este de 5V și tensiunea frontală a rezistorului este de 1,0V, atunci veți scădea 4V. Utilizarea unui rezistor de 220 ohmi va avea ca rezultat un curent de (I = V / R) de 18mA și o putere disipare (P = IV) de 72mW.
0402 Rezistorul de dimensiuni imperiale (1005 metric) este în general de 1 / 16W, ceea ce înseamnă 62,5mW. Deci, în acest caz, acest lucru nu ar funcționa; scurtați durata de funcționare. Deci, ar trebui să treceți la un rezistor 0402 cu o rezistență de 1 / 10W sau un rezistor 0603 mai mare.
Ori de câte ori faceți astfel de calcule, adăugați-le la schemă, astfel încât examinatorul vă poate verifica cu ușurință munca.
Rețineți că tensiunea directă (și, prin urmare, valoarea rezistorului) este o funcție a LED-ului, iar culorile diferite ale LED-urilor vor avea valori diferite. o tensiune mare înainte (~ 3,0V tip). Deci, dacă încercați să obțineți patru LED-uri diferite pentru a avea aceeași luminozitate, va trebui să repetați calculele pentru fiecare LED. Pentru a face acest lucru cu adevărat corect, uitați-vă la caracteristicile optice ale fiecărui LED la curentul nominal și reglați în consecință.
Răspuns
DA! Poate fi realizat.
Chiar dacă ceea ce s-a spus este corect …. există un alt mod. Un mod mai eficient de a conduce LED-uri cu 5V.
Acesta este un pic nedocumentat și nu se știe dacă soluția se va stinge de LED-uri, dar se poate face. De fapt o fac.
Utilizarea PWM de către hardware: Iată un exemplu :
#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 poate fi, de asemenea, simulat folosind software-ul și temporizatoarele avrs. Puteți găsi un exemplu în biblioteca lufa, numit LEDNotifier.c
.
Concluzia mea: Este posibil să conduci un led pe 5V.
PROS: Nu este nevoie de un rezistor. O parte din energie economisind prea (~ 50%)
CONTRA: Nu știu dacă componenta este stresată și despre reducerea duratei de viață a acesteia.
Există un tip care a făcut acest experiment și la Stanford și a postat câteva informații pe site-ul său .
Comentarii
- Acest lucru nu pare ‘ nu pare o idee bună. Tu ‘ Probabil că obțineți mai mult curent de la controler decât ‘ evaluat, chiar dacă ‘ nu o faceți foarte mult timp.
- Așa cum am spus, acest lucru este necommentat. IO de ieșire Arduino UNO poate conduce în jur de 40ma-50ma. Acest lucru este constant. Cu siguranță pot gestiona impulsuri foarte scurte cu mai mult curent. 97bd059a29 „>
wikipedia .
analogWrite()
pe pinul corespunzător. Totuși nu sunt sigur că aceasta este o idee bună, dar cel puțin pentru LED-urile IR, ‘ este obișnuit ca foile de date să permită curenți de vârf considerabil mai mari pentru cicluri de funcționare mai mici de 100% .