4–20 mA Current Loop Communications – A Guide

Imagine this scenario: There is a flow meter with 4–20 mA output setup. The switch is flipped, thereby turning it on. Then it is noted that the readings are off, and the required output is not shown. The meter is fiddled with but still the readings are not shown. What is to be done now? This meter should be repaired so that the application is up and running.

The questions that need to be answered are as follows: What is to be done? Why is this even happening?

Several times the question raised is how to get accurate 4–20 mA output readings for 4–20 mA output devices. What is most helpful for customers is an understanding of the basics of 4–20 mA current loops and how it integrates into their process.

This article describes the 4–20 mA communications protocol, step-by-step, which will dispel the confusion and complications around the protocol and help customers get set up and running.

What Are the Different Ways to Determine Flow Rate?

There is a need to determine the flow rate (or temperature, or pressure) without observing the display of the meter. The following are a few ways to do this:

1. Utilizing the RS-232 serial commands

2. Utilizing the 4–20 mA support within the meter

3. Utilizing HART, Modbus, or other supported digital communications protocols

What is a 4–20 mA [Direct Current] Loop?

4–20 mA [Direct Current] Loop

A 4–20 mA current loop is a means to pass a “value” like flow using an established electrical current (the loop) as the carrier of this information.

The following are the five discrete parts to the “loop” (see the image represented above):

1. Sensor: Provides the “value”

2. Transmitter: Takes the “value” and converts it to a meaningful 4–20 mA value

3. Power Source: The physical [DC] power that the transmitter uses

4. Loop: The physical “loop” (such as wires)

5. Receiver: Reads the 4–20 mA value from the “loop” to determine the “value”

Typically, the 4 mA depicts the minimum/low value (like 0 for flow); and the 20 mA depicts the maximum/high value, or full scale, of the value that is sent. In the example provided in the article, this value is for “flow.”

How Do You Map/Configure the 4–20 mA Current Loop to the Flow Rate?

Most people tend to overthink the math for 4–20 mA in their application. This is similar to using calculus to solve a simple math problem. It is not overly complicated once the values used in the equation are understood.

As described above, the 20 mA represents the full scale, and the 4 mA represents “zero” [flow].

So, if the flow setup is 0 to 1000 SLPH, the 4 mA means “0” flow, and the 20 mA means “1000”.

The Variables In the 4–20 mA Equation

The flow range is represented using the following notations:

mALow = 4 (4 mA)

mAValueLow = 0 (value that represents “low”)

mAHigh = 20 (20 mA)

mAValueHigh = 1000 (value that represents “high “or Fullscale)

Now if 500 is flowed, the following notation is used:

currentValue = 500

Since the users know that the value they want to pass on the 4–20 mA loop is really a ratio between mALow to mAHigh, the following formula is applied to determine the correct milliamps (mA) that are needed.

mA_Value = ((mAHigh – mALow) * ((currentValue – mAValueLow)/(mAValueHigh – mAValueLow))) + mALow

mA_Value = ((20 – 4) * ((500 – 0)/(1000 – 0))) + 4

mA_Value = ((20 – 4) * (500/1000)) + 4

mA_Value = ((16) * (0.5)) + 4

mA_Value = (8) + 4

mA_Value = 12 (mA)

So, in the current 4–20 mA example, flowing 500 is repesented as 12 mA on the 4–20 mA loop. If it was zero flowing, (currentValue=0), it would be calculated as:

mA_Value = ((mAHigh – mALow) * ((currentValue – mAValueLow)/(maValueHigh – mAValueLow))) + mALow

mA_Value = ((20 – 4) * ((0 – 0)/(1000 – 0))) + 4

mA_Value = ((20 – 4) * (0/1000)) + 4

mA_Value = ((16) * (0)) + 4

mA_Value = (0) + 4

mA_Value = 4 (mA)

If it was flowing Full Scale (currentValue=1000), then the following calculation would be done:

mA_Value = ((mAHigh – mALow) * ((currentValue – mAValueLow)/(maValueHigh – mAValueLow))) + mALow

mA_Value = ((20 – 4) * ((1000 – 0)/(1000 – 0))) + 4

mA_Value = ((20 – 4) * (1000/1000)) + 4

mA_Value = ((16) * (1)) + 4

mA_Value = (16) + 4

mA_Value = 20 (mA)

What If My Scale is Different? How Would You Scale to a 0–20 mA Loop Instead of the 4–20 mA Loop?

If the users want to scale from 0 to 20 instead of 4 to 20, all they should do is to change the value of mALow to “0” instead of “4”. The same formula applies. Don't forget this fact. The values of the variables are the only things that change.

mALow = 0 (0 mA)

mAValueLow = 0 (value that represents “low”)

mAHigh = 20 (20 mA)

mAValueHigh = 1000 (value that represents “high” or Fullscale)

So, if at flowing 500 (currentValue=500) on a 0/20 mA loop, the loop is set to:

mA_Value = ((mAHigh – mALow) * ((currentValue – mAValueLow)/(maValueHigh – mAValueLow))) + mALow

mA_Value = ((20 – 0) * ((500 – 0)/(1000 – 0))) + 0

mA_Value = ((20 – 0) * (500/1000)) + 0

mA_Value = ((20) * (0.5)) + 0

mA_Value = (10) + 0

mA_Value = 10 (mA)

How Would You Scale Something like Temperature that Does Not have a Low Value of “0”?

When the users deal with temperature, they generally do not start at 0f, but 32f. All that needs to be done is to adjust the “mAValueLow” to the new low value. Let’s assume that the working temperature is 32 °f ~ 132 °f:

mALow = 4 (4 mA)

mAValueLow = 32 (value that represents “low”)

mAHigh = 20 (20 mA)

mAVvalueHigh = 132 (value that represents “high” or Fullscale)

Now the same formula is applied. So if the temperature is 82 °f (currentValue=82), the following formula is used:

mA_Value = ((mAHigh – mALow) * ((currentValue – mAValueLow)/(maValueHigh – mAValueLow))) + mALow

mA_Value = ((20 – 4) * ((82 – 32)/(132 – 32))) + 4

mA_Value = ((20 – 4) * (50/100)) + 4

mA_Value = ((16) * (0.5)) + 4

mA_Value = (8) + 4

mA_Value = 12 (mA)

Bringing It All Together

Now it is time to do some math! To summarize what has been described, the following formula is used to determine the 4–20 mA values:

mALow = 4 (4mA)

mAValueLow = 0 (value that represents “low”)

mAHigh = 20 (20 mA)

mAValueHigh = 1000 (value that represents “high” or Fullscale)

currentValue = 500 (This is the value that is needed to be sent to the 4–20 mA loop)


mA_Value = ((mAHigh – mALow) * ((currentValue – mAValueLow)/(maValueHigh – mAValueLow))) + mALow

Fine Tuning the 4–20 mA Signal

At this point, the determination of the correct value for the 4–20 mA signal is done by utilizing the formula mentioned above. What happens if zero is flowed, and the output should be 4mA? However; the receiver “reads” 3.90 mA because of the physical layout. In other words, the 4 mA default “low” 4 mA value needs to be “tuned” higher to 4.0 mA. The default 4 mA DAC (Digital to Analog Converter) value should be changed.

Understanding DAC’s and Their Relationship to 4/20 mA Current Loop

When the 4–20 mA transmitter needs to inject a 4–20 mA signal, it needs to “know” exactly how much to inject. One can think of the DAC’s as a [digital] valve that can go from totally closed, to totally open; or anything in-between.

The range from closed to fully open is defined in 4096 “steps”; meaning, that each step “opens” the “valve” by 1/4096 in size.

By setting the 4 mA DAC to “1” means that one can “open” the valve 1/4096 in size to represent 4 mA. Setting the 4 mA DAC to 2048 (2048/4096 = ½) will open the “valve” exactly halfway open. Setting the DAC to 4096 will open the “valve” fully open.

By adjusting the 4 mA or 20 mA DAC’s, one can fine-tune the electrical characteristics of the 4–20 mA loop. Once the higher 20 mA and the lower 4 mA DAC’s are fine tuned, the system will correctly calculate the points in-between.

In Conclusion

One can make the meter provide 4–20 mA “answers” correctly by setting the correct values in the 4–20 mA screens, along with any DAC adjustments. This gives the accurate output readings so one can run the application and make adjustments to get optimal conditions.


This information has been sourced, reviewed and adapted from materials provided by Sierra Instruments.

For more information on this source, please visit Sierra Instruments.


Please use one of the following formats to cite this article in your essay, paper or report:

  • APA

    Sierra Instruments. (2023, June 05). 4–20 mA Current Loop Communications – A Guide. AZoM. Retrieved on February 23, 2024 from https://www.azom.com/article.aspx?ArticleID=15057.

  • MLA

    Sierra Instruments. "4–20 mA Current Loop Communications – A Guide". AZoM. 23 February 2024. <https://www.azom.com/article.aspx?ArticleID=15057>.

  • Chicago

    Sierra Instruments. "4–20 mA Current Loop Communications – A Guide". AZoM. https://www.azom.com/article.aspx?ArticleID=15057. (accessed February 23, 2024).

  • Harvard

    Sierra Instruments. 2023. 4–20 mA Current Loop Communications – A Guide. AZoM, viewed 23 February 2024, https://www.azom.com/article.aspx?ArticleID=15057.


  1. kinyanjui simon kinyanjui simon South Africa says:

    thanks for adding me on this group

The opinions expressed here are the views of the writer and do not necessarily reflect the views and opinions of AZoM.com.

Ask A Question

Do you have a question you'd like to ask regarding this article?

Leave your feedback
Your comment type
Azthena logo

AZoM.com powered by Azthena AI

Your AI Assistant finding answers from trusted AZoM content

Azthena logo with the word Azthena

Your AI Powered Scientific Assistant

Hi, I'm Azthena, you can trust me to find commercial scientific answers from AZoNetwork.com.

A few things you need to know before we start. Please read and accept to continue.

  • Use of “Azthena” is subject to the terms and conditions of use as set out by OpenAI.
  • Content provided on any AZoNetwork sites are subject to the site Terms & Conditions and Privacy Policy.
  • Large Language Models can make mistakes. Consider checking important information.

Great. Ask your question.

While we only use edited and approved content for Azthena answers, it may on occasions provide incorrect responses. Please confirm any data provided with the related suppliers or authors. We do not provide medical advice, if you search for medical information you must always consult a medical professional before acting on any information provided.

Your questions, but not your email details will be shared with OpenAI and retained for 30 days in accordance with their privacy principles.

Please do not ask questions that use sensitive or confidential information.

Read the full Terms & Conditions.