본문 바로가기
Embedded SW/Embedded SW Introduction

11. MCU에서 PWM란 무엇인가?

by 방구석 임베디드 2021. 7. 22.
반응형

우선 MCU안에서 PWM(Pulse Width Modulation)을 다루기 전에

 

나무위키 백과에서 정의하는 PWM에 대해서 잠시 알아볼게요!

 

https://namu.wiki/w/PWM
펄스 변조의 일종으로 신호의 크기에 따라 펄스의 폭을 변조하는 방식이다.

펄스 파형의 High 상태와 Low 상태 파형의 비율을 듀티 사이클이라고 부르는데,
PWM은 이 듀티 사이클을 조정해서 변조하는 방식이다.
원래는 통신용으로 개발된 기술이었으나 전류, 전압 제어용으로 탁월한 방식이었기 때문에[1] 
현재는 통신보다는 DC쪽 전력 제어나 모터 제어 쪽에 쓰이는 기술이다. 
가장 유명한 예시라고 하면 초퍼제어, 스위칭 파워가 있다. 
요즘은 LED에서 PWM을 매우 자주 볼 수 있다. 
RGB로 색이 변화하는 LED 키보드나 마우스를 카메라로 찍으면 PWM에 의한 플리커링으로 세로줄이 생긴다. 
중국산 손전등도 밝기 조절을 PWM으로 한다. 
카메라에 플리커링 현상 (세로줄 현상)을 유발하는 범인이기도 하다. 
이 플리커링 현상은 안구에 피로를 주기 때문에 모니터나 TV같은 제품을 살 경우에는 
플리커 프리나 PWM 주사율이 최소 3000Hz 이상이 되는 제품을 사는게 좋다.

복잡해 보이지만 정리하면 무언가는 변조하는 방식이라는 것을 알수 있습니다.

그리고, 통신용으로 개발했지만, 전류.전압제어용으로 탁원한 방식이라는 점을 볼수 있습니다.

 

그렇다면 조금 쉽게 설명 드리도록 할게요.

이 블로그 전에 ADC는 아날로그 전압을 디지털 정보로 변화하는 모듈이라고 설명 드렸습니다.

 

MCU안에서 돌아다니는 모든 정보는 디지털 입니다.

그런데, 이제 저는 DC 모터를 제어하려고 합니다.

 

DC 모터는 0~5V의 직류전압에 따라서, 회전 속도가 달라진다고 합니다.

2.5V의 전압을 주면 100RPM (1분당 100번 회전)

5V전압을 주면 200RPM (1분당 200번 회전)

 

MCU는 어떻게 2.5V를 만들어 내어 DC 모터를 돌릴까요?

 

그런데 이렇게 하면 0~5V전압을 만들어 줄수 있습니다.

예를 들어 아래와 같이 5ms동안은 5V를 주고, 그후 또 5ms동안은 0V를 주면

평균적으로는 2.5V를 주는 꼴이 됩니다.

따라서, 2.5V의 아날로그값이 DC모터에 입력으로 들어가는것과 대치되는 현상이 발생하게 됩니다.

아래 파형들을 PWM (Pulse Width Modulation)이라고 부릅니다.

위의 PWM은 주기가 10ms이고 Duty가 50%인 PWM이다.

만일 제가 2.5V가 아니라, 4V를 만들고 싶다면

4/5*100 = 80

80%의 Duty를 만들어 내야 합니다.

 

Period는 10ms이고, Duty는 8ms인 파형을 만들어야 겠지요!!

 

그런데!! MCU안에는 아주 약한 전류가 흐릅니다.

따라서, 모터를 돌리기에는 너무 전류가 약하지요.

그래서 모터 드리이버라는 장치가 따로 필요합니다.

 

결국 MCU에서 발생하는 PWM은 스위칭 역할을 하는 것이지요!

예를 들어 아래와 그림과 같을 경우에

Dc motor는 외부 전원의 힘에 의해 생성되는 전류로 모터가 돌아가게 됩니다.

이러한 원리를 토대로 만든것이 모터드라이브입니다.

추가적인 소자를 이용하여 정회전과 역회전이 가능합니다.

결국 DC Motor +와 - 단에 전압을 찍게 되면 아래와 같은 파형이 들어가게 된다는 것을 알수 있습니다.

그리고 100RPM으로 돌아가겠죠! 

 

오늘은 이상으로 포스팅을 마치도록 하겠습니다.

반응형

댓글