Hello everyone!
I decided to finish this project. It was quite a bumpy ride. A lot ideas I tried and fail. I think one of the most challenging aspects was to define the specs. I think I finally set my mind. So, it's current source with precise voltage clamp. I've already built a TIA amplifier for low-current measurements and, while it's a cool small device, I really miss the adjustable voltage source for it. I kinda need the same functionality, but with voltage/current sources.
So, desired specs:
- Voltage range: 0.1v-12.5V (ideally down to zero)
- Current: 10nA - 50mA+
- Overshoot should be below 0.3V.
- It should limit current within 2us at currents above 50mA.
- The accuracy of set current is not important, I'm happy if it's within 1%.
- Accuracy of current readback is important. I want to get a dynamic range of 100db from a single shunt. I believe this is possible, already achieved on this project: [1].
- Voltage readback: within +-2mV absolute accuracy, but really not that important.
I'm attaching the circuit I want to build. The two "tricks" I used are the following.
- Put a small capacitor across measurement shunt. I can't believe I didn't do that before. It greatly helps with stabilizing voltage regulation, without, I believe, compromising other parameters too much. Even 1nF cap helps a lot
- The voltage is clamped with a bjt in emitter-follower configuration (Q2 on schematic). It has to be set slightly above the set voltage so it doesn't normally conduct, but only dumps current on overshoot event.
The clamping with a bjt is kinda "meh". It has to clamps as close to the output voltage as possible, but also not to affect accuracy of set current. That's not possible to achieve for all ranges of currents. So, in the real circuit I make the clamping voltage configurable, the user can select tradeoff between overshoot voltage and how precise the output current is set (NB this doesn't affect current reading precision).
There are other issues with this circuit. One is stability. I think without clamping with Q2 it starts oscillating for some values of output capacitance. So, compensation might need to be adjusted, I left some provisions for that on the pcb.
Also, implementing "floating" reference voltage V28 adds some circuitry. In the real circuit I implement it with instrumentation amplifier (ad8227) with buffered reference pin. What I don't like is that most inamps cannot work with the voltage headroom I have. AD8227 is pretty much the only device I could find that would fit the circuit.
To be continued...
[1] Measures from <0.1pA to 32nA+ on single 100M shunt:
https://www.eevblog.com/forum/projects/yet-another-picoammeter/msg5498422