안녕하세요. 취업한 공대누나입니다.
오늘은 PWM에 대해 이야기를 해보려고 합니다.
대학생 때부터 지금까지도 많이 듣던 용어 중 하나입니다.
1. PWM이란?
Pulse Width Modulation의 약자입니다.
일정한 주기 내에서 Duty의 비를 변화 시켜서 평균 전압을 제어하는 방법입니다.
일반적으로 MCU 내부의 내장된 타이머 카운트를 이용하여 제어하게 됩니다.
주기는 일정하고, ON/OFF 시간비를 변동 시킵니다.
왼쪽 그림처럼 예를 들어서 Duty 비가 0.5라고 하면 전압이 1/2가량으로 감소하고
Duty 비가 0.25라고 하면 전압이 1/4가량으로 감소하게 됩니다.
이러한 원리를 이용해서 LED의 밝기를 조절할 수도, 모터의 세기를 조절할 수도 있습니다.
보통 디지털 신호를 아날로그 신호로 변경하기 위해서는 DAC 라는 것을 이용해야 합니다.
(Digital to Analog Converter)
하지만 PWM을 이용하면 아날로그 신호처럼 보이게 할 수 있는 것입니다.
2. Datasheet 예시
제가 주로 사용하는 MCU에서 PWM 부분 설명을 발췌해보도록 하겠습니다.
SAM4S16C Datasheet 발췌 |
흠 이렇게 그림만 봐서 혹시 이해가 되시나요?
천천히 설명드려 보도록 하겠습니다.
밑에 구형파가 Output waveform입니다.
어? 근데 왜 waveform이 위상이 반대로 두 개나 있을까요?
이건 레지스터 설정에 따라서 아웃풋을 둘 중 하나로 선택할 수 있는 것입니다.
CPOL(PWM_CMRx)=0으로 설정해주면 위의 Output처럼 나오는 것이구요.
1로 설정해주면 아래의 Output으로 나오는 것입니다.
CPOL(PWM_CMRx)=0인 경우는
위의 삼각파를 보게 되면 CDTY(PWM_CDTYx)보다 작을 경우 0이고 크면 1인 것을 알 수 있습니다.
반대로 CPOL(PWM_CMRx)=1인 경우는
CDTY(PWM_CDTYx)보다 작을 경우 1이고 크면 0이 됩니다.
이런 것은 펌웨어 엔지니어가 원하는 대로 레지스터를 설정해서 사용하면 됩니다.
제가 사용하는 IC같은 경우 삼각파가 위의 모양 말고 아래 모양처럼 생길 수도 있습니다.
SAM4S16C Datasheet 발췌 |
이번에는 직각 삼각형 모양입니다.
이런건 또 어떻게 설정할까요?
이것 또한 레지스터를 설정해주면 됩니다.
그림에 표현되어 있듯이 CALG(PWM_CMRx)가 1일 경우 첫 번째 그림처럼 가운데가 뾰족한 삼각형이 되고
CALG(PWM_CMRx)가 0일 경우 두번째 그림처럼 직각 삼각형이 되는 것입니다.
그럴 경우 output 파형 또한 달라지는 것을 확인하고
본인의 목적에 맞게 설정을 해주면 되는 것입니다.
SAM4S16C Datasheet 발췌 |
Dead-Time Generator라는 것도 있습니다.
두 개의 핀이 동시에 on이 되는 경우에 쇼트가 나서
회로가 망가지는 것을 대비하여 있는 것으로 추정됩니다.
따라서 Dead-time을 설정하고 싶으면 또 그에 맞는 레지스터를 설정해주면 됩니다.
데이터시트를 천천히 읽다보면 어려운 것도 점점 이해가 되고
이런 것들을 놓치고 있었구나 하는 것들이 있습니다.
현실적으로 처음부터 끝까지 다 읽어보기는 어렵지만
제가 주로 사용하는 IC인 만큼 이렇게 정리하면서 정독 해보는 것도 좋은 것 같습니다.
감사합니다.
'전자 공학 > 기타' 카테고리의 다른 글
ADC - 펌웨어 (0) | 2021.01.08 |
---|---|
WDT - 와치독이란? (0) | 2021.01.05 |
메모리 반도체와 비메모리 반도체 (0) | 2020.12.29 |
SPI 통신이란? (0) | 2020.12.25 |
I2C 통신(TWI)이란? (0) | 2020.12.24 |