안녕하세요. 오늘은 PWM(Pulse Width Modulation)에 대해 알아보고자 합니다.

이러한 기본 이론은 아두이노 뿐만 아니라 다른 곳에서도 사용될 수 있는 개념이므로 잘 알아두시는게 좋습니다.

PWM은 디지털 신호를 아날로그적인 의미로 해석하는 방법이라고 볼 수 있습니다. 우리가 알고있는 디지털 신호는 0(LOW)또는 1(HIGH)의 값만을 가지고 있습니다.
그런데 이런 이진값을 가지고 어떻게 아날로그 값처럼 보이게 할 수 있을까요?

답은 시간(주기)에 있습니다. 이를 전문용어(?)로 Duty Cycle이라고 부는데요, 한마디로 1을 유지하는 시간과 0을 유지하는 시간의 비율이라고 생각하시면 됩니다.

그림 1 : Pulse Width Modulation
[그림 1 : Pulse Width Modulation]

아두이노에서 analogWrite()함수를 사용할 때에 0~255사이의 정수 인자를 넣을 수 있습니다.

그림 1에서 0% Duty Cycle은 analogWrite(0)을 사용한 결과입니다. 0%라는 것은 1의 비율이 0%임을 의미합니다. 그래서 한 주기 동안 1이 한번도 나오지 않죠.
참고로 그림 1에서 초록색 수직선이 하나의 주기가 됩니다.

25% Duty Cycle은 analogWrite(64)를 사용한 결과가 됩니다. analogWrite()의 인자 범위가 최대 255이기 때문에 64 / 255가 대략 25가 나오게 됩니다. 여기에서는 1의 비율이 25%에 달합니다. 실제로 그림 1을 보면 1와 0의 비율이 25 : 75라는 것을 알 수 있습니다.

나머지 Duty Cycle도 마찬가지 원리로 설명이 가능합니다.
이렇게 한 주기동안 1과 0의 비율을 이용해서 디지털 신호를 마치 아날로그 신호인 것처럼 여러 단계의 값으로 사용할 수 있습니다.
PWM에 대한 이론적인 배경은 이것으로 끝내고 다음 시간에는 오늘 배운 이론을 바탕으로 LED를 점점 밝게, 점점 어둡게 하는 방법을 배워보겠습니다.

+ Recent posts