Hyokyun Yim bio photo

Hyokyun Yim

Koreatech Computer Science Engineering undergraduate 4 grade.

Facebook Github

Cortex-M4 의 PWM에 대해 알아보자

Overview

PWM(Pulse Width Modulation)

PWM 이란?

  • 과거에는 마이크로프로세서 내에 DAC를 넣질 못했음(크기가 커서), 그러나 최근에 DAC를 내부에 탑재
  • STM32F4 에도 역시 2개의 DAC 채널이 들어가 있음
  • 하지만 DAC의 크기, 비용 때문에 많이 사용하지는 못하고, PWM을 사용하여 모터, 액츄에이터 등을 작동 시킨다.
  • PWM은 쉽게말해서 전압을 생성하는 것이다.

  • PWM이란 평균전압을 내가 조절하는것 -> 일정한 전압을 시간을 바꿔가며 조절
  • Pulse(신호) ,Width(폭), Modulation(변조) -> 펄스 폭 변조

PWM의 전제 조건!!

  • 일정한 전압원을 가지고 출력전압을 제어
  • 모체 주파수가 충분히 클것 (약 10KHZ 이상) -> 이 말은 즉 주기가 매우 짧은것 , 1/주파수 = 주기
  • T가 일정할 것 , 만약 주기가 일정하지 않으면 PWM은 사용불가 But GPIO는 사용가능

PWM의 단점

  • 전압이 일정하게 못들어가기 때문에 사람이 느끼지 못할만큼 T를 빠르게 함 -> 0.1 마이크로세크 동안 키고, 0.9 마이크로세크동안 끄고

PWM Duty

PWM은 그럼 어떻게 만드는가?

  1. 물리적인 신호 삼각파를 만든다. 사각파는 만들기가 매우 어려움
  2. 비교기에 삼각파 신호를 넣는다. Vin이 Vref 보다 작으면 0 , 크면 Vref 로 맞춘다.
  3. 이런 과정을 거쳐 사각파를 만듬

PWM 사용방법

  1. TIM에 클럭을 인가
  2. GPIO에 클럭인가
  3. GPIO의 Alternative Function(AF configuration) 수행 -> GPIO가 아닌 다른 기능 사용가능
  4. GPIO AF 설정
  5. Prescaler를 이용해서 모체주파수 설정 -> T값을 설정
  6. PWM 모드를 설정
  7. Output Compare Mode를 설정 (Duty Cycle 등 ..)
  8. 타이머 Enable

Reference: Sang Youn Kim - Micro processor , Korea university of technology & education