본문 바로가기

아두이노(arduino)

아두이노 PWM이란? 사용방법 예제

PWM이란?

 

PWM(펄스 폭 변조, Pulse Width Modulation)은 디지털 신호를 아날로그 신호로 변환하는 방법 중 하나입니다. PWM은 일정한 주기를 가지고 있는 디지털 신호에서, 펄스의 폭을 조절하여 아날로그 신호와 유사한 신호를 만들어냅니다.

 

아날로그 신호와 디지털신호를 좀더 알아보고 싶으신 분은 아래 링크로 들어가시면 됩니다.

2022.12.15 - [아두이노(arduino)] - 아두이노 인터페이스 #2- 각 부위 기능과 명칭 (입력 출력 핀)

 

아두이노 인터페이스 #2- 각 부위 기능과 명칭 (입력 출력 핀)

아날로그와 디지털 알고 갑시다! 일상생활에 일어나는 일로 예를 들어보겠습니다. 아날로그 입력 : 온도의 변화 / 자전거의 페달을 밟는 강도 아날로그 출력 : 조명이 점점 밝아짐 / 소리가 점차

ronco.tistory.com



PWM은 주로 아날로그 출력이 필요한 시스템에서 사용됩니다. 예를 들어, 모터를 제어하거나 LED 밝기를 조절하는 등의 작업에 사용됩니다. PWM 신호는 디지털 신호와 달리 연속적인 아날로그 신호로 해석되기 때문에, 모터나 LED의 속도 또는 밝기와 같은 연속적인 값을 제어할 수 있습니다.

PWM 신호는 일정한 주기의 디지털 신호에서 펄스 폭을 변경하여 만들어지므로, 주파수와 펄스 폭을 적절히 조절하여 다양한 출력을 만들어낼 수 있습니다. PWM 신호는 보통 아날로그 출력을 위해 사용되지만, 디지털 출력에서도 사용될 수 있습니다.

 

 

 

<요약>
PWM은 디지털 신호를 이용하여 아날로그 신호와 유사한 값을 만들어내는 방법으로, 주파수와 펄스 폭을 조절하여 다양한 출력을 만들어냅니다. 모터나 LED 밝기 등을 제어할 때 사용됩니다.

 

 

 

 

 

PWM을 사용하는 곳

 

소형 전자 제품: 마이크로컨트롤러를 이용한 소형 전자 제품에서 PWM이 사용됩니다. 예를 들어, 디지털 카메라의 셔터 제어, 스피커의 음량 조절, 진동 모터의 진동 강도 조절 등에 활용됩니다.

 

 

 

 

 

 



태양광 발전: 태양광 패널에서 PWM은 최대 전력점 추적기(Maximum Power Point Tracking, MPPT)에서 사용됩니다. 이를 통해 태양광 패널의 전력 효율을 높일 수 있습니다.

 

 

 

 

 

 

 



히터 제어: PWM은 히터를 제어하는데에도 사용됩니다. PWM 제어를 사용하면 히터의 발열을 조절할 수 있어, 효율적인 에너지 사용과 보다 정확한 온도 제어가 가능해집니다.

 

 

 

 



음향 장비: PWM 신호를 이용하여 디지털 신호를 아날로그 신호로 변환하는 디지털-아날로그 변환(Digital-to-Analog Conversion, DAC)이 가능합니다. 이를 활용하여 음향 장비의 출력을 제어할 수 있습니다.

 

 

 

 

 



자동차 제어: 자동차 제어 시스템에서 PWM은 차량의 스피드 제어, 브레이크 제어, 스티어링 제어 등에 사용됩니다. 특히, 모터 제어에 많이 사용됩니다.

 

 

 

 

 

 

 

 

 

 

PWM을 이용한 아두이노 예제

 

 

 

int ledPin = 9;  // LED가 연결된 핀 번호
int brightness = 0;  // LED 밝기 값

void setup() {
  pinMode(ledPin, OUTPUT);  // LED가 출력으로 사용되도록 설정

Serial.begin(9600);
}

void loop() {
  // LED 밝기 증가
  for (brightness = 0; brightness < 255; brightness++) {
    analogWrite(ledPin, brightness);  // PWM 출력을 이용하여 LED 밝기 조절
    delay(10);  // 10ms 지연

   Serial.println(brightness); // 시리얼모니터로 led값 확인
  }

  // LED 밝기 감소
  for (brightness = 255; brightness >= 0; brightness--) {
    analogWrite(ledPin, brightness);  // PWM 출력을 이용하여 LED 밝기 조절
    delay(10);  // 10ms 지연

   Serial.println(brightness);// 시리얼모니터로 led값 확인
  }
}

 

 

 

 

 

 

 

그래픽이다 보니 led의 밝기가 제대로 어두워졌다 밝아졌다 하는점이 잘 보이지 않은데 시리얼 모니터 부분을 보면 0에서 255까지 밝아지고 다시 0으로 점점내려가며 어두워지는거 확인할 수 있습니다.

 

analogWrite() 함수는 PWM 출력을 생성하기 위해 사용됩니다. 함수의 첫 번째 인자는 PWM 출력을 사용할 핀 번호이고, 두 번째 인자는 PWM 신호의 폭을 나타내는 0부터 255까지의 값을 가집니다. 값이 클수록 출력이 강해지고, 값이 작을수록 출력이 약해집니다.