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

Member
Joined 2011
Paid Member
One of the wonderful features of the HP4145 / 4156 curve tracers, is their ability to accurately measure the partial derivatives

gm := partial(Ice)/partial(Vbe) ... and/or ... partial(Ids)/partial(Vgs)

go := partial(Ice)/partial(Vce) ... and/or ... partial(Ids)/partial(Vds)

ri := partial(Vbe)/partial(Ibe)
 
Member
Joined 2011
Paid Member
I think the HP instrument is programmed with all of the super wizard algorithms discussed in the Wikipedia article

Wikipedia: Numerical differentiation

and, I think, it automatically performs stepsize adjustment all by itself, invisibly to the user. The user merely says "plot gm when Vce is a fixed 3.0V and when Ice sweeps logarithmically from 1uA to 10mA" then, presto, out pops a plot (and an ASCII data file) of gm versus Ice. The user performed no postprocessing whatsoever. The numerical computation wizards at HP did all the hard work for them.
 
This is a great solution for curve tracing, especially for high current scenarios.

My suggestion is, could it be something like .exe that people don't have to learn python. It would also be fantastic if people don't need to use command line to order the devices.

It would be game-changer if the user interface could be more user-friendly and command-line-less.

Thank you for the contribution anyway.
 
With your *.exe comment you seem to imply a Windows application. The Python code will work on just about any operating system. However, I don't have or use Windows, so I'd need some help by someone who knows who to make a "package" that will be easy to install and run on Windows.

I'll look into PyInstaller.
 
With your *.exe comment you seem to imply a Windows application. The Python code will work on just about any operating system. However, I don't have or use Windows, so I'd need some help by someone who knows who to make a "package" that will be easy to install and run on Windows.

I'll look into PyInstaller.

Yes, by *.exe I mean a standalone Windows application.
I know there's pyInstaller or something like that, but the point is command-line.
I think many DIYers are using Windows, right? So if DIYers want to trace curves, they have to:
1. Be familiar with Linux and command like: "sudo adduser johndoe dialout"
2. Make the USB driver running correctly (some issue may happen here)
3. Input command syntax (even more harder for Windows users I think)

The above is my experience as a Windows user who don't know how to use python and commands.

So, could there be a simple graphic interface? It would definitely help users to get into the curve tracing world. For example, making a dialogue box that can be used to connect the hardware and define PSU1/PSU2.

I am so interested by this but I have no Linux system and python scares me.

BR,

Eric
 
My personal interest with the curve tracer is to add a controlled heater block that allows tracing power transistors/DUTs at controlled temperature conditions. The idea is that the the program regulates the temperature of the DUT using a temperature sensor and some heating elements (power resistors). The curve tracer will only take readings from the DUT if/when the DUT temperature is within a predefined tolerance of the target value.

I added this and the items from the above posts as feature requests to the source code repository at GitHub, so they are on the todo list. That does not mean that I promised to implement them soon ;)
 
I played with the heaterblock idea a bit. It works! See attached plot of an IRFP150, which I traced at constant 30°C, constant 50°C, and constant 70°C.
 

Attachments

  • IRFP150_heaterblock.png
    IRFP150_heaterblock.png
    67.4 KB · Views: 185
Sure, a transistor could be used as a heater element. However, there needs to be something that makes sure the temperature of the heater block remains constant even if the DUT is dissipating heat into the heater block.

I used some power resistors bolted to the heaterblock. The resistors are driven by a power supply that is controlled by a PID controller implemented in the curve tracer program. The PID controller reads the temperature of the heaterblock using a DS18B20 temperature sensor and adjusts the power supply output such that the heaterblock remains at the desired temperature.
 
AX tech editor
Joined 2002
Paid Member
My personal interest with the curve tracer is to add a controlled heater block that allows tracing power transistors/DUTs at controlled temperature conditions. The idea is that the the program regulates the temperature of the DUT using a temperature sensor and some heating elements (power resistors). The curve tracer will only take readings from the DUT if/when the DUT temperature is within a predefined tolerance of the target value.

I added this and the items from the above posts as feature requests to the source code repository at GitHub, so they are on the todo list. That does not mean that I promised to implement them soon ;)
mbrennwa, how about this. Put a power FET as a switch between the psu and the DUT connection.
Then, with the switch open, set the psu output for the next step, wait 1 sec for the psu output to stabilize, close the switch for say 10ms to do the measurement, then open the switch, repeat.

That way you can measure at very low duty cycles and avoid the heating issue.

Jan
 
mbrennwa, how about this. Put a power FET as a switch between the psu and the DUT connection.
Then, with the switch open, set the psu output for the next step, wait 1 sec for the psu output to stabilize, close the switch for say 10ms to do the measurement, then open the switch, repeat.

That way you can measure at very low duty cycles and avoid the heating issue.
You still need to consider the time needed for the PSU(s) to read the voltage and current values, and to transfer these values to the computer. That's easily a lot more than the 10 ms you are suggesting, so the FET switch needs to be on for much longer, and self heating may still be a problem. Oh, and we'd need yet another USB/serial interface that controls the power FET switch. I am not sure this is the way to go.

What I did to solve the self-heating issue was to mount the DUT on a block of copper with a controlled (fixed) temperature. The copper block has a temperature sensor and some heater elements that allow setting the block to just about any temperature you want (as long as it's above ambient). The PyPSUcurvetrace software controls the temperature of the copper block during curve tracing. If the temperature goes out of tolerance, curve tracing is stopped until the temperature is back where it should be. Works like a charm!
 
AX tech editor
Joined 2002
Paid Member
You still need to consider the time needed for the PSU(s) to read the voltage and current values, and to transfer these values to the computer. That's easily a lot more than the 10 ms you are suggesting, so the FET switch needs to be on for much longer, and self heating may still be a problem. Oh, and we'd need yet another USB/serial interface that controls the power FET switch. I am not sure this is the way to go.

What I did to solve the self-heating issue was to mount the DUT on a block of copper with a controlled (fixed) temperature. The copper block has a temperature sensor and some heater elements that allow setting the block to just about any temperature you want (as long as it's above ambient). The PyPSUcurvetrace software controls the temperature of the copper block during curve tracing. If the temperature goes out of tolerance, curve tracing is stopped until the temperature is back where it should be. Works like a charm!
Yes, I forgot about that. That would require a simple sample/hold.

I see a potential issue with the heatsink/block. Even when temperature-controlled, the junction temp of the DUT would still climb, possibly significantly, during the test period.
That's out of your control. You can increase test time to let the junction temp stabilize, even calculate it, but then you're back at square one, too long test times.

Jan