밝기를 조절하다 - PWM의 마법¶
🎯 이 장에서 배우는 것¶
- PWM(펄스 폭 변조)의 원리를 설명할 수 있다
- PWM의 주파수와 듀티 사이클 개념을 이해한다
- LED의 밝기를 0%부터 100%까지 단계적으로 조절할 수 있다
- 부드럽게 밝아졌다 어두워지는 breathing 효과를 구현할 수 있다
💡 왜 이걸 배우나요?¶
지난 장에서 LED를 켜고 끄는 법을 배웠어. 그런데 한 가지 아쉬운 점이 있지 않아?
"LED 밝기를 중간쯤으로 할 수는 없을까?"
스마트폰 화면 밝기, 노트북 키보드 백라이트, 침대 옆 무드등... 우리 주변의 조명들은 대부분 밝기 조절이 가능해.
일상 속 밝기 조절 예시:
┌─────────────────────────────────────────────────────────┐
│ 📱 스마트폰 화면 [████████░░] 80% │
│ 💡 스탠드 조명 [██████░░░░] 60% │
│ 🌙 취침 무드등 [██░░░░░░░░] 20% │
│ 🎮 게이밍 키보드 [██████████] 100% (반짝반짝!) │
└─────────────────────────────────────────────────────────┘
그런데 이상하지 않아? 디지털 신호는 0(꺼짐)과 1(켜짐)밖에 없다고 했는데, 어떻게 "중간 밝기"가 가능한 걸까?
비밀은 바로 PWM(Pulse Width Modulation, 펄스 폭 변조)에 있어!
이번 장에서 PWM을 배우면: - 🌈 LED 밝기를 자유자재로 조절할 수 있어 - 🫁 숨 쉬는 것처럼 부드럽게 변하는 breathing 효과를 만들 수 있어 - 🔧 나중에 모터 속도 조절(선풍기!)에도 똑같은 원리를 적용할 수 있어
📚 핵심 개념¶
개념 1: 디지털의 한계¶
1단계: 비유로 시작¶
"디지털 신호는 마치 방의 조명 스위치와 같아요. 켜거나 끄거나, 둘 중 하나만 가능해요."
디지털 신호의 세계:
┌─────────────────────────────────────────────────────────┐
│ │
│ 3.3V ─────────┐ ┌─────────┐ ┌── │
│ (켜짐) │ │ │ │ │
│ │ │ │ │ │
│ 0V ─────────┴─────────┴─────────┴─────────┴── │
│ (꺼짐) │
│ │
│ → 높거나 낮거나, 딱 두 가지 상태만 존재! │
└─────────────────────────────────────────────────────────┘
2단계: 정확한 정의¶
디지털 출력은 HIGH(3.3V)와 LOW(0V) 두 가지 상태만 가져. "2.5V로 출력해줘"라고 명령할 수 없어. 중간값이란 게 없는 거지.
3단계: 예시로 확인¶
# 디지털 출력의 한계
led.value(1) # 완전히 켜짐 (3.3V) - 100%
led.value(0) # 완전히 꺼짐 (0V) - 0%
# led.value(0.5)? # 이런 건 없어! ❌
쉽게 말하면: 디지털은 "켜짐/꺼짐" 두 가지뿐이라 중간 밝기를 직접 만들 수 없어.
개념 2: PWM의 마법 - 눈속임의 과학¶
1단계: 비유로 시작¶
"PWM은 마치 아주 빠르게 손뼉을 쳐서 바람을 만드는 것과 같아요. 빠르게 ON/OFF를 반복하면, 우리 눈은 평균 밝기로 인식해요."
PWM의 비밀: 빠른 깜빡임 = 중간 밝기!
┌─────────────────────────────────────────────────────────┐
│ │
│ 실제 신호 (확대해서 보면): │
│ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ ┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └── │
│ │
│ 우리 눈이 인식하는 것: │
│ ═══════════════════════════════════════════════════ │
│ "어? 그냥 중간 밝기잖아?" │
│ │
└─────────────────────────────────────────────────────────┘
2단계: 정확한 정의¶
PWM(Pulse Width Modulation, 펄스 폭 변조)은 디지털 신호를 아주 빠르게 ON/OFF 반복해서, 마치 아날로그처럼 중간값을 만들어내는 기술이야.
핵심 원리: - 1초에 수천~수만 번 깜빡임 - 사람의 눈은 약 60Hz 이상을 구분 못 함 - 결과적으로 "평균 밝기"로 인식
3단계: 예시로 확인¶
영화 원리와 같아!
┌─────────────────────────────────────────────────────────┐
│ │
│ 영화: 1초에 24장의 사진 → 움직이는 영상으로 보임 │
│ │
│ PWM: 1초에 1000번 깜빡임 → 중간 밝기로 보임 │
│ │
│ 둘 다 "눈의 잔상 효과"를 이용한 눈속임! │
│ │
└─────────────────────────────────────────────────────────┘
쉽게 말하면: 아주 빠르게 껐다 켰다 하면, 눈은 평균 밝기로 인식해!
개념 3: 듀티 사이클 (Duty Cycle) - 밝기의 열쇠¶
1단계: 비유로 시작¶
"듀티 사이클은 마치 하루 중 일하는 시간의 비율과 같아요. 8시간 일하면 33%, 12시간 일하면 50%, 24시간 내내 일하면 100%!"
듀티 사이클 = 켜져 있는 시간의 비율
┌─────────────────────────────────────────────────────────┐
│ │
│ 한 주기 (1 cycle) │
│ ├──────────────────────────────────────────────┤ │
│ │
│ ┌─────────────────┐ │
│ │ 켜짐 ON │ 꺼짐 OFF │
│ └─────────────────┴────────────────────────────┘ │
│ │
│ 듀티 사이클 = ON 시간 ÷ 전체 시간 × 100% │
│ │
└─────────────────────────────────────────────────────────┘
2단계: 정확한 정의¶
듀티 사이클(Duty Cycle)은 한 주기 동안 신호가 HIGH(켜짐) 상태인 시간의 비율이야.
- 듀티 사이클 0% = 항상 꺼짐 (밝기 0%)
- 듀티 사이클 50% = 절반 켜짐, 절반 꺼짐 (밝기 50%)
- 듀티 사이클 100% = 항상 켜짐 (밝기 100%)
3단계: 예시로 확인¶
듀티 사이클에 따른 밝기 변화:
┌─────────────────────────────────────────────────────────┐
│ │
│ 25% 듀티 사이클 → 어두움 │
│ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ │
│ │ │ │ │ │ │ │ │ │ │ 💡 (어둡게) │
│ ┘ └───┘ └───┘ └───┘ └───┘ └─── │
│ │
│ 50% 듀티 사이클 → 중간 밝기 │
│ ┌───┐ ┌───┐ ┌───┐ ┌───┐ │
│ │ │ │ │ │ │ │ │ 💡💡 (중간) │
│ ┘ └───┘ └───┘ └───┘ └─── │
│ │
│ 75% 듀티 사이클 → 밝음 │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │ │ │ │ │ │ │ │ 💡💡💡 (밝게) │
│ ┘ └─┘ └─┘ └─┘ └─ │
│ │
│ 100% 듀티 사이클 → 최대 밝기 │
│ ──────────────────────────────── 💡💡💡💡 (최대!) │
│ │
└─────────────────────────────────────────────────────────┘
쉽게 말하면: 듀티 사이클이 높을수록 LED가 더 밝아져!
개념 4: 주파수 (Frequency) - 얼마나 빨리 깜빡이나¶
1단계: 비유로 시작¶
"주파수는 마치 심장 박동 속도와 같아요. 1초에 몇 번 뛰는지를 나타내요."
2단계: 정확한 정의¶
주파수(Frequency)는 1초 동안 ON-OFF를 몇 번 반복하는지를 나타내. 단위는 Hz(헤르츠).
- 1000Hz = 1초에 1000번 깜빡임
- 주파수가 높을수록 더 부드러워 보임
- LED에는 보통 500~5000Hz 사용
주파수와 사람 눈의 관계:
┌─────────────────────────────────────────────────────────┐
│ │
│ 10Hz (1초에 10번) → 깜빡이는 게 보임 😵 │
│ 60Hz (1초에 60번) → 거의 안 보임 😊 │
│ 1000Hz (1초에 1000번) → 전혀 안 보임 ✨ │
│ │
│ ※ 일반적으로 60Hz 이상이면 깜빡임을 감지 못함 │
│ │
└─────────────────────────────────────────────────────────┘
3단계: 예시로 확인¶
쉽게 말하면: 주파수는 "1초에 몇 번 깜빡이나"이고, 빠를수록 자연스러워!
📌 알아보기: PWM의 핵심 두 가지¶
``` ┌─────────────────────────────────────────────────────────┐ │ PWM 제어의 핵심 │ ├────────────────────────┬────────────────────────────────┤ │ 주파수 (freq) │ 듀티 사이클 (duty) │ ├────────────────────────┼────────────────────────────────┤ │ 얼마나 빨리 깜빡이나 │ 켜져 있는 시간의 비율 │ │ │ │ │ 단위: Hz (헤르츠) │ 단위: % (퍼센트) │ │ │ │ │ 너무 낮으면: │ 0% = 꺼짐 │