Summary of SIMPLE CIRCUIT KEEPS PROCESS CONTROL LOOPS IN TUNE
Tom Goff built a simple analog signal generator over a weekend to replace a misplaced loop calibrator. It provides both 0–10 VDC and 4–20 mA outputs using an Arduino and an LM358 dual op-amp. PWM from the Arduino is amplified (gain of 2) and filtered to produce a stable 0–10 V signal. A second channel limits the low end to 1 V, and its output passes through a 500 Ω trimmer to create a 4–20 mA current loop. The circuit is assembled on perf board in a small enclosure. He later found the original calibrator.
Parts used in the Junk Bin Analog Signal Generator:
- Arduino
- LM358 dual op-amp
- Perf board
- 500-Ω trimmer potentiometer
- Resistors and capacitors for filtering
- Small enclosure
- Wiring and connectors
Spare a moment’s pity for the process engineer, whose job it is to keep industrial automation running no matter what. These poor souls seem to be forever on call, fielding panicked requests to come to the factory floor whenever the line goes down. Day or night, weekends, vacations, whatever — when it breaks, the process engineer jumps.

The pressures of such a gig can be enormous, and seem to have weighed on [Tom Goff] enough that he spent a weekend building a junk bin analog signal generator to replace a loop calibrator that he misplaced. Two process control signaling schemes were to be supported — the 0 to 10 VDC analog signal, and the venerable 4-20 mA current loop. All that’s needed for both outputs is an Arduino and an LM358 dual op-amp, plus a few support components. The 0-10 V signal starts as a PWM output from the Arduino, with its 0-5 V average amplified by one of the op-amps set up as a non-inverting amp with a gain of 2. With a little filtering, the voltage output is pretty stable, and swings nicely through the desired range — see the video below for that.
The current loop output is only slightly more complicated. An identical circuit on a separate Arduino output generates the same 10 V max output, but a code change limits the low end of the range to 1 V. This output of the op-amp is fed through a 500-Ω trimmer pot, and the magic of Ohm’s Law results in a 4-20 mA current. The circuit lives on a piece of perf board in a small enclosure and does the job it was built for — nothing fancy needed.
And spoiler alert: [Tom] found the missing loop calibrator — after he built this, of course. Isn’t that always the way?
Source: SIMPLE CIRCUIT KEEPS PROCESS CONTROL LOOPS IN TUNE
- What signaling schemes does the project support?
The project supports 0 to 10 VDC analog signal and 4-20 mA current loop signaling. - What components are required to build the signal generator?
An Arduino, LM358 dual op-amp, perf board, a 500-Ω trimmer pot, resistors and capacitors for filtering, wiring/connectors, and a small enclosure. - How is the 0–10 V output generated?
A PWM output from the Arduino is filtered and amplified by one LM358 op-amp configured as a non-inverting amplifier with gain of 2 to produce 0–10 V. - How is the 4–20 mA current loop produced?
A second op-amp channel produces up to 10 V, the low end is code-limited to 1 V, and the output is fed through a 500-Ω trimmer so that Ohm's Law converts voltage to 4–20 mA. - Does the project use separate channels for voltage and current outputs?
Yes, identical circuits on separate Arduino outputs and op-amp channels are used for voltage and current outputs. - Is filtering used on the voltage output?
Yes, filtering is applied to the PWM-derived voltage so the output is stable through the desired range. - Where is the circuit assembled?
The circuit is built on a piece of perf board and placed in a small enclosure. - Was the custom generator a permanent replacement for the loop calibrator?
The article states it did the job it was built for; the original loop calibrator was later found.
