PyPSUcurvetrace: a flexible, open-source curve tracer using programmable power supplies

Member
Joined 2005
Paid Member
Note: this curve tracer project has a come a long way, and is now called pypsucurvetrace. This thread is for documentation, development, and discussion PyPSUcurvetrace. The software is available as a Python 3 package at GitHub and documentation is available at ReadTheDocs.

-----------------------------------------------------------------------------------------------------------------

I recently was looking into curve tracers for power transistors. I want a setup that allows straight-forward and automatic interfacing of the curve tracer to a PC (for data acquisition and also for instrument control). While there are a few testers available for small-signal transistors, those devices don't seem very useful with power transistors.

So... I was sitting in my workshop, fiddling around with my Voltcraft PPS bench power supplies. I remembered that these PSUs have a USB computer interface, and it's actually not so difficult to talk to these PSUs via USB. I have used the PPSs at work with a little Python program that sets current or voltage limits, and reads the true voltages and currents from the PPS. The readings are surprisingly accurate (as confirmed with different DVMs). The different PPS models have different voltage and current limits, but most models will have no problem to torture a power transistor.

The idea would be to use two PPS PSUs with a computer to determine the voltage/current curves of a transistor as follows:
  • The first PSU provides the voltage across the transistor and the current flowing through the transistor.
  • The second PSU provide the voltage applied to the gate or base of the transistor.
  • The computer sets the gate/base voltage (second PSU) and then traces the curve for this gate/base voltage by varying the voltage and current current limits at the transistor (first PSU).

I am pretty sure it would be straight forward to scan the U/I characteristics of a power transistor this way. However, the process would be rather slow (say 1 second per data point or longer), because the communication between the computer and the PPS is slow, and the PPSs are slow in setting the and reading the voltage and current values. I guess it might be tricky to keep the transistor at a sufficiently constant temperature during the test sequence. Do you think this might be an issue? Do you see any other issues with my idea?
 
Last edited:
Yes, that's a kind of pulse mode, might as well use zero current as the mean bias. Thermal equilibration should be quick on a liquid-cooled heatsink, or a massive one (big slab of aluminium)


You can measure temperature crudely by sensing Vbe at a fixed current occasionally, and even correct for it - Vbe has a pretty well defined relationship to temperature at any given current level.


The pulses should be as short as possible as die temperature will rise across the duration.
 
Member
Joined 2005
Paid Member

Attachments

  • irfp150.png
    irfp150.png
    118.8 KB · Views: 1,143
Member
Joined 2005
Paid Member
Here is another example showing the curves of a 2SK214 MosFET. This is a lower current device. The Voltcraft PPS power supplies have a current resolution of approximately 20 mA, and you can see the corresponding wiggles in the 2SK214 curves. But the PPS still work okay as "curvetracers" for such lower current devices!
 

Attachments

  • 2SK214_example.png
    2SK214_example.png
    129.7 KB · Views: 1,045
Member
Joined 2005
Paid Member
Subscribed!
I am using Locky_Z 2019, it's great, up to 36V,3~5A.
However, the hardware and software design needs lot of optimization,

I am not going to claim that my code is easier to work with than the Loky_Z solution. That said, I also have a Loky_Z board. I never used it. First I had a hard time to find the software. Then I had a hard time to find a Windows computer (I am a Linux guy), so I thought I'd go with Wine or a virtual machine. Then I had a hard time to get the USB/COM ports to work from within Wine or the virtual machine. In the end I desperately needed a quick solution to check some parts I bought from ebay, and I wasn't sure if they are fakes. I needed it quick. The Voltcraft solution worked right away, so I currently have no need to make the Loky_Z board work.

so I am exited to see a new design, especially for power transistors.

It would be great to have a 5~10A current and 50V capability.

Piece of cake! Voltcraft have some nice 60 V / 15 A units :D
They cost a bit more than a Loky_Z, though.

So far I have only used my "curve tracer" for FETs. No BJTs so far. I have a hard time to wrap my head around BJTs, as I am more of a tube guy... ;)
 
^Nice and easy pulse testing!

My solution is very different. I wanted full computer control and data acquisition. The Voltcraft PSUs are slow. Once the computer changes the set point (voltage, current), the PSUs take a second or two to attain stable output. Time for a cup of coffee or a beer for each DUT...
 
^Nice and easy pulse testing!

My solution is very different. I wanted full computer control and data acquisition. The Voltcraft PSUs are slow. Once the computer changes the set point (voltage, current), the PSUs take a second or two to attain stable output. Time for a cup of coffee or a beer for each DUT...

Hi mbrennwa,

Can you post some picture of your design? some framework or schematic perhaps.
I am not quite understand your architecture well.
 
I think development on Windows is necessary to make this project more user-
friendly.

Windows: it should work right out of the box. It's just plain Python code, nothing specific to the operating system.

User friendly: I don't see the need for a pretty GUI. All I want is an efficient tool that gives me the data I need. As it is, I enter one single command, give it a sample name, and off it goes. The data ends up in an ASCII table.

The DIY community is waiting for a better design than Locky_Z's, and this need to be easy, convenient to use.
I wish there's gonna be a OSHW, or a DIY project for HiFi DIYer, we've been waiting for such design for long long time. :)

You could use a Raspberry Pi and two programmable power supplies to get a standalone curve tracer system.

The Voltcraft PPS units have some limitations:
  • They take a few seconds to stabilise the output voltage / current. This slows down the curve tracing.
  • The resolution of the current measurement is about 20 mA. That's fine for high current DUTs, but not great fow low-current devices.
  • The voltage output does not go lower than approximately 0.8 V. Not a big issue for most DUTs, but it would still be nicer to go closer to 0.0 V.

I just stumbled over the RND Components power supplies. According to the data sheets / manuals, they offer 1 mA resolution on the current measurement. I have no clue how to talk to those units via USB or serial port.
 
I think development on Windows is necessary to make this project more user-
friendly.

Windows: it should work right out of the box. It's just plain Python code, nothing specific to the operating system.

User friendly: I don't see the need for a pretty GUI. All I want is an efficient tool that gives me the data I need. As it is, I enter one single command, give it a sample name, and off it goes. The data ends up in an ASCII table.

The DIY community is waiting for a better design than Locky_Z's, and this need to be easy, convenient to use.
I wish there's gonna be a OSHW, or a DIY project for HiFi DIYer, we've been waiting for such design for long long time. :)

You could use a Raspberry Pi and two programmable power supplies to get a standalone curve tracer system.

The Voltcraft PPS units have some limitations:
  • They take a few seconds to stabilise the output voltage / current. This slows down the curve tracing.
  • The resolution of the current measurement is about 20 mA. That's fine for high current DUTs, but not great fow low-current devices.
  • The voltage output does not go lower than approximately 0.8 V. Not a big issue for most DUTs, but it would still be nicer to go closer to 0.0 V.

I just stumbled over the RND Components power supplies. According to the data sheets / manuals, they offer 1 mA resolution on the current measurement. I have no clue how to talk to those units via USB or serial port.
 
I just stumbled over the RND Components power supplies. According to the data sheets / manuals, they offer 1 mA resolution on the current measurement. I have no clue how to talk to those units via USB or serial port.

Note to myself: this one is tempting: RND 320KWR103 Programmable DC Power Supply 300W 60V 15A RND Lab
300 W, 0 - 60 V, 0 - 15 A, with 1 mA and 1 mV resolution. Output stabilisation is rather quick, if I read things right on the WWW.
There is also an existing Python class that can be used to talk to the RND unit: GitHub - uberdaff/kd3005p: Python library for USB serial control of the RND LAB 320-KD3005P power supply.
 
Member
Joined 2014
Paid Member
Note to myself: this one is tempting: RND 320KWR103 Programmable DC Power Supply 300W 60V 15A RND Lab
300 W, 0 - 60 V, 0 - 15 A, with 1 mA and 1 mV resolution. Output stabilisation is rather quick, if I read things right on the WWW.
There is also an existing Python class that can be used to talk to the RND unit: GitHub - uberdaff/kd3005p: Python library for USB serial control of the RND LAB 320-KD3005P power supply.

How about this one:
TTI CPX-200D
I'm going to try it (already have it), according to user guide it has Serial, USB and http interfaces.

https://www.tequipment.net/TTi/CPX2...MI_4G04M_t5wIVy0PTCh2OUwOsEAAYAiAAEgIm8vD_BwE
 
How about this one:
TTI CPX-200D
I'm going to try it (already have it), according to user guide it has Serial, USB and http interfaces.

https://www.tequipment.net/TTi/CPX2...MI_4G04M_t5wIVy0PTCh2OUwOsEAAYAiAAEgIm8vD_BwE

CHF 999 is A LOT OF MONEY! Okay, it has two outputs in one box, which is convenient for use as a curve tracer.

Resolution of voltage and current readings is specified at 10 mV and 10 mA (the "Voltage Meter" and "Current Meter" specs). This is a bit better than my Voltcraft PPS units, but still 10 times worse than the specs of the comparatively cheap RND unit.