Arduino ile LED'leri kontrol ederken gerçekten dirençlere ihtiyacım var mı?


47

Arduino Uno'yu ilk defa bir breadboard üzerinde 2 yanıp sönen LED ile deniyorum. İnternetteki bütün eğiticiler bir direnç kullanıyor gibi görünüyor. Dirençlerin işlevini biliyorum ama bu gerçekten önemli mi? Bu LED'ler direnç olmadan gayet iyi çalışıyorlar.


8
Bu, LED'inizin erimesini isteyip istemediğinize bağlıdır. Sakıncası yoksa, direnci atlayın. :-).
Dan Sheppard,

Yanıtlar:


78

Yaramaz! :-). Bir direnç kullanmak için diyorlarsa bunun için iyi bir sebep var! Kapat şunu ŞİMDİ!

Direnç, LED'in akımını sınırlamak için oradadır. Bunu atlarsanız, akım sınırlaması Arduino'nun çıktısından gelmek zorundadır ve bundan hoşlanmayacaktır. Rezistörün ne olması gerektiğini nasıl öğrenirsiniz? Ohm Yasasını biliyor musun? Bunu yapmazsanız, büyük harflerle yazın:

V=IR

Voltaj, geçerli zaman direncine eşittir. Ya da söyleyebilirsin

R=VI

Aynı şey. Bildiğiniz gerilim: Arduino 5V'da çalışıyor. Fakat dirençten geçecek olanların hepsi değil. LED ayrıca kırmızı bir LED için tipik olarak 2V civarında bir voltaj düşüşüne sahiptir. Böylece direnç için 3V kalır. Tipik bir gösterge LED'inin 20mA nominal akımı olacaktır,

R=5V2V20mA=150Ω

Arduino Uno, ATmega328 mikrodenetleyicisini kullanır . Veri sayfası, herhangi bir G / Ç pimi için geçerli akımın Mutlak Maksimum Değerler olarak bilinen 40mA'yı geçmemesi gerektiğini söylüyor. Akımı sınırlayacak bir şeyiniz olmadığından, çıkış transistörünün sadece (düşük!) Direnci vardır. Akım 40mA'dan daha yüksek olabilir ve mikrodenetleyiciniz zarar görür.

düzenleme
ATmega'nın veri sayfasındaki aşağıdaki grafik, LED'i akım sınırlama direnci olmadan sürdüğünüzde ne olacağını gösterir:

görüntü tanımını buraya girin

Yük olmadan çıkış voltajı beklendiği gibi 5V'tur. Ancak çekilen akım ne kadar yüksek olursa, çıkış voltajı o kadar düşük olur, her ekstra 4mA yük için yaklaşık 100mV düşer. Bu 25 iç direncidir . Sonra Ω

I=5V2V25Ω=120mA

Grafik o kadar ilerlemiyor, direnç sıcaklıkla yükselecek, ancak akım çok yüksek kalacak. Veri sayfasının Mutlak Maksimum Derecelendirme olarak 40mA verdiğini unutmayın. Bundan üç katın var. Bunu uzun süre yaparsanız, bu kesinlikle G / Ç bağlantı noktasına zarar verir. Ve muhtemelen de LED. Bir 20mA gösterge LED'i Mutlak Maksimum Değer olarak genellikle 30mA olacaktır.


2
Pek sayılmaz. 3 ve hiçbir ışık elde edemezsiniz, çünkü 3 x 2V> 5V ve 2 aynı problemi yaşar, 3V yerine sadece 1V düşüş. Şimdi kapatmak için cevabımı ekledim!
stevenvh

21
Kaç kere bu hesaplamayı burada cevaplar olarak yazdığımı sayımı kaybettim. Bunun için bir komut dosyası olmalı :-)
stevenvh

2
LED'ler belirli bir maksimum akımda çalıştırılmak üzere tasarlanmıştır. Gerilim onları sürmek, kontrolsüz akım demektir. Limanlar belirli bir maksimum akım sağlamak için yapılmıştır. Bunları kısaltmak ya da aşırı yüklemek, IC tahribatını kesmek veya tümüyle tahrip etmek ya da sadece hassas işletim sorunlarına neden olabilir. Ya da değil.
Russell McMahon

4
@ JohnR.Strohm Ben buna endüstri standardı demedim.
12'de

2
@ JohnR.Strohm - m.Alin’in dediği gibi endüstri standardı değil. Digikey, 0.4mcd ila 1000 mcd arasında değişen 10mA nominal LED ve 0.1 mcd ila 54000 mcd arasında değişen 20mA LED listeler. İçinde çizgi yok ve 10mA LED'inizin iyi görüneceğinin garantisi yok. Kırmızı LED gerilimi tipik aralıkları 1.8V dan 2.2V için. Kırmızı bir LED için 1.6V olağanüstü düşüktür.
stevenvh

22

40plot,

Dirençsiz bir LED kullanmanın, ne yaptığınızı bilmediğiniz sürece TAVSİYE EDİLMELİ olduğunu söylemeliyim. Ancak, bir LED'in nasıl davrandığını anlarsanız, dirençsiz bir şekilde güvenle sürebilirsiniz. Nitekim, bir akım sınırlayıcı direnci olmayan bir LED'i sürmek genellikle daha iyidir.

Neden bir rezistörsüz bir LED kullanıyorsunuz? Basit, devrenizi daha enerji verimli hale getirmek için.

LED'inizi sabit bir çalışma döngüsüne ayarlanmış PWM ile mi sürmelisiniz?

Evet ve hayır. PWM kullanmak (eğer dikkatli olursanız) belirli bir voltaj uygulamanın yanı sıra çalışabilir, ancak daha iyi yollar vardır. PWM yaklaşımını kullanırken endişelenmeniz gerekenler.

  1. PWM'nin sıklığı önemlidir. PWM'yi bu senaryoda kullanırken, devrenin bileşenlerinin geçici olarak yüksek akımlarla başa çıkma yeteneğine güveniyorsunuz. En büyük endişeleriniz LED'in geçici bir yüksek akımı nasıl yönettiği ve çipinizin çıkış devresinin geçici olarak yüksek bir akımı nasıl idare edebileceği olacaktır. Bu bilgi veri sayfasında belirtilmemişse, veri sayfası yazarları tembeldir. FAKAT!!! Bu bilgi veri sayfasında belirtiliyorsa, güvenle yararlanabilirsiniz. Örneğin, yanımdaki LED maksimum 40mA akım değerine sahip. Bununla birlikte, 200mA'lik bir "İleriye Doğru Akım" derecesine de sahiptir, notun akımın 10us'tan daha uzun süre 200mA'da kalamayacağını not eder. Soooo ... LED'i 1.7V (LED'lerden gelen tipik ileri gerilim LED'leri) ile sürebilirim. % 34'lük bir görev döngüsü ve 5V'luk bir güç kaynağı (5V = 1.7V'nin% 34'ü) ortalama 1,7V'luk bir voltaj üretecek, sadece PWM'imin zamanında 10us veya daha az olmasını sağlamalıyım. Zaman içinde, LED üzerinden akım muhtemelen 58mA'ya yükselecektir (58mA = diyotumun 1.7V'sinde tipik akım% 34 bölü). 58mA, LED'lerimin sürekli akımını maksimum 40mA 18 mA ile aşıyor. Sonunda ... LED'imi güvenle sürmek için bir PWM frekansı 33.3kHz veya daha yüksek bir değere ihtiyacım olacak (33.3kHz = PWM dönemini elde etmek için [10us ON zamanının% 34 bölü]]. GERÇEKLİK'te LED'imi daha yavaş bir PWM frekansıyla çalıştırmak için PWM'yi güvenle kullanabilirim. Sebep şudur: Veri sayfaları genellikle bir bileşenin geçerli tüm işletme senaryolarını belirtmez. Satıcı senaryoları belirlemediğinden, bu senaryoları belirtmiyorlar. • Köşe kullanım durumları için bileşenlerinin kullanımını belirlemeye ve desteklemeye zaman ayırmak istemektedir. Örneğin, LED'imle, eğer LED'i 40mA'da sonsuza dek çalıştırabilirsem (40mA sürekli akım maksimum derecesidir) ve LED'i 10us için 200mA'da çalıştırabilirim. Ardından, LED'i 100mA'da 10us'tan daha uzun, muhtemelen 20us'a yakın bir süre boyunca güvenle çalıştıracağımdan% 99.99999 emin olabilirim.

NOT: Tüm komponentler, mevcut spike'ların KÜÇÜK YETERLİLİKLİ olduğu sürece, maksimum akım değerlerinin üzerindeki geçici akım artışlarını güvenli bir şekilde yapabilir . Bazı bileşenler diğerlerinden daha affedici olacak ve eğer şanslıysanız, bileşenin veri sayfası, akımın sivri uçlarını ne kadar iyi kullanabileceğini belirtecektir.

  1. PWM'nizin voltajı önemlidir. Amacımı açıklama yerine örnekle göstereceğim. Eğer daha önce bahsettiğim LED'i kullanırsak,% 34 görev döngüsünün 33.3kHz'de 5V'de güvenli olduğunu biliyoruz. Bununla birlikte, eğer voltajımız 12 V ise, aynı miktarda akımı LED üzerinden akmak için hesaplamalarımızı tekrar yapmak zorunda kalacağız. Görev döngümüzün% 14.167'ye düşmesi (1.7V bölü 12V) ve minimum PWM frekansımız 14.285kHz'e düşecektir (tersi [10us'un% 14.167] ile). ANCAK!, bu endişe nedenidir. 5V senaryosunda 10us için 5V, 12V senaryosunda ise 10us için 12V uyguluyoruz. Bu 10us boyunca gerilimi iki katından fazla çıkardık, bunun bazı sonuçları olmalı. Ve evet, var! LED veri sayfam, LED'ime zarar vermeden önce 10us için ne kadar yüksek voltaj kullanabileceğimi bilmek için gerekli verileri vermiyor. 10us için kesinlikle 1000V benim LED'imi kızartır. Ancak, 10us'taki 5V'nin LED'imi kızartıp çıkaramayacağını nasıl bilebilirim? veya 10us için 12V? Eğer bir spesifikasyon yoksa, risk alıyorsunuz demektir. Yani ... 10us için 5V riskli, fakat büyük olasılıkla güvenli.

NOT: PWM'yi ortalamak ve bu sorunu ortadan kaldırmak için devreye bir kondansatör ekleyebilirsiniz.

  1. PWM yaklaşımı, LED'i açık döngüde çalıştırır (ve PWM'siz 1.7V güç kaynağı kullanır). LED'i AÇMAK için doğru değer olan ortalama bir voltaj uyguluyorsunuz, ancak LED'e zarar verecek kadar yüksek değil. Ne yazık ki, AÇIK (ve görecek kadar parlak) ile hasarlı LED arasındaki voltaj aralığı çok küçük (LED'imdeki bu aralık yaklaşık 0.7V'dir). Uyguladığın 1.7V'ın her zaman 1.7V olmayacağının çeşitli sebepleri var ...

a. Ortam sıcaklığındaki değişiklikler. LED'i de içeren kapalı bir kutuda motor sürücünüz, voltaj regülatörünüz vb. Varsa? Bu diğer bileşenlerin muhafaza içindeki ortam sıcaklığını 25C'den 50C'ye yükseltmeleri nadir değildir. Bu ısı artışı OLACAK sizin diyot voltaj regülatörü, vb davranışını değiştirebilir .. Bir zamanların güvenli 1.7V artık 1.7V olacak ve sizin 2.5V de kızartmak için kullanılan LED o olacak şimdi yavru 2.2V de.

b. Besleme voltajındaki değişiklikler. Ya tedarikin bir bataryaysa? Akü boşalırken, voltaj oldukça düşer. Devrenizi hafifçe kullanılan bir 9V pil ile iyi çalışacak şekilde tasarladıysanız, ancak daha sonra yeni bir 9V pil eklediniz. Yepyeni 9V kurşun asit aküler tipik olarak 9,5V'luk gerçek bir gerilime sahiptir. PWM için kullanılan 5V sağlayan devreye bağlı olarak, bu ilave 0.5V, 5V PWM'nizi 5.3V'a çıkarabilir. Ya şarj edilebilir bir batarya kullanıyorsanız? Tüm deşarj döngüsü boyunca daha geniş bir voltaj aralığına sahiptirler.

c. EMI kaynaklı indüklenen akım gibi başka senaryolar da var (motorlar bunu yapacak).

Akım sınırlayıcı bir dirence sahip olmak sizi bu sorunların çoğundan kurtarır.

Bir LED'i sürmek için PWM kullanmak çok iyi bir çözüm değil, akım sınırlama direnci gerektirmeyen daha iyi bir yol var mı?

Evet! Eviniz için LED ampullerde yaptıklarını yapın. LED'i akım kontrol cihazı ile sürün. LED'inizin derecelendirildiği akımı sürmek için akım kontrol cihazını ayarlayın.

Uygun akım kontrol cihazı ile çarpıcı bir şekilde arttırılabilir ve LED'i açık döngü ile ilgili sorunların çoğundan endişe etmeden güvenle LED'i sürdürebilirsiniz.

Olumsuz tarafı: Bir akım kontrol cihazına ihtiyacınız var ve devrenin karmaşıklığını 10x arttırdınız. Yine de cesaretini kırma. Mevcut kontrolör IC'lerini, LED sürücü IC'lerini satın alabilir veya kendi akım kontrollü boost dönüştürücünüzü yapabilirsiniz. O kadar zor değil. Meşgul zamanlamanızın biraz zaman ayırın ve artırma ve dönüştürme dönüştürücüler hakkında bilgi edinin. Güç kaynaklarını değiştirme hakkında bilgi edinin. Bilgisayarınıza güç sağlayan şeylerdir ve son derece enerji verimlidirler. Sonra, sıfırdan bir tane oluşturun ya da işin çoğunu yapmak için ucuz bir IC satın alın.

Elbette, tüm elektronik tasarımlarda olduğu gibi, devrenizi daha iyi hale getirmek için her zaman yapabileceğiniz daha çok şey vardır. Bir ev LED ampulünün bile bugünlerde ne kadar karmaşık olabileceğini görmek için aşağıdaki PDF'deki şekil 3'ü inceleyin ...

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

Özetle: Devrenizle ne kadar risk almak istediğinize kendiniz karar vermelisiniz. LED'inizi sürmek için 5V PWM kullanmak muhtemelen iyi sonuç verecektir (özellikle PWM kare dalgasını yumuşatmak ve PWM frekansınızı maksimuma çıkarmak için bir kapasitör eklerseniz). Elektronik cihazlarınızı normal çalışma koşullarının dışına itmekten korkmayın, ne zaman yaptığınız hakkında bilgi alın, aldığınız riskleri öğrenin.

Keyfini çıkarın!

FYI: Kaç kişinin derhal "GÜNCEL SINIRLI BİR DİRENÇ KULLANMALIĞINIZ" cevabına atlamasına şaşırdım. Bu iyi niyetli, ancak aşırı güvenli bir tavsiyedir.

kırıntı


Bu cevabı kaç kişinin değerli tasarım tavsiyesi olarak gördüğünü görünce şaşırdım. LED'i akım sınırlaması olmadan PWM kullanarak kullanmak, OP'nin yaptığı gibi LED için de kötü, artı EMI ve VCC dalgalanması gibi dalgalanmalara neden olacak.
Dmitry Grigoryev

1

Yerleşik çekme dirençlerini burada önerildiği şekilde kullanabilirsiniz :

Çekme dirençleri, giriş olarak yapılandırılmış bir pime bağlı bir LED'i loş bir şekilde aydınlatmak için yeterli akımı sağlar.


LED'ler için değil, bu düğmeler için kullanılabilir, ancak LED'ler için çıkışı bozma tehlikesi vardır
Menelaos Vergis

eğer güvenli değilse neden resmi doktorlar böyle söylüyor? (Ben de kendimi denedim ve açıklandığı gibi çalıştı.)
eadmaster

Lütfen aşağıdakileri okuyun OUTPUT, bir seri direnç gerektirdiğini söyler: "Bu, bir LED'i parlak bir şekilde aydınlatmak için yeterli akımdır (seri rezistansı unutmayın) veya örneğin birçok sensör çalıştırmanız yeterlidir, ancak en fazla çalıştırmak için yeterli akım yoktur röleler, solenoitler veya motorlar. "
Menelaos Vergis

0

Stevenvh tarafından verilen cevap, yapmanız gerekenleri açıklar, ancak aynı zamanda, voltaj düşme direncini yakmamanız için LED üzerindeki güç dağıtımını da hesaplamanız gerekir. Örneğin, besleme gerilimi 5V ise ve rezistörün ileri gerilimi 1,0V ise, o zaman 4V düşersiniz. 220 ohm'luk bir direnç kullanmak, 18mA'lık bir akım (I = V / R) ve 72mW'lık bir güç dağılımı (P = IV) ile sonuçlanacaktır.

0402 İmparatorluk ölçülü (1005 Metrik) direnç genellikle 62.5mW olan 1 / 16W'dır. Yani bu durumda bu işe yaramaz; rezistörü fazla ısıtır ve kullanım ömrünü kısaltır. Bu nedenle, 1 / 10W dereceli bir 0402 rezistörüne veya daha büyük bir 0603 rezistörüne geçmeniz gerekir.

Ne zaman böyle hesaplamalar yaparsanız, bunları şematik olarak ekleyin, böylece gözden geçiren kişi çalışmanızı kolayca kontrol edebilir.

İleri gerilimin (ve dolayısıyla direnç değerinin) LED'in bir işlevi olduğunu ve farklı renkteki LED'lerin farklı değerlere sahip olacağını unutmayın. Özellikle mavi LED'ler yüksek ileri gerilime sahiptir (~ 3.0V tip). Eğer aynı parlaklığa sahip olmak için dört farklı LED almaya çalışıyorsanız, o zaman her LED için hesaplamaları tekrarlamanız gerekecektir. Gerçekten doğru şekilde yapmak için, her bir LED'in optik özelliklerine, nominal akımdaki değerlerine bakın ve buna göre ayarlayın.


0

Kısa cevap, evet ve hayır, arduino'nuza ve ledinizin rengine bağlı. Örneğin, bir 3.3V tahta LED'in ileri gerilim oldukça yüksek olduğu için, bkz küçük yeşil LED ile seri bağlanmış bir direnç gerektirmeyen bu. İç direnç 25 Ohm civarındadır, (3.3 - 3) / 25 = 12mA, bu nedenle hala iyidir, UNO kartlarında kullanılan 328p atmel işlemci için 40mA olan pin başına maksimum akım geçmemelisiniz farklı bir hikaye olabileceği 328p'nin bir türevini kullanıyorsunuz). Bununla birlikte, 5V'da çalışan bir arduino için tipik olarak 1.2V, (5-1.2) / 25 = 150mA gibi çok daha düşük bir ileri gerilime sahip olan bir kızılötesi LED ile ortaya çıkacaktır ve bu kesinlikle çok fazla olduğundan, bu tür bir akım sınırlayıcı kullanın. bu tip LED'leri sürmek için bir direnç olarak. Arduino kartlarındaki 13 pimi (veya varyantlardaki başka bir pimi) halihazırda bir led ve seri halinde bir rezistöre sahiptir. Ayrıca, anakartın güç kaynağı maksimum 200mA değerine sahiptir ve bu seviyenin altında kalmanız gerekir ve her pin grubu için belirli bir mA miktarından daha fazlasını çekemezsiniz.burada . Çok sayıda LED kullanmak istiyorsanız, o zaman sizin için çoğullamayı yapan bir matris LED sürücüsü kullanmayı düşünün, örneğin MAX7219CNG sürücüsünü gösterdiğim youtube alanıma bakın. Fakat Arduino Uno's, sizin için çoğullamayı da yapabilir, IR termometremde 4 yedi segment LED'li youtube'da görün. Mutlu hackler


-3

EVET! Yapılabilir.

Söylenenlerin doğru olmasına rağmen .... başka bir yol var. 5V ile LED'lerin daha verimli bir sürüş yöntemi.

Bu biraz belgelenmemiş ve çözümün LED'leri yıpratıp aşmayacağı bilinmemektedir, ancak yapılabilir. Aslında yapıyorum.

PWM'nin donanım tarafından kullanılması: İşte bir örnek :

#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 ayrıca, yazılım ve ortalama zamanlayıcılar kullanılarak da simüle edilebilir. Lufa kütüphanesinin içinde bir örnek bulabilirsiniz LEDNotifier.c.

Sonuç: 5V'ye liderlik etmek mümkün.

PROS: Direnç gerektirmez. Bazı enerji tasarrufu da (~% 50)

CONS: Bileşenin gergin olup olmadığını ve ömrünün kısalması hakkında bir fikrim yok.

Ayrıca Stanford'da Bu deney ve bazı bilgi yayınlanmıştır biri var kendi sitesi .


2
Bu sadece iyi bir fikir gibi görünmüyor. Muhtemelen çok uzun süre yapmasanız bile, denetleyiciden derecelendirilenden daha fazla akım alıyorsunuzdur.
Scott Seidman

Dediği gibi bu iddia edilmemiştir. Arduino UNO çıkışı IO 40ma-50ma civarında sürebilir. Bu sabittir. Kesin olarak daha fazla akım ile çok kısa darbeleri idare edebilirim. Lütfen wikipedia'ya bir göz atın .
Gaspar de Elias,

Arduino ortamında, PWM'ye analogWrite()karşılık gelen pimle daha kolay bir şekilde ulaşılabilir . Bunun iyi bir fikir olduğundan hala emin değilim, ama en azından IR LED'ler için, veri sayfalarının% 100'den daha az görev çevrimleri için oldukça yüksek tepe akımlarına izin vermesi yaygındır.
microtherion

Direnç bazlı bir çözüme kıyasla enerji tasarrufunun negatif olacağından oldukça eminim , çünkü LED verimliliği akım arttıkça düşer.
Dmitry Grigoryev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.