4-20 mA current loop -> shunt + mcp3424 is ok ?


I want to use a pressure sensor with Arduino, the output is 4-20mA current loop.

A MCP3424 + precise shunt resistor, is OK to mesure this current ? On the datasheet of the MCP, I see that the impedance is 2.25MegaOhm, after calculation, in my case, this impedance don't disturb my reading. It is the only parameter to see for say "yes, mcp + shunt is ok" ?

Thanks for your help :) (and sorry for my english!).

Post a link to the pressure sensor. Arduino's basic 10-bit A/D migh be several times better than the sensor. A precise (expensive) shunt resistor might also not be needed. Calibration can be done in software. Accuracy of better than 0.2% should be possible with only a $0.10 metal film resistor and the right code. Leo..

This is the sensor: http://docs-europe.electrocomponents.com/webdocs/1336/0900766b813361b2.pdf For the resistor, I have choose a 0.1% and 15ppm/°C - 100 Ohm (value according to the datasheet and my power supply of 12Vcc).

A 20mA current through the 100ohm resistor will produce 2volt across the resistor. The MCP3424 has a reference of 2.048volt, so that should work. Not sure if you need (or can achieve) the 18 bits resolution.

I would try a 51ohm resistor and the internal 1.1volt Aref of the Arduino first. That, with the right smooting/averaging, could give you a resolution of ~0.025bar. Leo..

Thanks for your answer.

So 100Ohms + MCP3424 will be ok ? (Impedance seem to be OK, I not need to pay attention to another parameter ?)

Thanks for the second solution, I will test this ;)

There will be other parameters. The 100ohm resistor could be 99.93ohm. Or the reference could be 1.052volt. Will the sensor output exactly 4mA with zero pressure. So the maths line in your code (that converts to 0.00 to 25.00bar) needs calibration factors anyway. Post your code, and the problems with it, so we can tell you how to improve. This (untested) sketch might give you some ideas. It can be improved (two decimal places) with smoothing. Leo..

// 25bar/4-20mA pressure sensor with 51ohm current conversion resistor

int rawValue; // A/D readings
int offset = 205; // zero pressure adjust
int fullScale = 1019; // max pressure (span) adjust
float pressure; // calculated pressure

void setup() {
  analogReference(INTERNAL); // use the internal 1.1volt Aref

void loop() {
  rawValue = analogRead(A0); // one unused reading
  rawValue = analogRead(A0);
  pressure = (rawValue - offset) * 25.0 / (fullScale - offset); // pressure conversion
  Serial.print("The pressure is  ");
  Serial.print(pressure, 1); // one decimal place
  Serial.println("  bar");