Assembling the V2.12 Programmable Voltage Reference Board.

It was homemade pizza night, so I got off to bit of a late start with board assembly.
After a thorough cleaning of the board with isopropyl alcohol and hitting all the pads with a flux pen, I applied solder paste using a blunt tip syringe. I am currently using MG Chemicals 4860P Sn63/Pb37 solder paste with good results.
Next came the component placement which went well except for the AD5060BRJZ which comes in a 8‑lead SOT-23 package with a 0.65 mm lead spacing.
Refow soldering on the Presto “Liddle Griddle” electric skillet was uneventful, and I manually followed the reflow profile provided by the solder paste manufacture using a non-contact infrared thermometer. I took special care not to overheat or stress the Texas Instruments voltage reference IC’s.

I wanted to easily remove the Teensy 3.2 processor board if needed, so I used some Mill-Max 350 series interconnects. Two 14 pin interconnects were used for the outer two rows and a single 5 pin interconnect with one pin removed for A10, A11, REF and vUSB for the inner row.


Even though the solder paste used is a no-clean type, I thoroughly cleaned all flux residue, finger prints, etc. from the main board with an isopropyl alcohol bath and light scrubbing with a brush to remove all contaminants, followed by an alcohol rinse and canned air drying.
Initial board testing went well, with the 5 volt rail reading 4.998 volts and the negative bias supply around ‑2.3 volts. Analog filtered 5 volt rail measured 4.82 volts which is well above the 4.6 volt minimum. Current draw was under 7 mA with the display attached and reading 1.000 V.
The 2.048 volt reference was spot-on, but when adjusting the trim pot for the 4.096 reference I was at the extreme end of the adjustment. A 11K ohm resistor in place of the 12K in position R1 put the adjustment back in the center of the adjustable range.
I did notice an error in the silk screen for the display connector which had the +5 and GND text reversed. This has been corrected in V2.13, along with some solder mask aesthetic issues and the value change in resistor R1.

I still have a bit of software to finish, but all of the major parts are completed.
One of the hardware features that I added to the V2.12 board was the ability to monitor the actual output voltage using the Teensy 3.2’s 16 bit analog to digital converters. My plan is to compare the programmed output voltage against the actual voltage and change a status LED from green to red if it is outside a specified range.
To maintain output measurement accuracy I am using a TI REF5020ID 2.048 V voltage reference in U4 connected to the Teensy external vref pin. Output voltage is supplied to the Teensy analog input via an OPA365 buffer op amp U3 and a Vishay foil resistor 25K-25K voltage divider IC2.
The buffer op amp for the AD5060 digital to analog converter was changed to a LTC1152 zero-drift op amp with a 10 mA sink and source capability.
Other hardware items added are a MAX14931 four channel digital isolator IC1 used for the SPI connection to the DAC, and a transient voltage suppression diode D3 for ESD protection across the output.
Next part is mounting the board in the case, aluminum voltage control knob modifications, user interface decisions, possible shielding for the analog side, BOM documentation, and power supply decisions.

Parts and files for the Programmable Voltage Reference V2.13:
OSH Park PCB board service Project page
Eagle CAD V7.5 PDF, schematic, and board ZIP file
Firmware for Teensyduino — Version 0.7 with output V check ZIP file
Front Panel Designer — Front panel for PV Reference2 ZIP file
Digikey cart for V2.13
Download Digikey CSV parts file
Hi
I build the reference and am impressed by the quality and stability of the generated voltage. I would also like to put the circuit in an enclosure. Would you share the design file for the front panel ?
Cheers
Michael
Hi Michael,
The post has been updated with a link to “Front Panel Designer” Front panel for PV Reference2 ZIP file.
Thanks,
Greg (Barbouri)
Thank you, great project!
What is the negative bias for?
Regards
Jon
Hi Jon,
The negative bias is specifically for the OPA365 Op-Amp. See the datasheet section 7.3.4 “Achieving an Output Level of Zero Volts (0 V)”.
Version 2.19 of the board has additional negative bias filtering and separate bias resistors for each Op-Amp.
Greg
Hello Greg,
Talking about stability. I could not get a very stable output from LTC1152 despite C25 and C21 are supposed to reject noise. I have replaced LTC1152 for OPA388 and this changed the stability completely for the best. On the lower end, long term 1mV is rock stable with 143nV standard deviation and 1uV p‑t-p over a few hours. This is an amazing result in my view. On the upper scale at 4V stability is not that good, but still impressive with 8–10uV p‑t-p over a long term.
Not sure why my LTC1152 was very noisy.
Thanks
Alex
Thank you very for your help Greg — very much appreciated!
Hello Greg,
Can I use this reference to power, say, Arduino? I think this was an intention in the original uChip design?
I tried to power Arduino, but the encoder turned purple and voltage dropped from 3.300V to 1.492V. Consumption is 17mA or less. Is this an expected behaviour?
Thanks
Alex
Hi Alex,
This is the expected, and designed behavior of the PVR.
The violet LED indicator signals that the output does not match the set output value within the programmed tolerance.
The LTC1152 operational amplifier data sheet states:
“The LTC1152 features an enhanced output stage that can sink and source 10mA with a single 5V supply…”
“output resistance… is typically 140Ω with a single 5V supply…”
The “Programmable Voltage Reference V2.12” was never designed as a power supply, but it can be used within its specifications as a power source.
The original uChip design was intended to simulate an analog sensor input on an Arduino/ATmega processor.
uChip wrote in his design goals section, “This is a voltage reference, not a power supply, so a limit of a few milliamps is acceptable.”
Greg (Barbouri)
Hi Greg,
Yes, you are right. I can drive a small 0603 LED ~3mA, but not larger loads. uChip has used 1K resistor to drive load, which corresponds to 4mA.
I have a different question on calibration. Generally, my PVR is precise to 1mV. Say, 1V is displayed in the serial monitor as 1.000V and 6 1/2 DMM is saying 1.000581 V (average). However, read back voltage is sometimes is off. You are saying +/-4mV, which probably more corresponds to 10bit Arduino ADC. Teensy has got 12bit ADC. Firstly, can I get more precision from DAC? Effectively, I can get it down to 10uV (resolution — 4.096 / (2^16))?
How can I improve read back voltage? Maybe an external 16bit ADC on a daughter board?
Thank you
Alex
Hi Alex,
There is a separate section in the sketch for the Teensy A‑D calibration
// include Teensy A‑D error correction variables, Set for each Teensy
Serial.print(“ Output voltage = ”);
Serial.print((code * 0.0002502)-0.0007, 3); //0.0002500 base value
You will need to calculate the linearity and offset of the Teensy A‑D and enter the values.
Base values are: 0.0002500 and 0.0000
I am getting around 0.05% read back accuracy on all my PVR units after calibration of the Teensy A‑D.
You should be able to calibrate the main output to within 100 uV (62.5 uV step) of the set voltage, for all 4,095 output settings.
The read back value was never meant as a sub-millivolt readout. It was only to verify the output was working correctly within several mV.
My goal was to provide a visual response to an error condition, such as connecting a load over 10 mA.
Greg (Barbouri)
Hi Greg,
I just wanted to share my thoughts on vref. I think ultimately it depends on what accuracy you want to achieve. Additionally, I am of the opinion that for the best long-term drift, LM399 has to be used.
Talking about 2.12, I have not assembled it yet though I have the PCB. How accurate/stable do you find REF5040ID? What about long-term drift? How often do you have to re-calibrate it please?
Thanks
Alex