Hey there,
First post here on the forum, pretty exciting !
So, in my company we have an internal project which started out as a portable +-10V power supply with precise 100mV steps. This project has changed alot in specs, ending up becoming a 0-5V power supply with 100mV steps (more like 0.8 - 5V).
After the design was done, higher ups started asking if it was possible for the power supply to output square waves. After implementing simple "turn-on" and "turn-off" logic with mosfets, they decided that having triangular waves was a must as well. This last requirement lead to a complete redesign of the project, switching from power supply to signal generator.
When it was a power supply, the circuit was an adjustable output voltage regulator with the two feedback resistors + a third resistor connected to the output of a DAC. Changing the output of the DAC changed the output of the voltage regulator and the voltage steps were achieved.
Since the minimum output value of the voltage regulator was 0.8V, it wasn't able to output a triangular wave. The found solution was to just use the DAC as the "voltage source", buffered with a precision opamp. This is where the design gets murky, because alot of money and time was already spent getting to the previous solution, I tried to reuse as many parts as I could.
The DAC (MCP4922) only outputs positive values, so the two channels control the two outputs. For example, if the required voltage level is positive, then that voltage level is applied to channel A while keeping channel B at 0 and when a negative voltage level is required the voltage level is applied to channel B while keeping channel A at 0. This posed a problem for the opamp, since it couldn't really output 0V when its VS was 0V. The minimum value was 170mV. This was completly ruining the 100mV step requirement, so a voltage inverter to generate -5V was soldered to the PCB, cutting the ground connection to VS and replacing it with -5V. This worked out, even when the output of the voltage inverter rises to -4.6V at turn on.
Basically, the design works and the higher ups are happy. It's a sandwich with an Arduino Uno at the bottom, a custom board in the middle and an RGB LCD Shield from Adafruit on top to make the user interface. But, I'm totally not satisfied with the result, it just feels and looks bad from any angle you see it. The truth is that I don't have more knowledge to make it right. I'm using BNC connectors as the output, which isn't ideal for "power supply" applications, but since we have a lab and have many of those cables laying around it seemed good. And, by using a following opamp, the output current is somewhat low. We have some loads here that need high peaks of current (100-250mA) at startup but drop considerably after being turned on (<1mA). I want the design to be able to withstand those high peaks without droping too much in the voltage level (taking into account the drops on the cables, etc) and also wanted it to be able to leave the output in HiZ.
I've seen for other opamps that having multiple units in parallel would make them able to supply more current, but they are expensive and Mouser doesn't have the version with 4 amps available. Higher output capacitance to be able to withstand the peak current could be an option, but they would just ruin the dynamic performance. Would something like a series pass transistor work ?
For the HiZ requirement, I've been looking at how the ADALM1000 from Analog Devices and they have these electrical switches (example ADG719BRTZ). Could the solution be something like this? That one in particular does not work, it can't handle the currents that we're trying to achieve, but would the solution be around something like that?
PS: I graduated college 2 years ago and started working one month after defending my thesis. I've been working alone in the electronics department, so everything I know has been self-taught or taught at college. I'm attaching the schematics and if someone could give me some tips/feedback on them I would be really appreciated! This version implements the atmega processor on the board to try and not use an arduino board since they're expensive.