[아두이노] PWM은 만능일까? 가짜 아날로그가 통하는 곳과 안 통하는 곳

1. PWM, 어디까지 써봤니? 우리는 아두이노의 analogWrite() 를 통해 LED 밝기를 조절하며 PWM의 편리함을 맛보았습니다. 하지만 엔지니어라면 항상 질문을 던져야 합니다. "이 '가짜 아날로그' 신호를 모든 곳에 아날로그 대신 써도 될까?" 답은 "아니오"입니다. 2. PWM과 찰떡궁합: "둔감한" 하드웨어들 PWM의 거친 ON/OFF 신호를 부드럽게 받아주는 장치들이 있습니다. 이들의 공통점은 **'관성'**이나 '잔상' 같은 물리적 필터 기능을 내장하고 있다는 점입니다. LED (시각적 관성): 인간의 눈은 초당 490번의 깜빡임을 보지 못하고 평균 밝기로 인식합니다. DC 모터 (물리적 관성): 모터 내부의 코일(인덕터)과 회전체의 무게 덕분에, 전기가 끊겨도 즉시 멈추지 않고 부드럽게 회전 속도를 유지합니다. PWM은 모터 속도 제어의 '치트키'와 같습니다. 3. PWM이 힘을 못 쓰는 곳: "예민한" 하드웨어들 반면, 신호의 변화를 실시간으로 출력해야 하는 장치들에서는 PWM의 거친 사각형 파형이 치명적인 독이 됩니다. 스피커와 오디오 장치: 스피커의 진동판은 전압 변화에 즉각 반응합니다. 여기에 PWM 신호를 그대로 넣으면, 우리가 원하는 소리 대신 **"삐-" 하는 고주파 소음(스위칭 노이즈)**이 섞여 들립니다. 정밀 측정 센서: 아주 미세한 전압 변화를 읽어야 하는 센서에 PWM 전원을 공급하면, 데이터 값이 0과 5 사이를 널뛰며 엉망이 됩니다. 4. 해결책: 거친 녀석을 부드럽게 만드는 '필터' 만약 스피커에서 PWM으로 소리를 내야 한다면 어떻게 해야 할까요? 문장에서 언급된 **'외부 회로'**가 필요합니다. 가장 대표적인 것이 **저항(R)과 커패시터(C)를 이용한 Low-Pass Filter(저역 통과 필터)**입니다. 이 회로를 통과...

[아두이노] LED는 즉시 반응하는데 왜 밝기 조절이 될까?

PWM, 인간의 눈, 그리고 모터와의 결정적인 차이 1. 처음 보면 이상한 현상 아두이노에서 PWM으로 LED를 제어하면 이렇게 보입니다. 10% Duty → 어둡게 50% Duty → 중간 밝기 100% Duty → 밝게 그래서 자연스럽게 이렇게 생각하게 됩니다. “전압이 조금씩 줄어들면서 LED 밝기가 변하는구나” 하지만 이건 완전히 틀린 해석 입니다. 2. LED의 실제 동작은 매우 단순하다 LED는 물리적으로 이렇게 동작합니다. 전류 흐름 → 즉시 켜짐 전류 차단 → 즉시 꺼짐 즉, PWM이 들어오면 실제로는: 켜짐 → 꺼짐 → 켜짐 → 꺼짐 → ... (초당 약 490번 반복) 👉 LED는 절대 “중간 밝기 상태”로 존재하지 않습니다. 3. 그럼 밝기 조절은 왜 보일까? 정답은 LED가 아니라 우리 눈 에 있습니다. 👁️ 4. 인간의 눈은 빠른 변화를 평균으로 처리한다 사람의 시각 시스템은 이런 특징이 있습니다. 너무 빠른 깜빡임은 하나의 연속된 밝기로 인식한다 이를 잔상 효과 (Persistence of Vision) 라고 합니다. ⏱ 속도 비교 인간 인식 한계: 약 50~60Hz 아두이노 PWM: 약 490Hz 👉 이미 “깜빡임을 못 느끼는 영역” 5. 그래서 실제로는 이런 일이 일어난다 PWM 25%라면: 실제 LED: 25% 시간 → 완전히 켜짐 75% 시간 → 완전히 꺼짐 인간의 눈: 평균 밝기로 인식 수식으로 표현하면 Brightness ∝ D \text{Brightness} \propto D 6. 핵심 착각 ❌ 잘못된 이해 LED가 약하게 켜진다 ⭕ 실제 LED는 항상 “풀파워 ON/OFF”만 한다 ⚙️ 7. 그런데 모터는 완전히 다르다 여기서 중요한 차이가 등장합니다. 🔴 LED vs ⚙️ 모터 항목 LED 모터 반응 속도 즉시 느림 에너지 저장 없음 있음 PWM 해석 눈이 평균 ...

[아두이노] 아두이노 PWM의 진짜 구조

“코드가 아니라 하드웨어가 만든다” 1. PWM은 소프트웨어가 아니라 “하드웨어 기능”이다 많은 사람들이 PWM을 이렇게 오해합니다: “analogWrite()가 빠르게 ON/OFF를 반복한다” 하지만 실제 구조는 완전히 다릅니다. 아두이노 UNO 기준으로 PWM은: CPU(코드 실행) Timer(하드웨어) 출력 핀 회로 이 3가지가 분리된 구조입니다. 🔧 핵심 구조 PWM 출력은 CPU가 직접 만드는 게 아니라: Timer(하드웨어 타이머)가 자동으로 생성 합니다. 2. PWM 내부 동작 (하드웨어 레벨) 예를 들어 analogWrite(9, 64) 를 실행하면: ① CPU가 하는 일 “9번 핀 PWM 모드로 설정” “듀티 사이클 = 64/255” 값을 레지스터에 기록 ② Timer가 하는 일 (핵심) Timer는 내부에서 계속 반복합니다: 카운터 증가 특정 값 도달하면 HIGH 비교값 도달하면 LOW 다시 초기화 이 과정이 초당 약: f = 490 H z ⇒ T ≈ 2.04 m s f = 490Hz \Rightarrow T \approx 2.04ms 로 반복됩니다. 3. PWM은 “계속 도는 기계”다 핵심은 이것입니다: PWM은 코드가 아니라 독립적인 하드웨어 루프 즉: 한 번 설정하면 CPU 없이도 계속 동작 💡 직관적 비유 PWM은 이렇게 생각하면 됩니다: CPU → “설정만 하는 관리자” Timer → “자동으로 일하는 공장 기계” PWM 출력 → “계속 나오는 제품” 4. analogWrite()의 진짜 역할 analogWrite ( 9 , 64 ); 이 한 줄은: “9번 핀에 연결된 Timer에게 듀티비 25%로 계속 출력하라고 설정하는 것” ❌ 잘못된 이해 CPU가 계속 ON/OFF 반복 ⭕ 실제 구조 CPU는 1번 설정 이후 Timer가 자동 반복 5. 그럼 delay(...

[아두이노] 아두이노로 아날로그를 흉내 내다

PWM 제어의 마법과 Duty Cycle 1. 디지털은 왜 아날로그를 흉내 내야 할까? 아두이노 같은 디지털 시스템은 본질적으로 매우 단순합니다. OFF → 0 V 0V ON → 5 V 5V 즉, 두 가지 상태만 존재하는 세계 입니다. 하지만 현실 세계는 연속적입니다. LED 밝기 조절 모터 속도 제어 전압의 미세한 변화 이러한 아날로그 값을 표현하기 위해 등장한 기술이 바로 👉 PWM (Pulse Width Modulation, 펄스 폭 변조) 입니다. 2. PWM의 핵심: 전압이 아니라 “시간”을 쪼갠다 PWM의 핵심 아이디어는 단순합니다. 전압의 크기를 바꾸는 것이 아니라, ON 상태의 시간을 조절한다. ⏱ 아두이노 PWM 주기 아두이노 UNO의 기본 PWM 주파수는 약 f = 490  Hz f = 490 \text{ Hz} 즉, 1초 동안 490번 반복된다는 의미입니다. 한 주기의 시간은 T = 1 f = 1 490 ≈ 2.04  ms T = \frac{1}{f} = \frac{1}{490} \approx 2.04 \text{ ms} 👉 1개의 “아주 짧은 시간 조각”이 약 2.04ms 입니다. 3. Duty Cycle: 밝기를 결정하는 핵심 변수 PWM에서 우리가 조절하는 것은 바로 Duty Cycle 입니다. D = T O N T × 100 % D = \frac{T_{ON}}{T} \times 100\% 🔦 의미 T O N T_{ON} : 전압이 ON 상태인 시간 T T : 전체 주기 시간 💡 예시 ① Duty 10% D = 10 % D = 10\% 대부분 OFF LED: 매우 어두움 ② Duty 50% D = 50 % D = 50\% ON / OFF가 동일 인간 눈에는 중간 밝기로 인식 👉 평균 전압 개념: V a v g = D ⋅ V m a x V_{avg} = D \cdot V_{max} V a v g =...

[아두이노] LED 하나를 켜도 엔지니어답게: 전압강하와 양자역학의 비밀

1. LED는 왜 '반도체'인가? (The Semiconductor) LED를 단순한 전구로 보면 본질을 놓치게 됩니다. LED는 반도체(Semiconductor) 입니다. 반도체의 핵심 특징은 단순합니다. 항상 전류가 흐르지 않는다 특정 전압(문턱 전압)을 넘으면 갑자기 전류가 흐르기 시작한다 즉 LED는: 전압이 낮을 때 → 거의 전류가 흐르지 않음 (부도체처럼 행동) 전압이 충분히 높아지면 → 전류가 흐르기 시작 (도체처럼 행동) 이처럼 외부 전압에 의해 상태가 바뀌는 구조가 반도체의 핵심 본질입니다. 2. LED 전압강하의 정체: 빛은 어디서 오는가? 회로에서 LED는 보통 “약 2V를 소비한다”고 표현합니다. 하지만 실제로는 전기가 사라지는 것이 아니라 에너지가 변환되는 과정 입니다. 핵심은 다음과 같습니다. 전자는 높은 에너지 상태에서 낮은 에너지 상태로 이동 이때 에너지 차이가 빛으로 방출됨 즉 LED의 빛은: 👉 전자의 에너지 낙차가 만들어낸 결과 입니다. 색에 따른 차이 빨간 LED → 낮은 에너지 차이로도 발광 가능 파란 LED → 더 큰 에너지 차이 필요 그래서 파란 LED가 더 높은 전압을 요구합니다. 3. 왜 저항이 '생명줄'일까? LED는 문턱 전압을 넘으면 내부적으로 매우 낮은 저항 상태가 됩니다. 이 상태는 마치 “마찰이 거의 없는 미끄럼틀”과 같습니다. 만약 저항이 없다면: 전류가 급격하게 증가 LED가 손상될 가능성 매우 높음 그래서 저항은: 전류를 제한하고 남는 전압을 흡수하며 회로 전체를 보호하는 장치 입니다. ⚡ 4. LED 색상에 따라 저항값이 달라지는 이유 LED는 색상마다 전압강하(Vf) 가 다릅니다. 대표적으로: 빨간 LED: 약 1.8V ~ 2.0V 초록 LED: 약 2.0V ~ 2.2V 파란 LED: 약 3.0V ~ 3.3V 이 차이는 단순한 색의 ...

[아두이노] LED 저항 선정과 옴의 법칙/전력 공식

전기·전자 분야에서 가장 기본이 되는 공식은 바로 옴의 법칙(Ohm’s Law) 입니다. 옴의 법칙은 전압(Voltage), 전류(Current), 저항(Resistance) 사이의 관계를 설명합니다. 회로란 전기 에너지가 흐를 수 있는 닫힌 경로 를 의미하며, 일반적으로 전원(예: 9V 배터리)과 부하(예: LED)로 구성됩니다. 옴의 법칙을 이해하기 전에, 세 가지 핵심 개념을 먼저 정리해보겠습니다. 1. 전압 (Voltage) 전압은 두 지점 사이의 전기적 위치 에너지 차이 를 의미합니다. 쉽게 말해, 전류를 흐르게 만드는 “압력”과 같은 역할을 합니다. 2. 전류 (Current) 전류는 높은 전위에서 낮은 전위로 흐르는 전하의 이동 입니다. 물의 흐름으로 비유하면 이해하기 쉽습니다. 전압 → 높이(위치 에너지) 전류 → 물의 흐름 물은 항상 높은 곳에서 낮은 곳으로 흐르듯, 전류도 높은 전압에서 낮은 전압으로 흐릅니다. 또한 전류는 저항이 가장 작은 경로(최소 저항 경로) 를 따라 흐르는 특성이 있습니다. 3. 저항 (Resistance) 저항은 전류의 흐름을 방해하는 정도 를 나타냅니다. 마찬가지로 물에 비유하면: 좁은 파이프 → 높은 저항 → 물 흐름 어려움 넓은 파이프 → 낮은 저항 → 물 흐름 쉬움 즉, 저항이 클수록 전류가 흐르기 어려워지고, 저항이 작을수록 전류가 잘 흐르게 됩니다. 옴의 법칙 옴의 법칙은 다음과 같이 표현됩니다. V = I R V = IR V: 전압 (Volt) I: 전류 (Ampere) R: 저항 (Ohm) 회로에서의 전압 분배 회로에서는 전체 전압이 각 부품에 나누어집니다. 각 부품은 일정한 저항을 가지고 있기 때문에 전압이 감소하게 됩니다. 예를 들어 LED 회로를 생각해보겠습니다. 공급 전압: 5V LED 전압 강하: 약 2V 목표 전류: 20mA (0.02A) LED에서 2V가 소비되므로, 나머지 3V는 저항에서 소...

[아두이노] 풀다운(Pull-down), 왜 굳이 외부 저항을 써야 할까?

지난 포스팅에서 아두이노의 내부 풀업(Internal Pull-up)이 **“안에서 5V를 밀어내는 구조”**라는 것을 살펴봤습니다. 그렇다면 반대 개념인 풀다운(Pull-down) 은 어떻게 동작할까요? 그리고 왜 우리는 번거롭게 외부 저항까지 추가 해야 할까요? 1. 풀다운의 구조: 핀을 GND에 묶어두다 풀다운 회로는 이름 그대로 핀의 전압을 GND로 끌어내리는 구조 입니다. 기본 연결: 핀 ↔ GND 사이에 저항 연결 스위치 연결: 핀 ↔ VCC(5V) 사이에 스위치 배치 즉, 평상시 핀은 저항을 통해 GND에 연결된 상태 가 됩니다. 2. 작동 원리: 전압 분배(Voltage Division)의 지배 핵심은 스위치를 누를 때 발생하는 전압 분배 변화 입니다. ① 스위치가 열려 있을 때 (IDLE) 아두이노 입력 핀의 내부 임피던스는 매우 큽니다. R in ≈ 100  M Ω R_{\text{in}} \approx 100\ \text{M}\Omega 반면 외부 풀다운 저항은 보통: R pull-down = 10  k Ω R_{\text{pull-down}} = 10\ \text{k}\Omega 이 상태에서 핀 전압은 전압 분배 공식으로 표현하면: V pin = 0 V ⋅ R in R in + R pull-down ≈ 0 V V_{\text{pin}} = 0V \cdot \frac{R_{\text{in}}}{R_{\text{in}} + R_{\text{pull-down}}} \approx 0V 즉, 핀은 사실상 GND에 붙어 있는 상태 가 됩니다. → 내부 MOSFET은 논리값 0 (LOW) 로 인식 ② 스위치를 누른 순간 (ACTIVE) 스위치를 누르면 상황이 완전히 바뀝니다. 위쪽(VCC): 거의 0   Ω 0\ \Omega 아래쪽(GND): 10  k Ω 10\ \text{k}\Omega 전압 분배식은 다음과 같습니다: V pin = 5 V ⋅ 10 k ...