TMC #0010: Transistor: BJT Ebers-Moll Simulator
A pure-Python simulation of a 1947-era germanium BJT transistor: Ebers-Moll large-signal model, switch and amplifier analysis, and a physical comparison with the vacuum tube it replaced.
The transistor Bardeen and Brattain demonstrated at Bell Labs on 16 December 1947 was a germanium point-contact device with a current gain of ~18. This simulator models a slightly later germanium BJT using the Ebers-Moll equations: the large-signal DC model that has described bipolar transistor behaviour since Ebers and Moll's 1954 IRE paper: and demonstrates the three ways transistors changed computing.
What It Includes
NPN_BJT (Ebers-Moll): Full large-signal DC model: collector current, base current, emitter current, and operating region classification (cut-off / active / saturation). Parameters calibrated to a 1950s germanium device (I_S ≈ 1 µA, β_F = 50).
Switch demo: Cut-off vs saturation states, ON/OFF current ratio, and the logic-level interpretation. Shows why V_BE = 0 → logic LOW and V_BE = 0.25 V → logic HIGH for this device.
Amplifier demo: Common-emitter configuration. Sweeps VBE to find the usable Q-point range, then performs detailed small-signal analysis: transconductance g_m, input resistance rπ, and voltage gain A_v = −g_m × R_C.
Vacuum tube comparison: Specification table: 6SN7 triode vs 1947 germanium transistor across heater power, volume, mass, MTBF, warm-up time, and gain. Computes what ENIAC's 17,468 tubes would look like replaced with equivalent transistors (~1,000× volume reduction).
Running It
python transistor_sim.py # all demos
python transistor_sim.py --demo switch # digital switch only
python transistor_sim.py --demo amplifier --trace # amplifier with working
python transistor_sim.py --demo compare # vacuum tube vs transistor
No external dependencies: pure Python 3.10+.