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

Ok, so I tried the RND / Korad KWR103 power supply (0-60 V, up to 15 A). It's waaaaay better than the Voltcraft PPS! It does go down properly to 0.0 V, unlike the Voltcraft which does not want to go below 0.8 V. The RND / Korad unit has a measurement resolution specification of 1 mV / 1 mA, whereas the Voltcraft resolution is maybe 100 mV / 20 mA. The RND / Korad is about 5-10 times faster than the Voltcraft in setting the output voltage / current values.

I attached a test showing a test of a 1.5 kOhm resistor using the RND / Korad, where I compared the observed and theoretical U/I "curve". The measured current values are mostly within 1 mA of the theoretical value. Good stuff!

(With the Voltcraft, the current readings below 30 V / 20 mA would be just blank / zero.)

I have already worked on the Python code to work with the RND / Korad power supply. This has broken a few things for the Voltcraft code, so I need to fix this. Once I have this all set up, it **should** be straight forward to add support for other power supplies. I hope it won't be too long until I have this ready!
 

Attachments

  • KORAD_KWR103_RESISTOR_TEST.png
    KORAD_KWR103_RESISTOR_TEST.png
    38.2 KB · Views: 490
Last edited:
The resistor test was more aimed at figuring out how accurate and precise the readings of the Korad / RND power supply are, and if the specified resolution of the readings is real.

Of course I could fit a straight line to the resistor data and then determine the resistor value from the slope. But wouldn't this be a crazy complicated way to determine the value of a resistor? Using a DVM is a bit easier, I think. :D

The story might be different when it comes to more complicated parts, like BJTs, FETs, and maybe even tubes (if the power supplies can go to sufficiently high voltages). I don't know much about the typical models / equations one would use to fit to the measured data from such parts, but its an interesting idea. I am sure this has been done many times. If someone knows about this stuff, please don't hesitate to jump in!
 
Member
Joined 2014
Paid Member
^Are you okay with Python? If so, you could use the code at GitHub - mbrennwa/PyPSUcurvetrace: Python program for I-V curve tracing of electronic parts using programmable power supplies, using the lib/powersupply_VOLTCRAFT.py and lib/powersupply_KORAD.py files as a template. Then it's just a matter of fiddling this in to lib/powersupply.py and it should work...
Yeah, I saw it. Nice work! Will try it. Will have some transistors to match,
for one of the the next projects.
 

Attachments

  • 2SJ79.png
    2SJ79.png
    29.1 KB · Views: 575
And here's an example of an IRFP150 part. I set the power limit to 100 W, because my heatsink would not provide enough cooling for more power without killing the IRFP150 (I know this because I tried going up to 300 W with another IRFP150, which is now in the trash bin).

You can see how the IRFP150 tends to run away at higher power levels, which is due to higher temperature. It would be better to mount such high-power DUTs on a large copper block or a water cooling system to achieve more stable temperature conditions during the test. I also have some ideas on how to improve the heat balance via the software... let's see.
 

Attachments

  • IRFP150.png
    IRFP150.png
    38.8 KB · Views: 483
Here's a photo showing my curve tracing setup using two Korad/RND power supplies. The DUT in this example is a SJEP120R100 power JFET. The larger PSU on the right is connected to the Drain/Source pins, and the smaller PSU on the left is connected to the Gate/Source pins (via a gate stopper resistor, hidden by the heatshrink). Nothing fancy, but works really well.

The next improvement to this setup would be to improve the cooling of the DUT. Going over 40 W dissipation leads to substantial thermal drift of the DUT, resulting in deformation of the curves. Testing with very short pulses would also solved this issue, but is hardly possible with conventional programmable PSUs. Some PSUs will allow getting a data point within less than a second, but going (much) faster than 0.1 seconds is not possible. This is too long to keep the DUT at a sufficiently constant temperature without proper cooling.

What would be the best approach to keep the DUT temperature constant? A large copper block that provides high thermal inertia and efficient heat exchange with the DUT? Water cooling?
 
Last edited: