USB Curve Tracer

This is a basic curve tracer that sends data to a computer to be plotted.

Similar projects worth following
This is a curve tracer which can be used to measure semiconductors and resistors at low voltages. Plotting and control is done from an external computer. I have created three revisions of the device, two of which actually do something.

Theory of Operation

The device is powered using an external 12V power supply. Two high current buffers are created using op amps and BJTs. One of these buffers is simply set to half the supply voltage to create a reference voltage. The other buffer is wired to a DAC which is controlled by an Arduino Nano. There are differential amplifiers which measure the voltage across the DUT, and the current through it using a shunt. These are wired to an ADC which is read by the Arduino Nano. The Arduino Nano facilitates the DUT sweeping process, and it sends data to a plugged in computer. The plugged in computer runs a Python application which issues sweep commands to the Nano and plots the resulting IV data using Matplotlib


Below is an example 1N4148 diode sweep and a 2N3904 BJT sweep. Short of curve tracing with a different system and doing a comparison, there is not really a good way to verify if these are correct. However, the general shape of the curves does look right. There is clearly some offset error for the red trace of the 2N3904 sweep.


My main test consists of sweeping a variety of resistor values using the curve tracer and comparing the results to the theoretical curves based on a DMM reading of the resistors. Here are some plots from my latest test:

Adobe Portable Document Format - 520.87 kB - 03/10/2024 at 05:47


  • Scope Comparison Test

    Marek12/17/2023 at 01:09 0 comments

    In this test I compare a trace taken by the curve tracer to a trace taken using an AD3 scope, a function generator, and a sense resistor. This is done for the 1N4001 and 1N4148 diodes. The results are shown below. They appear to be pretty close. 

  • Comparison Test

    Marek12/10/2023 at 00:59 0 comments

    This is a test comparing manual measurements of diode curves to curves captured by the curve tracer. The manual measurements were done by current limiting a power supply and reading out the voltage. As can be observed from the plots, I didn't take many data points. The 1N4001 comparison seems pretty close; however, the 1N4148 has noticeable error. This may just be because the 1N4148 is zoomed in more. 

  • Mounted the Circuit Board in an Enclosure

    Marek11/29/2023 at 01:32 0 comments

    The circuit board is mounted in an enclosure with stand offs. The screw terminal connections are run to banana connectors.

View all 3 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates