Reading 4 to 20ma pressure sensor using uno


I have a OsiSense™ XMLP pressure sensor that i want to read from my Arduino uno. Whats the best way to read the pressure from it?

I am powering it with a 24v DC power directly, but not sure how it should be wired to the Arduino? Is there a shield available that will read in milliamps directly?


Most people use a 250 Ohm resistor to convert 4-20 mA to 1-5V and read the voltage drop with an analog input.

Thanks for getting back to me so quick. This is the circuit I am looking at building. I've read online to build the circuit. Can you tell me if it is correct?

Also I dont understand why it works and im hoping you can correct my thinking. Following ohms law we want to leave 5v when 20 milliamps goes through the circuit. We know the voltage on the circuit is 24 volts and we know the maximum current is 20 milliamps so my maths says :

Resistance = Voltage / I (current)

We need to leave 5 volts for the arduino to read so we subtract 5 from 24.

Resistance = 19 / 20 milliamp

So the resistance to leave to give us a maximum of 5 volts is a 0.95 Kilohms resistor. I dont see where the 250 ohm resistor comes in? please help.

The sensor is designed to drive 4 to 20 mA through the output circuit regardless of the sensor supply voltage (within the allowed limits).

So, using a 250 Ohm resistor, Ohm's Law gives:

0.004A*250R = 1V
0.020A*250R = 5V

A better circuit includes a 10K resistor for overvoltage protection at the input, and has the negative sensor power supply connected to Arduino ground, as follows:



I have this design working well with one 4-20 mA input to A1 and ground but when I add another input (A5) to the same ground (using either the same transformer or a different transformer) my Arduino freezes. Is there something extra that needs to be done to have two of these inputs on the same board? Thanks in advance for any tips!

You’ve another post with that question ... which I answered .

I'm about to to do the same, was going to put a 250ohm resistor in my 4-20mA circuit - I am slightly confused, won't another 10k ohm resistor drop the voltage before it gets to the pin?

won't another 10k ohm resistor drop the voltage before it gets to the pin?

No. The analog inputs draw negligible current under normal operating conditions.

The resistor is intended to prevent the Arduino input from being destroyed, if the input voltage goes above the Arduino supply voltage.

1 Like