Thanks for the input guys, some great feedback. I'll try my best to respond as comprehensivly as I can!
You could maybe do away with U2A, as it is buffering a low impedance source into 10K. And U4D could go as well. You can compensate the current the VOUT_MON divider draws in software (as you'll have to do anyway, because you are measuring current before the regulator). That way you can use just a quad op amp for the whole power supply. Take it with a pinch of salt though.
Also, aiming for that current resolution, you'd have to take the stability of the CC load into account.
Juan
In regards to U2A, Dave describes his reasoning behind it in
this video here at 39:50. I believe this issue still rings true with my design? You're correct about removing U4D, I can indeed do that but the current offset will vary depending on the output voltage. If I could sample both the output current/voltage simultaneously I could account for this but unfortunately the MCU I'm using only has a single ADC that has to scan between the inputs so there'll be an error associated with the time delta between the two readings. In the grand scheme of things I can afford to pay for the extra quad op-amp part as this isn't intended as a commercial product
The stability of the CC load is definitely a good point! I'll swap the 3.3V switch mode voltage to the more stable 2.5V reference voltage. I should probably stick a ferrite bead on this line as well just to help with any switching noise
Instead of using LT3080, I would sudgest you use LT3081. With LT3080, this current limiting that you decided on using is not that great, to say the least. I also played a bit with it few years ago, but then went with LT3081. The good thing about Lt3081 is, that it has Imonitor pin and Ilimit pin. You can play with this pins, to achieve much better over current detection and CC mode.
I've seen some of the threads people have made about the instability surrounding the current limiting circuitry. Ramming the set pin down to ground it is a bit of a sledgehammer, although as the CC mode is mainly just for protection in my applications I'm not all too concerned. Then again the LT3081 has a temperature reading pin so calibrating out temperature effects becomes feasible. I also don't need high accuracy current setting options so a 8 or 10 bit E-pot could greatly simplify this section. I'll definitely be giving this a serious look as I wouldn't have to worry about instability and could cut out around 3 op amps to boot. Potentially a pain in the arse to calibrate it's current consumption at different loads though, could end up messing up the low current ranges. Perhaps a low-side current sensing solution would make more sense with this chip
I am working on a similar project.
Sadly QC3 was a partial dead end for me. The most I was able to get out of it was 12V. I'm now attempting to add USBPD.
If you can find a reasonable cost 20V capable supply, I would like to see it. However, the two I have tried, even though they have a 20V capable IC, were unable to output 20V. I asked RuiDeng and they also seemed to have trouble locating one. Its possible there is more complexity to the protocol, but I think its no the case as QC 2 20V output is very simple (D+/D- = 3.3V).
Honestly though even with 12V in most cases this is a nice design.
Agree with Juan on U2A and U4D. Especially U2A, as input common mode range is V+ - 2V, so it could produce some unusual results.
You can add a small cap across R10. You may also consider an RC filter on IMON_Course, either input or output, as it will likely be quite noisy. But not really an issue if you filter for DC levels.
The drop across 2.5R is somewhat significant at 1A, but may be worth it for that low current resolution.
Are Vset and Iset DAC or PWM outputs?
Duly noted on the QC 3.0 voltage! I originally started with the idea of using this and later discovered the part I was using supported USB-PD, then following that found out Dave's new uSupply design will also use it! Chances are I'll be following suit as I'd rather use an open standard anyway.
I've answered Juan as well on U2A but good you elaborate on what you mean by unusual results?
The RC filters is a good shout. I'll at the very least put down footprints for them so I can add and remove them as seems fit in testing
2.5R is definitely pissing away some power but I'm not too worried about it. I'll need to be careful with the PCB layout and the shunts to keep temperature issues to a minimum but as this is a source and a measurement unit I don't have to worry about any burden voltage so I'm taking full advantage.
You measure current before the current sink. Do you think you will obtain 1.2µA resolution ?
The current sink will have to be very stable. What will happen when the output will be closed to 0V ? Don't you need a negative supply ?
I believe that resolution is feasible but it will definitely have to be calibrated/dialed in. I may need to keep everything at a fairly constant temperature to better my chances.
Some people seem to be using the LM334 as the CC sink and this would require a negative rail to truly get down to zero. If I'm correct in my thinking, using this opamp arrangement doesn't.
Before or after there are downsides to both. The problem with no feedback when putting it after would mean a large drop in the output voltage (2.5V).
You can have a software control loop for the output voltage, but, response will be a bit slower I think. Would be interesting to see more "pure software" based designs though.
Everytime I've looked at low side current sensing the analogue section of the circuit explodes in complexity. I've always ended up needing to use instrument amplifiers or negative voltages, both of which can be a pain or increase cost significantly. There's every change I'm just making a dogs dinner of it though...
A pure software design is an interesting one although I think to get decent response times you'd need a pretty quick ADC and probably an FPGA. On the plus side you'd get pretty great datalogging functionality and you'd be able to tune the filter responses. Controlling a tracking switched pre-regulator would be simple as well. You could more easily switch in and out different shunt resistors as needed as well