Introduction: Arduino BiCMOS Curve Tracer

Picture of Arduino BiCMOS Curve Tracer

Draw curve traces for both Bipolar and CMOS transistors using this hardware and free online software.

Step 1: UpLoad and Plot Curve for NPN, PNP, NMOS, and PMOS

Picture of UpLoad and Plot Curve for NPN, PNP, NMOS, and PMOS

The data for the transistor curves gets uploaded into any computer and can be plotted using SciLab or Octave

Step 2: Hook Up the Circuit

Picture of Hook Up the Circuit

The circuit is simple enough for a solderless breadboard. But this type of circuit tends to want to be used more than once. An alternative is to print out  the schematic shown on the right and glue to cardboard. Then hot glue all the components in place, and wire wrap up the circuit. After everything is working, soldering one side of the wire wrap of the components at a times seems to have no trouble with melting the hot glue. The techniques on how to do the wire wrap is described here.

Step 3: Now Copy and Paste in the Software

Picture of Now Copy and Paste in the Software

Code needs to be copied and paste into both the Arduino window and Processing widow. The code is simple text, and is included below. Additional code can be found at the follow web site.

Step 4:

Picture of

After compiling and uploading the Arduino code. Hitting the run button will bring up a graph window. Clip that window and type "s" to start the curve tracing. Typing "w" will write the data into your computer. Use the Show_Sketch_folder menu to find the data file. It will be labeled with the exact second the curve tracing started. This is a good time to rename that data file.

Step 5: Plot the Curves

Picture of Plot the Curves

Programs like SciLab and Octave can read and plot the data file, provided those programs know where to look for the file. The file path can usually be found by opening up a unix terminal window and dragging the file into it. There are four templates. One for each type of transistor. Both the Scilab and Octave templates are included in the previous text file and previous pdf file.


1genlouco (author)2017-05-08


ReconIII made it! (author)2015-09-13

I am having some issue :( I am using these op-amps and it should be wired correctly, and I am testing this transistor. Below is the wiring which I follow the diagram, when I try the processing program and scilab if I can get it to work it doesn't display anything and normally the files are either nothing or a flat line when graphed. :L idk if you have any ideas, this would be very useful to me if I could get it working. Thanks :D

dsauer (author)ReconIII2015-09-13

The window of the processing program that interfaces the arduino should show waveforms if everything is hooked up ok. I was only using scilab to format a prettier picture. Your op-amp link points to 60V nchannel transistors. You will need rail to rail input output opamps that work at 5V . I am assuming you are using a arduino that operates at a 5volt supply.

ReconIII (author)dsauer2015-10-04

Will it work with a 2.5v rail rail?

efissoluciones (author)ReconIII2015-10-02

i have other problem, i made this circuit with a programm in delphi to make curves, when i test npn transistors, its works perfectly but pnp no, this one displays a line whitout curves. i want to know if anyone had this problemm and how to fix it

ReconIII (author)2015-08-29

Is there a way this can be modified for 15 volts? I know the ardunio can't take that but just supply that to the device then step it down?

dsauer (author)ReconIII2015-08-29

It is not hard to find rail to rail op amps that can take 15volts. I used one that could take 30V. If you are careful enough to step down all voltages that make their way back to the arduino such that it never sees any thing higher than 5V, things should work fine. By the way, I did this instructable before I learned the power of the "Processing" application. That processing application that reads the data can do just about any thing. Check out the following site.

jhwa (author)2014-07-23

Hi dsauer, appreciate your work and source on this project. Btw, what type of npn, pnp, nmos, and pmos transistor we can use for testing on this curve tracer? Can you explain much more specific on the detail of transistors (for example its voltage and current) we should use for this testing. Thanks alot for your attention!

dsauer (author)2014-06-28

The CMOS_LATCHUP discussion shows the cross section of both the NMOS and PMOS transistors. MOS transistors all have four terminals ( Source, Gate, Drain, and Bulk). When packaged in three terminals, the bulk is connected to the source. The NMOS transistor on the left shows it's bulk as substrate, which is connected to ground. The PMOS transistor shows it's bulk as nwell, which is connected to a positive vcc voltage.

jhunkubabu (author)2014-06-27

the project is really nice ... I wanted to know the meaning of "Bulk" in the circuit diagram .... Thank you very much ...

evengravy (author)2012-12-14

Would jfets not fall into this category then? Can it measure transconductance curve of jfet or only MOSFET and bjt's

evengravy (author)2012-12-12

Does this work for jets? Also what exactly is measured? VGs? Id? Cool project by the way!

dsauer (author)evengravy2012-12-13

Curve tracers are an old standard way to measure what happens at a transistor’s collector or drain in terms of current vesus voltage. My main goal to the BiCMOS curve tracer was to acknowledge and thank the “Open Source” community for giving hobbyists very good access to both the Analog and Digital world using only everyday computers. Think of it as an example template for ways to do things. It looks like “hands on” electronics is becoming available to everyone.

magnu (author)2012-01-21

Where does the hysteresis in the curves come from?
Is it device warming?

To be able to use these curves for paramter matching, it is very important to know that the data was sampled under steady conditions.

dsauer (author)magnu2012-01-21

The looping is due to a capacitance effect. The matching of beta for the bipolar can only be measured, because a current it being supplied to the base by a resistor. Normal bipolar matching is usually done by applying the same emitter base voltage to two transistors and measuring the match of collector current. If you want to do this, the schematic would only need one or two resistors, with a complete redesign of all the software. You can measure match of CMOS devices.

About This Instructable




Bio: Have 30+ years of experiences as a Mixed Signal IC Design Engineer.
More by dsauer:Arduino BiCMOS Curve Tracer3D-tizing PhotosHandling LapTop Waveforms
Add instructable to: