그라운드 임베디드 유튜브 구독

노트 / MCU

PWM 기초: 듀티비로 평균 전압 만들기

GROUND EMBEDDED · 정리 노트PWM 기초듀티비로 전압 만들기평균 30%D1주기

MCU의 디지털 핀은 HIGH와 LOW, 두 가지 값만 낼 수 있습니다. 그런데도 LED 밝기나 모터 속도를 부드럽게 조절할 수 있는 이유는 PWM 덕분입니다. PWM은 핀을 아주 빠르게 켜고 끄면서 켜져 있는 시간의 비율을 바꾸는 방법입니다.

듀티비

한 주기 중 HIGH인 시간의 비율을 듀티비라고 합니다.

  • 평균 전압 = 듀티비 × 전원 전압
  • 3.3 V에서 듀티비 25%면 평균 0.825 V
  • 3.3 V에서 듀티비 50%면 평균 1.65 V

LED나 모터는 빠른 깜빡임을 따라가지 못하고 평균값에 반응하기 때문에, 듀티비만 바꿔도 밝기와 속도가 바뀝니다.

주파수는 얼마로 할까

대상 흔히 쓰는 주파수 이유
LED 수백 Hz 이상 깜빡임이 눈에 보이지 않도록
DC 모터, BLDC 인버터 약 20 kHz 사람 귀에 들리는 소음 대역을 피하려고
서보 모터 50 Hz 서보 규격이 20 ms 주기

주파수를 높이면 소음과 전류 리플이 줄지만, 스위칭 손실이 늘어납니다.

타이머로 계산하기

PWM은 타이머로 만듭니다. STM32 기준으로 세 값이 주기와 듀티비를 정합니다.

  • PSC: 타이머 클럭을 나누는 값
  • ARR: 카운터가 어디까지 세는지. 주기를 정합니다
  • CCR: 어디까지 HIGH를 유지할지. 듀티비를 정합니다

타이머 클럭이 72 MHz일 때의 예시입니다.

PSC = 71   ->  72 MHz / (71 + 1)  = 1 MHz  (카운터 1틱 = 1 µs)
ARR = 999  ->  1 MHz / (999 + 1)  = 1 kHz  (주기 1 ms)
CCR = 250  ->  250 / (999 + 1)    = 25%    (듀티비)

ARR을 크게 잡을수록 듀티비를 더 잘게 나눌 수 있습니다. ARR이 999면 0.1% 단위로 조절할 수 있습니다.