How Do You Filter a 4 20mA Signal? Bench Guide
How do you filter a 4 20mA signal? Drop the loop across a 250 ohm resistor. Then run the voltage through a low-pass RC stage and average the samples in software. That combo strips hum, kills spikes, and lets the slow reading walk through untouched. Nothing fancy.

Last updated: August 13, 2026. I rewrote the whole thing as a bench recipe, added a method-comparison table, and answered the questions readers actually ask.
Why the 4-20mA Loop Still Picks Up Hash
Current loops are stubborn. Voltage sags when a wire gets long. Current does not. Push 12mA into one end of a 500 meter cable and 12mA comes out the other end, minus a rounding error. That is why the standard has outlived so many rivals.
But no cable is a Faraday cage. A run past a variable frequency drive picks up switching noise. A run next to a contactor coil catches inductive kick. The transmitter adds a little thermal hash of its own. Now your PLC sees a wobble, and a wobble on a level reading can slam a valve you never wanted slammed.
How Do You Filter a 4 20mA Signal? A Bench Recipe
I break the job into two zones. Copper first, then code. Copper handles the fast garbage, code polishes the slow drift. Here is the order I follow when I wire a fresh channel.
-
Turn current into voltage. Drop the loop across a precision sense resistor. A 250 ohm, 0.1% part converts 4-20mA into a tidy 1 to 5 volt swing, which almost any ADC front end will happily digitize. Confirm the resistor value holds steady over time; drift here shifts every reading downstream.
-
Add a low-pass RC stage. Solder a series resistor and a shunt capacitor after the sense point. Set the corner just above your fastest real change. Something around 10 Hz murders 50/60 Hz mains hum while your slow process value strolls right through.
-
Buffer when the next stage bites back. Feed the filtered voltage into an op-amp follower. Otherwise the next input impedance shifts the corner you just picked. But check first: is the op-amp unity-gain stable? A ringy buffer undoes every ounce of work you put into the passive.
-
Smooth it in firmware. Sample the ADC at 100 Hz. Average the last 16 points. That moving window shaves whatever hash the copper missed and cuts random jitter by roughly 90 percent.
-
Watch it settle. A well-tuned chain lands in about 2 seconds and holds within 2% of the true value. Overshoot, ringing, or lag means back off the cutoff and try again. Repeat until boring.
Filtering Methods Compared
No single technique wins every fight. Pick the tool that fits the noise on your bench.
| Method | Best for | Cost | Watch out for |
|---|---|---|---|
| Low-pass RC | Steady analog hum | Cheap | Phase delay |
| Moving average | Random jitter | Easy in code | Slow to react |
| Kalman | Moving targets | Heavy math | Setup effort |
| FIR / IIR | Custom shaping | CPU load | Design time |
Short version of when I reach for each:
- Low-pass RC for high-frequency hum. Two parts, one hour, done.
- Moving average for slow, jittery readings. A dozen lines of C code.
- Kalman when the target itself is moving and the noise keeps shifting. Read the Kalman filter primer before you commit; the setup catches beginners.
- FIR and IIR when a precise shape is required. These digital filters let you dial an exact response.
Picking the Cutoff and Filter Shape
Cutoff is the knob that matters. Too high, garbage leaks through. Too low, the reading trails reality. My rule: set the corner one decade above the fastest genuine change in your process. If a flow shift takes 2 seconds, then 10 Hz is plenty. If it takes 200 milliseconds, push to 100 Hz.
The classic low-pass filter math is short. The corner equals one over two pi R C. Pick R around 10 kilohm, then solve for C. Shape counts too. A first-order roll-off adds barely any lag. A steeper skirt cuts more noise but starts to ring, so weigh the Butterworth versus Linkwitz-Riley response before you jump to a higher order. One trap catches most builders: capacitor tolerance shifts that corner, and a 10% cap can move it further than the datasheet suggests.
How I Filter One on the Bench
Datasheet noise numbers lie a little. So when I wire a fresh loop, I do not trust them. I clip a scope probe across the sense resistor and look at raw voltage first. In my experience, half the “noise” turns out to be a ground loop, not the transmitter. Bond the shield at one end. Give the DC common a clean path back. Watch the trace flatten before a single filter part goes in.
Then I add the RC network and confirm the corner with a signal generator. My rule of thumb sticks: filter in copper, then filter again in code. Copper eats the fast hash. Firmware eats the slow crawl. Do both. The number barely moves.
Frequently Asked Questions
Do you actually need to filter a 4-20mA signal?
Often, yes. The loop shrugs off plenty of interference thanks to its low impedance, but long cable runs and nearby drives still push spikes onto the wire. A basic RC network plus a 16 point average erases nearly all of it.
How do you measure a 4-20mA loop without breaking it?
Grab a clamp-style process meter. Zero the jaws, close them around the wire, and read the milliamps. The number should sit somewhere between 4 and 20. The loop stays closed the whole time.
What resistor value converts 4-20mA into 1 to 5 volts?
A 250 ohm resistor. Ohm’s law does the rest: 4mA drops 1 volt, 20mA drops 5 volts. Just confirm the wattage rating so self-heating does not creep the value while it warms.
Does a 4-20mA circuit need shielding?
Sometimes. Individually shielded twisted pairs stop crosstalk between neighbouring loops, and an overall foil shield blocks outside interference. On a quiet bench you can skip it. Anywhere near a big VFD, do not skip it.
Will a low-pass filter slow the reading?
A little. Every filter trades speed for smoothness. A first-order RC set near 10 Hz adds under a second of lag, so most process loops never feel it.
What corner frequency is safe for a slow tank level?
Set it around 1 Hz. Tank levels rarely change faster than that, so a low corner buys you extra smoothing without ever lagging a real event. Anything above 1 Hz gets crushed.
Related Reading
Bottom Line
To filter a 4 20mA signal, drop it across a 250 ohm resistor, add a low-pass RC stage near 10 Hz, then average 16 points in firmware. Match method to noise. RC for hum. Moving average for jitter. Kalman for a moving target. Fix grounding first, filter in both layers, and the loop holds within 2% while you sleep.
