본문 바로가기
임베디드SW/TC275 Lite Kit for 임베디드

PWM을 임베디드 SW 세계로 바라보자

by 바이너리 임베디드 2021. 12. 4.

PWM을 임베디드 SW 세계로 바라보자

 

PWM이란 무엇인가?



이제 MCU의 거대산맥 중 하나인 PWM을 배워보려고 합니다.
PWM은 Pulse Width Modulation의 약자로 사각 Pulse 형태의 시그널을 이야기 합니다.
사각 파형의 너비를 조정하여 쓰는 시그널입니다.
아래는 PWM 시그널 모양입니다.

PWM을 임베디드 SW 세계로 바라보자


사각 Pulse 형태가 반복되어 출력되기 때문에 Period를 가지고 있습니다.
그리고 하나의 Period 구간 안에서 시그널의 High 구간의 너비를 Period로 나눈 것이 Duty 싸이클 (%)입니다.

Duty 싸이클 (%) = High 구간 / Period 구간 * 100

흔히들 Duty라고 이야기 합니다.

그래서 우리는 이 PWM을 Period와 Duty라는 2가지 인자를 가지고 3가지 방식으로 모양을 만들어 낼 수 있습니다. Period를 고정시킨 상태에서 Duty만을 가변하여 사용하는 방법, Duty를 고정시킨 상태에서 Period를 가변하는 방법, Duty와 Period를 둘다 가변하는 방법입니다.
우리는 이모든 방법을 임베디드 세계에서 구현할수 있어야 합니다.


PWM을 임베디드 세계에서는 어떻게 사용하는가?


1) Period와 Duty가 고정인 PWM을 만들어서 주기적인 Trigger를 만드는 곳에 사용할 수 있습니다.
Trigger를 통해 Interrupt Service Routine을 만들수도 있으며, ADC 모듈에 Conversion하라는 명령을 줄수도 있습니다.


PWM을 임베디드 SW 세계로 바라보자

 

2) 임베디드 시스템안에 Switch를 제어하는데 사용할 수 있습니다.
예를 들어 전류의 양을 제어하는데 Switch를 사용하게 되면 Duty가 On 되어 있는동안 전류가 흐르고 Off되어 있는 동안 전류가 흐르지 않게 되는 방식으로 Switch 제어에 사용되게 됩니다.

3) 전압 레벨 제어를 하는데 사용할 수 있습니다.
예를 들어 DC모터를 사용하게 된다면 DC 모터가 0 ~ 5V의 전압으로 동작하게 된다고 가정해봅시다.
PWM의 Duty를 100%로 출력하게 되면 평균 전압으로 치면 5V가 되게 됩니다.
그리고 PWM의 Duty를 50%로 출력하게 되면 평균 전압이 2.5V가 되게 됩니다.
그래서 PWM의 Duty로 평균 전압을 조정할수 있게 되며 전압 레벨 제어하는 곳에 사용 할수 있게 됩니다.

PWM을 임베디드 SW 세계로 바라보자

 

PWM을 임베디드 세계에서 구현하는 방법


PWM을 구현하는 방법은 PWM 모듈안에 카운터를 동작시킵니다.
Up-Counter, Up-Down-Counter 등등 여러가지 카운터의 형태가 있는데 여기서는 Up-Counter를 예로 들겠습니다.
그리고 매치 레지스터에 내가 만들고자 하는 Duty값을 Write합니다.
그렇게 되면 카운터 증가하면 매치레지스터에 쓰여 있는 값과 매치가 되었을때가 발생하게 됩니다.
이때 동작을 Falling으로 동작 시키고 카운터가 Max가 되어 초기화가 되면 Rising으로 동작시키게 되면 아래와 같이 PWM이 만들어지게 됩니다.
이러한 동작 원리고 임베디드에서 PWM을 구현할수 있게 됩니다.

PWM을 임베디드 SW 세계로 바라보자

 


Mission. TC275로 PWM을 만들어 봅시다.

 


여기까지 진행하시면서 생기는 모든 질문과 답변은 아래 카페에서 해드립니다.
많이 많이 방문하셔서 실력을 업그레이드 하세요.

https://cafe.naver.com/binaryembedded

 

임베디드 유니버스 : 네이버 카페

임베디드 유니버스 : 임베디드의 세계로 초대합니다.

cafe.naver.com

https://cafe.naver.com/binaryembedded

 

임베디드 유니버스 : 네이버 카페

임베디드 유니버스 : 임베디드의 세계로 초대합니다.

cafe.naver.com

댓글