그라운드 임베디드 유튜브 구독

노트 / 회로소자

풀업 저항은 왜 필요할까

GROUND EMBEDDED · 정리 노트풀업 저항은왜 필요할까VCC 3.3V10kΩ버튼MCUGPIO누르지 않으면 HIGH

MCU 입력 핀에 아무것도 연결하지 않으면 핀은 HIGH도 LOW도 아닌 떠 있는 상태(floating)가 됩니다. 이 상태의 핀은 주변 노이즈에 따라 0과 1을 제멋대로 오갑니다. 풀업 저항은 이 핀을 전원 쪽으로 약하게 붙잡아 두는 저항입니다.

버튼 회로로 보기

버튼 한쪽을 GND에, 다른 쪽을 입력 핀에 연결하고, 입력 핀과 VCC 사이에 풀업 저항을 답니다.

  • 버튼을 누르지 않으면: 저항을 통해 핀이 VCC에 연결되어 HIGH
  • 버튼을 누르면: 핀이 GND에 직접 연결되어 LOW

눌렀을 때 LOW가 되는 방식이라 처음에는 거꾸로 느껴지지만, 실무에서 가장 흔한 구성입니다.

저항 값 고르기

보통 4.7 kΩ에서 10 kΩ을 씁니다. 값에 따라 장단점이 갈립니다.

작은 값 (예: 1 kΩ) 큰 값 (예: 100 kΩ)
버튼을 눌렀을 때 전류 큼 (3.3 V에서 3.3 mA) 작음 (33 µA)
노이즈에 버티는 힘 강함 약함
신호가 HIGH로 올라가는 속도 빠름 느림

3.3 V에 10 kΩ이면 버튼을 누르고 있는 동안 0.33 mA가 흐릅니다. 대부분의 버튼 입력에는 이 정도면 충분합니다.

내부 풀업

대부분의 MCU에는 핀마다 내부 풀업이 들어 있어 설정만으로 켤 수 있습니다. 다만 값이 수십 kΩ으로 큰 편이라, 선이 길거나 노이즈가 많은 환경에서는 외부 저항을 따로 다는 편이 안전합니다.

I2C에 풀업이 꼭 필요한 이유

I2C의 SDA, SCL은 오픈 드레인 방식입니다. 칩은 선을 LOW로 당기기만 할 수 있고, HIGH로 올리는 일은 풀업 저항이 맡습니다. 풀업이 없으면 선이 HIGH로 돌아오지 못해 통신 자체가 되지 않습니다.