I describe here my semiconductor curve tracer with built-in LCD display. The analog circuitry is based on the Heathkit IT-1121; it and the display are controlled by a C program and gnuplot plotting library running in Linux on a Raspberry Pi. The families of characteristic curves of two transistors can be superimposed in different colors, facilitating matching. The orientations of PNP and NPN displays are the same, allowing for comparison of complimentary pairs. This project is a work in progress in that future improvements such as more annotation on displays may be implemented with time.
Searching for a suitable curve tracer, I considered many possibilities including the Tektronix 575-576-577 series. Prices varied from hundreds of dollars for a 575 junker to thousands for a pristine 577, eliminating these classic beauties. Several add-on tracers looked promising but of course require an external oscilloscope, which I wanted to avoid; perhaps one of these could be adapted for a self-contained display. The Heathkit IT-1121 receives favorable comments on various forums, and its specifications are respectable. Or a completely new design would be possible, but why re-invent the wheel? I considered cannibalizing an IT-1121 and using its circuit board in a new enclosure with display and control electronics. Looking ahead I feared that much modification might be required, so I decided to replicate the IT-1121 circuit from scratch and go from there with mods as needed (and there would be many).
The first step in the project was therefore building an IT-1121 circuit from the construction manual, which is easily available online. All parts were either available as specified or as substitutes with one exception, the mains transformer. That transformer has multiple windings that supply both power and the sweep signal. A search yielded neither the correct part nor a usable substitute. I managed to come close with a kluge of separate junkbox transformers. The result was a good accessory curve tracer when used with an analog scope.
However, the display suffered from two defects. First, the left-to-right trace did not always superimpose perfectly with the right-to-left retrace, giving a double line that Heath calls “looping,” possibly worsened by the incorrect transformer. Second, the intensity of the traces varied significantly and abruptly over their courses. I eventually discovered that this phenomenon was caused by an appalling waveshape deviation from sinusoidal in my mains supply; sudden changes in dv/dt resulted in corresponding changes in intensity on an analog scope.
A third problem that would become important later was the unchangeable 120Hz sweep repetition frequency. I eliminated all three problems by replacing the mains sweep generator with a new sawtooth generator circuit. The retrace was so brief that it was invisible on an analog scope; retrace would be suppressed in the digital display via software later. Pulse generator circuitry including Q5 and Q6 was eliminated; pulses are formed in the sawtooth generator and coupled to IC6 via an opto-isolator (the sweep generator floats relative to the main circuit). C11 through C14 were changed from 10uf to 100uf to accommodate lower sweep frequencies.
The new sweep circuit eliminated the need for sweep windings on the mains transformer; a single transformer with 56V and 18V windings replaced the kluge. I used standard 3-terminal regulators for all power supply voltages except for 250 volts, for which I used a small boost converter (search “DC-DC Boost Converter Board 8-32V to 45-390V High Voltage Capacitor Charging”). These changes eliminated the need for Q13 through Q16 and associated circuitry.
The innocent-looking little boost converter is capable of potentially very dangerous voltage and current. The time-honored troubleshooting technique of brushing one’s bare finger tip around the circuit while it is operating is ill-advised when the boost converter is connected. The dangerous high voltage is of course also available at connections to devices under test.
Curves displayed with the IT-1121 show increasing positivity from lower left to upper right for both polarity types. As such, the external oscilloscope positioning controls must be adjusted to place the origin at the bottom left for NPN and upper right for PNP devices. I prefer to view PNP families of curves upside down and backwards so they appear in the same orientation as for NPN. This requirement is met with additional sections to SW3, actually electromechanical relays controlled by the Pi. All sections of SW3 in the modified circuit are relay sections – there is no polarity switch on the front panel.
Another relay controlled by the Pi is used to switch between two devices under test. The software allows either device or both of them to be displayed in different colors on the same grid with the same origin, even if they are of different polarities. Complimentary pairs can then be matched, or at least compared quantitatively.
I use the ubiquitous MCP3008 ADC with the Raspberry Pi to generate plots on a 7” LCD display. A 74HCT541 buffer allows the MCP3008 to operate at 5 volts in conjunction with the 3.3 volt signal levels of the Pi. This hardware combination may be open to criticism but was straightforward to implement and gets the job done nicely. In retrospect the new Raspberry Pi Pico with its built-in ADCs might have been worth investigating, but it was unavailable at the project’s inception.
The software is bare bones – primitive command line communications, no GUI, no error traps. Control via touch screen may be part of future enhancements, but for now I use a 6”x2.5” miniature keyboard/mousepad mounted on the front panel. I initially attempted software in Python with the Matplotlib library; it worked but was abysmally slow. C with gnuplot is superior. There is a trade-off between curve noise and acquisition time; in the current version about 1000 points are acquired in about 1 second, for 100 points per sweep when all 10 sweeps are set. Proportionately less time is required when fewer sweeps are set. A 300 microsecond delay in the program sets the acquisition rate in each sweep. Time for each sweep is set by the .047uf or .22uf capacitor and 1.3M or 220K resistor in the sweep circuit. Acquisition of curves for one or two DUTs can be set for single or continuously repeating. The WiringPi library simplifies and clarifies programming for and wiring of the MCP3008.
Recent experience has reminded me that curve tracers like this one are quite capable of destroying even a hefty transistor instantaneously. It is prudent to start a test with the controls at non-threatening settings.
Power transistors NTE36 (NPN) (red) and NTE37 (PNP) (blue). These are sold as a complimentary pair. Settings are 20V full scale horizontal, 1A full scale vertical, and 5ma base current steps:
Small signal transistors 2N2222 (NPN) (red) and 2N3906 (PNP) (blue). 10V full scale horizontal, 50ma full scale vertical, and .02ma base current steps:
Two 2N2222s from same bulk tape. 10V full scale horizontal, 50ma full scale vertical, .02ma base current steps:
2N5485 JFET. 20V full scale horizontal, 5ma full scale vertical, -0.2V steps (top trace 0.0V):
1N5369 51V zener diode. 100V full scale horizontal, 5ma full scale vertical:
Random junkbox LEDs: 5V full scale horizontal, 25ma full scale vertical: