26 APR 2017
Assembled Unit - Power (+5V) in on the left, Programmable Voltage out on the right. The four knobs correspond to Volts (0-11, yes - you CAN turn it up to 11!), 100mV's, 10mV's and mV's. The unit has an effective output range of +/-11.999V.
I *could* have done this with a micro and LED or LCD display (and preciison DAC), but knobs are a nice simple user interface - no desire to make this a software project. The ESwitch rotary switches have a very satisfying detent feel when turning the knobs. I could only find break-before-make, so the output does spike when switching :(.
Running. Unit was built & calibrated yesterday against the meter below (Fluke 8840A). For this picture, both the Unit and meter have been left to warm up for 20 mins. No idea if the meter is still in 'cal' after 25 years (initial 1 yr accuracy for DCV was spec'ed @ 0.005%), but it should at least be linear - so relative measurements should be reasonably good. For a reading of 10.0000V, 0.005% is +/-5 counts.. In the picture below I dialed in 5.678V, and the meter shows 5.6776 out (400uV error).
Yes, I like through-hole electronics. Although you can't get the latest and coolest chips, it is *SOOOOO* much easier to assemble and debug than SMD, especially when you have 'over-40' eyeballs. If anyone should want to buy a thousand of these, I will be happy to redesign it in SMD, and have somebody else worry about putting together all the near-microscopic pieces...
24 APR 2017
Got boards back from BASICPCB.com....Pretty good work and sooner than expected!
Blank Boards - Two layers, with most of the wiring on one side and the other ground plane. An all-analog design is nice in this respect that without data busses you can often get away with a simple layout.
20 APR 2017
Thought a programmable voltage source would be a fun project. It has been a long time since I have done a serious hardware project for entertainment value (The EARP-1 Evolvable Hardware Simulator back in 2005-ish?). Circuit design and PCB layout is actually relaxing, kind of like knitting I suppose, if done outside a corporate environment where you can take your time and don't feel as if you are going to be taken out and beaten for anything that someone doesn't like.
Here is a block diagram of my the calibrator:
Nice simple analog design. The voltage is developed by a feedbakc amplifier that uses a programmable resistor string as its feedback loop - basically a precision resistance substitution box that goes from 0-110k ohms by 10 ohm increments. To implement this in a way where it is monotonic and reasonably linear required 0.1% resistors for the 10k, 1k,and 100 ohm decade resistor gangs. To get decent performance also required doing some selection on the 10k and 1k resistors as the 0.1% spec all by itself would only guarantee (at best) 3 good digits. The alternatives were to use 0.01% resistors ($$$$), or to trim every resistor in the 10k gang - which would have sucked a bit of the joy out of the project.
To get the output range required getting a +/-15V supply, which is inconvenient unless you have a spare bipolar supply handy. for this reason I put a DC-DC converter on the board to go from +5V (available from a handy wall wart) to the higher voltages. a REF02 supplies the core 5V reference, and amplifiers with gains of 2 and -1 are used to develop +10V and -10V intermediate references. The output driver has both bipolar current limiting (~ +/-15-20mA via foldback) and has remote sensing capability. The unit has three basic trims:
One conspicuously absent trim is that for offset voltage. Good opamps are not all that expensive, and I chose OP2277PA's, dual units with <50uV of offset. Input Bias & Offset Currents are also pretty decent (<4nA), especially for a bipolar device. Using good opamps eliminates some pesky trim pots.
In general, the way to trim this unit is to just monitor the output - there are no internal cal-test points in the design. The first trim is the output dirver CMR, which requires setting the unit to 0.000V and monitoring the difference between SENSE- and OUT as you lift SENSE- up to some value (5V?). Once this is out of the way, the next trim is the +10V reference and fianlly the -10V reference. Note that you DO NOT CARE if these points are actually +10 and -10V - what matters is that you get +10 and -10V at the output whan you dial these values in.