RGB LED Strip 을 MOSFET으로 제어하기

웨어러블 프로젝트나 차량, 취미용품의 조명용으로 많이 사용되는 – 띠 형태의 LED Strip 입니다. 그 중에서도 풀 컬러를 표현할 수 있는 것이 RGB LED Strip 입니다. 사용법 관련된 해외 자료를 번역 했습니다.

RGB LED Strip으로 검색하면 판매하는 곳은 쉽게 찾을 수 있고, 보통 m 단위로 판매합니다. 1m 에 10 개 안팎의 LED 모듈들이 연달아 달려있고, 이걸 하나씩 떼어내서 사용할 수 있습니다. 방수 처리가 되어 있는 strip도 있으니 목적에 맞게 구매하시면 됩니다.

Adafruit 사이트에서 판매중인 RGB LED Strip 의 경우 스펙은 다음과 같습니다.

  • 10.5mm (0.41″) wide, 3mm (0.12″) thick, 100mm (3.95″) long per segment
  • Clear waterproof molded
  • 3M adhesive strip on back
  • Maximum 12V @ 60mA draw per strip segment
  • 3 common-anode RGB LEDs per segment
  • LED wavelengths: 630nm/530nm/475nm
  • No microcontroller or chip controller (‘analog’ only!)
  • (We’re working on getting an English datasheet from the manufacturer!)

LED Strip을 사용할 때 가장 중요한 것은 파워 공급!! 보통 12V 전원이 필요합니다. 링크의 제품과 같은 어댑터를 통해 파워를 공급해주면 됩니다. 어댑터는 LED strip 길이에 따라 1A 이상은 필요한데, 가급적 충분한 전원을 공급할 수 있는 어댑터를 준비하는게 좋겠습니다. 12V 어댑터는 모터 등을 사용할 때도 종종 쓰이므로 하나씩 갖춰두시길 권장합니다.

pl607071-12v_4a_ac_dc_ce_rohs

전류 소모량

LED Strip의 각 섹션(모듈)들은 3개의 LED – Red, Green, Blue 를 가지고 있습니다. 이 LED 들의 밝기를 조절해서 풀 컬러를 표현합니다.

그리고 12V를 공급할 때 각각의 RGB LED 들은 최대 약 20 mA(밀리암페어) 의 전류를 소비합니다.  그러니까 LED 섹션(모듈) 당 60 mA 를 소비하는 셈입니다. 1M 길이 strip에 10개의 섹션(모듈)이 달려있다고 하면, 각 섹션 당 최대 60 mAh 를 소비하므로 전체 소비량은 60×10 = 600 mA (=0.6 A) 입니다.

아두이노의 PWM 신호를 이용해서 RGB LED 들의 밝기를 조절하게 되는데, 밝기를 낮출 경우 전류 소비량은 더 작아지겠죠.

연결 방법

방수가 된 LED Strip 의 경우 LED 섹션들 끝이 막으로 덮여 있을 겁니다. 적당한 길이의 LED strip 을 분리해 낸 뒤, 전원을 공급할 한 쪽 끝의 막을 제거해줘야 합니다.

led_strips_astripcut_t

여기에 전원선을 연결해주고 납땜 한 뒤, 압축 튜브 (heat shrink tube) 등으로 다시 처리해주면 됩니다.

led_strips_wires_t

아두이노 연결 방법

LED로 컬러를 표현하거나 on/off 하기 위해선 LED에 공급되는 12V 전원을 제어해줘야 합니다. 이런 역할을 하는게 트랜지스터입니다.

LED가 소비하는 전류량이 상당하므로 트랜지스터도 그에 상응하는걸 써야 합니다. 트랜지스터의 종류별 허용 전류, 전압에 대한 내용은 링크를 참고하세요.

쉽고 단순하게 N-channel MOSFETs, STP16NF06 정도를 사용하면 된다고 합니다. TIP120 을 사용할 수도 있는데 MOSFET 보다 전압 손실(voltage loss)가 있다고 하니 참고하세요.

아두이노에 연결을 할 때, 12V (혹은 9V) 전원을 LED strip 으로 +12V 핀으로 입력하고 R, G, B 핀을 트랜지스터 거쳐 아두이노로 들어가도록 연결해주면 됩니다.

N-Channel MOSFET 의 경우 Gate(아두이노 제어 신호) 가 1번 핀, Drain(LED strip의 R, G, B) 이 2번 핀, Source(아두이노 GND) 가 3번 핀입니다. 최종 연결한 모습은 아래와 같습니다.

led_strips_ledstripfet

NPN transistor 인 TIP120 의 경우 Base(아두이노 제어 신호) 가 1번 핀, Collector(LED strip의 R, G, B) 가 2번 핀, Emitter(아두이노 GND) 가 3번 핀입니다. N-Channel MOSFET 의 경우와 연결 방법이 같은데 아두이노와 TIP120 사이에 100~220옴 저항이 들어갑니다.

led_strips_ledstripbjt

LED 제어 방법 (스케치)

앞서 아두이노와 트랜지스터를 연결할 때 제어신호를 주는 핀을 3, 5, 6 번 핀을 사용했습니다. 3, 5, 6번 핀 모두 PWM 핀이기 때문에 일부러 이걸 쓴겁니다.

아두이노에서 PWM 핀에 analogWrite() 함수로 PWM 신호(펄스 폭 변조 신호)를 주면 0~255 까지 256 단계로 RGB LED의 밝기를 조절할 수 있습니다. 물론 일반 디지털 핀을 이용해 digitalWrite() 로 on/off 신호를 줘서 단순히 RGB LED를 on/off 할 수도 있습니다.

예제를 보시죠. 제어는 간단합니다.

#define REDPIN 5
#define GREENPIN 6
#define BLUEPIN 3
 
void setup() {
  pinMode(REDPIN, OUTPUT);
  pinMode(GREENPIN, OUTPUT);
  pinMode(BLUEPIN, OUTPUT);
}
 
void loop() {
  analogWrite(REDPIN, 110);   // use 0~255
  analogWrite(BLUEPIN, 0);
  analogWrite(GREENPIN, 255);
  delay(10);
}

RGB LED 를 제어하는 핀에 analogWrite() 함수로 밝기 단계를 조절해주면 됩니다. 값은 0~255를 사용하세요.

RGB LED 각각을 제어하기

30led Strip_01

앞서서 소개한 내용은 LED Strip 전체를 하나의 색으로 제어할 때 사용하는 방법입니다. 그게 아니라 LED Strip의 각 섹션(모듈, LED)을 개별적으로 제어하고 싶다면?? 그렇다면 아예 다른 방법을 사용해야 합니다.

아두이노 같은 마이크로 컨트롤러가  보내준 신호에 따라 LED 각각이 제어 가능하도록 설계된 LED Strip을 구매해야하고 아두이노에서도 그에 맞는 전용 라이브러리를 사용해야 합니다. 전원은 5V를 넣어줘야 합니다.

3종류 정도가 자주 사용되는듯 합니다. 종류별로 사용되는 아두이노 라이브러리가 틀리기 때문에 해당 사용법을 충분히 확인하고 구매하셔야 합니다.

LPD8806 

WS2801

WS2812B

참고자료

You may also like...