임베디드 면접 용어 사전
주변장치·타이머

PWM

일정 주기 안에서 High 비율(듀티)을 바꿔 평균 전력을 조절하는 신호. PSC·ARR·CCR로 설정한다.

디지털 출력의 켜짐 비율을 조절해 아날로그처럼 쓰는 기법 (Pulse Width Modulation).

원리

주기 T 안에서 High인 시간의 비율 = 듀티 사이클

듀티 25%  ┌───┐___┌───┐___     평균 전압 = VCC × 0.25
듀티 50%  ┌───┐__ ┌───┐__     평균 전압 = VCC × 0.50
듀티 75%  ┌───┐_  ┌───┐_     평균 전압 = VCC × 0.75

DAC 없이 아날로그 출력을 흉내낸다.

왜 평균이 통하는가 — 부하가 필터 역할

  • LED — : 사람 눈의 잔상 (수백 Hz 이상이면 연속으로 보인다)
  • 모터 — : 회전 관성 (전기적 시정수보다 기계적 반응이 느리다)
  • 히터 — : 열 용량
  • 스피커 — : 스피커 코일의 인덕턴스 + 공기

부하 자체가 저역 통과 필터로 동작해 평균값에 반응한다. 필요하면 RC 필터를 추가해 진짜 아날로그 전압을 만들 수도 있다(간이 DAC).

왜 선형 조절보다 나은가

  • 저항으로 전압을 낮추는 방식

  • 남는 전력이 열로 소모된다. 효율이 나쁘다

  • PWM

  • 트랜지스터가 완전히 켜지거나 완전히 꺼진다

  • 켜졌을 때는 전압 강하가 거의 0, 꺼졌을 때는 전류가 0

  • 이론상 손실이 없다. 실제로도 90% 이상 효율

스위칭 방식이 선형 방식보다 효율적인 이유이며, SMPS 전원장치도 같은 원리다.

주파수 선택 — 용도마다 다르다

  • LED 조광 — : 100Hz 이상 (깜빡임 방지). 카메라 촬영이면 1kHz 이상
    • 낮으면 영상에 줄무늬가 생긴다
  • DC 모터 — : 1~20kHz. 가청 주파수(20Hz~20kHz)를 피하면 조용하다
    • 20kHz 이상이면 소음이 안 들린다
  • 서보 모터 — : 50Hz 고정 (규격). 펄스 폭 1~2ms로 각도 제어
  • 스위칭 전원 : 100kHz~수 MHz
  • 히터 — : 1Hz 이하도 가능 (열 관성이 크다)

모터에서 가청 주파수를 쓰면 "삐-" 하는 소리가 난다. 20kHz 이상으로 올리면 사라지지만 스위칭 손실이 늘어난다.

분해능과 주파수의 트레이드오프

타이머 클럭 = 84MHz

  • 주파수 20kHz 원하면 → ARR = 84MHz / 20kHz - 1 = 4199

  • 분해능 4200단계 (약 12비트) ✓ 충분

  • 주파수 1MHz 원하면 → ARR = 83

  • 분해능 84단계 (약 6.4비트) ✗ 거칠다

주파수를 올리면 분해능이 떨어진다. 클럭이 정해져 있기 때문이다. 둘 다 필요하면 더 빠른 타이머 클럭이 필요하다.

서보 모터 제어 예

주기 20ms (50Hz), 펄스 폭으로 각도 결정 1.0ms → 0도 1.5ms → 90도 (중립) 2.0ms → 180도

타이머 클럭 84MHz, PSC = 83 → 1MHz (1μs 단위) ARR = 19999 → 20ms 주기

  • CCR = 1500 — → 1.5ms 펄스 = 90도

PSC로 시간 단위를 만들고, ARR로 주기를, CCR로 폭을 정한다는 구조가 명확히 드러나는 예다.

데드타임 — 모터 드라이버에서 필수

  • H-브리지의 상단·하단 스위치가 동시에 켜지면 → 전원 단락(shoot-through)
  • 순간적으로 큰 전류 → 소자 파괴

한쪽을 끄고 다른 쪽을 켜기까지 짧은 지연(데드타임)을 둔다

sBreakDeadTimeConfig.DeadTime = 100;   // 하드웨어가 자동 삽입

고급 타이머(TIM1, TIM8)가 상보 출력과 데드타임을 하드웨어로 제공한다. 소프트웨어로 만들면 지터 때문에 위험하다.

센터 얼라인 모드

에지 얼라인 : 카운터가 0→ARR 반복. 펄스가 한쪽에 몰린다 센터 얼라인 : 0→ARR→0 왕복. 펄스가 주기 중앙에 위치

  • 3상 모터 제어에서 고조파가 줄어 진동·소음이 감소

BLDC·PMSM 모터 제어에서 표준적으로 쓴다.

실무 주의점

✅ 듀티 0%와 100%가 제대로 나오는지 확인 (CCR=0, CCR>ARR) ✅ 듀티 변경은 프리로드(ARPE/OCPE)를 켜서 주기 경계에서 반영

  • 안 그러면 파형이 순간적으로 깨진다 ✅ 여러 채널의 위상을 맞추려면 같은 타이머 사용 ✅ 모터 정지 시 PWM을 끄는 것과 듀티 0은 다르다

  • (브레이크 여부가 달라진다)

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 주변장치·타이머 — GPIO(push-pull/open-drain)·PWM(PSC/ARR/CCR)·워치독·ADC·클럭