Analog Current to Voltage Converter


This current-to-voltage module linearly converts 0-25mA current signals into 0-3V voltage signals. Industrial sensors or devices usually have the current signal output of 4-20 mA. With this current-to-voltage module, your main control board can easily read the current signals output from industrial sensors or devices. Normally, current signals lower than 4mA can be used for fault diagnosis, and current signals higher than 20mA can be used for overrun detection. Therefore, this module is designed with a wide range of 0-25mA detection range, which is compatible with fault detection, overrun detection applications. This module uses 0.1% high precision sense resistor and ultra-low noise rail-to-rail zero-drift op amp, so it is high accuracy, no need to calibration, and easy to use. 3.3V-5.5V wide voltage power supply, 0-3V voltage signal output, which are compatible with more main control boards, adapt to more applications.


  • For higher accuracy, it is recommended to use 12 or more bit ADC!


Board Overview

Num Label Description
1 GND Power GND(0V)
2 VCC Power VCC(3.3~5.5V)
3 SIGNAL Voltage Signal Output
4 I+ Current Input
5 I- Current Output


This tutorial demo how to read the 4~20mA current signal with this module and Arduino UNO. The module input current is linear with the output voltage, as shown below:


Connection Diagram

Sample Code

Before uploading the sample code, it is recommended that you use a voltmeter to confirm the actual reference voltage of the ADC on the main control board, and then modify VREF in the sample code, to improve the measurement accuracy.

 DFRobot Gravity: Analog Current to Voltage Converter(For 4~20mA Application)

 GNU Lesser General Public License.
 See <> for details.
 All above must be included in any redistribution

#define CurrentSensorPin  A2
#define VREF 5000 // ADC's reference voltage on your Arduino,typical value:5000mV

unsigned int voltage; //unit:mV
float current;  //unit:mA

void setup()

void loop()
    voltage = analogRead(CurrentSensorPin)/1024.0*VREF;
    Serial.print("mV  ");
    current = voltage/120.0;  //Sense Resistor:120ohm

Expected Results



For any questions, advice or cool ideas to share, please visit the DFRobot Forum

More Documents