본문으로 바로가기

  아두이노(Arduino) 기초 아날로그 입출력 PWM 1편  


애드라이프의 아두이노 모든 포스팅 리스트를 보고 싶으신 분은 공지 읽어주세요.




안녕하세요!! 애드라이프 입니다.!!!!!

디지털 포트와 시리얼 통신 포스팅에 이어 이번엔 아날로그 입출력에 대해 알아보는 시간을 갖겠습니다.


디지털 포트의 사용과 시리얼통신 기능이 궁금하신 분은 아래 링크 참고부탁드려요. ▼


[아두이노/아두이노 기초] - 아두이노(Arduino) 기초 IN/OUT 컨트롤 스위치와 LED 제어 1편

[아두이노/아두이노 기초] - 아두이노(Arduino) 기초 IN/OUT 컨트롤 스위치와 LED 제어 2편

[아두이노/아두이노 기초] - 아두이노(Arduino) 기초 시리얼(RS232) 통신 1편

[아두이노/아두이노 기초] - 아두이노(Arduino) 기초 시리얼(RS232) 통신 2편



첫번째 시간으로 PWM기능에 대해서 설명 드리겠습니다.

처음 듣는 분도 계실 것 같아서 간단하게 설명 드릴께요.


P.W.M(Puls Width Modulation) 즉, 펄스 폭 변조라고 할 수 있죠. 

펄스신호에 폭을 변화시켜서 이용하는 기능인데요. 5V와 0V를 사각파 형태로 

일정 비율(Duty)과 주기(Period)를 가지고 반복하는 형태를 PWM신호라고 합니다.


그림으로 한번 보시죠.

아두이노 PWM Duty


옆에 써져있는 %를 주목합니다. %는 비율(Duty)를 말합니다. 1주기(Period)동안 5V출력 상태의 비율을 뜻하죠

0%는 5v의 상태가 0% 이므로 임펄스(순간적으로 튀는 신호) 상태의 출력을 나타내며

25%는 5v상태가 25% 0v상태가 75%인 상태를 1주기로 반복하는 형태죠.



우리가 조절해주는 부분이 바로 비율(Duty)입니다. 

여기서 알고 가야 할 사실 첫번째!

아두이노 우노

디지털 포트 중에서도 일반포트와 달리 ~표시가 있는 포트만 PWM기능을 쓸 수 있는 포트입니다.

회로를 구성 할때 헷갈리지 않도록 숙지해 놓는게 좋습니다.


이제 기본적인 예제로 이해도를 높여 보도록하죠.


[ 목적 ] PWM기능을 활용하여 LED 밝기 조정하기.

우선 회로를 살펴보도록 하죠. ▼

아두이노 PWM을 사용한 LED제어 회로

디지털 포트 ~9번에 LED를 연결한 모습니다.

이번에도 회로는 참 간단하죠?


바로 프로그램도 함께 살펴보시죠.

int LED = 9;            //PWM기능이 가능한 디지털 포트 9번 지정
int BrightValue = 0;    //밝기값(duty)을 저장할 변수
int Deviation = 5;      //밝기변화 정도를 저장할 변수
 
void setup() {
  pinMode(LED,OUTPUT);  // 9번핀 OUTPUT으로 기능 설정
}
 
void loop() {
  analogWrite(LED,BrightValue); //초기 LED 밝기값(duty)를 0으로 만듭니다.
  BrightValue = BrightValue + Deviation; //초기 LED밝기값(duty)에 +5씩 더합니다.
 
  if(BrightValue==0||BrightValue==255)  //밝기값(duty)이 0이나 255일 경우 Deviation의 부호를 바꿉니다.
  {
    Deviation=-Deviation;
  }
  delay(50);                      //변화는 50ms마다 한번씩나타납니다.
}



LED의 밝기를 어떻게 조절되는 걸까? 라는 의문이 드시는 분들도 있으실 겁니다.

원리는 ON/OFF를 깜박거리는 1주기동안 켜져있는 시간의 비율이 많으면 밝아지고

적으면 어두어지는 원리를 이용한 것입니다.


예를 들어 1초에 100번 깜박거리는 LED가있는데

하나는 1번깜박거릴때 켜져있는 비율이 10 꺼져있는 시간이 90이고

또 하나는 1번깜박거릴때 켜저있는 시간이 90 꺼져있는 시간이 10이라면


어느쪽이 더 밝을 까요?

당연히 켜져있는 시간의 비율이 더 많은 LED쪽이 밝겠죠?

이런 원리를 이용한게 PWM으로 LED의 밝기를 조절하는 것이죠!!


이제 실제로 구현되는 모습을 확인 하면서 포스팅을 끝내겠습니다.


파란색 LED를 디지털 포트 ~9번에 연결하여 사용하였습니다. ▲


지금까지 아두이노(Arduino) 기초 아날로그 입출력 PWM(LED 밝기조정) 1편 포스팅이였습니다.

계속해서 도움되는 포스팅으로 찾아뵙겠습니다.

by 애드라이프

ㅓㅈ