Fork me on GitHub

Project Notes

#228 TransistorCurveTracer

Simple NPN transistor curve tracer using a Stairstep generator circuit.

The Build

curve_2N3904_50kRb

Notes

This is a fascinating circuit, originally from the IEEE Engineering Sciences & Education Journal Vol 8 No 1 Feb 1999 pp25-26. I’m working from a demonstration by w2aew in #232: More Circuit Fun: Simple transistor curve tracer using Stairstep generator circuit.

It actually builds on the basic StairStepGenerator project and adapts it to perform basic NPN BJT curve tracing (plotting collector currect to collector voltage for different base current values).

I first built up the circuit on a breadboard, but it proved too noisy to be of much use… so I put the circuit on protoboard and obtained much better results.

I wouldn’t necessarily trust these results for anything other than relative comparisons, but it is interesting to see the theory play out IRL.

Regardless, it’s great fun to fiddle with step frequency, reset freqeuncy and input voltage and see the effects in the X-Y plot.

Stairstep Generator

I tried a few opamps in the circuit, but I settled on the TL074 as the best of the lot I have available. It’s not rail-to-rail, so I lose about a volt of the top of the output.

Here’s a scope trace of the basic stairstep generator

  • CH1 reset oscillator output
  • CH2 clock signal from the 555
  • CH3 stairstep output

stairstep

Driving the Device Under Test

The stairstep generator is extended quite cleverly in order to perform the curve tracing:

  • the stairstep output drives the base of the transistor via a resistor so it approximates a current source. So each step represents one base current curve.

  • the 555 clock signal resets a simple R-C circuit, generating a sawtooth curve which is buffered and amplified with an opamp. This signal sweeps the collector current for each “step”

  • the collector current is mirrored with a simple PNP current-mirror. One signal drives the collector of the device under test, and the voltage measurement is the collector voltage (the X value for the curve trace). The other signal drives a fixed resistor, and the voltage measurement here is analogous to the collector current (the Y value for the curve trace).

Here is a scope trace of the driver signals (without a device under test):

  • CH1 - stairstep signal
  • CH2 - collector sweep signal

step_and_driver_signals

Running the Tests

Here’s my setup while running some tests.

  • I’m using a 5V supply. For this particular circuit configuration, I get pretty good results from 5-7V.
  • without a DUT, the curcuit draws around 5mA
  • with a DUT, the circuit draws anywhere from 25 to 40mA depending on the particular NPN BJT being tested

TransistorCurveTracer_demo

Initial Tests with a 2N3904

For the initial test I had the base resistor for the DUT at 470Ω per the original design. With this I was getting disappointing results when forward-biasing a 2N3904. It appears to swing the DUT hard to saturation, so my curves are pretty one dimensional:

curve_2N3904_470Rb

However, when reverse-biased (i.e. switch emitter and collector), and therefore a lower beta/hFE, I get a much more pleasing result:

curve_2N3904_reverse_470Rb

Circuit Improvement and Re-testing a 2N3904

Time to check some calculations. Using a 2N3904 as my model DUT, the datasheet tells me the hFE can range from 40 to 300 for various Vce/Ic combinations.

With a 220Ω resistor on the current mirror and a 5V supply, the collector current could reach 22mA. At 22mA, the 2N3904 hFE would be around 100 so requires a base current of 0.22mA. So a base resistor of around 22kΩ would be in order. That’s a far cry from the 470Ω in the circuit, so no wonder I’m not getting good curves when forward biasing the DUT!

So to fix this and provide some flexibility, I added another 50kΩ trimmer in series with the 470Ω base resistor. Now I can get some nice curves for a forward-biased DUT, and easily adapt to transistors with different characteristics

Here are the curves for a 2N3904 forward-biased (base resistance set close to 50kΩ):

curve_2N3904_50kRb

Construction

The Schematic

I first built up the circuit on a breadboard. Although it proved the basic function, it proved too noisy to get any decent results…

Breadboard

TransistorCurveTracer_breadboard_build

So I laid it out on a protoboard:

TransistorCurveTracer_protoboard_layout

Final protoboard build:

The Build

Credits and References

About LEAP#228 OpAmp555 TimerOscillators
Project Source on GitHub Project Gallery Return to the LEAP Catalog

This page is a web-friendly rendering of my project notes shared in the LEAP GitHub repository.

LEAP is just my personal collection of projects, usually involving an Arduino or other microprocessor in one way or another. Some are full-blown projects, while many are trivial breadboard experiments, intended to learn and explore something interesting (IMHO!).

The projects are usually inspired by things found wild on the net, or ideas from the sources such as:

Feel free to borrow liberally, and if you spot any issues do let me know. See the individual projects for credits where due. There are even now a few projects contributed by others - send your own over in a pull request if you would also like to add to this collection.