[초급] 풀다운이 더 직관적인데, 스위치엔 왜 풀업 저항을 쓸까?
풀다운 저항을 써도 스위치는 똑같이 잘 읽힙니다. 그래도 풀업이 기본인 건, 스위치로 가는 선이 쇼트됐을 때 풀업은 보드가 살아 있고 풀다운은 보드 전체가 꺼지기 때문이에요. '눌렀는데 LOW'라서 헷갈리는 문제는 코드 한 줄로 해결됩니다.
입사 첫 달, 회로도를 보다가 이런 의문이 들었습니다. "풀다운으로 바꾸면 누를 때 1이라 파형도 안 헷갈릴 텐데, 왜 굳이 풀업이지?" 그땐 이유를 모른 채 넘어갔는데, 나중에 알고 보니 답은 '스위치까지 가는 선에 무엇이 실려 있나'에 있었어요. 이 글은 그 답을 따라가 봅니다.
먼저 알아둘 용어
| 용어 | 원래 이름 | 쉽게 말하면 |
|---|---|---|
| MCU | Micro Controller Unit | 제품 속 작은 두뇌. 입력 핀으로 전압을 읽어요. |
| VCC | Supply Voltage | 회로의 '윗물'. 이 글에선 5V예요. |
| GND | Ground | 회로의 '바닥'. 0V 기준점입니다. |
| HIGH / LOW | Logic High / Logic Low | 핀이 읽는 1과 0. 전압이 높으면 HIGH, 낮으면 LOW. |
| 플로팅 | Floating | 핀이 아무 데도 안 묶여 바람 부는 대로 흔들리는 깃발 상태. |
| 풀업 | Pull-up Resistor | 핀을 VCC 쪽에 살짝 묶어 두는 저항. |
| 풀다운 | Pull-down Resistor | 핀을 GND 쪽에 살짝 묶어 두는 저항. |
| 누설 전류 | Input Leakage Current | MCU 입력 핀으로 새어 들어가는 아주 작은 전류. 보통 1µA 이하예요. |
| 쇼트 | Short Circuit (단락) | 전기가 막는 것 없이 지름길로 새는 것. 수도관이 터진 상태. |
| 레귤레이터 | Voltage Regulator | 12V를 5V로 맞춰 주는 전원 칩. 줄 수 있는 전류에 한계가 있어요. |
| 액티브 로우 | Active Low | '눌림 = LOW'처럼 LOW일 때가 '일하는 중'인 신호. |
풀업·풀다운 저항이 하는 일
스위치를 MCU 핀에 그냥 연결하면, 떼고 있을 때 핀이 아무 데도 안 붙어 있어서 HIGH와 LOW를 멋대로 오갑니다. 이걸 플로팅이라고 해요. 그래서 저항 하나로 평소 값을 정해 줍니다. VCC 쪽에 달면 풀업, GND 쪽에 달면 풀다운입니다.
그런데 아래 그림 1을 보면 MCU 쪽 선에는 저항이 없죠. 그럼 전류가 MCU로 몰려가야 하지 않을까요? 사실 저항은 핀 안에 있습니다. 그림 1의 MCU 박스 안에 그려 둔 저항이 그거예요. MCU 입력 핀 안쪽은 얇은 절연막으로 막힌 트랜지스터 입구라서, 전기가 거의 못 들어가는 수 MΩ 이상의 큰 저항처럼 동작해요. 데이터시트에는 이게 누설 전류로 적혀 있고, 칩마다 다르지만 보통 1µA 이하입니다. 막다른 수도관 끝에 달린 수압계처럼, 핀은 물(전류)을 받아먹지 않고 그 자리의 수압(전압)만 재는 거예요.
그래서 핀 전압은 '핀이 어디에 붙어 있나'로 정해집니다.
- 안 누름: 흐르는 전류가 누설 전류뿐이라, 저항에서 떨어지는 전압은 1µA × 10kΩ = 0.01V 정도예요. 풀업이면 핀 ≈ 5V, 풀다운이면 핀 ≈ 0V입니다.
- 누름: 스위치가 핀을 반대쪽에 직접 붙여서 핀이 그쪽 전압이 됩니다. 5V는 전부 10kΩ이 떠안고, 5V ÷ 10kΩ = 0.5mA가 핀이 아니라 저항과 스위치가 있는 길로 흘러요.
아래 그림에서 버튼을 눌러 각 지점의 전압과 전류를 확인해 보세요.
풀업 (스위치는 GND 쪽)
핀 속이 막혀 전류가 거의 0이에요. 저항에서 전압이 안 떨어져서 핀 ≈ VCC = 5V.
정상풀다운 (스위치는 VCC 쪽)
핀 속이 막혀 전류가 거의 0이에요. 저항에서 전압이 안 떨어져서 핀 ≈ GND = 0V.
정상풀다운도 되는데, 왜 풀업이 기본일까?
평소 동작은 둘 다 똑같습니다. 차이는 선이 쇼트됐을 때 나와요. 스위치는 손 닿는 곳에 있어서 보드와 긴 선으로 이어지고, 그 선 주변엔 GND가 많습니다. 금속 케이스, 옆에 같이 묶인 GND선, 커넥터의 GND 핀 같은 것들이죠. 오래 쓰다 보면 진동으로 피복이 닳거나, 조립할 때 선이 끼어 눌리거나, 커넥터에 습기가 차서 이 선이 GND와 이어질 수 있어요. 가장 흔한 예가 금속 케이스에 쓸려 생기는 쇼트입니다.
이때 어떤 선이 쇼트되느냐가 차이를 만듭니다. 풀업에서 스위치까지 가는 선은 10kΩ 뒤에 있는 신호선이라, 쇼트돼도 10kΩ이 막아서 0.5mA만 흐르고 '눌렸다'고 잘못 읽을 뿐이에요. 풀다운에서 스위치까지 가는 선에는 VCC가 그대로 실려 있어서, 쇼트되면 막는 저항이 없어 VCC가 GND로 곧장 새고 보드 전체가 꺼집니다. 그림 1의 ③번을 눌러 비교해 보세요.
[예상] 쇼트되면 전류가 얼마나 흐를까?
12V를 레귤레이터가 5V로 바꿔 주는 보드, 저항 10kΩ, 스위치까지 선 1m 조건입니다. 흐르는 전류 = 전압 ÷ 길을 막는 저항.
- 풀업: 10kΩ이 막으니 5V ÷ 10kΩ = 0.5mA. VCC는 그대로예요.
- 풀다운: 막는 게 선 자체(약 0.05Ω)뿐이라 5V ÷ 0.05Ω = 100A. 레귤레이터는 그만큼 못 주니 한계까지 흐르고 VCC가 무너질 거예요.
정말 그런지 확인
선을 케이스에 일부러 닿게 하고 멀티미터로 VCC와 전류를 잽니다. MCU가 살아 있는지는 LED를 깜빡이게 해 두고 봐요. 풀다운 쪽은 실험용 전원에 전류 제한을 걸고 하세요. 스위치는 이렇게 읽습니다.
#define BUTTON_PRESSED_LEVEL PIN_LOW /* pull-up wiring: pressed = LOW */
bool Button_IsPressed(void)
{
return (GPIO_ReadPin(PIN_BUTTON) == BUTTON_PRESSED_LEVEL);
}
BUTTON_PRESSED_LEVEL은 '눌렸을 때의 핀 레벨', GPIO_ReadPin은 '핀 읽기'라는 뜻이에요. 이름은 쓰는 MCU에 맞게 바꾸면 됩니다.
'눌림 = LOW'인 신호를 액티브 로우라고 부릅니다. 헷갈린다고 회로를 뒤집을 필요 없이, 극성은 이 한 줄에 맡기면 돼요.
[결과] 예상이 맞았을까?
| 쇼트됐을 때 | 풀업 [예상] | 풀업 [결과] | 풀다운 [예상] | 풀다운 [결과] |
|---|---|---|---|---|
| 흐른 전류 | 0.5mA | 0.49mA | 한계까지 | 340mA |
| VCC | 5V 유지 | 4.98V | 무너짐 | 0.2V |
| MCU (LED) | 살아 있음 | 계속 깜빡임 | 꺼짐 | 멈춤 |
풀업은 예상과 거의 같았어요(실제 VCC 4.98V ÷ 저항 10.1kΩ ≈ 0.49mA). 풀다운은 100A가 아니라 340mA에서 멈췄는데, 레귤레이터가 전류를 제한한 대신 VCC를 지키지 못했습니다. 선과 닿은 부위를 합친 쇼트 경로 약 0.6Ω × 340mA ≈ 0.2V로 VCC가 주저앉아 MCU가 꺼졌어요. 결론: 스위치까지 선이 길게 이어지면 'GND 쪽 스위치 + 풀업'으로 갑니다.
현장 팁
풀다운을 꼭 써야 한다면 스위치로 나가는 VCC선에 1kΩ을 직렬로 넣으세요. 쇼트돼도 5V ÷ 1kΩ = 5mA로 묶이고, 누를 때 핀은 5V × 10k/(1k+10k) ≈ 4.5V라 여전히 HIGH입니다.
자주 묻는 질문 (풀업 저항 FAQ)
- Q. MCU 핀 쪽엔 저항이 없는데, 왜 전류가 안 흐르나요?
- 저항이 핀 안에 있기 때문이에요. 입력 핀 안쪽은 수 MΩ 이상으로 막혀 있어서 누설 전류(보통 1µA 이하)만 흐릅니다.
- Q. 풀다운에서 누르면 전류가 GND로 빠지는데, 핀은 왜 5V로 읽나요?
- 핀은 전류가 아니라 전압을 봅니다. 스위치가 핀을 VCC에 직접 붙이니 핀은 5V이고, 5V는 전부 10kΩ이 떠안아 0.5mA가 GND로 흐를 뿐이에요.
- Q. 풀다운으로 설계하면 틀린 건가요?
- 아닙니다. 스위치가 보드 안에 있어 선이 짧거나, 스위치가 원래 전원 쪽에 붙어 있는 시스템이면 풀다운도 자연스러워요.
정리
'임베디드 실무' 카테고리의 다른 글
| 디버거는 어떻게 코드를 한 줄씩 따라갈까 [초급] (0) | 2026.09.29 |
|---|---|
| 폴링 vs 인터럽트, 버튼을 톡 치면 왜 가끔 안 먹을까? [초급] (0) | 2026.09.29 |
| [초급] 차를 세워 뒀을 뿐인데 왜 배터리가 방전될까? 제어기 슬립(Sleep) 모드가 필요한 이유 (0) | 2026.09.26 |
| [초급] 워치독은 왜 필요할까? 아무도 리셋 버튼을 눌러 줄 수 없을 때 (0) | 2026.09.23 |
| [중급] 전압만 낮추면 어두워지는데, MCU는 왜 굳이 PWM으로 밝기를 조절할까? (0) | 2026.09.22 |
