Har jeg virkelig brug for modstande, når jeg styrer lysdioder med Arduino?

Jeg prøver bare Arduino Uno for første gang med 2 blinkende lysdioder på et brødbræt. Alle tutorials på Internettet ser ud til at bruge en modstand. Jeg kender modstandernes funktion, men betyder det virkelig noget her? Disse lysdioder fungerer fint uden en modstand.

Kommentarer

  • Det afhænger hvis du vil have din LED til at smelte eller ikke. Hvis du ikke har noget ‘, skal du udelade modstanden. :-).

Svar

Fræk! :-). Hvis de siger at bruge en modstand der, er en god grund til det! Sluk den, NU!

Modstanden er der for at begrænse LEDens strøm. Hvis du udelader det, den nuværende begrænsning skal komme fra Arduinos output, og det kan ikke lide det. Hvordan finder du ud af, hvad modstanden skal være? Du kender Ohms lov? Hvis du ikke gør det, skriv det med store bogstaver:

\ $ V = I \ cdot R \ $

Spænding svarer til strømtider modstand . Eller du kan sige

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

Det er den samme ting. Den spænding, du kender: Arduino kører ved 5V. Men ikke alt, der vil gå over modstanden. LEDen har også et spændingsfald, typisk omkring 2V for en rød LED. Så der er 3V for modstanden. En typisk indikator-LED vil have en nominel strøm på 20mA, derefter

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

Arduino Uno bruger ATmega328 mikrokontroller. Dataarket siger, at strømmen for enhver I / O-pin ikke skal overstige 40 mA, hvad der almindeligvis kaldes Absolutte maksimale klassificeringer. Da du ikke har noget til at begrænse strømmen, er der kun de (lave !) modstand af outputtransistoren. Strømmen kan så godt være højere end 40 mA, og din mikrokontroller vil lide skade.

rediger
Følgende graf fra ATmegas datablad viser, hvad der vil ske, hvis du kører LEDen uden strømbegrænsende modstand:

indtast billedbeskrivelse her

Uden belastning er udgangsspændingen 5V som forventet. Men jo højere strøm trækkes, jo lavere udgangsspænding vil være, vil den falde omkring 100 mV for hver ekstra 4 mA belastning. Det er en intern modstand på 25 \ $ \ Omega \ $. Derefter

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

Grafen går ikke så langt, modstanden stiger med temperaturen, men strømmen forbliver meget høj. Husk, at databladet gav 40 mA som absolut maksimal vurdering. Du har tre gange så meget. Dette vil bestemt beskadige I / O-porten, hvis du gør dette i lang tid. Og sandsynligvis også LED. En 20mA indikator-LED vil ofte have 30mA som absolut maksimal bedømmelse.

Kommentarer

  • Ikke rigtig. 3, og du får ‘ ikke noget lys, fordi 3 x 2V > 5V, og 2 du ‘ Jeg har det samme problem, kun 1V falder i stedet for 3V. Jeg tilføjede mit svar for at slå det fra nu!
  • Jeg mistede antallet af tider på, hvor mange gange jeg har skrevet denne beregning i svar her. Jeg skulle have et script til det 🙂
  • Lysdioder er designet til at blive betjent ved en bestemt maksimal strøm. Spænding, der driver dem, betyder at strømmen er ukontrolleret. Porte er lavet til at give en bestemt maksimal strøm. Kortslutning af dem eller overbelastning af dem KAN svinge til pin eller hel IC-ødelæggelse eller bare forårsage subtile driftsproblemer. Eller ikke.
  • @ JohnR.Strohm Jeg ville ikke ‘ ikke kalde det en industristandard.
  • @ JohnR.Strohm – Ligesom m. Alin siger, at ‘ ikke er en industristandard. Digikey lister 10mA nominelle lysdioder, der spænder fra 0,4mcd til 1000 mcd, og 20mA LEDer fra 0,1 mcd til 54000 mcd. Der er ‘ ingen linje i den, og ingen garanti for, at din 10mA LED vil være god synlig. Rød LED-spænding ligger typisk fra til 1,8V til 2,2V. For en rød LED er 1.6V usædvanligt lav.

Svar

40 plot,

Jeg må sige, at kørsel af en LED uden modstand IKKE ANBEFALES, medmindre du ved hvad du laver. Men hvis du forstår, hvordan en LED opfører sig, kan du køre den uden en modstand sikkert. Faktisk er det ofte bedre at køre en LED uden en strømbegrænsende modstand.

Hvorfor kører du en LED uden en modstand? Simpelt for at gøre dit kredsløb mere energieffektivt.

Skulle du køre din LED med PWM indstillet til en konstant driftscyklus (dvs. 5V PWM ved 34% drift cyklus for at opnå en gennemsnitlig spænding på 1,7V)?

Ja og nej. Brug af PWM kan fungere lige så godt som at anvende en bestemt spænding (hvis du er forsigtig), men der er bedre måder. Ting, du skal bekymre dig om, når du tager PWM-tilgangen.

  1. Hyppigheden af PWM er vigtig.Når du bruger PWM i dette scenarie, stoler du på muligheden for dit kredsløbs komponenter til midlertidigt at håndtere høje strømme. Dine største bekymringer vil være, hvordan LEDen håndterer en midlertidig høj strøm, og hvordan outputcheck på din chip kan håndtere en midlertidig høj strøm. Hvis denne info ikke er specificeret i databladet, var databladets forfattere dovne. MEN !!! Hvis disse oplysninger er specificeret på databladet, kan du sikkert drage fordel af det. For eksempel er den LED, jeg har næste for mig har den maksimale nuværende vurdering på 40 mA. Den har dog også en ” Fremadgående strøm ” rating på 200 mA, med en note at strømmen ikke kan forblive på 200mA i længere tid end 10us. Såååå … Jeg kan køre LEDen med 1,7V (lysdioderne typisk fremadspænding fra databladet). Med en driftscyklus på 34% og en strømforsyning på 5V (34 % af 5V = 1,7V) vil producere en gennemsnitlig spænding på 1,7V, jeg skal bare sikre, at min PWM til tiden er 10us eller mindre. n-tid vil strømmen gennem LED sandsynligvis stige til omkring 58mA (58mA = typisk strømtræk ved 1,7V af min diode divideret med 34%). 58mA overstiger mine lysdioder konstant strøm maksimum på 40mA med 18 mA. Endelig … Jeg ville have brug for en PWM-frekvens på 33,3 kHz eller derover for sikkert at køre min LED (33,3 kHz = Den inverse af [10 us ON-tid divideret med 34% for at få PWM-perioden]). I REALITY kunne jeg sikkert bruge PWM til at tænde min LED med en langsommere PWM-frekvens. Årsagen er denne: Dataark angiver normalt ikke alle gyldige driftsscenarier for en komponent. De specificerer ikke disse scenarier, fordi sælgeren ikke vil investere tid i at specificere og understøtte brugen af deres komponent til hjørnebrug For eksempel med min LED, hvis jeg kan betjene LEDen ved 40mA for evigt (40mA er den jævne strøm max.) og jeg kan betjene LEDen ved 200mA i 10us. Derefter kan jeg være 99,99999% sikker på, at jeg kan betjen LED-lampen sikkert ved 100mA i en periode, der er længere end 10us, sandsynligvis tæt på 20us.

BEMÆRK: Alle komponenter kan sikkert håndtere midlertidige strømspidser over deres maksimale klassificering, så længe varigheden af aktuelle spidser er SMÅ GENNEMGÅENDE . Nogle komponenter vil være mere tilgivende end andre, og hvis du er heldig, er komponentens datablad angiver, hvor godt det kan håndtere spidser af strøm.

  1. Spændingen på din PWM er vigtig. Jeg demonstrerer mit punkt med et eksempel i stedet for via en forklaring. Hvis vi bruger den LED, jeg henviste til tidligere, ved vi, at 34% driftscyklus ved 33,3 kHz ved 5 V er sikker. Men hvis vores spænding var 12 V, bliver nødt til at omarbejde vores beregninger for at holde den samme mængde strøm, der strømmer gennem LEDen. Vores driftscyklus bliver nødt til at falde til 14,167% (1,7 V divideret med 12 V), og vores minimum PWM-frekvens vil falde til 14,285 kHz (den omvendte af [ 10us divideret med 14,167%]). MEN! , dette giver anledning til bekymring. I 5V-scenariet anvender vi 5V til 10us og i 12V-scenariet anvender vi 12V til 10us. Vi mere end fordoblede spændingen i løbet af de 10us, der skal være nogle konsekvenser. Og ja, der er! Mit LED-datablad giver mig ikke de nødvendige data for at vide, hvor høj af en spænding, jeg kan bruge i 10us, før jeg beskadiger min LED. Sikkert 1000V til 10us vil stege min LED. Men hvordan ved jeg, om 5V ved 10us vil stege min LED? eller 12V i 10us? Hvis der ikke er spec for det, tager du en risiko. Så … 5V til 10us er risikabelt, men sandsynligvis sikkert.

BEMÆRK: Du kan tilføje en kondensator til kredsløbet for at udjævne PWM og få dette problem til at forsvinde.

  1. Du skal være opmærksom på mulighederne for output pin, du også har tilsluttet din LED. Den vigtigste parameter er den maksimale udgangsstrøm. For Arduino Uno tror jeg, det er 40 mA. Du skal vælge en PWM-driftscyklus, hvis gennemsnitlige spænding holder strømmen igennem LED under 40 mA. For at vide, hvilke spændinger der producerer så meget strøm, skal du se på LEDs IV-kurven (strøm vs. spændingsdiagram). For en typisk LED vil en spænding mellem 0,7V (typisk minimumsspænding er nødvendig for at udsende lys fra LEDen) og 1,25V næsten helt sikkert være sikker. Hvorfor er 1.25V sandsynligvis sikkert? De fleste lysdioder vil ikke overstige 40 mA ved 1,25 V, selv uden en strømbegrænsende modstand. En anden ting, der hjælper med at beskytte nogen, hvis de anvender for meget spænding, er at det digitale udgangskredsløb i Arduino har sin egen outputimpedans, at udgangsimpedans vil være lav, men selv en 20 ohm udgangsimpedans ville give en ikke-ubetydelig mængde beskyttelse. Arduino uno har en digital udgangsimpedans på omkring 250 ohm. Lang historie kort, hvis du kørte en LED ved hjælp af PWM ved 1.0V ved en høj frekvens, for en typisk LED, er der ingen chance for, at du beskadiger dit digitale output på en Arduino Uno.

  2. PWM-tilgangen driver LEDen på en åben sløjfe-måde (og det samme gør brug af 1.7V strømforsyning uden PWM). Du anvender en gennemsnitlig spænding på lysdioden, der er lige den rigtige værdi for at tænde lysdioden, men ikke høj nok til at beskadige lysdioden. Desværre er spændingsområdet fra ON (og lyst nok til at se) til beskadiget LED meget lille (Det interval på min LED er ca. 0,7V). Der er forskellige grunde til, at 1.7V, som du tror, du anvender, ikke altid vil være 1,7V …

a. Ændringer i den omgivende temp. Hvad hvis du havde en motordriver, spændingsregulator osv. i en lukket kasse, der også indeholdt LED. Det ville ikke være ualmindeligt, at de andre komponenter hæver den omgivende temp inde i kabinettet fra 25C til 50C. Denne stigning i temperatur VIL ændre din LEDs, din spændingsregulator osv. Opførsel. Din engang sikre 1.7V vil ikke længere være 1,7V, og din LED, der plejede at stege ved 2,5V, steges nu ved 2,2V.

b. Ændringer i din forsyningsspænding. Hvad hvis din forsyning var et batteri. Når batteriet tømmes, falder spændingen betydeligt. Hvad hvis du designede dit kredsløb til at fungere godt med et lidt brugt 9V batteri, men så tilføjede du et nyt 9V batteri. Helt nye 9V blybatterier har typisk en faktisk spænding på 9,5V. Afhængigt af kredsløbet, der leverer 5V, der bruges til PWM, kan den ekstra 0,5V øge din 5V PWM til 5,3V. Hvad hvis du brugte et genopladeligt batteri? De har et endnu større spændingsområde gennem hele deres afladningscyklus.

c. Der er andre scenarier, som induceret strøm fra EMI (motorer vil gøre dette).

At have en strømbegrænsende modstand sparer dig for mange af disse problemer.

Brug af PWM til at drive en LED er ikke en særlig god løsning. Er der en bedre måde, der ikke kræver en strømbegrænsende modstand?

Ja! Gør hvad de gør i LED-pærer til dit hjem. Kør LEDen med en strømstyring. Indstil den aktuelle controller til at køre den strøm, din LED er klassificeret til.

Med den korrekte strømstyring , kan øges dramatisk, og du kan sikkert køre LEDen uden at bekymre dig om de fleste af de problemer, der er forbundet med åben sløjfe, der kører en LED.

Ulempen: Du har brug for en nuværende controller, og du har øget kompleksiteten af kredsløbet med 10 gange. Dog ikke modløs. Du kan købe nuværende controller-ICer, LED-driver-ICer eller lave din egen strømstyrede boost-konverter. Det er ikke så svært. Tag dig lidt tid ud af din travle tidsplan og lær om boost- og buck-konvertere. Lær om at skifte strømforsyning. Det er det, der styrer din computer, og de er ekstremt energieffektive. Derefter skal du enten bygge en fra bunden, eller køb en billig IC til at udføre det meste af arbejdet for dig.

Selvfølgelig er der som med alle elektroniske designs altid flere ting, du kan gøre for at gøre dit kredsløb bedre. Se figur 3 i følgende PDF for at se, hvor kompleks selv en husstands-LED-pære kan være i disse dage …

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

Sammenfattende: Du skal selv bestemme, hvor stor risiko du er villig til tage med dit kredsløb. Brug af 5V PWM til at drive din LED vil sandsynligvis fungere fint (især hvis du tilføjer en kondensator for at udjævne PWM-firkantbølgen og maksimere din PWM-frekvens). Vær ikke for bange for at skubbe din elektronik udenfor af deres sædvanlige op at fjerne forhold, bare informeres, når du gør det, kender de risici, du tager.

Nyd!

FYI: Jeg er overrasket over, hvor mange mennesker der straks springer til svaret, ” DU SKAL BRUGE EN LØBENDE BEGRÆNSNINGSMODSTAND “. Det er velmenende, men alt for sikker rådgivning.

Ort

Kommentarer

  • I ‘ Jeg er overrasket over at se, hvor mange mennesker der betragtede dette svar som værdifuld designrådgivning. At køre en LED uden strømbegrænsning ved hjælp af PWM er lige så slemt for LEDen som hvad OP gør, plus det vil generere EMI og VCC krusning som crasy.
  • @DmitryGrigoryev, jeg indså, at jeg helt undlod at adressere den maksimale udgangsstrøm for den digitale udgang. Jeg tilføjede en ny kugle for at dække det. PWM tillader nogen at køre sikkert en LED uden en strømbegrænsende modstand. EMI og VCC krusning oprettes når som helst du kører belastninger med et digitalt signal, men dette er almindeligt (f.eks. H Bridge, Boost Converter, Hobby Servo Control osv.) Og er næppe en grund til at undgå PWM. Der findes rimelige løsninger til at håndtere EMI- og VCC-krusning, hvis det er nødvendigt. De fleste mennesker ‘ bryr sig ikke om de små mængder EMI- og VCC-krusning, der skabes ved at køre en LED med PWM.

Svar

Du kan bruge de indbyggede pullup-modstande som foreslået her :

Pullup-modstandene giver tilstrækkelig strøm til svagt at tænde en LED tilsluttet en pin, der er konfigureret som en indgang.

Kommentarer

  • Ikke til lysdioder, dette kan bruges til knapper, men til lysdioder er der en fare for at bryde produktionen
  • hvis det ikke er sikkert, hvorfor de officielle dokumenter siger det? (Jeg ‘ har også prøvet mig selv, og det fungerede som beskrevet.)
  • Læs venligst ned til OUTPUT, det nævner, at det har brug for en seriemodstand: ” Dette er strøm nok til stærkt at tænde en LED (don ‘ glem ikke seriemodstanden) , eller køre f.eks. mange sensorer, men ikke nok strøm til at køre de fleste relæer, solenoider eller motorer. ”
  • @MenelaosVergis det er sikkert at gøre dette, når stiften i INPUT_PULLUP-tilstand, det er ikke sikkert at gøre med en stift i OUTPUT-tilstand. Dette fremgår tydeligt af dokumentet, hvis du læser begge sektioner (og fra det citerede uddrag i dette svar).

Svar

Det korte svar er, ja og nej, det afhænger af din arduino, og det afhænger af farven på din led. For eksempel kræver et 3.3V-kort ikke en modstand i serie med en lille grøn LED, fordi LED-spændingen fremad er ret høj, se dette . Den interne modstand er omkring 25 Ohm, tag (3.3 – 3) / 25 = 12mA, så dette er stadig fint, du skal ikke gå på tværs af den maksimale strøm pr. Ben, der er 40 mA for 328p atmel-processoren, der bruges på UNO-kortene (medmindre du bruger et derivat af 328p, hvor det kunne være en anden historie). For en arduino, der kører ved 5V, opstår der imidlertid problemer med en infrarød LED, der har en meget lavere fremadspænding, typisk 1,2V, (5-1,2) / 25 = 150mA, og dette er bestemt for meget, så brug en strømbegrænser som sådan som en modstand til at drive den type lysdioder. Pin 13 på Arduino-kortene (eller en anden pin på varianter) har allerede en ledning og en modstand i serie. Strømforsyningen til tavlen har også en maksimal vurdering, typisk 200 mA, og du skal forblive under dette niveau, og du kan ikke tegne mere end en vis mængde mA pr. Gruppe stifter, dette forklares her . Hvis du vil køre mange lysdioder, skal du overveje at bruge en matrix-LED-driver, der udfører multiplexing for dig, se for eksempel mit youtube-område, hvor jeg demonstrerer MAX7219CNG-driveren. Men også Arduino Uno kan udføre multiplexing for dig, se mit IR-termometer med 4 syv segment-lysdioder på youtube. Happy hacking.

Svar

Svaret fra stevenvh forklarer, hvad du skal gøre, men du skal også beregne strømforsyningen over lysdioden, så du ikke brænder spændingsfaldmodstanden ud. For eksempel, hvis forsyningsspændingen er 5V, og modstandens fremadspænding er 1,0V, vil du falde 4V. Brug af en 220 ohm modstand vil resultere i en strøm på (I = V / R) på 18mA og en effekt spredning (P = IV) på 72mW.

0402 Modstand i kejserlig størrelse (1005 metrisk) er generelt 1 / 16W, hvilket er 62,5mW. Så i dette tilfælde ville dette ikke fungere; det ville overophedes modstanden og forkorte dets levetid. Så du bliver nødt til at skifte til en 0402-modstand med 1 / 10W-klassificering eller en større 0603-modstand.

Når du foretager beregninger som disse, skal du føje dem til skematisk, så korrekturlæseren kan nemt dobbelttjekke dit arbejde.

Bemærk, at fremadspænding (og dermed modstandsværdi) er en funktion af LEDen, og forskellige farver på LEDer har forskellige værdier. Blå LEDer har især en høj fremadspænding (~ 3.0V typ). Så hvis du prøver at få fire forskellige lysdioder til at have den samme lysstyrke, skal du gentage beregningerne for hver LED. For virkelig at gøre det rigtigt skal du se på de optiske egenskaber for hver LED ved dens nominelle strøm og justere i overensstemmelse hermed.

Svar

JA! Det kan gøres.

Selvom det, der er blevet sagt, er korrekt …. der er en anden måde. En mere energieffektiv måde at køre lysdioder på med 5v.

Dette er lidt udokumenteret, og det er ukendt, hvis løsningen slides af lysdioderne, men det kan gøres. Jeg gør det faktisk.

Brug af PWM ved hardware: 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 hjælp af software og avrs-timerne. Du kan finde et eksempel inde i lufa-biblioteket, kaldet LEDNotifier.c.

Min konklusion: Det er muligt at køre en led på 5V.

PROS: Intet behov for en modstand. Noget energi sparer også (~ 50%)

CONS: Jeg ved ikke, om komponenten er stresset og om dens levetidsreduktion.

Der er en fyr, der også gjorde dette eksperiment i Stanford og sendte noget info på hans site .

Kommentarer

  • Dette virker bare ikke ‘ t som en god idé. Du ‘ henter sandsynligvis mere strøm fra controlleren, end den ‘ er klassificeret til, selvom du ‘ ikke gør det meget længe.
  • Som sagt er dette ikke-kommenteret. Arduino UNO output IO kan køre omkring 40ma-50ma. Det er konstant. Jeg kan helt sikkert håndtere meget korte pulser med mere strøm. Se venligst på wikipedia .
  • I Arduino-miljøet kan man lettere få PWM med analogWrite() på den tilsvarende pin. Stadig ikke sikker på, at dette er en god idé, men i det mindste for IR-lysdioder er det ‘ almindeligt, at databladene tillader betydeligt højere spidsstrømme for driftscyklusser mindre end 100% .
  • I ‘ Jeg er temmelig sikker på, at energibesparelser vil være negative sammenlignet med en modstandsbaseret løsning, fordi LED-effektiviteten bliver lavere når strømmen stiger.
  • @ScottSeidman Hvorfor er det ikke ‘ det er en god idé? bare fordi de fleste mennesker tror, at det ikke anbefales at bruge en LED uden modstand? dette svar beviste undersøgelse, en meget respektfuld kilde som Stanford University, og ud fra hvad jeg kan eksperimentere, fungerer det. Jeg elsker bestemt nedstemte indlæg, fordi de fortæller dem, der stemte ned, bare er partiske. Hvilket paradoks …

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *