**Measurement and process control loops often use 8-bit
microcontrollers**. The devices are inexpensive and widely available,
and they can be programmed in many popular high-level
languages—like C and Basic. However, if the loop requires a nonlinear
sensor, the designer faces the added challenge of having to
develop a software linearization algorithm.

One solution is to design hardware to perform the required curve fitting before the sensor’s output signal is applied to the microcontroller’s analog-to-digital converter (ADC) input. This is an especially attractive solution if processor memory is limited and cost and component count can be kept low. An added benefit is a small printed-circuit board (PCB) footprint.

An example is the circuit shown in the figure, which uses a type-E thermocouple to measure temperatures that are expected to vary from 0°C to 500°C. The circuit’s output ranges from 0 to 5 V—the full span of the ADC—and can be expressed as a linear system equation:

The thermocouple amplifier section consists of a thermocouple
cold-junction compensator (IC1), an op amp (IC2), and accompanying
circuitry. IC1 tracks ambient temperature (T_{R}) and adds
a correction voltage (V_{C}) to cancel the cold-junction voltage
(V_{R}) created when chromel-constantan thermocouple leads are
attached to the copper pads of a PCB. IC2 then amplifies the thermocouple’s
temperature-dependent signal (V_{M}) by 175 to produce
V_{T} prior to linearization. A gain of 175 eliminates the need for
additional amplification during curve fitting.

Low-pass filter C1-R2 has a pole at approximately 6 Hz to remove power-supply noise.

You can use an Excel spreadsheet to create the nonlinear mathematical
relationship between the output of the thermocouple
amplifier (V_{T}) and the input to the ADC (V_{O}). The table shows
11 temperature entries for T_{M} (0°C to 500°C in 50°C steps) with
their corresponding thermoelectric voltages, V_{M}. The values of VM
were derived from a standard type-E thermocouple reference table.
Also shown are V_{T} and V_{O}, which are charted using the (XY) Scatter
feature of the software. The equation for V_{O} is created using the
software’s trendline feature:

An analog multiplier (IC3) and five 1% resistors implement this equation, a second-order polynomial of the form:

The four (X and Y) inputs of IC3 are wired to create a negative square term that’s scaled at the chip’s output by an internal scale factor of 0.1 V. Comparing terms, we note that c must equal 0.0165. Since R3 and R4 form a voltage divider to attenuate VT, we can express c as follows:

You can then solve for R3 by substituting c = 0.0165 and selecting a value for R4, which for this design was chosen to be 10 k?.

Resistors R5, R6, and R7 form a passive adder to create the offset
term, a, and the linear coefficient, b, in Equation 3. The output of
the passive adder is applied directly to the Z-input of IC3, which
adds the offset and linear terms to the square term. Again comparing
terms, a (*Equation 3*) equals 0.0342 V
(*Equation 2*). We can express this as:

To design this part of the passive adder, we
chose a stable 2.500-V reference for V_{REF},
selected R5 to be 10 k?, and solved for R6.

Finally, compare b (*Equation 3*) with the
corresponding value of 0.8703 (*Equation 2*)
and express the linear coefficient b as:

This equation is solved to determine the final component, R7:

We evaluated the circuit by replacing the
thermocouple with a low-impedance voltage
source to simulate VM. IC3’s output
voltage (V_{O}) exhibited a worst-case error
of about 3.4°C at 0°C (V_{O} = 0.034 V) and
an error of -1.8°C at 500°C (VO = 4.982 V)
at full scale. At 250°C, a mid-range error of 0.2°C (VO = 2.502 V) was recorded.

Reference:

“IC Generates Second-Order Polynomial,” *Electronic Design*,
Aug. 5, 1993, p . 83.