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은 그럼 어떻게 만드는가?
- 물리적인 신호 삼각파를 만든다. 사각파는 만들기가 매우 어려움
- 비교기에 삼각파 신호를 넣는다. Vin이 Vref 보다 작으면 0 , 크면 Vref 로 맞춘다.
- 이런 과정을 거쳐 사각파를 만듬
PWM 사용방법
- TIM에 클럭을 인가
- GPIO에 클럭인가
- GPIO의 Alternative Function(AF configuration) 수행 -> GPIO가 아닌 다른 기능 사용가능
- GPIO AF 설정
- Prescaler를 이용해서 모체주파수 설정 -> T값을 설정
- PWM 모드를 설정
- Output Compare Mode를 설정 (Duty Cycle 등 ..)
- 타이머 Enable
Reference: Sang Youn Kim - Micro processor , Korea university of technology & education