BJT Fundamentals: Operation, Regions & Models

How the bipolar junction transistor works. Learn NPN and PNP structures, emitter/base/collector roles, carrier injection and transport, operating regions (forward-active, cutoff, saturation, reverse-active), current relations (I_E = I_C + I_B, β, α), V_BE and its exponential law, output characteristics and the Early effect, transconductance g_m, r_π and r_o, transition frequency f_T, the Ebers–Moll large-signal model, hybrid-π and T small-signal models, and BJT switching (saturation, storage time) — with Python computing small-signal parameters and sizing a saturated switch.

The BJT is a current-amplifying device: a small base current controls a collector current β times larger — or, more precisely, the base–emitter voltage controls the collector current exponentially. It remains essential in precision analog, RF, power and bandgap circuits.

Understanding its regions and models lets you use it as both a switch and a linear amplifier.

An analogy

A BJT is like a water tap controlled by a tiny trickle: a small flow into the base 'handle' opens a much larger flow from collector to emitter. The ratio between them is β.

Structure and operation

An NPN transistor has a heavily doped N emitter, a thin lightly doped P base and an N collector. Forward-biasing the base–emitter junction injects electrons into the base; because the base is thin, most diffuse across and are swept into the collector by the reverse-biased collector–base junction. Only a small fraction recombine in the base, forming I_B. PNP transistors work identically with polarities reversed.

Regions of operation

Depends on the two junctions:

Characteristics and Early effect

Input characteristic: I_B vs V_BE (diode-like, ~0.6–0.7 V). Output characteristics: I_C vs V_CE for several I_B — nearly flat in the active region but tilting upward because increasing V_CE narrows the effective base (Early effect); the lines extrapolate to −V_A on the V_CE axis. β varies with I_C, temperature (+0.5%/°C) and between parts (datasheets give wide ranges, e.g. 100–300), so good designs don't depend on its exact value.

Models and switching dynamics

Ebers–Moll models the BJT as two coupled diodes with current sources — valid in all regions (the basis of SPICE's Gummel–Poon model). The hybrid-π (and equivalent T) models describe small-signal behaviour in the active region. In switching, saturation stores excess charge in the base, so turn-off is delayed by the storage time t_s; Baker clamps (Schottky from base to collector) or Schottky transistors prevent deep saturation. β falls at high frequency: |β(f)| ≈ f_T/f above f_β = f_T/β.

Formulas

Worked example: Currents

Given: I_C = 5 mA, β = 100

Find: I_B, I_E, α.

Answer: 50 µA, 5.05 mA, 0.990

Worked example: Small-signal parameters

Given: I_C = 1 mA, β = 200, V_A = 80 V

Find: g_m, r_π, r_o.

Answer: 38.7 mA/V, 5.17 kΩ, 80 kΩ

Worked example: V_BE shift

Given: I_C ×10

Find: ΔV_BE.

Answer: +59.5 mV

NPN transistor and hybrid-π model

      C                       B ──┬──────┬──── C
      │                           │      │
  B ──┤  NPN (arrow out           r_π    (g_m·v_be)  r_o
      │   of emitter)             │      │ ↓        │
      E                       E ──┴──────┴──────────┘
  Forward-active: V_BE ≈ 0.65 V, V_CE > V_CE(sat) ≈ 0.2 V

The hybrid-π model replaces the transistor with r_π between base and emitter, a controlled current source g_m·v_be into the collector, and r_o for the Early effect — the basis of every small-signal calculation. Capacitances C_π and C_µ are added for high-frequency analysis.

Small-signal parameters and a saturated switch

import math
# BJT fundamentals: current relations, small-signal parameters, Early effect and switching
beta, IC, VA, VT = 150.0, 2e-3, 100.0, 0.02585
IB = IC / beta
IE = IC + IB
alpha = IC / IE
print(f"IB = {IB*1e6:.2f} uA, IE = {IE*1e3:.3f} mA, alpha = {alpha:.4f}")
gm = IC / VT
rpi = beta / gm
ro = VA / IC
print(f"gm = {gm*1e3:.1f} mA/V, r_pi = {rpi/1e3:.2f} kohm, ro = {ro/1e3:.0f} kohm, intrinsic gain gm*ro = {gm*ro:.0f}")
IS = IC / math.exp(0.65 / VT)
print(f"VBE for 2 mA with IS = {IS:.2e} A: 0.650 V; for 20 mA: {VT*math.log(20e-3/IS):.3f} V")
# Saturated switch: 12 V relay coil 240 ohm (50 mA), beta_min 100, overdrive x5
Ic_sw = 12 / 240
IB_req = Ic_sw / 100 * 5
print(f"switch: Ic = {Ic_sw*1e3:.0f} mA -> base current {IB_req*1e3:.1f} mA -> RB = {(3.3-0.7)/IB_req:.0f} ohm from 3.3 V")
fT = 300e6
print(f"fT = 300 MHz -> beta falls to 1 at 300 MHz; at 10 MHz |beta| ~ {fT/10e6:.0f}")
# IB = 13.33 uA, IE = 2.013 mA, alpha = 0.9934
# gm = 77.4 mA/V, r_pi = 1.94 kohm, ro = 50 kohm, intrinsic gain gm*ro = 3868
# VBE for 2 mA with IS = 2.40e-14 A: 0.650 V; for 20 mA: 0.710 V
# switch: Ic = 50 mA -> base current 2.5 mA -> RB = 1040 ohm from 3.3 V
# fT = 300 MHz -> beta falls to 1 at 300 MHz; at 10 MHz |beta| ~ 30

At 2 mA the BJT has g_m = 77 mA/V — far more transconductance than a MOSFET at the same current, one reason BJTs excel in low-noise and precision amplifiers. For switching, drive the base 5× harder than β_min requires so the transistor saturates reliably; a 1 kΩ base resistor from a 3.3 V MCU pin switches a 50 mA relay (add a flyback diode!).

Common mistakes

Applications

Key takeaways

Going further