Scale a 4-20 mA pressure transducer for an HMI display

6 min read · Published November 9, 2026

A -14.7 to 135 psi transmitter carries 149.7 psi of span; scale it across the analog module's documented 4 to 20 mA count span, which is not always 4095. Set the HMI numeric object to a signed format and a vacuum reading prints correctly as negative psig.

A 4-20 mA pressure transmitter ranged -14.7 to 135 psi carries 149.7 psi of engineering span, and the number that replaces 4095 in your scaling is the raw-count span the analog input module documents for 4 to 20 mA, whatever that span is. Get both spans right and the reading holds everywhere on the range, including below 0 psig where the process sits in vacuum. The display side is then a data-format decision: the value goes negative in vacuum, so the numeric object needs a signed format or a driven minus sign. The sections below give the formula, the psig-versus-psia call, the settings, a worked example with the arithmetic, and the endpoint checks to run before operators rely on the number.

What the 4095 divisor assumes

The divisor 4095 is correct only for modules whose documentation maps 4 mA to raw 0 and 20 mA to raw 4095. Analog input datasheets document other spans too: 0 to 16384, 0 to 32000 and 2000 to 10000 counts are all common. Read the counts your module lists for the range you configured; call them raw_4 and raw_20, where raw is the channel's current raw count. The conversion is linear:

pressure (psi) = -14.7 + (raw - raw_4) × 149.7 / (raw_20 - raw_4)

One count is worth 149.7 divided by the count span: 0.03656 psi per count on a 4095-count span, 0.00914 psi per count on a 16384-count span.

Live zero is where the guess goes wrong. The loop sits at its live-zero current at the bottom of the range, and the bottom is -14.7 psig, so 0 psig lands 14.7 / 149.7 = 0.098 of the count span above raw_4, not at raw_4. A raw value below raw_4 means loop current has dropped under the live-zero level, which points at an open wire or a dead transmitter; hide an HMI number when a 4-20 mA transmitter fails covers masking that state so nobody acts on it.

Read the range as gauge pressure

A range printed -14.7 to 135 psi is a compound gauge range. Absolute pressure stops at 0 psia, so no transmitter outputs -14.7 psia; the sensor is referenced to local atmospheric pressure, where 0 psig equals 14.7 psia at a standard atmosphere and -14.7 psig is 0 psia, full vacuum, about 29.9 inches of mercury below the atmosphere. Scale the loop straight to those endpoints and label the display psig.

If someone downstream needs absolute pressure, add local barometric pressure to the psig value in the PLC and label that result psia. Check the nameplate once before scaling: gauge ranges print a minus endpoint, absolute ranges start at 0. When the transmitter itself gets replaced, the vacuum transducer selection notes on the full-vacuum gauge limit explain what that lower endpoint means when you pick the next sensor.

What you need

  • The transmitter nameplate or datasheet: endpoints and units, here -14.7 to 135 psi, gauge.
  • The analog module documentation: raw_4 and raw_20 for the configured current range.
  • A loop meter or calibrator for the endpoint checks.
  • The HMI project open at the numeric object's format and scaling fields.

Set the scale in five steps

  1. Confirm the endpoints and units on the transmitter: -14.7 to 135 psi, gauge.
  2. Read raw_4 and raw_20 from the module documentation and compute the count span raw_20 - raw_4.
  3. Enter the scaling as endpoints in the PLC instruction or the HMI scaling fields: raw_4 maps to -14.7, raw_20 maps to 135.
  4. Set the numeric object's data format to signed integer or real, with two decimal places, so mid-scale prints 60.15 and not 6015.
  5. Label the value psig and write raw_4, raw_20 and the endpoints into the project notes.

If the PLC already scales the channel to psi, the HMI object displays that value with no second conversion; check the PLC value's units and endpoints instead.

Worked example: 149.7 psi across 16384 counts

Say the module documentation lists raw 0 at the loop's low endpoint and raw 16384 at its high endpoint for the configured range; substitute your own documented counts, these are illustrative.

  • Count span: 16384 - 0 = 16384 counts.
  • Psi per count: 149.7 / 16384 = 0.00914 psi per count.
  • Zero-psig anchor: 14.7 / 149.7 = 0.0982 of the span; 0.0982 × 16384 = 1609, so raw 1609 displays 0.00 psig.
  • Vacuum reading: raw 800 gives -14.7 + 800 × 149.7 / 16384 = -14.7 + 7.31 = -7.39 psig, which is 7.39 × 2.04 ≈ 15 inches of mercury below local atmospheric (29.92 inHg per 14.7 psi ≈ 2.04 inHg per psi).
  • Mid-scale, 12 mA: raw 8192 gives -14.7 + 74.85 = 60.15 psig.
  • Full scale, at the span top: raw 16384 gives -14.7 + 149.7 = 135.00 psig.

And the answer to the 4095 question, directly. If your module documents raw 0 at live zero and raw 4095 at the span top, yes: 149.7 / 4095 = 0.03656 psi per count is the correct slope, and 0 psig sits at 0.0982 × 4095 = 402 counts. If the module spans 16384 counts and the scale divides by 4095 anyway, every value lands four times too far up the span: the true 60.15 psig at raw 8192 displays as -14.7 + 8192 × 0.03656 = 284.8 psig.

Make the vacuum end print a minus sign

Set the data format signed before anything else. An unsigned 16-bit format wraps negatives into large positives: -7 psig prints as 65529, because 65536 - 7 = 65529, and an operator reads that as a wild overpressure. Setting the signed decimal data format fixes that exact symptom, and scaling negative analog values on an HMI panel covers the general method end to end.

Decimals come from a real format or the object's decimal-place setting. If the object in front of you cannot print a sign at all, run a compare below zero that sets a bit, and let that bit drive a separate minus-sign indicator beside the digits; test sign and magnitude together before you leave the screen.

Check the scale at both endpoints

At each check point, compare four numbers: metered loop current, raw count, PLC engineering value, display.

  • Live zero, full vacuum: display -14.7 psig, raw at raw_4.
  • 12 mA: display 60.15 psig, raw mid-span, 8192 on the example module.
  • Span top: display 135.00 psig, raw at raw_20.

Metered current matching the raw count but the display off means the scaling is wrong: recheck the entered endpoints against the documented counts, and why the scale value differs from the PLC analog input walks that comparison down line by line. Metered current disagreeing with what the process pressure says the transmitter should send points at wiring, loop power or the transmitter, upstream of any scale. Until the three checks pass, treat the display as unverified and leave any alarm that reads it suppressed or supervised.

Keep the two screens in their lanes, too: the HMI is the live instrument, and a signage player cannot read this loop. If the same wall also cycles static pages, safety notices and shift schedules from files on a memory card, that is a separate screen doing playback; see small panel-mount signage displays.

Recommendation: Scale by entering endpoints, not a slope: map raw_4 to -14.7 and raw_20 to 135 in the scaling fields, set a signed real format with two decimals and the psig label, then verify at live zero, 12 mA and full span before handing the screen back to operations. If your module's documented 4-20 mA span really is 0 to 4095 counts, 149.7 / 4095 = 0.03656 psi per count is the right slope; on any other documented span, the documented counts win.

Questions

How do I show the same reading in psia?

Add local barometric pressure to the psig value in the PLC and label the result psia. Standard atmosphere is 14.7 psi, so the mid-scale check value 60.15 psig becomes 74.85 psia. Weather moves barometric pressure a few tenths of a psi through the year, so a psia figure built on a fixed 14.7 drifts by that much; for a compound vacuum-to-pressure range, signed psig is the unit to watch.

The display sits at exactly -14.7 or 135 all shift. What does that mean?

A value parked at a calibrated endpoint usually means the loop current is parked, not that the pressure is. Read the loop with a meter: below live zero is underrange from an open wire, a dead transmitter or a lost loop supply, and the raw count sits below raw_4. Above the span top means the process is beyond the calibrated span or the transmitter is railed. Both are loop problems, and display scaling will not move them.

What if the module manual lists no count table for my range setting?

Drive the input with a loop calibrator and read the raw value in the PLC. Feed the loop's low endpoint current and record the count, feed the high endpoint and record it again, then feed 12 mA and confirm the count lands halfway between the two. Those recorded numbers are raw_4 and raw_20 measured on your own configuration, and they beat any assumed 0 to 4095 span.

Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.

Keep reading

Build your signAsk for a quote