Unit - Keithley 2401
Setup - Sourcing 5V with 0.300A compliance in 2-wire mode
TLDR - Applying a strong load transient (which is high enough to hit current compliance) to a Keithley SMU can occasionally cause a large voltage spike before regaining the control loop and regulating the proper output voltage.
A brief background. I designed a board that is essentially a glorified LED driver running an ATMEGA328pb and using a handful of addressable APA102-2020 RGB LEDs aside from various other gadgets for Bluetooth and Qi. The power topology is such that the LEDs and the MCU share the same 5V rail with an appropriate amount of decoupling capacitance placed appropriately. For the sake of firmware development, I was using an external supply in the form of a Keithley 2401 SMU to supply the 5V rail. As mentioned above, it was in 2-W mode supplying 5V with a current compliance of 300mA. Everything worked great and this setup worked great for a while. Over the course of a few days, I eventually went through 3 boards in which presumably the internal protection structure of the ATMEGA was failing due to overvoltage on the 5V rail. On the failed boards, the ATMEGA gets very hot and the rail exhibits an extremely linear IV curve indicating a resistive short to ground of ~1.33Ω - hence the heat.
The last board that failed, did so at the exact time I increased the current limit from 300mA to 600mA. As soon as I hit enter on the SMU the board broke. This led me to wonder if the SMU was somehow causing this since at this point I believed it was power rail related and with this last bit of information, I honed in on the SMU.
To replicate my observations, I evaluated the Keithley in a few different conditions: output toggle-on with no load, output toggle-on with compliance triggering load, and lastly applying a significant load intermittently.
Using a 10Ω resistor to force current compliance I added and removed the load somewhat periodically but ultimately randomly. What I saw was what I expected. The voltage applied to the load at point A, and a slow ramp to ~3V at point B. 3V was because the output compliance was set to 300mA and I was using a 10Ω resistor, therefore the voltage would go to a maximum of 0.3A*10Ω = 3V.
(keithley_good.png)
After a bit of tinkering I found that I could cause a relatively large spike on the output by putting the SMU into compliance (again with a 10Ω resistor), and then quickly toggling that load forcing the Keithley to auto-range between the max 1A range and something lower. It was very inconsistent and seemed to point to a pseudo-random phenomenon. Regardless of the way to trigger the issue, the resulting waveform was identical across varying loads as well as on a couple different Keithley units (also tested this on a 2401). Notice the change in V/div in the screen cap. In this case, power was applied at point A, some sort of step at B, a large ramp at C, and then ultimately it corrected and returned to the expected 3V. This point C is what I am expecting fried my MCUs.
(keithley_bad.png)
A close-up of the pulse
(keithley_zoom.png)
I think I learned a few lessons here regarding the applications of SMUs and was reminded of the importance and simplicity of a standard power supply.
Regardless, my main goal here is to understand the following -
- Is there something about my setup causing this? Seems unlikely as it is reproducible on multiple units with different types of load.
- Is this unique to the Keithley products?
- Is there an explainable cause for this? Did the control loop simply lose grip of reality?
- Are there methods to reduce the impact of such transient issues? (i.e zeners, tvs, capacitance)
P.s That ended up a lot longer than I expected. Thanks for reading