전기의 기본 개념과 법칙
전압 V
전압 V는 전기를 흐르게 만드는 압력이다. GND(Ground)로부터의 높이(전위) 차이를 말한다. 단위는 옴($\Omega$)을 사용한다.
ㅤ
전류 I
전류 I는 전기의 흐름(전하의 흐름)이다. 전류가 크다는 말은 초당 흐르는 전하량이 많다는 의미이다. 적절한 전류의 양을 흘려보내야 소자가 일을 할 수 있기 때문에, 전류 제어가 필요하다. 값이 높을 때 위함한 것은 전류!
ㅤ
저항 R
저항 R은 전류를 제어하는 역할을 한다. 적절한 양의 전류를 만들기 위해 사용한다. (임베디드에서 전류의 증폭은 고려하지 않는다)
ㅤ
옴의 법칙 V=IR
옴의 법칙에서 가장 중요한 것은 전류! 결국 소자를 일하게 하는 것은 전류이기 때문에 전류를 중심으로 생각해야 한다.
$$
I = \frac{V}{R}
$$
전류의 세기는 저항에 반비례하고 전압에 비례한다. 즉, 전류는 저항과 전압으로 제어할 수 있다.
$$
P=VI = I^2R
$$
전류가 많아지면 전류의 제곱으로 에너지가 많아진다.
ㅤ
MCU에서 회로 구성할 때 저항 계산하는 방법
이게 나는 너무 궁금했다. 사실 Vcc에서 GND 사이에 저항 없이 LED를 꽂았다가 (LED가 저항 역할을 할 수 있을 줄 + 회로에 대한 개념 없었음) LED가 죽어버리고 보드에서 탄내가 났던 경험이 있기 때문에, 저항의 중요성을 한 번 실감했었는데, 그래서 어떤 저항값을 이용해야하냐? 에 대해서 이번에 얕게 들었다.
ㅤ
아래처럼 5V → LED → 저항 → GND로 연결되는 회로가 있다고 하자. 이때 LED가 소비하는 전류가 20mA라고 한다면 저항값을 얼마로 잡아야 이 회로가 안전할까?
Vcc(5V) ----- [LED] ----- [저항] ----- GND
ㅤ
저항은 전류의 흐름을 제어하는 역할을 한다. 여기에서 저항값을 통해 LED에 흐르는 전류의 값을 정해줄 수 있다.
$$
V=IR\5=0.02\times R\5000 = 20 \times R\R=250
$$
이 회로에서 저항의 값이 $250\Omega$ 정도 되면 LED가 타지 않고 안전하게 빛을 낼 수 있다. 즉 전압 V가 높은건 LED에게 영향을 크게 주지 않는다. 220V 와 연결되어 있다고 하더라도 저항만 잘 연결해주면 작고 소중한 LED를 켤 수 있다.
ㅤ
MCU에서의 전압
- MCU 내에 모든 회로에서 같은 전압을 사용하는 것은 아니다.
- HIGH 신호를 위해 코어는 1.2V 정도의 저전압을 사용하고, I/O 핀은 3.3V 정도의 고전압을 사용한다
- 동적 전력 $P = C\cdot V^2\cdot f$ (여기에서 P는 상수, V가 전압, f는 CLK 주파수)
- 즉, 전압이 줄어들수록 소비 전력은 제곱으로 줄어든다. (3.3V → 1.2V로 줄이면 전력은 7.6배 줄어듦)
- 그렇다면 코어의 HIGH 전압을 1.2V보다 더 줄이지 못하는 이유는?
- 누설 전류
- LOW 신호일때에도 전류가 어느정도 흐르기 때문에 LOW 신호의 전압이 완전히 0V는 아니다.
- 그런데 HIGH 값이 점점 낮아질수록 0V와 가까워지기 때문에 HIGH/LOW 신호를 구분하는 범위가 좁아진다. (5V → 0
2.5V는 LOW / 2.55V는 HIGH || 1V → 00.5V는 LOW / 0.51V는 HIGH … LOW신호의 누설전류가 0.6V라면 HIGH로 판단하게 됨)
- 문턱 전압
- 게이트를 제어하기 위해 필요한 최소 전압. 안정적인 동작을 위해서는 문턱 전압보다 더 높은 전압(3배 정도)를 가해줘야함.
- 90nm 공정에서 문턱 전압이 0.4V 라고 하면 게이트를 안정적으로 가동시킬 수 있는 전압은 1.2V. 코어에서 1.2V를 사용한다면 충분히 공급할 수 있는 전압임.
- 만약 동일한 상황에서 MCU의 HIGH 전압을 0.6V로 낮춘다면 → 소비 전력은 물론 낮아지겠지만, 트렌지스터의 문턱 전압보다 0.2V 밖에 높지 않음 … 온도 변화 등 외부 환경에 예민해짐 → 스위치 동작의 신뢰성 ↓ , MCU의 동작이 제대로 안될 가능성 높음.
- 미세 공정의 한계
- 공정 기술이 좋아질수록 (nm 단위의 트렌지스터 크기가 작아질수록) 전압을 낮출 수 있다.
- 트랜지스터(MOSFET) 내 게이트간의 거리가 짧아질수록 더 낮은 전압으로도 게이트를 제어할 수 있음. 대신 누설 전류도 매우 커진다. (PNP 트랜지스터에서 N이 아주 얇다고 생각하기!)
- 누설 전류
- 그렇다면 I/O 핀의 전압을 1.2V로 못하는 이유는?
- I/O에서는 코어보다 노이즈가 많이 유입될 수 있다. 코어보다 회로의 물리적인 거리가 멀고, 전원이 진동하거나 전자기 간섭 등으로 인해 발생하는 노이즈의 영향을 덜 받기 위해서 전압을 일부러 충분히 높게 유지한다.
- 또, Peripheral 들이 3.3V, 5V 로 동작하기 때문에 호환성을 위해 일부러 3.3V 전압을 사용한다. (내 보드에서는 5V 전압도 제공!)
ㅤ
ㅤ
기온이 -40도 ~ 125도를 오간다거나 진동 등의 격한 외부 환경에 많이 노출되는 자동차같은 디바이스에서는 굳이 공정을 낮추려고 노력할 필요가 없다고 생각됨.
물론 전력 효율이 좋아지긴 한다만 (전기차에서 배터리도 덜 사용하면 차량이 훨씬 멀리갈 수 있으니깐) 그로 인해 발생하는 Trade Off는 시스템의 안정성을 줄여야한다는 것인데, 오히려 운행 시 오류가 발생하면 안되는 자동차에서라면 차라리 전압을 높이고 HW 적으로 안정적인게 더 좋지 않을까. 굳이 무리해서 5nm, 3nm의 반도체를 비싸게 사와서 자동차에 실을 필요는 없지 않겠나…
ㅤ
MCU 회로에 등장하는 V 용어들
- Vcc : 양전원 - BJT의 Collector 와 연결되는 전원을 말할 때 쓰는 용어
- Vdd : 양전원 - MOSFET의 Drain 과 연결되는 전원을 말할 때 쓰는 용어
- Vss : GND - MOSFET의 Source와 연결되는 GND을 말할 때 쓰는 용어
ㅤ
오호라 이런 차이가. 그런데 또다른 것들이 있었다!
ㅤ
- VDD : 디지털 전원 (3.3V, 5V 가 풀업 저항 등으로 연결되는 것들은 이렇게 부름) 근데 더 찾아보면 이게 그냥 Vdd랑 대소문자 구분 없이 똑같은 걸 지칭하는 용어라는 말도 많네.
- VDDA : 아날로그 전원 (이건 아직은 배우지 않았지만, 나중에는 아날로그 전원도 사용하나보다 훔)
- VCORE : 코어에 공급되는 전원 (1.2V, 1.8V)
- VSS : Vss와 같은 의미. VDD와 동일하게 Vss랑 같은걸 말하는 거라는 듯. 이건 그냥 GND라고 보면 된다.
ㅤ
VDD를 풀업 저항과 풀다운 저항에서 많이 봤는데, 혹시 그렇다면 GPIO 내부에 설정되는 풀업 풀다운 저항이 MOSFET 소자로 구현되어있는건가? 라는 의심이 들었다. 이 부분에 대해서는 좀 있다가 풀업 풀다운 저항에서 다뤘다!
ㅤ
MCU의 기본 회로
RLC 수동소자
- R : 저항 - 전하의 흐름(전류)을 방해하는 소자. 전하가 들어오면 열을 발생시키며 전류를 방해한다.
- L : 인덕터(코일) - 노이즈 필터의 역할. 인덕터를 통해 전류가 흐르면 자기장이 형성되고, 갑자기 전기가 끊겼을 때 자기장에 의해 전기가 유도되어 자기장이 사라질 때 까지(아주 잠깐) 끊기지 않은 것처럼 전기가 흐름. 갑자기 끊어지는 신호나 역방향으로 들어오는 신호를 잠깐 제어해 부드럽게 만들어줄 때 사용.
- C : 커패시터(축전기) - 노이즈 필터의 역할. 전류가 흐르면 커패시터가 충전됨. 전기 신호에 노이즈가 있을 때 방전된 커패시터를 충전시키거나 충전된 커패시터를 방전시키면서 노이즈를 소비하여 노이즈의 영향을 줄이기 위해 사용.
ㅤ
흠, 인덕터랑 커패시터 둘 다 노이즈 제거에 사용한다고 하는데, 둘이 처리하는 노이즈가 다른건가? 싶어서 한 번 찾아봤다. 이걸 찾아보는 이유는 : 회로도를 보면 종종 코일이랑 커패시터 그림이 그려져있는데, 이게 붙어서 어떤 역할을 하는지가 항상 궁금했었어서.
- 인덕터가 처리하는 노이즈 : 인덕터는 전류의 변화를 방해한다.
- 인덕터에 전기가 흐르면 한 쪽 방향으로 계속 전류가 흐르도록 자기장이 발생한다.
- 주파수가 높은 신호(교류라고 생각하자)는 전류의 흐름이 진동함. 더 적게 (혹은 반대 방향으로) 전기가 흐르려고 하면 자기장에 의해 저지당함. 근데 주파수가 높다는건 매 주기마다 반대로 전기가 흐른다는 거니깐 계속해서 반대 방향의 자기장이 생기고 여기에 방해를 받는다.
- 즉, 급작스럽게 변하는 전류를 방해한다.
- 커패시터가 처리하는 노이즈 : 커패시터는 전압의 변화를 방해한다.
- 커패시터는 연결된 전압과 저장하는 전하량이 비례한다. ($Q=CV$, Q가 전하량)
- 이때 만약 연결된 전압이 급하게 바뀌면 → 전하량도 급하게 바뀌어야 한다. 그런데 전하량이 한 순간에 확 바뀌려면 무한대에 비례하는 전류가 필요하다. ($V=IR$ 에서 $I=\infty$가 되어야 하는데, 그려려면 $R=0$ 이 되어야함. 회로상에 이미 저항이 있어서 불가능함)
- 전압이 바뀌었을 때 전하량이 부족하면 회로에서 끌어와 충전하고, 전하량이 남으면 회로를 통해 방출한다. 이때 커패시터가 전류를 소비/공급하면서 전압의 변화를 방해한다.
- 즉, 급작스럽게 변하는 전압을 방해한다.
ㅤ

ㅤ
RLC를 합쳐서 임피던스(Impedence — 어떻게보면 방해꾼? ㅋㅋ 전기 흐름에 발을 거는거니깐 맞는 것 같다) 라고 부른다.
ㅤ
MCU 보드에서는 직류 전원만을 이용하기 때문에 (아마 전력전자? 쪽을 한다면 교류도 봐야하겠지만) 이 수동소자들의 역할을 “직류에서 발생하는 노이즈 억제” 정도로 보면 될 것 같다.
ㅤ
Floating 상태와 풀업 풀다운
플로팅 상태란 - Floating
플로팅 상태는 정확한 전압이 공급되지 않아, GND와 Vcc 사이의 전압을 가지는 불안정한 상태. 회로가 끊겨있어서 어떤 값을 가질 지 모르는 상태라고 이해했다. (클로드는 플로팅에 대해서 ‘미연결 입력이 불확정 상태로 떠다니는 것’ 이라고 정의한다) 플로팅 상태에서는 주변의 전자기파 노이즈나 손가락만 가져다대도 미세한 정전기에 의해 핀의 전압이 불안정하게 변동할 수 있다.
ㅤ

ㅤ
플로팅 현상을 막기 위해서는 안정적인 회로가 필요하며, 이를 위해서 풀업, 풀다운 회로를 활용한다. (풀업 저항, 풀다운 저항은 High, Low가 확실한 디지털 회로에서 주로 사용된다!) 풀업과 풀다운 회로를 통해 Floating 상태일 때 어떤 신호값을 가질지 결정해줄 수 있다.
ㅤ
GPIO를 세팅할 때 풀업과 풀다운 모드는 ‘입력 모드’에서 의미를 가지는 친구들임! 출력 모드에서는 얘네들이 힘쓰는 영역이 아니다!! 이거 이번 과정평가에서 틀린 것 같다. 사실 문제 풀 때에도 헷갈렸는데, 덕분에 이제 길게 기억할 수 있을 듯 🥲🥲
ㅤ
풀다운 Pull Down
입력이 Floating 상태일 때 신호를 LOW 로 유지하도록 하는 회로.
- 신호가 전달될 때 (스위치가 연결되어 있을 때) HIGH를 전달
- 신호가 없을 때 (스위치가 끊겨있을 때) LOW를 전달
ㅤ

ㅤ
그래서, 아래처럼 회로를 구성해주면 풀다운 회로가 된다. 입력 신호가 있을 때 (스위치가 닫혀있을 때) 외부에서의 신호가 들어오고, 신호가 없을 때 (스위치가 열려있을 때) GND의 LOW 전압이 전달된다.

ㅤ
풀다운은 회로 상의 연결이 끊겨있을 때 LOW 신호를 input으로 받겠다는 회로이다.
그런데 스위치가 연결되었을 때 들어오는 신호가 LOW라면? 스위치가 연결되나 안되나 동일한 신호가 들어오니깐 아무런 의미가 없어짐.
스위치가 연결되었을 때 HIGH 가 들어오는 회로일 때 풀다운을 붙여서 스위치가 끊겼을 때에는 LOW를 입력으로 받도록 하는게 정상적인 회로의 구성이다.
ㅤ
풀업 Pull Up
입력이 Floating 상태일 때 신호를 LOW 로 유지하도록 하는 회로. 풀다운과 반대이다.
- 신호가 전달될 때 (스위치가 연결되어 있을 때) LOW를 전달
- 신호가 없을 때 (스위치가 끊겨있을 때) HIGH를 전달
ㅤ

ㅤ
풀업과 풀다운을 쓰는 예시
NUCLEO-F429ZI 보드에는 2개의 버튼이 있다. 두 버튼의 회로도를 한 번 살펴보자.
ㅤ
우선 파란색 User 버튼.

회로를 잘 보면 버튼을 누르면 Vdd와 연결되어서 HIGH가 PC13 핀으로 들어가는 구조임을 볼 수 있다. 이때 구분을 위해 버튼을 누르지 않은 경우에는 LOW가 입력되고 있어야 하므로 (그래야 버튼이 눌렸음을 알 수 있으니깐) 풀다운 저항을 달아서 스위치가 눌리지 않은 경우에는 GND와 연결이 되어 LOW가 입력되도록 구성되어있다.
ㅤ
이 경우에는 외부에서 이미 풀다운이 구성이 되어있으므로, GPIO Pin 설정을 통해서 따로 풀업/풀다운을 지정해주지 않고 ‘No Pull Up Pull Down’ 으로 둬도 괜찮다. 항상 HIGH 또는 LOW의 확실한 신호가 입력되는데, 추가로 풀업이나 풀다운 회로를 작동시키는 것은 전력 낭비. 저전력 환경에서 불필요한 전력을 아낄 수 있다.
ㅤ
실무에서는 보통 외부에 이런 풀업/풀다운 저항을 달아주지 않는다. 왜냐면 이미 SoC 내에 풀업 풀다운이 다 만들어져서 설정만 해주면 되기도 하고, 외부에 이런걸 만드는 거 자체가 비용이라서. STM 보드는 교육용이라 이렇게 미리 구성해서 바깥에서 넣어지는 모습을 볼 수 있도록 해준 것이다.
ㅤ
그 다음 검은색 RESET 버튼.

ㅤ
여기에서는 버튼을 누르면 NRST 핀과 GND가 그대로 연결되어 LOW 신호가 입력으로 들어간다. 그런데 외부 회로만 놓고 보면 버튼을 누르지 않은 경우에 회로가 끊겨서 Floating 상태가 된다. 이를 방지하기 위해서 MCU 내부에서 내부에 풀업 저항을 연결해(설정해) 버튼이 눌리지 않았을 때 HIGH 신호가 들어오도록 만들어주어야 한다.
ㅤ
GPIO Pin과 연결되는 외부의 회로를 보고 내부에 풀업/풀다운을 설정할 지 파악할 수 있어야 한다. 이 개념에 대해서 이해하는데 거의 이틀이 걸렸다. 지금같은 간단한 회로에서는 쉽게 파악할 수 있지만, 조금 복잡해지면 어떨지… (눈물 펑펑 흘리면서 바닥에 퍼져있는 농담곰 이모티콘)
ㅤ
풀업 풀다운 저항은 MOSFET 으로 만들어졌는가?
에 대해서 딥다이브를 해보다가 이건 새로운 게시글로 빼는게 더 좋겠다는 생각이 들어서 글을 하나 더 작성하려고 한다.
ㅤ
업로드 된 이후에 여기에서 확인할 수 있다. 나름 유익한 내용이 있으니 혹시 여기를 읽어보고 있다면 한 번 읽어보자!
ㅤ
Push-Pull과 Open-Drain
MOSFET
MOSFET (Metal-Oxide-Semiconductor Field-Effect Transistor, 이름만 보면 거의 뭐 학명이네)은 전압으로 제어하는 트랜지스터이다. 트랜지스터이긴 하나, 지금 다룰 파트에서는 스위치로서의 역할만 수행한다. MOSFET이 증폭 역할을 하기 위해서는 중간 전압을 사용해야 하는데, MCU 보드에서 디지털 영역을 다룰 때에는 0V 또는 Vdd 2가지 전압밖에 사용하지 못하기 때문에 스위치의 역할만 수행한다. (대략 찾아보니 PWM이나 ADC 등을 이용해서 아날로그 처리를 한다면 중간 전압을 만들어 증폭 역할을 수행할 수 있다고 한다. 그치만 우선은 디지털 회로 영역에 집중하자! )
ㅤ

ㅤ
MOSFET은 이렇게 생겼다. 스위치 신호는 Gate, 전원 공급은 Drain, 전류가 나가는 곳은 Source 이다. 전원을 의미하는 Vdd와 GND를 의미하는 Vss가 여기 Drain과 Source 라는 이름에서 왔다.
ㅤ
MOSFET의 Gate에 Vdd 전압을 가해주면 전류가 흐르고, 전압을 가하지 않으면 전류가 흐르지 않는다. 즉 스위치처럼 동작한다고 생각하면 좋다. (전압에 의해 동작하며 누설 전류도 있으니 어쩌면 가변 저항이라고 보는 편이 더 좋을지도 모르겠다.)

ㅤ
PMOS와 NMOS
2가지 종류의 MOSFET을 사용한다. (사실 입력 게이트에다가 not 붙인거니깐 종류는 하나라고 봐도 무방하지 않나…) PMOS(Positive MOSFET)는 Gate로 신호가 1이 들어가면 전류를 차단하고, NMOS(Negative MOSFET)는 Gate로 신호가 1이 들어가면 전류를 통과시킨다. 그리고 아래처럼 PMOS를 Vdd와, NMOS를 GND와 연결하는 회로를 구성한 것을 CMOS(Combinational MOSFET) 회로라고 부른다.

ㅤ
가만 생각해보면, In 신호가 1인 경우 PMOS는 열고 NMOS는 닫으므로 Out에 GND 전압이 연결되고, In 신호가 0인 경우에는 PMOS를 닫고 NMOS를 열어주므로 Out에 Vdd 전압이 연결된다. 즉 1 → 0 / 0 → 1 으로 결과가 나온다. CMOS는 Not Gate를 구현한 회로라고 생각할 수 있다!

ㅤ
그런데, NOT 게이트를 만들기 위해서 MOSFET 소자를 2개나 사용할 필요 없이, 아래 그림에서처럼 1개만으로도 충분히 구현할 수 있다. 풀업 저항을 이용해서 NMOS가 열려있는 Floating 상태에서는 1을 내보내다가, 신호를 전달해 NMOS가 닫히면 GND와 연결해 0을 내보내는 방식으로 구성할 수 있다. 그런데 왜 이렇게 안했을까?

ㅤ
척척 석박사님들께서는 다 생각이 있으셨다. 🎓🎓🎓 만약 오른쪽 회로처럼 구성했다면 Vcc에서 공급되는 전류가 그대로 GND로 빠져나가버린다. 애써 공급한 전류를 그대로 땅에 버려버리는 일. 안그래도 저전력으로 전기를 아껴쓰고 있는데 모든 GPIO 회로에서 이렇게 LOW 신호를 내보낼 때 GND으로 전류를 흘려보낸다면 매우 아까운 일이다. 그래서 왼쪽처럼 MOSFET을 하나 더 사용해서 NOT 게이트를 구성한다. CMOS 상황에서는 Vcc에서 공급한 전류가 Out 핀으로 나가거나 / Out 핀에서 내부 GND 쪽으로 전류가 흘러 들어온다. 적어도 의미없이 아까운 전기를 땅에 꼴아박는 상황이 나오지는 않는다.

ㅤ
BJT 대신에 MOSFET을 사용하는 이유
트랜지스터를 이용한 스위칭에 대해 찾아봤을 때, BJT를 이용한 회로와 MOS를 이용한 회로 2가지 키워드가 튀어나왔다. 그런데 둘다 스위칭 역할을 하는 것 같긴 한데 어떤 차이가 있어서 나온건가 + 왜 우리 회로에서는 MOSFET 을 이용한 회로만 나오나 궁금해서 간단히 찾아봤다.

ㅤ
BJT (Bipolar Junction Transistor … 바이폴라 라는 단어가 이걸 말할 때 쓰는건가봄!) 는 Base에 전류를 흘려서 스위칭 역할을 수행한다. 만약 BJT를 이용해 CMOS같은 회로를 구성했다면, 스위치를 닫아 ON 상태를 유지하기 위해서 계속 전류를 흘려보내줘야한다. 즉, 게이트 회로가 전력을 계속 사용한다.
ㅤ
참고로 Vcc 라는 전원의 이름이 여기 Collector에서 나왔다. 혹시 Vee 라는 용어를 보면 Emitter에서 나온 용어로, GND를 의미한다고 생각하자.
ㅤ
반대로, MOSFET은 Gate에 전압을 걸어서 스위칭 역할을 수행한다. 게이트는 절연되어있기 때문에 전압을 건다고 해서 전류가 흐르지 않는다. 그냥 전압이 높은 상태를 유지할 수 있게만 해주면 스위치는 ON 상태를 유지한다. MOS를 사용할 때는 전압을 충전하고 방전할 때에만 전력을 소모하기 때문에 효율적이다! 저전력을 바라는 임베디드에서는 아주 적합한 회로! 심지어 전력 공급을 안해도 되기에 구조가 단순해서 더 작게 만들수도 있다. LOW/HIGH 전압만 사용하는 디지털 환경에서는 전압을 이용해 스위칭을 수행하는 MOS가 조금 더 찰떡이라는 점도 한 몫 한다!
ㅤ
아래에 그려준 푸시풀과 오픈드레인 회로 그림에서 스위치 처럼 그려둔 부분들은 모두 NMOS와 PMOS이다. 스위칭 동작을 한다는 것을 조금 더 직관적으로 볼 수 있게 그려둔 것이다. 오해하지 말자!
ㅤ
Push-Pull

CMOS를 구성하는 NMOS와 PMOS가 신호에 따라 전류를 차단하거나 흘려보내는 ‘스위치’ 로서의 역할만 한다고 생각하고 아래처럼 접근해보자. 조금 더 정확히는 가변저항처럼 동작하기 때문에, ‘허용-차단’ 보다는 ‘낮은 저항-매우 높은 저항’ 정도로 생각하는게 맞다. 그래야 누설전류라거나 이런저런 것들을 고려할 수 있게 된다. 그치만, 나는 우선 개념적인 이해를 위함이니깐!
ㅤ

- 게이트로 LOW를 전달하면 PMOS는 차단 / NMOS는 허용 → Vdd가 Out과 연결되어 HIGH 신호를 외부로 출력한다.
- 게이트로 HIGH를 전달하면 PMOS는 허용 / NMOS는 차단 → GND가 Out과 연결되어 LOW 신호를 외부로 출력한다.
ㅤ
Push-Pull 방식은 CMOS 를 사용해서 HIGH 또는 LOW를 만들어 Out으로 출력할 수 있는 회로이다.
다만 전류 공급 안정성 문제로 실제로는 이 방법을 잘 활용하지 않는다.
푸시풀의 장점은 또 따로 있는 듯. 오픈 드레인에 대해서 정리하고 나서 두 방식의 장단점을 정리하자.
ㅤ
Open-Drain

오픈 드레인은 푸시풀 방식에서 PMOS 없이 NMOS만 사용하는 방식이다. 연결된 Vdd가 없기 때문에, NMOS에 HIGH 신호를 줘서 외부 출력을 LOW로 만드는 상황에서는 문제가 없지만, NMOS를 High-Impedance로 만들면(스위치를 열면) 외부 출력이 플로팅 상태가 되어버리기 때문에, 오픈 드레인 회로만 사용해서는 외부 출력 신호를 HIGH로 만들 수 있는 방법이 없다.
ㅤ

ㅤ
그래서 오픈 드레인을 사용할 때에는 외부 풀업 저항이 반드시 필요하다. 외부 풀업 저항을 통해 플로팅 상태일 때 HIGH 신호를 출력으로 사용하고, LOW를 출력하고 싶을 때에는 NMOS를 활성화해서 GND 쪽으로 전압이 연결되도록 만들면 된다.

ㅤ
푸시풀과 오픈드레인의 장단점
에 대해서 글을 쓰고 있었는데, 이 역시 내용이 딥다이브로 가는 것 같아서 이 아티클이 너무 깊어지는 느낌이라 새로운 글로 분리해서 작성했다.
ㅤ
ㅤ
'Embedded System > MCU' 카테고리의 다른 글
| [MCU] Push-Pull과 Open-Drain의 장단점? (0) | 2025.11.02 |
|---|---|
| [MCU] 풀업, 풀다운 저항은 MOSFET인가? (0) | 2025.11.02 |
| [MCU] UART 구조와 이해 (0) | 2025.10.30 |
| [MCU] GPIO 실습 : USER Button과 LED 켜기 (0) | 2025.10.28 |
| [MCU] 빌드 프로세스와 컴파일 환경 (0) | 2025.10.27 |