[중급] 전압만 낮추면 어두워지는데, MCU는 왜 굳이 PWM으로 밝기를 조절할까?
전압을 낮춰 밝기를 줄이면, 전구가 쓰지 않은 나머지 전압을 중간의 스위치가 떠안아 열로 버립니다. 12V 전구를 6V로 낮추면 전구가 쓰는 전력만큼(이 사례에선 약 3W) 스위치도 똑같이 태워요. PWM은 스위치를 ‘활짝 열기’와 ‘꽉 잠그기’로만 써서 버리는 열이 거의 없습니다. MCU가 PWM을 쓰는 가장 큰 이유가 이 열이에요.
먼저 알아둘 용어
| 용어 | 원래 이름 | 쉽게 말하면 |
|---|---|---|
| PWM | Pulse Width Modulation (펄스 폭 변조) | 켜 두는 시간 길이로 세기를 조절하는 방법. 액셀을 밟았다 뗐다 하기 |
| 선형 제어 | Linear Control (리니어 방식) | 스위치를 반쯤 열어 전압을 깎아서 세기를 조절하는 방법. 브레이크 밟고 달리기 |
| MCU | Micro Controller Unit (마이크로컨트롤러) | 핀을 켰다 껐다 해 주는 작은 컴퓨터 칩 |
| DAC | Digital to Analog Converter (디지털-아날로그 변환기) | 숫자를 원하는 전압으로 바꿔 주는 장치. 없는 MCU도 많고, 있어도 힘(전류)이 약해요 |
| 트랜지스터 | Transistor | 작은 신호로 큰 전류를 여닫는 반도체 스위치. MOSFET도 그중 하나예요 |
| MOSFET | Metal-Oxide-Semiconductor Field-Effect Transistor (모스펫) | 게이트 전압으로 여닫는 전자 수도꼭지. 전력 스위치로 가장 흔해요 |
| 게이트 | Gate | MOSFET을 여닫는 손잡이. 여기에 거는 전압으로 얼마나 열릴지 정해져요 |
| 게이트 드라이버 | Gate Driver | MCU 대신 게이트를 힘세고 빠르게 여닫아 주는 전용 칩 |
| 켜짐 저항 | RDS(on) (On-Resistance) | 활짝 열어도 남는 아주 가는 빨대 같은 저항 |
| 도통 손실 | Conduction Loss | 켜져 있는 동안 켜짐 저항에서 나는 열 |
| 스위칭 손실 | Switching Loss | 켜고 끄는 짧은 순간, 반쯤 열린 상태를 지나며 나는 열 |
| 열저항 | Thermal Resistance (단위 °C/W) | 열 1W당 온도가 몇 °C 오르는지. 열이 빠져나가는 길이 좁을수록 커요 |
| 접합 온도 | Tj (Junction Temperature) | 부품 안쪽 심장부의 온도. 보통 150°C(제품에 따라 175°C)가 한계 |
| 듀티 | Duty Cycle (듀티 사이클) | 한 번 깜빡일 때 켜져 있는 시간의 비율(%) |
| 주파수 | Frequency (단위 Hz) | 1초에 몇 번 켜고 끄는지 |
| 로직 레벨 MOSFET | Logic-Level MOSFET | 낮은 게이트 전압(4.5V, 제품에 따라 2.5V)에서도 켜짐 저항이 보장되는 MOSFET |
| 데이터시트 | Datasheet | 부품 제조사가 주는 설명서. 성능 값과 그 값을 잰 조건이 적혀 있어요 |
| LED | Light Emitting Diode (발광 다이오드) | 전기가 흐르면 빛나는 부품 |
| EMI | Electromagnetic Interference (전자파 간섭) | 빠르게 켜고 끌 때 전선이 내뿜는 전파 잡음 |
| 플리커 | Flicker | 깜빡임이 눈이나 카메라에 보이는 현상 |
이런 일 겪어본 적 있나요? 전구를 어둡게 했더니 트랜지스터가 뜨거워요
전구는 전압을 높이면 밝아지고 낮추면 어두워집니다. 그럼 PWM처럼 번거롭게 껐다 켤 필요 없이, 전압만 원하는 만큼 주면 되지 않을까요? 그래서 트랜지스터를 반쯤 열어 12V 전구에 6V만 걸리게 만들었습니다. 전구는 예쁘게 어두워졌는데, 옆의 트랜지스터는 손을 댈 수 없을 만큼 뜨거워요. 정작 최대 밝기로 켜면 오히려 식고요. 어둡게 했더니 더 뜨겁다니, 왜 그럴까요?
선형 제어 vs PWM 원리: 열은 ‘전압 × 전류’가 겹칠 때만 납니다
자동차 속도를 줄인다고 생각해 보세요. 액셀을 끝까지 밟은 채 브레이크로 속도를 줄이면 브레이크가 달아오릅니다. 액셀을 밟았다 뗐다 하면 브레이크는 뜨거워지지 않죠.
트랜지스터를 반쯤 열어 전압을 깎는 방식이 ‘브레이크 밟고 달리기’예요. 현업에선 선형 제어라고 부릅니다. 스위치에서 나는 열은 스위치 양끝에 걸린 전압 × 스위치를 지나는 전류인데, 선형 제어는 이 둘이 동시에 커서 열이 클 수밖에 없어요.
PWM은 ‘액셀 밟았다 떼기’입니다. 스위치로 흔히 쓰는 MOSFET은 활짝 열면 양끝 전압이 거의 0, 꽉 잠그면 전류가 0이에요. 그래도 완전히 0은 아니라서, 활짝 열어도 남는 작은 저항(켜짐 저항)에서 나는 열을 도통 손실, 켜고 끄는 짧은 순간 반쯤 열린 상태를 지나며 나는 열을 스위칭 손실이라고 부릅니다.
얼마나 뜨거울까? 선형 제어와 PWM의 열 [예상]하기
사례는 12V 전원, 12W 전구(다 켜졌을 때 12Ω), 전구에 6V를 거는 경우예요. 선형 제어면 (12 − 6) × 0.5A = 3W가 열로 나옵니다. 부품 안쪽 온도인 접합 온도는 ‘주변 온도 + 열 × 열저항’이에요. 열저항은 패키지와 PCB 구리 면적에 따라 크게 달라지는데, 방열판 없는 중간 크기 패키지를 50°C/W로 보면 25 + 3 × 50 = 175°C. 보통 한계인 150°C를 넘습니다.
그래서 ‘6V만큼의 전력’을 PWM으로 주려면 듀티가 50%가 아니라 약 25%예요. 6V는 12V일 때 전력의 1/4이거든요. 켜짐 저항 0.05Ω이면 열은 (약 1A)² × 0.05Ω × 25% ≈ 0.0124W, 접합 온도는 25.6°C입니다.
선형 제어 vs PWM 발열 계산기
- 전구가 받는 전력 (두 방식 거의 같음)
- 3.00 W
- 선형 제어
- 스위치에서 나는 열
- 3.00 W
- 접합 온도 (주변 25°C)
- 175 °C
- PWM
- 필요한 듀티
- 25.0 %
- 스위치에서 나는 열 (도통 손실)
- 0.0124 W
- 접합 온도 (주변 25°C)
- 25.6 °C
- 스위치 열 차이 (선형 ÷ PWM)
- 약 242배
정말 그런지 확인: 같은 설정에서 두 방식의 발열 재기
전구 전압을 3V, 6V, 9V로 바꿔 가며 두 방식을 비교합니다. 온도는 열화상 카메라로 봅니다. 스위치 열은 선형 제어면 ‘(전원 전압 − 전구 전압) × 전류’로 바로 계산하고, PWM은 너무 작아서 ‘오른 온도 ÷ 열저항’으로 거꾸로 구해요. 선형 제어는 한계를 넘을 수 있으니 안전 차단을 꼭 넣어 두세요.
SUPPLY_VOLT = 12.0
TEST_VOLTS = [3.0, 6.0, 9.0] // lamp voltage we want
TEMP_LIMIT_C = 125 // safety cut-off for the test
// Test A: linear - DAC + amplifier stage sets the lamp voltage
for lamp_volt in TEST_VOLTS:
LampAmp_SetVoltage(lamp_volt)
Run_ThermalTest(DURATION_S = 60)
LampAmp_SetVoltage(0)
// Test B: PWM - same lamp power, switch is only fully ON or fully OFF
PWM_Init(PIN_LAMP_GATE, FREQ_HZ = 1000)
for lamp_volt in TEST_VOLTS:
duty = (lamp_volt / SUPPLY_VOLT)^2 * 100 // same power: P = V^2 / R
PWM_SetDuty(PIN_LAMP_GATE, duty)
Run_ThermalTest(DURATION_S = 60)
PWM_SetDuty(PIN_LAMP_GATE, 0)
function Run_ThermalTest(DURATION_S):
for second in 1 .. DURATION_S:
temp = Read_SwitchTemp()
if temp > TEMP_LIMIT_C:
Stop_LampOutput() // protect the part first
Log("STOPPED", second, temp)
return
Delay_ms(1000)
Log(Read_LampVolt(), Read_LampCurrent(), Read_SwitchTemp())
LampAmp_SetVoltage는 DAC 출력을 트랜지스터로 키워 전구 전압을 만드는 함수, PIN_LAMP_GATE는 MOSFET 게이트에 연결된 PWM 핀이에요. Run_ThermalTest는 1초마다 온도를 보고 한계를 넘으면 즉시 출력을 끄는 함수입니다. 쓰는 MCU의 DAC·PWM 설정에 맞게 바꾸면 돼요.
[결과] 예상이 맞았을까? PWM 발열은 예상보다 컸지만, 선형 제어와는 비교가 안 됐어요
| 전구 전압 | [예상] 선형 열 | [결과] 선형 열 | PWM 듀티 | [예상] PWM 열 | [결과] PWM 열 |
|---|---|---|---|---|---|
| 3 V | 2.25 W | 3.06 W | 6.3% | 0.0031 W | 0.024 W |
| 6 V | 3.00 W | 3.72 W | 25.0% | 0.0124 W | 0.041 W |
| 9 V | 2.25 W | 2.52 W | 56.3% | 0.0279 W | 0.062 W |
선형 제어는 예상보다 12~36% 더 뜨거웠습니다. 3V와 6V 시험은 60초를 못 채우고 125°C에서 차단됐어요(각각 52초, 38초). 원인은 전구입니다. 12Ω은 필라멘트가 다 달궈졌을 때 값이고, 덜 뜨거우면 저항이 낮아져요. 그래서 전류가 예상(0.25 / 0.50 / 0.75A)보다 많이 흘렀고(0.34 / 0.62 / 0.84A), 스위치 열도 그만큼 늘었습니다. 서두의 수수께끼도 여기서 풀려요. 선형 제어의 열은 전구 전압이 전원의 절반일 때 가장 크고, 최대 밝기에선 스위치가 떠안는 전압이 거의 0이라 식습니다.
PWM은 예상의 약 2~8배였지만 0.1W도 안 됐습니다. 6V에서 온도는 약 2°C 올랐어요. 예상엔 도통 손실만 넣었는데, 세 가지가 더 겹쳤습니다. 첫째는 스위칭 손실이에요. ‘½ × 전압 × 전류 × 켜고 끄는 데 걸린 시간 × 1초에 켜고 끄는 횟수’로, 켜고 끄는 데 합쳐서 2µs가 걸리면 ½ × 12 × 1 × 0.000002 × 1000 ≈ 0.012W입니다. 둘째는 선형 제어와 같은 이유예요. 필라멘트가 덜 달궈져 저항이 12Ω보다 낮으니, 켜졌을 때 전류가 1A보다 컸습니다. 셋째는 게이트를 MCU 3.3V로 직접 연 것이에요. 부품 설명서인 데이터시트의 켜짐 저항은 게이트 10V 기준인 경우가 많아서, 3.3V로는 덜 열려 저항이 더 컸습니다.
선형 제어 vs PWM 현장 팁
‘떠안는 전압 × 전류’로 먼저 걸러 내세요. 이 곱이 작으면 선형 제어도 괜찮습니다. 표시등 LED 하나(5mA)는 수 mW라 저항 하나면 충분해요. 수백 mW를 넘기 시작하면 PWM을 먼저 검토하세요.
MCU 3.3V로 게이트를 직접 연다면, 데이터시트에 게이트 2.5V처럼 3.3V 이하 조건의 켜짐 저항이 적혀 있는지 보세요. 4.5V 조건만 있다면 5V 구동용이라 3.3V에선 보장이 안 돼요. 아니면 게이트를 힘세게 여닫아 주는 게이트 드라이버를 넣습니다.
주파수 욕심은 금물이에요. 스위칭 손실은 켜고 끄는 횟수에 비례해서, 1kHz를 20kHz로 올리면 0.012W가 0.24W가 됩니다.
자주 묻는 질문 (FAQ)
MCU에 DAC가 있으면 그걸로 바로 전구를 켜면 안 되나요?
MCU 핀은 보통 0V와 전원 전압(예: 3.3V) 두 가지만 내고, DAC 출력도 수 mA 정도라 전구를 직접 켤 힘이 없습니다. 결국 트랜지스터로 증폭해야 하는데, 그 트랜지스터가 반쯤 열린 채 전압을 떠안으니 선형 제어의 열 문제가 그대로 돌아와요.
LED도 전압으로 밝기를 조절하면 안 되나요?
LED는 켜지기 시작하는 전압 근처에서 전압이 조금만 바뀌어도 전류가 크게 변해서, 전압으로 밝기를 맞추기가 까다롭습니다. 전류에 따라 색이 살짝 바뀌기도 해요. 그래서 전류는 일정하게 두고 켜는 시간으로 조절하는 PWM을 많이 씁니다.
PWM은 단점이 없나요?
있습니다. 깜빡임이 카메라에 보이는 플리커, 모터에서 나는 소리, 빠르게 켜고 끌 때 전선에서 나오는 전파 잡음(EMI)이 대표적이에요. 그래서 주파수와 켜고 끄는 속도를 용도에 맞게 조절합니다.
정리: 전압을 깎으면 열, 시간을 나누면 효율
선형 제어는 남는 전압을 스위치가 떠안아 열로 버리고, 그 열은 전원의 절반쯤에서 가장 큽니다. PWM은 스위치를 열거나 잠그기만 해서 ‘전압 × 전류’가 거의 겹치지 않아요. 같은 6V 설정에서 선형 제어는 3.72W, PWM은 0.041W로 약 90배 차이 났습니다. MCU가 PWM을 쓰는 이유, 결국 열이었어요.
'임베디드 실무' 카테고리의 다른 글
| [초급] 풀다운이 더 직관적인데, 스위치엔 왜 풀업 저항을 쓸까? (0) | 2026.09.27 |
|---|---|
| [초급] 차를 세워 뒀을 뿐인데 왜 배터리가 방전될까? 제어기 슬립(Sleep) 모드가 필요한 이유 (0) | 2026.09.26 |
| [초급] 워치독은 왜 필요할까? 아무도 리셋 버튼을 눌러 줄 수 없을 때 (0) | 2026.09.23 |
| [초급] PWM은 빠르게 깜빡일 뿐인데, 어떻게 LED 밝기가 조절될까? (0) | 2026.09.22 |
| [중급] 멀티미터는 1.65V인데, ADC는 왜 더 낮게 읽을까? (0) | 2026.09.22 |