0-10 V output with Arduino (MCP4922, TLC272)



Many industrial devices need 0-10 V control signal, to perform some simple task.

For example, a valve actuator will close fully if you send it 0 V and open fully, if you give it 10 V. And everything in between.

How can you send 0-10 V signal from an Arduino?

What you will need

The digital outputs will give at most 5 V, if you supply Arduino with voltage above 7 volts or so, so that’s not the solution.

Just USB power supply will not output 5 V, keep that in mind.

So, the first thing we will need, is a high-enough voltage supply, preferably somewhere in the 12.3 V range.

Anything less, will most likely not yield exactly 10 V output, more like 9.86 or something like that.

I would recommend these cheap voltage supplies.

Possible power supply, that will be great for the project.

You can trim them up even above 13 V, which is great in our case, because the operational amplifier will not give us 10 V, even if we demand it, if we don’t supply it just above 12 V (12.3 V).

Digital to analog converter (DAC)

Now, that we have our power supply, we can begin with the real work.

I can think of at least three ways to output 0-10 V continuously from an Arduino, but I’m sure there are many more.

Let’s dive into the one I used for the Fluke emulator; that is the digital to analog converter MCP4922 by Microchip.

That chip alone will output roughly 0-5 V with the help of Arduino, so we will need to amplify the signal by 2 with an operational amplifier (TLC272) to get to 0-10 V.

I said roughly, because the DAC will need a voltage reference (REF195) to give us a more accurate voltage than just something close to 5 V.

Now that we have all three main components (MCP4922, TLC272 and REF195) of the 0-10 V DAC, we can start connecting them together.

Eagle schematic with all the components connected.

Arduino code

Share this Page