DIY Precision Voltage Current Reference


This project is aimed at building a precision voltage reference which is programmable from 0 to 4995mV with a resolution of 1mv and with a accuracy of better than 0.05% i.e +-2.5mV.

I have divided the project into three phases, in the 1st phase I will build Voltage Source using one channel of the DAC and then in next phase I have added the current Source using 2nd channel of DAC and in the final stage I will develop the custom PCB and enclosure to give it a professional look. I will also make it battery powered and add USB interface for easy PC control.

Phase 1 : Voltage Reference

As a phase 1, I have built the voltage reference using readily available power adapter, OLED display, Nucleo MCU board, and LTC2602 DAC Evaluation board.

High Level Wiring Details

DIY Precision Voltage Current Reference 1

MCU Connection Details

DIY Precision Voltage Current Reference 2

You can watch this video to understand how I built it, the components used and how it works.

Power Consumption Optimization (35mA to 5mA)

After completing the Phase 1 (Voltage Reference) I tested the power consumption of the project. It was consuming 35mA @ 9V which was very high.

As I want to ultimately make it battery powered I spent some time to figure out the scope of reducing the power consumption and with in a couple of hours I could reduce the power consumption from 35mA to 5mA without limiting any of the functionality 🙂

What to know how?


LEDs will consume a lot of power, in battery powered equipments we should avoid LEDs as much as possible or keep them off as much as possible and use only when needed.

I saw 3 LEDS on Nucleo board, they were consuming around 3mA, two 0603 SMD led(RED and Green) and one RGB LED.

DIY Precision Voltage Current Reference 3

OLED Display

OLED displays have very good brightness and wide view angle but they are power hungry and most of the time not suitable for battery powered applications.

That’s is why I will change the display to Chip on Glass reflective LCD type display(will consume roughly 250-300uA) in the final prototype (Phase 3)

But I wanted to see what can be done with OLED display itself.

There is a setting in OLED configuration where we can change the pixel brightness level, in the code it was 0xFF which is maximum, I reduced it to 0x10 and still brightness was good enough.

This helped me reduce the power consumption by ~1mA

Power in of Nucleo Board

Next biggest scope I found was the STM32 Nucleo Board itself, Other than the desired MCU, it has extra debugger circuitry, two 5v to 3.3V linear regulators and USB current limiting IC, all these were consuming power but not very useful while the project is running.

So, in order to by pass all these, I powered the Nucleo board from external 3.3V but when i did that I faced an issue that MCU was not getting started as the Reset pin of MCU was connected to the debugger circuit MCU’s Pin and was not letting MCU to start. I removed resent pin connection by removing the series zero ohm resistance and the MCU started working fine.

This change reduced the power consumption by big 21mA 🙂

MCU Clock

I am using STM32L031 for this project which is Cortex-M0+ MCU and has very low power consumption characteristics.

When I checked code, I initially configured it with 32Mhz clock frequency which for this simple project is quite high, given the need to reduce power I reduced the clock frequency from 32Mhz to 4Mhz.

It did not see any issues with the functioning of the project. Everything works perfectly fine at 4Mhz but with a much lowered power, it reduced further by 5mA.

So, that’s how I reduced the power consumption of the circuit from 35mA to ~5mA.

DIY Precision Voltage Current Reference 4

I think it should be possible to further reduce the power consumption as on DAC evaluation board extra unused but powered circuit is there which can be eliminated like two extra voltage reference ICs are there, one ADC is there and EEPROM is also there, all these are not used but still consuming power.

But, on the evaluation board there no easy way to removed power to these ICs so I will not do anything right now.

Phase 2: Addition of Current Reference

In the phase two, I am adding 2nd channel as a precision current source from 0.00 – 25.00mA which should be easy as the LTC2602 has 2 channel 16 bit DAC outputs just need to understand how much resolution/accuracy is possible.

Using a small Op-Amp and Mosfet based circuit to generate the constant current source

You can see the test board below.

I am still working on this phase, will share more details and probably a small video as soon as I am done.

Any additional circuit is required for current reference?

Yes, we need an extra circuit to create a current reference.

See the simplified schematic below:

DIY Precision Voltage Current Reference 5

Op-amp works as a voltage follower, whatever voltage is provided at the +ve terminal of Op-amp, it will try to control output in such a way that the voltage at -ve terminal matches.

So, if 100mV is given at +ve, to match it will make 100mV at -ve also, that means across shunt resistance 100mV will be there, to get 100mV across 10 ohm shunt, you need 10mA current. So op-amp will make its output to drive 10mA current when + input is given 100mV.

The accuracy of shunt resistance and its temperature coefficient is very important for a precision circuit like this.

For now, I have used 1% shunt resistor but in proto I will use 0.1% shunt.

DIY Precision Voltage Current Reference 6

The PCB you see above is the current reference, I have built this circuit using general purpose Opamp and N-Channel Mosfet.

With the current setup I was able to achieve fairly good accuracy from 1.00mA to 23.95mA, it is around +-0.02mA.

The limitation is I was not able to achieve good accuracy below 1.00mA and above 23.95mA, which I am yet to fix.

The inaccuracy at lower current is due to noise and DAC offset. For the zero PCB prototype level this looks good enough. Now, I will design the circuit for professional proto and build the circuit to test it further.

Video explanation is here:

Phase 3: Build a professional proto

The custom PCB version will be powered by battery as that will be desired. A boost converter for DAC voltage reference input and constant current circuit to work. I will also add isolated USB interface so that we can control the voltage current reference via PC.

Display will be changed from OLED to a low power glass display which will consume 200-330uA while running. This will help in increasing the battery back up time.

The whole circuit need to be designed to consider low power consumption.

I am planning to use a ready made enclosure so that it becomes a useful open source product and not just a hobby project.

Now, I am working on the schematic, once I have completed I will show you what all is going to be on the board.

Stay tune.

Bill of Material (Phase 1)

Sr. NoItemQty
1.DC Barrel Jack connector1
2.Rocker Switch1
3.STM32L031 Nucleo Board1
4.LTC2602 16 Bit DAC Evaluation Board1
5.OLED Display Board1
6.5V DC-DC Converter Module1
7.Female header for Nucleo Board and OLED Board
2x single line 15 pin for MCU board
2x single line 10 pin for display
8.Perf Board1
9.Wires for interconnection
10.9V DC 1/1.5A Adaptor1

Download Code

  • Version 1.0 (Voltage Reference) – this is still work in progress for next stage
  • Version 1.1 (Voltage reference on one channel and Current reference on another channel)

I hope you found this project interesting.

If you like the post, please share it with others. Any suggestions or comments, let me know here.

Read my other articles on embedded systems design.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.