Arduino로 LED를 제어 할 때 실제로 저항이 필요합니까?


47

나는 브레드 보드에 2 개의 깜박이는 LED로 Arduino Uno를 처음 시도하고 있습니다. 인터넷의 모든 자습서는 저항을 사용하는 것 같습니다. 나는 저항의 기능을 알고 있지만 실제로 중요합니까? 이 LED는 저항없이 잘 작동합니다.


8
LED가 녹을 지 여부에 따라 다릅니다. 마음에 들지 않으면 저항을 생략하십시오. :-).
Dan Sheppard

답변:


78

못된! :-). 그들이 저항을 사용한다고 말하면 좋은 이유가 있습니다! 지금 끄세요!

저항은 LED의 전류를 제한하기 위해 존재합니다. 그것을 생략하면 전류 제한은 Arduino의 출력에서 ​​가져와야하며 좋아하지 않습니다. 저항이 무엇인지 어떻게 알 수 있습니까? 옴의 법을 알고 있습니까? 그렇지 않은 경우 큰 글자로 적어 두십시오.

V=IR

전압은 전류와 저항을 곱한 값과 같습니다. 아니면 말할 수 있습니다

R=VI

그건 같은거야. 알고있는 전압 : Arduino는 5V에서 작동합니다. 그러나 모든 것이 저항을 넘어서는 것은 아닙니다. 또한 LED에는 전압 강하가 있으며 일반적으로 빨간색 LED의 경우 약 2V입니다. 따라서 저항에는 3V가 남아 있습니다. 일반적인 표시기 LED의 공칭 전류는 20mA입니다.

R=5V2V20mA=150Ω

Arduino Uno는 ATmega328 마이크로 컨트롤러를 사용합니다 . 데이터 시트에 따르면 모든 I / O 핀의 전류는 일반적으로 절대 최대 정격이라고 알려진 40mA를 초과하지 않아야합니다. 전류를 제한 할 것이 없기 때문에 출력 트랜지스터의 저항은 (낮습니다!)입니다. 전류가 40mA보다 높을 수 있으며 마이크로 컨트롤러가 손상 될 수 있습니다.

편집
ATmega의 데이터 시트에서 다음 그래프는 전류 제한 저항없이 LED를 구동하면 어떻게되는지 보여줍니다.

여기에 이미지 설명을 입력하십시오

부하가 없으면 출력 전압은 예상대로 5V입니다. 그러나 전류가 높을수록 출력 전압이 낮아질수록 매 4mA 부하마다 약 100mV가 떨어집니다. 내부 저항은 25 입니다. 그때 Ω

I=5V2V25Ω=120mA

그래프는 그렇게 멀리 가지 않고 저항은 온도에 따라 상승하지만 전류는 매우 높게 유지됩니다. 데이터 시트는 절대 최대 정격으로 40mA를 제공했습니다. 당신은 세 번 있습니다. 이 것입니다 확실히 당신이 오랜 시간 동안이 작업을 수행 할 경우, I / O 포트를 손상. 그리고 아마도 LED도 마찬가지입니다. 20mA 표시기 LED의 절대 최대 정격은 30mA입니다.


2
실제로는 아닙니다. 3 x 2V> 5V 및 2이므로 동일한 문제가 발생하기 때문에 3V 대신 1V 드롭 만 발생하므로 빛이 나지 않습니다. 답변을 추가하여 지금 끌 수 있습니다!
stevenvh

21
나는 그 답을 여기에 몇 번이나 썼는지 계산을 잃었다. 나는 :-) 그것을위한 스크립트가 있어야합니다
stevenvh

2
LED는 특정 최대 전류에서 작동하도록 설계되었습니다. 전압 구동은 전류가 제어되지 않음을 의미합니다. 포트는 특정 최대 전류를 제공하도록 만들어졌습니다. 그것들을 단락 시키거나 과부하를 가하면 IC가 완전히 파괴되거나 완전히 파괴되거나 미묘한 작동 문제가 발생할 수 있습니다. 아님
Russell McMahon

4
@ JohnR.Strohm 나는 그것을 산업 표준이라고 부르지 않을 것입니다.
m.Alin

2
@ JohnR.Strohm-m.Alin은 업계 표준이 아니라고 말합니다. Digikey는 0.4mcd ~ 1000mcd 범위의 10mA 공칭 LED와 0.1mcd ~ 54000mcd 범위의 20mA LED를 나열합니다. 라인이 없으며 10mA LED가 잘 보입니다. 빨간색 LED 전압의 범위 는 일반적으로 1.8V ~ 2.2V입니다. 적색 LED의 경우 1.6V가 매우 낮습니다.
stevenvh

22

줄거리,

나는 당신이 무엇을하고 있는지 알지 못한다면 저항없이 LED를 구동하는 것이 권장되지 않는다고 말해야합니다. 그러나 LED의 동작을 이해하면 저항없이 안전하게 구동 할 수 있습니다. 사실, 전류 제한 저항없이 LED를 구동하는 것이 종종 더 좋습니다.

왜 저항없이 LED를 구동 하시겠습니까? 회로를보다 에너지 효율적으로 만들기 위해 간단합니다.

PWM을 일정한 듀티 사이클로 설정하여 LED를 구동해야합니까 (즉, 평균 전압 1.7V를 달성하기 위해 34 % 듀티 사이클에서 5V PWM)?

예, 아니오 PWM을 사용하면 특정 전압을 적용 할 수있을뿐 아니라 (주의 할 경우) 더 좋은 방법이 있습니다. PWM 방식을 사용할 때 걱정할 사항.

  1. PWM의 주파수가 중요합니다. 이 시나리오에서 PWM을 사용할 때는 회로 구성 요소가 일시적으로 고전류를 처리하는 기능에 의존합니다. 가장 큰 관심사는 LED가 일시적인 고전류를 처리하는 방법과 칩의 출력 회로가 일시적으로 높은 전류를 처리 할 수있는 방법에 있습니다. 해당 정보가 데이터 시트에 지정되어 있지 않으면 데이터 시트 작성자가 게으른 것입니다. 그러나!!! 해당 정보가 데이터 시트에 지정된 경우 안전하게 활용할 수 있습니다. 예를 들어, 내 옆에있는 LED의 최대 전류 정격은 40mA입니다. 그러나 "Peak Forward Current"정격은 200mA이며 전류는 10us 이상 200mA를 유지할 수 없습니다. Soooo ... 나는 1.7V (데이터 시트의 LED 전형적인 순방향 전압)로 LED를 구동 할 수 있습니다. 듀티 사이클이 34 %이고 전원 공급 장치가 5V (5V의 34 % = 1.7V)이면 평균 전압이 1.7V가되므로 시간에 따라 PWM이 10us 이하인지 확인하면됩니다. 온 타임 동안 LED를 통한 전류는 약 58mA로 상승 할 것입니다 (58mA = 다이오드 1.7V에서 일반적인 전류 소모를 34 %로 나눈 값). 58mA는 내 LED의 최대 전류 40mA에서 18mA를 초과합니다. 마지막으로 ... LED를 안전하게 구동하려면 33.3kHz 이상의 PWM 주파수가 필요합니다 (33.3kHz = [10us ON 시간의 역수를 PWM주기를 얻기 위해 34 %로 나눔)). 실제로, PWM을 사용하여 더 느린 PWM 주파수로 LED에 전원을 공급할 수있었습니다. 그 이유는 다음과 같습니다. 데이터 시트는 일반적으로 구성 요소의 모든 유효한 운영 시나리오를 지정하지 않습니다. 그들은 공급 업체가 이러한 시나리오를 지정하지 않습니다. 코너 유스 케이스에 컴포넌트 사용을 지정하고 지원하는 데 시간을 투자하고 싶습니다. 예를 들어, LED를 사용하여 LED를 40mA에서 영원히 작동 할 수 있다면 (40mA는 정전류 최대 정격) 10us 동안 200mA에서 LED를 작동 할 수 있습니다. 그런 다음 10us보다 긴 기간, 아마도 20us에 가까운 기간 동안 100mA에서 LED를 안전하게 작동 할 수 있다고 확신하는 99.99999 %가 될 수 있습니다.

참고 : 전류 스파이크 지속 시간이 짧으면 모든 구성 요소가 최대 정격 이상의 임시 전류 스파이크를 안전하게 처리 할 수 ​​있습니다 . 일부 구성 요소는 다른 구성 요소보다 더 관대하며 운이 좋으면 구성 요소의 데이터 시트에서 전류 급상승을 얼마나 잘 처리 할 수 ​​있는지 지정합니다.

  1. PWM의 전압이 중요합니다. 설명 대신에 예를 들어 요점을 설명하겠습니다. 앞서 언급 한 LED를 사용하면 53.3V에서 33.3kHz에서 34 % 듀티 사이클이 안전하다는 것을 알 수 있습니다. 그러나 전압이 12V라면 LED를 통해 동일한 양의 전류가 흐르도록 계산을 다시 수행해야합니다. 듀티 사이클은 14.167 % (1.7V를 12V로 나눈 값)로 떨어지고 최소 PWM 주파수는 14.285kHz ([10us를 14.167 %로 나눔])로 감소시킵니다. 하나!, 이것이 우려의 원인입니다. 5V 시나리오에서는 10us에 5V를 적용하고 12V 시나리오에서는 10us에 12V를 적용합니다. 우리는 그 10us 동안 전압을 두 배 이상으로 증가 시켰습니다. 몇 가지 결과가있었습니다. 그리고 그렇습니다! 내 LED 데이터 시트는 LED를 손상시키기 전에 10us에 얼마나 높은 전압을 사용할 수 있는지 알기 위해 필요한 데이터를 제공하지 않습니다. 확실히 10us를위한 1000V는 나의 LED를 튀길 것이다. 그러나 10us에서 5V가 LED를 튀길 것인지 어떻게 알 수 있습니까? 또는 10us의 경우 12V? 사양이 없으면 위험을 감수해야합니다. 10us의 5V는 ​​위험하지만 가장 안전합니다.

참고 : PWM을 평균화하고이 문제를 해결하기 위해 커패시터를 회로에 추가 할 수 있습니다.

  1. PWM 방식은 개방 루프 방식으로 LED를 구동합니다 (PWM없이 1.7V 전원 공급 장치 사용). LED 를 켜는 데 적합한 값 이지만 LED를 손상시키기에 충분히 높지 않은 평균 전압을 LED에 적용하고 있습니다. 불행히도 ON (및 볼 수있을 정도로 밝음)에서 손상된 LED까지의 전압 범위는 매우 작습니다 (내 LED의 범위는 약 0.7V입니다). 적용하려는 1.7V가 항상 1.7V가 아닌 이유는 여러 가지가 있습니다 ...

에이. 주변 온도의 변화. LED가 포함 된 닫힌 상자에 모터 드라이버, 전압 조정기 등이있는 경우 어떻게됩니까? 다른 구성 요소가 인클로저 내부의 주변 온도를 25C에서 50C로 올리는 것은 드문 일이 아닙니다. 이렇게 온도 상승 하면 LED, 전압 조정기 등의 동작이 변경됩니다. 일단 안전한 1.7V는 더 이상 1.7V가 아니며 2.5V에서 프라 이어링에 사용 된 LED는 이제 2.2V에서 프라 이어링됩니다.

비. 공급 전압의 변화. 소모품이 배터리 인 경우 어떻게됩니까? 배터리가 방전되면 전압이 상당히 떨어집니다. 약간 사용한 9V 배터리와 잘 작동하도록 회로를 설계했지만 새 9V 배터리를 추가 한 경우 어떻게해야합니까? 새로운 9V 납 축전지는 일반적으로 실제 전압이 9.5V입니다. PWM에 사용되는 5V를 제공하는 회로에 따라 추가 0.5V가 5V PWM을 5.3V까지 증가시킬 수 있습니다. 충전식 배터리를 사용하는 경우 어떻게됩니까? 전체 방전주기에서 훨씬 더 넓은 전압 범위를 갖습니다.

씨. EMI의 유도 전류와 같은 다른 시나리오가 있습니다 (모터가이를 수행함).

전류 제한 저항을 사용하면 이러한 많은 문제를 방지 할 수 있습니다.

PWM을 사용하여 LED를 구동하는 것은 그리 좋은 해결책이 아닙니다. 전류 제한 저항이 필요없는 더 좋은 방법이 있습니까?

예! 그들이 당신의 가정을 위해 LED 전구에서 무엇을합니까. 전류 컨트롤러로 LED를 구동합니다. 전류 컨트롤러가 LED 정격 전류를 구동하도록 설정하십시오.

적절한 전류 컨트롤러를 사용하면 LED를 크게 증가시킬 수 있으며 오픈 루프 구동 LED와 관련된 대부분의 문제를 걱정하지 않고 안전하게 LED를 구동 할 수 있습니다.

단점 : 전류 컨트롤러가 필요하고 회로의 복잡성을 10 배나 높였습니다. 낙심하지 마십시오. 전류 컨트롤러 IC, LED 드라이버 IC를 구매하거나 자체 전류 제어 부스트 컨버터를 만들 수 있습니다. 그렇게 어렵지 않습니다. 바쁜 일정을 벗어나 부스트 및 벅 컨버터에 대해 알아보십시오. 전원 공급 장치 전환에 대해 알아보십시오. 그것들은 당신의 컴퓨터에 힘을 실어주고 매우 에너지 효율적입니다. 그런 다음 처음부터 새로 구축하거나 저렴한 IC를 구입하여 대부분의 작업을 수행하십시오.

물론 모든 전자 설계와 마찬가지로 회로를 개선하기 위해 할 수있는 일이 항상 더 있습니다. 요즘 가정용 LED 전구조차도 얼마나 복잡한 지 보려면 다음 PDF의 그림 3을 확인하십시오.

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

요약하면 : 회로에 얼마나 많은 위험을 감수 할 것인지 스스로 결정해야합니다. 5V PWM을 사용하여 LED를 구동하면 (특히 PWM 구형파를 부드럽게하고 PWM 주파수를 최대화하기 위해 커패시터를 추가하는 경우) 제대로 작동 할 것입니다. 전자 장치를 일반적인 작동 조건에서 벗어나게하는 것을 너무 두려워하지 마십시오. 작업을 수행 할 때 알림을 받고 위험을 감수하십시오.

즐겨!

참고 : 나는 "현재 제한 저항을 사용해야합니다"라는 대답에 즉시 뛰어 넘는 사람들에 놀랐습니다. 의도는 좋았지 만 지나치게 안전한 조언입니다.

오르 트


이 답변을 귀중한 디자인 조언으로 생각한 사람이 몇 명인지 놀랐습니다. PWM을 사용하여 전류 제한없이 LED를 구동하는 것은 OP가하는 것만 큼 LED에 나쁜 영향을 미치며 열광적 인 EMI와 VCC 리플을 생성합니다.
Dmitry Grigoryev가

1

제안 당신은 내장 풀업 저항을 사용할 수 있습니다 여기에 :

풀업 저항은 입력으로 구성된 핀에 연결된 LED를 희미하게 비추기에 충분한 전류를 제공합니다.


LED가 아닌 버튼에 사용할 수 있지만 LED의 경우 출력을
차단할

안전하지 않은 경우 공식 문서가 왜 그렇게 말합니까? (나도 시도했지만 설명 된대로 작동했습니다.)
eadmaster

아래 읽어 보시기 바랍니다 OUTPUT, 그것은 일련의 저항이 필요하다고 언급 : "이것은 예를 들어, LED를 (직렬 저항을 잊지 마세요) 조명을 밝게, 또는 여러 개의 센서를 실행할 충분한 전류 있지만, 대부분의 실행 전류 것만으로는 충분하지 않습니다 릴레이, 솔레노이드 또는 모터. "
Menelaos Vergis

0

stevenvh의 답변은 필요한 작업을 설명하지만 전압 강하 저항을 태우지 않도록 LED 전체의 전력 소비를 계산해야합니다. 예를 들어 공급 전압이 5V이고 저항의 순방향 전압이 1.0V이면 4V가 떨어집니다. 220ohm 저항을 사용하면 18mA의 전류 (I = V / R)와 72mW의 전력 소비 (P = IV)가 발생합니다.

0402 영국식 (1005 미터법) 저항은 일반적으로 1 / 16W로 62.5mW입니다. 따라서이 경우에는 작동하지 않습니다. 저항이 과열되고 작동 수명이 단축됩니다. 따라서 1 / 10W 정격의 0402 저항 또는 더 큰 0603 저항으로 변경해야합니다.

이와 같은 계산을 수행 할 때마다 검토자가 작업을 쉽게 다시 확인할 수 있도록 회로도에 계산을 추가하십시오.

순방향 전압 (따라서 저항 값)은 LED의 기능이며, LED의 다른 색상은 다른 값을 갖습니다. 청색 LED는 특히 높은 순방향 전압 (~ 3.0V 일반)을 갖습니다. 따라서 동일한 밝기를 갖도록 4 개의 다른 LED를 얻으려면 각 LED에 대해 계산을 반복해야합니다. 실제로 올바르게하려면 정격 전류에서 각 LED의 광학 특성을보고 그에 따라 조정하십시오.


0

짧은 대답은 예와 아니오입니다. arduino에 따라 다르며 led의 색상에 따라 다릅니다. LED의 순방향 전압이 매우 높기 때문에 예를 들어, 3.3V 보드는 작은 녹색 LED와 직렬 저항을 필요로하지 않는, 볼 . 내부 저항은 약 25 Ohm이며 (3.3-3) / 25 = 12mA이므로 여전히 괜찮습니다 .UNO 보드에 사용되는 328p atmel 프로세서의 경우 핀당 최대 전류 40mA를 넘지 않아야합니다 (단, 328p의 파생물을 사용하여 다른 이야기가 될 수 있습니다). 그러나 5V에서 작동하는 arduino의 경우 순방향 전압이 훨씬 낮은 일반적으로 1.2V, (5-1.2) / 25 = 150mA 인 적외선 LED로 인해 문제가 발생합니다. 이러한 유형의 LED를 구동하는 저항으로 사용됩니다. Arduino 보드의 핀 13 (또는 변형의 다른 핀)에는 이미 LED와 저항이 직렬로 있습니다. 또한 보드의 전원 공급 장치의 최대 정격은 일반적으로 200mA이며이 레벨을 유지해야하며 핀 그룹당 일정량 이상의 mA를 그릴 수 없습니다.여기 . 많은 LED를 구동하려면 멀티플렉싱을 수행하는 매트릭스 LED 드라이버를 사용하는 것이 좋습니다. 예를 들어 MAX7219CNG 드라이버를 시연하는 YouTube 영역을 참조하십시오. 또한 Arduino Uno는 멀티플렉싱을 수행 할 수 있습니다. YouTube의 4 개의 7 세그먼트 LED가있는 IR 온도계를 참조하십시오. 행복한 해킹.


-3

예! 할 수 있습니다.

말한 내용이 맞지만 다른 방법이 있습니다. 5v로 LED를 구동하는보다 에너지 효율적인 방법.

이것은 약간 문서화되지 않았으며 솔루션이 LED를 마모 시킬지 여부는 알 수 없지만 수행 할 수 있습니다. 실제로하고 있습니다.

하드웨어 별 PWM 사용 : 는 다음과 같습니다 .

#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;
    }
}

소프트웨어 및 avrs 타이머를 사용하여 PWM을 시뮬레이션 할 수도 있습니다. lufa 라이브러리에서이라는 예제를 찾을 수 있습니다 LEDNotifier.c.

내 결론 : 5V에서 LED를 구동하는 것이 가능합니다.

장점 : 저항이 필요 없습니다. 약간의 에너지 절약 (~ 50 %)

단점 : 구성 요소에 스트레스가 있는지, 수명이 단축되는지 모르겠습니다.

스탠포드 (Stanford)에서이 실험을 수행하고 그의 사이트에 정보를 게시 한 사람이 있습니다 .


2
이것은 좋은 생각처럼 보이지 않습니다. 아주 오랫동안 사용하지 않더라도 컨트롤러에서 정격보다 더 많은 전류를 공급할 수 있습니다.
Scott Seidman

말했듯이 이것은 문서화되지 않았습니다. Arduino UNO 출력 IO는 약 40ma-50ma를 구동 할 수 있습니다. 그것은 일정하다. 더 많은 전류로 매우 짧은 펄스를 확실히 처리 할 수 ​​있습니다. Wikipedia를 살펴보십시오 .
Gaspar de Elias

Arduino 환경에서는 analogWrite()해당 핀에서 PWM을 더 쉽게 얻을 수 있습니다 . 이것이 좋은 아이디어인지는 확실하지 않지만 적어도 IR LED의 경우 데이터 시트가 듀티 사이클 100 % 미만에서 훨씬 더 높은 피크 전류를 허용하는 것이 일반적입니다.
microtherion

전류가 증가함에 따라 LED 효율이 낮아지기 때문에 저항 기반 솔루션에 비해 에너지 절약이 부정적 이라고 확신 합니다.
Dmitry Grigoryev가
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.