Semiconductor Curve Tracer




Posted in TechnologyElectronics

Introduction: Semiconductor Curve Tracer

About: A student. Aspiring maker. From Deltech (DTU) in Delhi, India


Knowledge of the operating characteristics of any device are essential to gain insight about it. This project would help you plot curves of diodes, NPN-type bipolar junction transistors and n-type MOSFETs on your laptop, at home!

For those who don't know what characteristic curves are : characteristic curves are graphs that show the relationship between current through and voltage across the two terminals of a device. For a 3 terminal device, this graph is plotted for a varying parameter of the third terminal. For 2 terminal devices like diodes, resistors, LEDs etc, the characteristic show the relationship between voltage across the device terminals and the current flowing through the device. For 3 terminal device, where the 3rd terminal acts as a control pin or sorts, the voltage-current relationship is also dependent on the state of the 3rd terminal and therefore the characteristics would have to include that as well.

A Semiconductor curve tracer is a device that automates the curve plotting process for devices such as diodes, BJTs, MOSFETs. Dedicated curve tracers are usually expensive and not affordable for enthusiasts. An easy to operate device capable of obtaining the I-V characteristics of basic electronic devices would be highly beneficial, especially for students, hobbyists that are into electronics.

To make this project a basic course in Electronics and concepts like op amps , PWM, charge pumps,voltage regulators, some coding on any microcontroller would be required. If you have these skills, Congratulations, you are good to go!!

For references on the topics above, some links I found helpful:

Step 1: Understanding the Hardware

The tracer would be plugged into a laptop and the DUT (device under test) into the slots provided in the board. Then, the characteristic curve would be displayed on the laptop.

I used MSP430G2553 as my microcontroller but once you understand the approach to the design, any controller can be used.

To do this the given approach was followed.

● In order to obtain values to device current at different values of device voltage, we need an increasing signal (something like Ramp signal) . To obtain sufficient number of points for plotting the curve, we choose to probe device for 100 different values of device voltage. Thus we need a 7-bit ramp signal for the same. This is obtained by generating PWM and passing it through a low pass filter.

● Since we need to plot the device characteristics at different values of base current in BJT and different values of gate voltage in case of MOSFETs we need a staircase signal to be generated alongside the ramp signal. Limiting the system capability we choose to plot 8 curves for different values of base current/gate voltage. Thus we need an 8-level or 3-bit staircase waveform. This is obtained by generating PWM and passing it through a low pass filter.

● The important point to note here is that we need the entire ramp signal to repeat for every step in the 8-level staircase signal thus the frequency of the ramp signal should be exactly 8 times more than that of staircase signal and they should be time synchronized. This is achieved in the coding of the PWM generation.

● The collector/drain/anode of the DUT is probed to obtain the signal to be fed as X-Axis into the oscilloscope / into ADC of the microcontroller after voltage divider circuit.

● A current sensing resistor is placed in series with the DUT, which is followed by a differential amplifier to obtain the signal that can be fed into oscilloscope as Y-Axis/ into ADC of the microcontroller after voltage divider circuit.

● After this, the ADC transfers the values into the UART registers to be transmitted to the PC device and these values are plotted using a python script.

You can now proceed with making your circuit.

Step 2: Making the Hardware

The next and very important step is actually making the hardware.

Since the hardware is complex, I would suggest PCB fabrication. But if you have the courage, you can go for breadboard also.

The board has 5V supply, 3.3V for the MSP, +12V and -12V for the op amp. 3.3V and +/-12V are generated from 5V using regulator LM1117 and XL6009 (its module is available, I made it from discrete components though) and a charge pump respectively.

The data from UART to USB needs a conversion device. I have used CH340G.

Next step would be to create Schematic and Board files. I have used EAGLE CAD as my tool.

The files are uploaded for your reference.

Step 3: Writing the Codes

Made the Hardware? Tested voltage polarities at all points?

If yes, lets code now!

I have used CCS for coding my MSP, because of I am comfortable with these platforms.

To display the graph I have used Python as my platform.

The microcontroller peripherals used are:

· Timer_A (16 bit) in compare mode to generate PWM.

· ADC10 (10 bit) to input values.

· UART to transmit the data.

The code files are provided for your convenience.

Step 4: How to Use It?

Congratulations! All that remains is the working of the tracer.

In case of a new curve tracer, its trim pot of 50k ohms would have to be set.

This can be done by changing the potentiometer position and observing the graph of the IC-VCE of a BJT. The position at which the lowest curve (for IB=0) would align with X-Axis, this would be the accurate position of the trim pot.

· Plug in the Semiconductor Curve Tracer in the USB port of the PC. A red LED will light up, indicating that the board has been powered up.

· If it is a BJT /diode device whose curves are to be plotted, do not connect the jumper JP1. But if it is a MOSFET, connect header.

· Go to command prompt

· Run the python script

· Enter the number of terminals of the DUT.

· Wait as the program runs.

· Graph has been plotted.

Happy making!



    • Spotless Contest

      Spotless Contest
    • Trash to Treasure

      Trash to Treasure
    • Microcontroller Contest

      Microcontroller Contest

    We have a be nice policy.
    Please be positive and constructive.


    1 Questions

    Are all the resistors and capacitors the same values?

    Ah nvm found the properties tab where it's listed.


    I've run into a small issue with this, I enter the number of terminals but the code doesn't run further.

    It is so mesmerising to see makers working dedicatedly towards new ideas.
    The project is very informative!!

    1 reply

    Thank you ArjunK65

    thank you :)

    This is good project for a number of reasons in a number of areas. Well done.

    Common valves (or tubes) are made for operation at hundreds of volts and their published characteristics never show their behaviour at low voltages. However, they can work at low voltages (I built a guitar effects pedal with one that runs at 12V). A test circuit that can quicky plot the low voltage characteristics of the valves would be great! Your circuit with a little development could do that. Common valves (12AX7s, 12AU7s) operate much like n-channel mosfets. But they are more like depletion mode mosfets. I think your circuit would only work with enhancement mode mosfets (am I right?). Maybe your next revision could feature a socket for some triodes with negaive gate/grid voltage capability!

    I used to use curve tracers back in the days that were home made and used with a O'scope. They would instantly display the component's curve of the P/N junctions or resistor line and capacitor oval. And you could work through a circuit and find shorted and opened components still in the circuit. Then they bought commercial versions of curve tracers that did the exact same thing in a nice package. The difference I see with your setup is it displays the curve for you to print out. But it isn't an instant view as you check the parts. Nice idea for a very interesting plot though.

    2 replies

    I did the same and could instantly see parameters for parts that were unavailable by any other method, Was hoping for a similarly useful circuit.

    I am working to include oscilloscope part on the same board. I will update it as soon as its done :)

    Very good work, and thank you for sharing. To tinkerers a curve tracer is a very valuable tool and I love the ability to save the plot! Will make matching transistors very easy!

    1 reply

    I am glad you found it helpful :))

    This project must've taken a lot of time and effort. Great to see youngsters go beyond their comfort and making this a better place to live.

    1 reply

    yes, a lot of work!

    thank you for your kind words :)

    Great to see an enginnering undergraduate enjoying her education and doing something worthy . We need more like you than the zombies going for MBA. Proud of you !

    1 reply

    thank you !

    Methinks you are more than an aspiring maker. Superior work!

    1 reply

    Thank you!! :))

    Adding the scope function would be WONDERFUL!!! Thank you for your work. You are wonderful! :-)

    1 reply

    I am on it. And thank you very much :))

    Very useful project