Trenger jeg virkelig motstander når jeg styrer lysdioder med Arduino?

Jeg prøver bare ut Arduino Uno for første gang med 2 blinkende lysdioder på et brødbrett. Alle opplæringene på Internett ser ut til å bruke en motstand. Jeg kjenner funksjonen til motstander, men spiller det noen rolle her? Disse lysdiodene fungerer fint uten motstand.

Kommentarer

  • Det avhenger hvis du vil at lysdioden din skal smelte eller ikke. Hvis du ikke har det ‘, må du utelate motstanden. :-).

Svar

Frekt! :-). Hvis de sier å bruke en motstand der, er det en god grunn til det! Slå den av, NÅ!

Motstanden er der for å begrense lysdioden. du utelater den, den nåværende begrensningen må komme fra Arduinos utgang, og den vil ikke like den. Hvordan finner du ut hva motstanden må være? Du kjenner Ohms lov? Hvis du ikke vet det, skriv det ned med store bokstaver:

\ $ V = I \ cdot R \ $

Spenning tilsvarer strømtider motstand . Eller du kan si

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

Det er det samme. Spenningen du kjenner: Arduino går på 5V. Men ikke alt som vil gå over motstanden. LED-en har også et spenningsfall, typisk rundt 2V for en rød LED. Så det gjenstår 3V for motstanden. En typisk indikator-LED vil ha en nominell strøm på 20mA, da

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

Arduino Uno bruker ATmega328 mikrokontroller. Dataarket sier at strømmen for en hvilken som helst I / O-pin ikke skal overstige 40 mA, det som vanligvis kalles Absolute Maximum Ratings. Siden du ikke har noe å begrense strømmen, er det bare de (lave !) motstand fra utgangstransistoren. Strømmen kan så godt være høyere enn 40 mA, og mikrokontrolleren din vil lide skade.

rediger
Grafen nedenfor fra ATmegas datablad viser hva som vil skje hvis du kjører lysdioden uten strømbegrensende motstand:

skriv inn bildebeskrivelse her

Uten belastning er utgangsspenningen 5V som forventet. Men jo høyere strømmen blir trukket, jo lavere vil utgangsspenningen være, den vil falle ca 100mV for hver ekstra 4mA belastning. Det er en intern motstand på 25 \ $ \ Omega \ $. Deretter

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

Grafen går ikke så langt, motstanden vil øke med temperaturen, men strømmen vil forbli veldig høy. Husk at databladet ga 40 mA som absolutt maksimal vurdering. Du har tre ganger så mye. Dette vil definitivt skade I / O-porten hvis du gjør dette i lang tid. Og sannsynligvis også LED. En 20mA indikator-LED vil ofte ha 30mA som absolutt maksimal vurdering.

Kommentarer

  • Egentlig ikke. 3 og du vil ikke få ‘ noe lys, fordi 3 x 2V > 5V, og 2 du ‘ Jeg har det samme problemet, bare 1V faller i stedet for 3V. Jeg la til i svaret mitt for å slå det av nå!
  • Jeg mistet tellingen på hvor mange ganger jeg har skrevet den beregningen i svar her. Jeg burde ha et skript for det 🙂
  • Lysdioder er designet for å betjenes med en viss maksimal strøm. Spenning som driver dem betyr at strømmen er ukontrollert. Portene er laget for å gi en viss maksimal strøm. Kortslutning eller overbelastning av dem KAN snurre til å ødelegge eller ødelegge IC eller bare forårsake subtile driftsproblemer. Eller ikke.
  • @ JohnR.Strohm Jeg vil ikke ‘ t kaller det en industristandard.
  • @ JohnR.Strohm – Som m. Alin sier at ‘ ikke er en industristandard. Digikey lister 10mA nominelle lysdioder fra 0,4mcd til 1000 mcd, og 20mA LED fra 0,1 mcd til 54000 mcd. Det er ‘ ingen linje i den, og ingen garanti for at 10mA LED-en din vil være god synlig. Rød LED-spenning

varierer fra 1,8V til 2,2V. For en rød LED er 1.6V eksepsjonelt lav.

Svar

40 tomt,

Jeg må si at å kjøre en LED uten motstand IKKE ANBEFALES med mindre du vet hva du gjør. Men hvis du forstår hvordan en LED oppfører seg, kan du kjøre den uten motstand trygt. Faktisk er det ofte bedre å kjøre en LED uten strømbegrensende motstand.

Hvorfor vil du kjøre en LED uten motstand? Enkelt, for å gjøre kretsen din mer energieffektiv.

Skal du kjøre LED-en din med PWM satt til en konstant driftssyklus (dvs. 5V PWM ved 34% drift syklus for å oppnå en gjennomsnittlig spenning på 1,7V)?

Ja og nei. Å bruke PWM kan fungere like bra som å bruke en bestemt spenning (hvis du er forsiktig), men det er bedre måter. Ting du skal bekymre deg for når du tar PWM-tilnærmingen.

  1. Hyppigheten av PWM er viktig.Når du bruker PWM i dette scenariet, stoler du på evnen til kretsens komponenter til midlertidig å håndtere høye strømmer. De største bekymringene dine vil være hvordan LED-en håndterer en midlertidig høy strøm og hvordan utgangskretsen til brikken din kan håndtere en midlertidig høy strøm. Hvis denne informasjonen ikke er spesifisert i databladet, var databladforfatterne lat. MEN !!! Hvis denne informasjonen er spesifisert på databladet, kan du trygt dra nytte av den. For eksempel, LED-lampen jeg har neste for meg har den maksimale strømverdien 40mA. Den har imidlertid også en » Fremoverstrøm » på 200mA, med en merknad at strømmen ikke kan forbli på 200mA lenger enn 10us. Såååå … Jeg kan kjøre lysdioden med 1,7V (lysdiodene typisk fremover spenning fra databladet). Med en driftssyklus på 34% og en strømforsyning på 5V (34 % av 5V = 1,7V) vil produsere en gjennomsnittlig spenning på 1,7V, jeg må bare sørge for at PWM-en min i tide er 10us eller mindre. n-tid vil strømmen gjennom lysdioden sannsynligvis øke til rundt 58mA (58mA = typisk strømforbruk ved 1,7V av dioden min delt på 34%). 58mA overstiger min lysdioder med jevn strøm maksimum på 40mA med 18 mA. Til slutt … Jeg trenger en PWM-frekvens på 33,3 kHz eller mer for å kjøre min LED på en sikker måte (33,3 kHz = den inverse av [10us ON-tiden delt på 34% for å få PWM-perioden]). I REALITY kunne jeg trygt bruke PWM til å drive lysdioden min med en lavere PWM-frekvens. Årsaken er denne: Dataark spesifiserer vanligvis ikke alle gyldige driftsscenarier for en komponent. De spesifiserer ikke disse scenariene fordi leverandøren ikke vil investere tid i å spesifisere og støtte bruken av komponenten til hjørnebruk. Hvis jeg for eksempel med LED-en min kan betjene LED-en på 40 mA for alltid (40 mA er den jevne strømverdien) og jeg kan bruke LED-en på 200 mA i 10 us. Deretter kan jeg være 99,99999% sikker på at jeg kan bruk LED-lampen trygt på 100mA i en periode som er lengre enn 10us, sannsynligvis nær 20us.

MERK: Alle komponenter kan trygt håndtere midlertidige strømspisser over deres maksimale klassifisering så lenge varigheten av nåværende pigger er LITEN GENNEM . Noen komponenter vil være mer tilgivende enn andre, og hvis du er heldig, vil komponenten «s dataarket vil spesifisere hvor godt det kan håndtere toppene med strøm.

  1. Spenningen til PWM er viktig. Jeg vil demonstrere poenget mitt med eksempel i stedet for via forklaring. Hvis vi bruker LED-lampen jeg refererte til tidligere, vet vi at 34% driftssyklus, ved 33,3 kHz, ved 5 V er trygg. Hvis spenningen vår var 12 V, må bearbeide beregningene våre for å holde den samme mengden strøm som strømmer gjennom LED-en. Driftssyklusen vår vil trenge å falle til 14,167% (1,7 V delt på 12 V) og vår minimum PWM-frekvens vil reduseres til 14,285 kHz (den omvendte av [ 10us delt på 14,167%]). MEN! , dette er grunn til bekymring. I 5V-scenariet bruker vi 5V for 10us og i 12V-scenariet bruker vi 12V i 10us. Vi mer enn doblet spenningen i løpet av de 10usene, det må være noen konsekvenser. Og ja, det er! LED-databladet mitt gir meg ikke de dataene som er nødvendige for å vite hvor høyt av en spenning jeg kan bruke i 10us før jeg skader LED-lampen min. Sikkert 1000V i 10us vil steke LED-lampen min. Men hvordan vet jeg om 5V ved 10us vil steke LED-en min? eller 12V i 10US? Hvis det ikke er spesifikasjon for det, tar du en risiko. Så … 5V for 10us er risikabelt, men mest sannsynlig trygt.

MERK: Du kan legge til en kondensator i kretsen for å gjennomsnittlig utgjøre PWM og få dette problemet til å forsvinne.

  1. Du må være klar over funksjonene til utgangsstiften du også har koblet til LED-en. Den viktigste parameteren er maksimal utgangsstrøm. For Arduino Uno tror jeg det er 40mA. Du bør velge en PWM-driftssyklus hvis gjennomsnittsspenning holder strømmen gjennom LED under 40 mA. For å vite hvilke spenninger som vil produsere så mye strøm, må du se på LEDs IV-kurven (strøm vs. spenningsdiagram). For en typisk LED vil en spenning mellom 0,7V (typisk minimumsspenning som trengs for å avgi lys fra LED) og 1,25V nesten helt sikkert være trygg. Hvorfor er sannsynligvis 1.25V trygt? De fleste lysdioder vil ikke overstige 40 mA ved 1,25 V, selv uten strømbegrensende motstand. En annen ting som hjelper til med å beskytte noen i tilfelle de bruker for mye spenning, er at den digitale utgangskretsen til Arduino vil ha sin egen utgangsimpedans, at utgangsimpedansen vil være lav, men til og med en 20 ohm utgangsimpedans vil gi en ubetydelig beskyttelse. Arduino uno har en digital utgangsimpedans på rundt 250 ohm. Lang historie kort, hvis du kjørte en LED ved bruk av PWM ved 1.0V med en høy frekvens, for en typisk LED, er det ingen sjanse for at du vil skade den digitale utgangen på en Arduino Uno.

  2. PWM-tilnærmingen driver LED-en på en åpen sløyfemåte (og det gjør også bruk av 1.7V strømforsyning uten PWM). Du bruker en gjennomsnittlig spenning på LED-en som er akkurat den riktige verdien for å slå på LED-lampen, men ikke høy nok til å skade lysdioden. Dessverre er spenningsområdet fra PÅ (og lyst nok til å se) til skadet LED veldig lite (Det området på LED-en min er omtrent 0,7V). Det er forskjellige grunner til at 1.7V du tror du bruker ikke alltid vil være 1.7V …

a. Endringer i omgivelsestemp. Hva om du hadde en motordriver, spenningsregulator osv. i en lukket boks som også inneholdt LED. Det ville ikke være uvanlig at de andre komponentene hevet omgivelsestemperaturen inne i kabinettet fra 25C til 50C. Denne økningen i temperatur VIL endre oppførselen til LED-en, spenningsregulatoren osv. Din en gang sikre 1.7V vil ikke lenger være 1,7V, og LED-en din som pleide å steke ved 2,5V vil nå steke ved 2,2V.

b. Endringer i forsyningsspenningen. Hva om forsyningen din var et batteri. Når batteriet tappes, synker spenningen betydelig. Hva om du designet kretsen din til å fungere bra med et litt brukt 9V batteri, men så la du til et nytt 9V batteri. Splitter nye 9V blybatterier har vanligvis en faktisk spenning på 9,5V. Avhengig av kretsen som leverer 5V som brukes til PWM, kan ytterligere 0,5V øke 5V PWM til 5,3V. Hva om du brukte et oppladbart batteri? De har et enda større spenningsområde gjennom hele utladningssyklusen.

c. Det er andre scenarier, som indusert strøm fra EMI (motorer vil gjøre dette).

Å ha en strømbegrensende motstand sparer deg for mange av disse problemene.

Å bruke PWM til å kjøre en LED er ikke en veldig god løsning. Er det en bedre måte som ikke krever en strømbegrensende motstand?

Ja! Gjør det de gjør i LED-lyspærer til hjemmet ditt. Kjør LED-en med en strømkontroll. Still inn den nåværende kontrolleren til å kjøre strømmen din LED er rangert for.

Med riktig strømkontroll , kan økes dramatisk, og du kan trygt kjøre LED-lampen uten å bekymre deg for de fleste av problemene som er involvert i å kjøre en LED med åpen sløyfe.

Ulempen: Du trenger en strømkontroll, og du har økt kretsens kompleksitet med 10 ganger. Ikke bli motløs skjønt. Du kan kjøpe IC-er for nåværende kontroller, IC-er for LED-drivere, eller lage din egen strømstyrte boost-omformer. Det er ikke så vanskelig. Ta deg litt tid på den travle timeplanen din og lær om boost- og buck-omformere. Lær om å bytte strømforsyning. Det er det som driver datamaskinen din, og de er ekstremt energieffektive. Bygg deretter en fra bunnen av, eller kjøp en billig IC for å gjøre det meste av jobben for deg.

Selvfølgelig, som med alle elektroniske design, er det alltid flere ting du kan gjøre for å gjøre kretsen bedre. Sjekk figur 3 i følger PDF for å se hvor kompleks selv en husholdnings-LED-lyspære kan være i disse dager …

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

Oppsummert: Du må selv bestemme hvor stor risiko du er villig til å ta med kretsen din. Bruk av 5V PWM til å kjøre LED-en din vil sannsynligvis fungere fint (spesielt hvis du legger til en kondensator for å glatte ut PWM-firkantbølgen og maksimere PWM-frekvensen). Ikke vær for redd for å skyve elektronikken din utenfor av deres vanlige op opprettholde forhold, bare bli informert når du gjør det, kjenn risikoen du tar.

Kos deg!

FYI: Jeg er overrasket over hvor mange som umiddelbart hopper til svaret, » DU MÅ BRUKE EN AKTUELL BEGRENSNINGSMOTSTAND «. Det er velmenende, men altfor trygge råd.

Ort

Kommentarer

  • I ‘ Jeg er overrasket over å se hvor mange som anså dette svaret som verdifulle designråd. Å kjøre en LED uten strømbegrensning ved bruk av PWM er like ille for LED som hva OP gjør, pluss at det vil generere EMI og VCC krusning som crasy.
  • @DmitryGrigoryev, jeg innså at jeg ikke klarte å adressere den maksimale utgangsstrømmen til den digitale utgangen. Jeg la til en ny kule for å dekke det. PWM tillater noen å trygt kjøre en LED uten strømbegrensende motstand. EMI og VCC ripple opprettes når du kjører laster med et digitalt signal, men dette er vanlig (f.eks. H Bridge, Boost Converter, Hobby Servo Control, etc.) og er neppe en grunn til å unngå PWM. Rimelige løsninger finnes for å håndtere EMI- og VCC-rippel om nødvendig. De fleste mennesker vil ikke ‘ bryr seg om de små mengdene EMI- og VCC-krusninger som oppstår ved å kjøre en LED med PWM.

Svar

Du kan bruke de innebygde pullup-motstandene som foreslått her :

Opptrekksmotstandene gir nok strøm til å svake en LED som er koblet til en stift som er konfigurert som inngang.

Kommentarer

  • Ikke for lysdioder, dette kan brukes til knapper, men for lysdioder er det en fare for å bryte produksjonen
  • hvis det ikke er trygt hvorfor de offisielle dokumentene sier det? (Jeg ‘ har også prøvd meg selv og det fungerte som beskrevet.)
  • Vennligst les ned til OUTPUT, det nevner at den trenger en seriemotstand: » Dette er nok strøm til å lyse opp en LED (ikke ‘ t glem seriemotstanden) , eller kjør for eksempel mange sensorer, men ikke nok strøm til å kjøre de fleste reléer, solenoider eller motorer. »
  • @MenelaosVergis det er trygt å gjøre dette når pinnen i INPUT_PULLUP-modus, det er ikke trygt å gjøre med en pinne i OUTPUT-modus. Dette er tydelig i dokumentene hvis du leser begge delene (og fra det siterte utdraget i dette svaret).

Svar

Det korte svaret er, ja og nei, det kommer an på arduinoen din, og det avhenger av fargen på LED-en. For eksempel krever et 3.3V-kort ikke en motstand i serie med en liten grønn LED, fordi LED-spenningen fremover er ganske høy, se dette . Den interne motstanden er rundt 25 Ohm, ta (3.3 – 3) / 25 = 12mA, så dette er fortsatt greit, du bør ikke gå over den maksimale strømmen per pin som er 40mA for 328p atmel-prosessoren som brukes på UNO-kortene (med mindre du bruker et derivat av 328p der det kan være en annen historie). For en arduino som kjører på 5V vil det imidlertid oppstå problemer med en infrarød LED som har en mye lavere fremoverspenning, typisk 1,2V, (5-1,2) / 25 = 150mA, og dette er definitivt for mye, så bruk en strømbegrenser slik som en motstand for å kjøre den typen lysdioder. Pin 13 på Arduino-kortene (eller en annen pin på varianter) har allerede en ledning og en motstand i serie. Strømforsyningen til brettet har også en maksimal vurdering, vanligvis 200mA, og du må holde deg under dette nivået, og du kan ikke tegne mer enn en viss mengde mA per gruppe pinner, dette forklares her . Hvis du vil kjøre mange lysdioder, bør du vurdere å bruke en matrise-LED-driver som gjør multipleksing for deg, se for eksempel mitt youtube-område der jeg demonstrerer MAX7219CNG-driveren. Men også Arduino Uno «kan gjøre multipleksing for deg, se IR-termometeret mitt med 4 syv segment-lysdioder på youtube. Happy hacking.

Svar

Svaret fra stevenvh forklarer hva du trenger å gjøre, men du må også beregne effektspredningen over lysdioden slik at du ikke brenner ut spenningsfallsmotstanden. Hvis for eksempel forsyningsspenningen er 5V og motstandens fremoverspenning er 1.0V, vil du slippe 4V. Ved å bruke en 220 ohm motstand vil det resultere i en strøm på (I = V / R) på 18mA og en effekt spredning (P = IV) på 72mW.

0402 Motstand i imperial størrelse (1005 metrisk) er generelt 1 / 16W, som er 62,5mW. Så i dette tilfellet vil dette ikke fungere; det vil overopphetes motstanden og forkorte levetiden. Så du må bytte til en 0402-motstand med 1 / 10W-klassifisering, eller en større 0603-motstand.

Når du gjør beregninger som disse, legg dem til skjematisk, slik at korrekturleseren kan enkelt dobbeltsjekke arbeidet ditt.

Merk at fremoverspenning (og dermed motstandsverdi) er en funksjon av LED-en, og forskjellige farger på LED-er vil ha forskjellige verdier. Spesielt blå LED-lys har en høy fremoverspenning (~ 3.0V typ). Så hvis du prøver å få fire forskjellige lysdioder til å ha samme lysstyrke, må du gjenta beregningene for hver LED. For å virkelig gjøre det riktig, se på de optiske egenskapene til hver LED ved nominell strøm, og juster deretter.

Svar

JA! Det kan gjøres.

Selv om det som er sagt er riktig …. det er en annen måte. En mer energieffektiv måte å kjøre lysdioder med 5v på.

Dette er litt papirløst og det er ukjent om løsningen vil slites av lysdiodene, men det kan gjøres. Jeg gjør det faktisk.

Bruker PWM av maskinvare: Her er en eksempel :

#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 kan også simuleres ved hjelp av programvare og avrs timere. Du kan finne et eksempel inne i lufa-biblioteket, kalt LEDNotifier.c.

Min konklusjon: Det er mulig å kjøre en ledning på 5V.

PROS: Ingen behov for en motstand. Litt energi sparer også (~ 50%)

CONS: Jeg vet ikke om komponenten er stresset og om dens levetidsreduksjon.

Det er en fyr som også gjorde dette eksperimentet på Stanford og la ut litt info på siden hans .

Kommentarer

  • Dette virker bare ikke ‘ som en god idé. Du ‘ henter sannsynligvis mer strøm fra kontrolleren enn den ‘ er vurdert for, selv om du ‘ ikke gjør det veldig lenge.
  • Som sagt er dette ukomponentert. Arduino UNO-utgang IO kan kjøre rundt 40ma-50ma. Det er konstant. Jeg kan helt sikkert håndtere veldig korte pulser med mer strøm. Ta en titt på wikipedia .
  • I Arduino-miljøet kan man få PWM lettere med analogWrite() på tilsvarende pin. Fortsatt ikke sikker på at dette er en god idé, men i det minste for IR-lysdioder er det ‘ vanlig at databladene tillater betydelig høyere toppstrømmer for driftssykluser mindre enn 100% .
  • Jeg ‘ er ganske sikker på at energibesparelser vil være negative sammenlignet med en motstandsbasert løsning, fordi LED-effektiviteten blir lavere når strømmen øker.
  • @ScottSeidman Hvorfor er ikke ‘ det en god idé? bare fordi de fleste tror det ikke anbefales å bruke en LED uten motstand? dette svaret beviste etterforskning, en veldig respektfull kilde som Stanford University, og fra det jeg kan eksperimentere, fungerer det. Jeg elsker definitivt nedstemte innlegg fordi de forteller at de som stemte ned bare er partiske. For et paradoks …

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *