아두이노프로세싱 프로그래밍

아두이노 PWM 신호를 이용한 Transistor에 의한 LED Fading

coding art 2019. 10. 19. 20:37
728x90

아두이노에 릴레이를 사용할 경우에도 최종 출력단에서는 아두이노 전원 전압과는 별개의 독립적인 전압을 사용할 수 있었다. 물론 아두이노 입력 전압은 Vin 에서나 또는 DC 잭에서 15V 까지 가능하지만 입력 후 레귤레이터를 통과하면서 다음 그림에서처럼 아두이노 보드 내에서는 최대 가용 전압이 5V이며 필요 시 3.3V를 사용할 수 있다.

 

따라서 모든 아두이노 LED on OFF 에제에서는 LED + 전류제한 저항 양단에 5.0V 3.3V를 가하여 LEDON OFF 시키는 것이 가능하다. LED ON 되기 위해서는 1.8V 이상이면 HIGH 로서 점등이 되며 1.5V 이하면 LOW 상태로서 거의 OFF 된다고 보면 된다.

 

하지만 자동차에서처럼 12V 를 사용한다면 LED + 전류제한 저항 회로의 저항 값을 전압에 맞춰서 설정할 필요가 있다. 아울러 사용 전압이 아두이노의 5.0V 와는 다르므로 릴레이나 또는 Transistor를 사용하여 스위칭을 해 줄 필요가 있을 것이다. 릴레이나 TR에서 스위칭이란 간접적으로 신호를 입력함에 따라 별도의 전압회로가 ON 또는 OFF 가 되도록 하는 것이다. 릴레이는 내장되어 있는 마그네틱 코일 즉 솔레노이드를 활성화 시켜 접점 스위치를 닫았다 열었다 함으로서 스위칭을 하는 한편 TR에서는 베이스에 순방향 전류나 전압을 가해주어 스위칭이 가능하며 더 나아가 입력 전류 전압 값이 변동되면 컬렉터 전류도 증폭되어 변동이 가능하다.

 

지난번 릴레이 회로에서는 680옴을 사용하였는데 생각 보다 어두웠으므로 이번에는 500옴을 사용해 보도록 한다.

 

 

 

 

 

아두이노로부터의 신호 입력을 받아 스위칭 작용을 해 줄 NPN 령 트랜지스터 C1815Y 의 배선을 알아보자. 아두이노 디지털 신호 핀과 연결하는 리드선이 3번 베이스(base). 베이스에 문턱 전압(0.5V) 이상의 입력 전압이 주어지면 2번 컬렉터(Collector)3번 에미터(Emitter) 사이가 스위칭이 이루어지며 여기서는 에미터와 접지(GND)사이에 전류제한 저항과 LED를 직렬 배선하기로 한다. LED 배선의 접지와 아두이노 접지를 연결하여 일치하게하자.

 

 

 

아두이노 예제의 01.Basics Fade를 불러내어 led 값을 9에서 3으로 fadeAmount5에서 1로 바꾸어 실행 시킨 후 Fade 효과를 관찰해 보자. 아두이노 디지털 핀 3번은 아두이노의 PWM 핀이다. 즉 일정 시간을 기준으로 몇 % 의 듀티를 주느냐는 것이다.

 

아래의 동영상에서 시리얼 플로터를 관찰하면서 PWM 신호를 주는 3번 핀의 듀티 폭 변동과 LED Fade 현상을 관찰해 보기 바란다. PWM 폭이 커질수록 TR 평균입력이 커지므로 컬렉터 전류가 증가하여 밝아지는 것을 확인할 수 있을 것이다. 아울러 아주 좁은 구간에서 LED OFF 된 것처럼 보이는데 이 구간이 brightness 값이 아주 작으면 문턱전압이하일 수 있으므로 PWM 값도 작아서 TR 이 스위칭 되지 못하여 LEDOFF 된다.

 

https://youtu.be/5aWc2XFG3lw

 

//TR_led_Fade


int led = 3;           // the PWM pin the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 1;    // how many points to fade the LED by

// the setup routine runs once when you press reset:
void setup() {
  // declare pin 9 to be an output:
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // set the brightness of pin 7:
  analogWrite(led, brightness);
  //Serial.print( "brightness= ");
  Serial.print(brightness);
  int v = analogRead(A0);
  Serial.print(" ");
  Serial.println(v);
  delay(100);
  brightness = brightness + fadeAmount;

  // reverse the direction of the fading at the ends of the fade:
  if (brightness <= 0 || brightness >= 255) {
    fadeAmount = -fadeAmount;
  }
  // wait for 30 milliseconds to see the dimming effect
  delay(30);
}