이번 시간은 PWM(펄스 폭 변조) 를 이용하여 LED의 불의 밝기를 변화시키는 제어를 해보겠습니다. PWM 제어는 LED 뿐 아니라 다양한 곳에 활용되므로 PWM이 어떤 원리인지 잘 숙지해야 합니다. 이번 시간 내용은 어렵기 때문에 이해 안 되는 친구들은 꼭 질문을 해주세요
아두이노는 컴퓨터라고 했죠 아두이노는 전원을 5V로 공급해주는 컴퓨터입니다. 그래서 컴퓨터가 1이라는 값을 주면 5V가 주어지고 0이라는 값을 주면 0V가 주어지는 것입니다. 그래서 아두이노는 5V랑 0V만 줄 수 있는 것이지요.
그런데 우리가 필요에 의해서 0~5V 사이의 전압 예를들면 2.5V를 만들고 싶다면 어떻게 해야할까요? 방법이 있습니다. 바로 PWM을 이용하면 되는데요 5V와 0V를 주는 주기를 한 주기 안에서 비율을 조정해주면 되는데요 이것이 PWM입니다.
그림의 그래프는 PWM을 만드는 펄스 신호를 나타내고 있는데요 아두이노는 8비트 컴퓨터이기 때문에 0V에서 5V를 0에서 255(2의 8제곱)사이의 값으로 나눌 수 있습니다.
그래서!!
0~255값 중 0을 입력하면 0V , 255값을 입력하면 5V , 127을 입력하면 약2.5V를 만들 수 있는 것입니다.
이 그래프를 좀 더 쉽게 이해하기 위해서 다음 원판의 예시를 설명드리겠습니다.
쉬운 예를 들어볼께요 회전할 수 있는 원판에 컴퓨터가 1이라는 신호 즉, 5V를 주면 전체가 검정색이되고 0이라는 신호 즉, 0V를 주면 전체가 하얀색이 된다고 해봅시다. 이 원을 채우는 색깔을 1주기라고 할께요 그런데 2.5V를 만들고 싶다면 어떻게 하면 될까요?
컴퓨터는 0과1 밖에 모르기 때문에 0V와 5V만 출력할 수 있습니다. 그런데 원판의 절반을 검정색, 원판의 나머지 절반을 흰색으로 칠하면 1주기 안에 50%는 1이 50%는 0을 준다는 것이죠 그럼 이 원판을 빠르게 돌리면 무슨 색으로 보일까요? 네 검정색과 흰색의 중간색인 회색이 보이지 않을까요? 실제로 2.5V가 출력되는 것은 아니지만 마치 2.5V가 출력되는 것 같은 효과를 줄 수 있는 것입니다. (PWM서 127값을 주면 2.5V)
만약 3.75V를 주고 싶다면 원판의 3/4를 검정색으로 칠하면 되겠죠? 이것이 PWM의 원리입니다. 바로 이것이 위에 있는 펄스신호 그래프가 의미하는 내용입니다. (PWM서 200정도 값을 주면 약 3.75V)
그래서 이 PWM을 이용하면 LED의 밝기를 조절할 수도 있고 모터의 회전속도도 부드럽게 제어할 수 있습니다. 마치 디지털을 아날로그처럼 변화시켜 사용할 수 있는 것이죠!!
아두이노에서는 PWM 제어를 할 수 있는 핀을 정해 놓았습니다
아두이노 보드를 보시면 핀 번호 앞에 물결(~)이 있는 핀이 있습니다.
바로 3번, 5번, 6번, 9번, 10번, 11번 핀이죠 이 핀들만 PWM 제어를 할 수 있습니다.
유튜브에 자세한 설명영상이 있네요 참고해보세요^^
영상내용이 어려울 수 있습니다. 다 이해하지 않으셔도 됩니다.
LED의 불이 서서히 밝아지다가 서서히 어두워지는 것은 크리스마스 트리에 달린 전구들을 생각하면 될 것 같습니다. LED로 이런 효과를 낼 수 있는 방법은 없을까요? 어떻게 코딩하면 될까요?
LED는 0이면 꺼지고 1이면 최대밝기로 켜집니다 그러나 서서히 변하는 것은 PWM 핀을 이용하면 할 수 있을 것입니다. 적절한 코드만 짤 수 있다면 할 수 있을 것 같지요? 생각해봅시다