I2C Current Loop Transmitter for Your Microcontroller
Download the example from github: https://github.com/inacks/ISXMPL4413ex1
The IS4413-M1 is an I2C current loop transmitter module (3-wire configuration) that generates a 4-20mA current loop signal controlled by your microcontroller. Your firmware sets the output current with a single I2C write, and the module generates it on the COUT pad. As a result, you can add a 4-20mA output to your product without designing any analog circuitry.
The module saves all the time needed to engineer and validate the analog side of a current loop transmitter, so you can finish your product sooner. In addition, it uses the standard I2C interface found in almost any microcontroller. Therefore, you do not need any dedicated library, and your firmware stays easy to maintain and port.
Applications
- Sensors and transmitters: send pressure, temperature, flow, level, pH, conductivity, position, vibration, gas concentration or weight readings to a PLC.
- Process control systems: add 4-20mA analog outputs to your own controllers and PLCs.
- Actuator controllers: drive current loop actuators directly from your microcontroller, without a PLC.
- Custom designs: build application-specific current loop solutions on a ready-to-use module.
How the I2C Current Loop Transmitter Works
Your microcontroller (I2C master) controls this I2C current loop transmitter with a single four-byte write. It sends the slave address (96), a command byte and the two data bytes of a 12-bit value. The module then generates the corresponding loop current on COUT. A value of 0 generates 0 mA, while 4095 generates approximately 22 mA.
- Command 64 – Set Current Value: updates the output current. This is the normal operation.
- Command 96 – Set Default Value: updates the output current and also stores it in the internal EEPROM as the safe power-up current.
For example, the value 725 generates approximately 4 mA, and 3640 generates approximately 20 mA. See the Examples tab for a complete Arduino sketch.
Configurable Safe Power-Up Current
At power-up, the module generates a stored safe current until your microcontroller sends its first command. This prevents an unintended output during the few milliseconds your firmware needs to start. For example, set the power-up current to 0 mA. The current loop receiver then discards the signal as invalid data until your firmware takes control.
3-Wire Configuration: More Than 4 mA for Your Device
A 2-wire transmitter takes its own power from the current loop, so it cannot consume more than 4 mA without corrupting the 4-20mA reading. In contrast, a 3-wire current loop transmitter uses separate circuits for its power supply and for the loop current. Consequently, your device can consume more than 4 mA, which allows much more complex self-powered sensors and transmitters.
Extended Current Range: 0 to 22 mA
Besides the standard 4-20mA range, this I2C current loop transmitter also covers 0 to 4 mA and 20 to 22 mA. While 4 mA to 20 mA represents 0% to 100% of the measured magnitude, the extended margins carry extra information and keep the loop alive. For example, they can signal saturation (3.6 mA to 4 mA, or 20 mA to 20.4 mA) and fault conditions (below 3.3 mA or above 20.7 mA).
Key Features
- Output current: 0 mA to approximately 22 mA, with 12-bit resolution (values 0 to 4095).
- Current loop: 3-wire configuration, 24 V supply, 250 Ω loop load.
- I2C interface: 5 V, fixed slave address 96 (7-bit), 100 kbps, 400 kbps and 3.4 Mbps.
- Single power supply: 24 V for the module and the current loop.
- Configurable safe power-up current, stored in the internal EEPROM.
- Ready to use: no calibration needed for general use.
- Compact module: 15.24 × 17.78 mm, compatible with 2.54 mm breadboards and protoboards.
Quick Start with the I2C Current Loop Transmitter
- Connect a 24 V power supply (at least 30 mA) to the 24V and GND pads.
- Connect COUT to the input of your current loop receiver, for example a PLC analog input or a 250 Ω resistor. Then connect the receiver return to GND.
- Connect SDA and SCL to your microcontroller, with pull-up resistors to 5 V: 4.7 kΩ at 100 kbps, or 2 kΩ at 400 kbps and 3.4 Mbps. Your microcontroller must share the same GND.
- Finally, write the bytes 64, 45 and 80 to address 96. This Set Current Value command sends the value 725, so the output current changes to approximately 4 mA.
Do you want to try it from your PC first? The Kappa4413USB is an isolated USB 4-20mA transmitter based on the IS4413-M1, controlled with simple text commands. To read 4-20mA signals instead, see the IS4420-M1 I2C current loop receiver module.
For the electrical characteristics, the pad description and a hardware example, see the IS4413-M1 datasheet (ISDOC150).
This company and the products provided herein are developed independently and are not affiliated with, endorsed by, or associated with any official protocol or standardization entity. All trademarks, names, and references to specific protocols remain the property of their respective owners.
(This product includes the IS4413-M1 module. The 24 V power supply, the microcontroller and the current loop receiver are not included.)



