MCP3428 4 Channel 4-20mA Board Another Inconsistent Readings

I have a big problem with the precision and / or instability of the measurement with MCP3428 4 Channel 4-20

To the input signal I apply the equation

input = MCP.readADC ();
mA = input * 0.00069;

And the result is totally removed from reality.
For example, when the current is 20mA, the reading I get on the serial monitor is around 1.25mA. For 12mA I get around 0.78mA and for 4mA I get 0.2mA on the serial monitor

In addition to the above I have this other problem

On the same channel I have generated a current of 4mA, 12A and 20mA.
For each value of 4-20mA I have obtained up to a difference of 75% of difference between one reading and another.

  • I have tested with different voltage sources
  • Implementing an averager would hide the error
  • In the 4-20mA loop I have installed a stable 24.28V voltage source
  • I have installed a 10uF capacitor in the input channel
  • I understand that the parts of the board have an error of 2%, but this is far from the error greater than 50%

I need help with these problems

Distributed with a free-will license.
Use it any way you want, profit or free, provided it fits in the licenses of its associated works.
This code is designed to work with the MCP3428_I2CADC I2C Mini Module available from

#include <MCP3428.h>
#include <Wire.h>

MCP3428 MCP(0x68); // Declaration of MCP3428: A2, A1, A0 bits (000, 0x68)

void setup()
// Start serial communication and set baud rate = 9600
Serial.println(“MCP3428 Analog to Digital Converter”);
Serial.println(“Getting ADC Readings from Channel 1…4”);
Serial.println(" ************************************ “);
Serial.println(” ");

void loop()
byte error;
int8_t address;

address = MCP.devAddr;
error = Wire.endTransmission();
if (error == 0)
    long input;    
    input = MCP.readADC();
    double mA = input * 0.00069;

    Serial.print("Input: ");
    Serial.print(" mA: ");
    Serial.println("MCP3428 Disconnected!");
    Serial.println(" ");
    Serial.println("        ************        ");
    Serial.println(" ");



Serial Monitor:

Your ADC resolution is set to 12bit. it should be 16bit