BJT 스위치 설계
한 줄 요약 — MCU GPIO로 큰 부하를 켜고 끕니다. 베이스 저항 계산이 전부이고, 이걸 빼먹으면 GPIO가 탑니다.
기본 회로 (NPN 로우사이드)
로우사이드: 부하가 위, 트랜지스터(transistor)가 아래. NPN을 쓰며 가장 간단합니다.
| 부품 | 어디에 붙나 | 하는 일 |
|---|---|---|
| 부하 (RL) | VCC와 컬렉터 사이 | 실제로 켜고 끌 것 (릴레이 코일, LED 스트링, 모터) |
| GPIO와 베이스 사이 | 베이스 전류를 정한다. 이게 없으면 베이스가 GPIO를 직접 단락시켜 GPIO가 탄다 | |
| Q1 (NPN) | 컬렉터 위, 이미터 아래 | 베이스에 전류를 넣으면 컬렉터–이미터가 도통(포화)해 부하에 전류가 흐른다 |
| 이미터 | GND에 직결 | 이미터가 접지에 고정되어 있으므로 가 GPIO 전압으로 그대로 결정된다 → 계산이 쉽다 |
💡 회로도에서 이미터가 GND에 붙어 있는 것이 “로우사이드”라는 이름의 뜻입니다. 스위치(트랜지스터)가 부하의 아래쪽(low side)에 있습니다.
설계 절차
1. 필요한 컬렉터 전류 확인
I_C컬렉터 전류collector currentAR_load부하 저항load resistanceΩV_CC전압 (CC)voltage (CC)VV_CE,sat전압 (CE, 포화)voltage (CE, saturation)V2. 필요한 베이스 전류 계산
포화시키려면 넉넉히 줘야 합니다.
i전류 (순시값)instantaneous currentAI_B베이스 전류base currentAI_C컬렉터 전류collector currentAk_overdrive결합 계수 또는 상수 (overdrive)coupling coefficient or constant (overdrive)n비트 수 또는 개수number of bits or count실무 관례: (즉 강제 를 10으로 잡음)
데이터시트 최소값이 보통 50~100이므로, 10으로 잡으면 5~10배 과구동입니다. 확실히 포화합니다.
3. 베이스 저항 계산
I_B베이스 전류base currentAR_B베이스 저항base resistanceΩV_BE베이스–이미터 전압base-emitter voltageVV_GPIO전압 (GPIO)voltage (GPIO)V는 포화(saturation) 시 약 0.8 V로 잡습니다.
4. 검증
- GPIO 출력 전류가 한계 이내인가?
- 트랜지스터 전력 손실:
- 부하가 유도성이면 플라이백 다이오드(flyback)플라이백 다이오드 flyback diode인덕터를 끌 때 튀어오르는 역기전력을 흘려보내 스위치를 지키는 다이오드입니다.자세히 보기 → 추가 (5-05)
계산 예제
예제 1 — 릴레이 구동
12 V 릴레이(코일 240 Ω), 3.3 V MCU GPIO.
1) 컬렉터(collector) 전류:
I_C컬렉터 전류collector currentA2) 베이스 전류:
I_B베이스 전류base currentA3) 베이스 저항:
R_B베이스 저항base resistanceΩE24에서 470 Ω 선택 → mA
4) 검증:
- GPIO 전류 5.3 mA < 8 mA 한계 ✅
- 트랜지스터 손실 mW ✅ (2N3904는 625 mW 정격)
- 플라이백 다이오드 필수 (릴레이는 유도성) ✅
예제 2 — GPIO로 직접 구동하면?
릴레이를 GPIO에 직접 연결하면 49 mA가 필요한데, GPIO 한계는 8 mA입니다. GPIO가 파괴되거나, 전압이 떨어져 릴레이가 동작하지 않습니다.
트랜지스터는 “GPIO의 약한 구동력을 증폭”하는 장치입니다. 5 mA로 49 mA를 제어합니다.
하이사이드 스위치 (PNP)
부하의 한쪽을 접지에 고정해야 할 때 씁니다.
| 부품 | 어디에 붙나 | 하는 일 |
|---|---|---|
| Q1 (PNP) | 이미터가 VCC, 컬렉터가 부하 | 부하의 위쪽(high side)에서 전원을 끊는다 → 부하 한쪽을 GND에 고정할 수 있다 |
| R2 (풀업) | VCC ↔ Q1 베이스 | 아무도 안 끌면 베이스를 VCC로 올려 기본 OFF로 만든다 |
| R1 | Q1 베이스 ↔ Q2 컬렉터 | Q2가 켜졌을 때 베이스 전류를 제한한다 |
| Q2 (NPN) | 컬렉터가 R1, 이미터가 GND | 레벨 변환. 3.3 V GPIO로 12 V 레일에 있는 Q1의 베이스를 끌어내린다 |
| GPIO ↔ Q2 베이스 | Q2의 베이스 전류 제한 |
⚠️ PNP 하이사이드는 주의가 필요합니다:
- 베이스를 V까지 끌어내려야 켜집니다
- MCU가 3.3 V인데 가 12 V면, GPIO를 High로 해도 베이스가 3.3 V라 여전히 켜져 있습니다
- 해결: NPN 하나를 추가해 2단 구성하거나, P-MOSFET + 레벨 시프트를 씁니다
이 문제 때문에 실무에서는 하이사이드는 P-MOSFET + 드라이버를 더 많이 씁니다 (05).
시뮬레이션으로 확인
# examples/06-transistor/npn-switch.yaml
meta:
name: NPN 로우사이드 스위치
lesson: docs/06-transistor/02-bjt-switch.md
components:
- {ref: VCC, type: vdc, value: 12}
- {ref: VG, type: vdc, value: 3.3, label: GPIO}
- {ref: RB, type: r, value: 470}
- {ref: RL, type: r, value: 240, label: 릴레이 코일}
- {ref: Q1, type: q_npn, model: 2N3904}
nets:
VP: [VCC.p, RL.1]
COL: [RL.2, Q1.c]
BASE: [RB.2, Q1.b]
GPIO: [VG.p, RB.1]
GND: [VCC.n, VG.n, Q1.e]
analyses:
- {type: op}
expect:
- {measure: v, node: COL, max: 0.4} # 포화 확인
- {measure: i, through: RL, value: 49m, tol: 10%}COL 노드가 0.2 V 근처면 포화된 것입니다. 0.4 V를 넘으면 베이스 구동이 부족한 것입니다.
⚖️ 부품 트레이드오프
| 선택 | ✅ 좋아지는 것 | ⚠️ 나빠지는 것 |
|---|---|---|
| 를 작게 (과구동↑) | 확실한 포화, 최소, 편차에 강함 | GPIO 전류 증가, 끄는 속도 느려짐(저장 시간), 소비 전력 |
| 를 크게 | GPIO 부담 적음, 빠른 턴오프 | 포화 불충분 → 상승 → 발열, 편차에 취약 |
| 베이스-이미터 풀다운 저항 추가 | GPIO가 하이임피던스일 때 확실히 OFF, 누설 차단(cutoff), 턴오프 가속 | 부품 추가, GPIO 전류 약간 증가 |
| BJT 대신 MOSFET | 게이트 전류 0, 낮은 ON 저항, 빠름 | 요구 확인 필요(로직 레벨), 게이트 용량 충전 전류 |
| 달링턴 (2단) | 매우 큰 전류 이득(current gain) | 이 0.9 V로 높아 발열 큼, 느림 |
💡 베이스-이미터 간 풀다운 저항(10 kΩ) 은 값싼 보험입니다. MCU 리셋 중이나 부팅 전에 GPIO가 하이임피던스가 되는데, 이때 노이즈로 트랜지스터가 켜질 수 있습니다. 릴레이나 모터가 의도치 않게 동작하면 위험합니다.
측정 회로 관점
| 문제 | 대책 |
|---|---|
| 스위칭 순간의 가 접지를 흔듦 | 부하 전류 경로를 아날로그 접지에서 분리 |
| 베이스 저항을 통해 스위칭 노이즈가 MCU로 역류 | 게이트/베이스 저항, MCU 전원 디커플링 |
| 유도성 부하의 역기전력 | 플라이백 다이오드(diode)를 부하 바로 옆에 (루프 최소화) |
| 큰 전류 루프가 자기장 발생 | 부하 전류 루프 면적(loop area)루프 면적 loop area가는 길과 오는 길이 감싸는 넓이로, 이것이 곧 안테나 크기이므로 좁힐수록 잡음이 줍니다.자세히 보기 → 최소화, 아날로그부와 물리적 분리 |
🔌 실제 쓰임새
| 부하 | 주의 |
|---|---|
| LED (다수) | GPIO 한계 초과 시 |
| 릴레이 | 플라이백 다이오드 필수 |
| 솔레노이드·밸브 | 플라이백 + 큰 전류 |
| 소형 모터 | 플라이백 + 돌입 전류(inrush current)돌입 전류 inrush current전원을 켜는 순간 빈 커패시터로 쏟아져 들어가는 큰 전류로, 수십 A 에 이르기도 합니다.자세히 보기 → + 브러시 노이즈 |
| 부저 | 유도성이면 플라이백 |
| 다른 전압 레일의 로직 | 레벨 시프트 겸용 (9-05) |
⚠️ 이상과 실제의 차이
| 이상 | 실제 |
|---|---|
| V | 전류가 크면 0.3~0.6 V까지 올라감 |
| 즉시 ON/OFF | 저장 시간(µs급)으로 턴오프가 느림 |
| 가 데이터시트대로 | 개체차·온도로 크게 변동 → 과구동 필수 |
| GPIO가 3.3 V를 유지 | 전류를 뽑으면 가 떨어짐 |
| 부하가 순수 저항 | 모터·릴레이는 유도성 + 돌입 전류 |
연습문제
문제 1. 5 V GPIO로 100 mA 부하를 스위칭합니다. 는? ()
풀이
I_B베이스 전류base currentAR_B베이스 저항base resistanceΩ390 Ω 또는 430 Ω 선택.
⚠️ GPIO 전류 확인: 10 mA는 많은 MCU의 핀당 한계(8~20 mA)에 근접합니다. 데이터시트를 확인하고, 부족하면 MOSFET으로 바꾸거나 를 줄이되 여유를 확인해야 합니다.
문제 2. 12 V, 500 mA 부하를 2N3904로 스위칭하려 합니다. 문제가 있습니까?
exercises/06-02-2n3904-limit.yaml풀이
여러 문제가 있습니다.
-
최대 컬렉터 전류 초과: 2N3904는 mA입니다. 500 mA는 정격 초과입니다.
-
전력 손실: 500 mA에서 은 약 0.5 V까지 올라갑니다.
기호P전력powerW2N3904의 정격은 625 mW(자유공기, 25 °C)이지만, 실제로는 디레이팅해야 하고 TO-92 패키지는 방열이 나쁩니다.
-
베이스 전류: mA가 필요한데, GPIO로는 불가능합니다.
해결:
- MOSFET 사용 (예: AO3400, → 손실 mW) ← 최선
- 또는 전력 BJT(TIP120 등) + 방열
문제 3. 스위칭 회로 옆에 µV 신호를 다루는 계측 증폭기(instrumentation amplifier)계측 증폭기 instrumentation amplifier두 입력 모두 임피던스가 높으면서 차동만 증폭하는 구조로, 전극 측정의 표준 첫 단입니다.자세히 보기 →가 있습니다. 어떤 대책이 필요합니까?
exercises/06-02-switch-crosstalk.yaml풀이
1. 접지 분리 부하 전류(수백 mA)가 아날로그 접지를 통과하지 않도록, 부하의 접지 리턴을 전원 입구로 직접 보냅니다. 아날로그 접지와는 한 점(스타 포인트)에서만 만나게 합니다 (12-03).
2. 전류 루프 면적 최소화 전원 → 부하 → 트랜지스터 → 접지 → 전원의 루프가 만드는 자기장이 계측 증폭기의 입력 루프에 유도 전압을 만듭니다 (2-01 문제 4). 부하선과 리턴선을 나란히 붙이거나 꼬아서 면적을 줄입니다.
3. 플라이백 다이오드를 부하 바로 옆에 멀리 두면 그 사이 배선(trace) 인덕턴스(inductance)에서 큰 가 발생해 광대역 노이즈를 방사합니다.
4. 스위칭 속도를 늦춤 베이스/게이트 저항을 키워 를 줄입니다. 스위칭 손실은 늘지만 노이즈가 크게 줄어듭니다. 저속 부하(릴레이)라면 빠를 이유가 없습니다.
5. 물리적 거리와 차폐(shielding)차폐 shielding도체로 감싸 전기장을 막는 것으로, 한쪽 끝만 접지해야 접지 루프가 생기지 않습니다.자세히 보기 → 계측 증폭기를 스위칭 회로에서 멀리, 가능하면 그라운드 플레인(plane)그라운드 플레인 ground plane한 층을 통째로 접지로 쓰는 것으로, 리턴 패스가 알아서 최단 경로를 찾게 해 줍니다.자세히 보기 →이나 차폐로 분리합니다 (15-06).
6. 측정 타이밍 동기화 가능하다면 스위칭이 없는 구간에서만 샘플링합니다. 이것이 가장 확실한 해법일 때가 많습니다.
자세한 사례 → 16-05 액추에이터 간섭
이전 ← 01 BJT의 동작 영역 | 다음 → 03 이미터 공통 증폭기