Instrumentation Amplifiers Explained: Measuring Tiny Signals from Strain Gauges and Load Cells

Strain gauges and load cells output millivolt-level differential signals that a microcontroller ADC cannot read directly. This guide explains how instrumentation amplifiers solve that — the three-op-amp topology, the gain equation, wiring a load cell through an INA125, layout rules, software calibration and the mistakes students make most.

Written by Projectech9 min readPublished
For Electronics and E&TC students building sensor projects who need to measure millivolt signals from strain gauges, load cells or thermocouples cleanly. Topics: INA125, Strain Gauge, Wheatstone Bridge, Load Cell, AD620
Technical blueprint illustration of an instrumentation amplifier circuit measuring a strain gauge on a metal beam, with a Wheatstone bridge diagram, amplified signal waveform, and a load cell cross-section, no text.
Illustration generated for this guide.
In this guide

Instrumentation Amplifiers Explained: Measuring Tiny Signals from Strain Gauges and Load Cells

Many student projects die at the same point: the sensor works, the code compiles, but the reading is garbage. A strain gauge bolted to a beam changes resistance by a fraction of an ohm when loaded. A load cell outputs a few millivolts at full scale. Feed that directly into a microcontroller ADC and you measure mostly noise. An instrumentation amplifier (IA) is the circuit that sits between such sensors and your ADC, and understanding when and how to use one is the difference between a sensor project that sort of works and one that actually measures something.

The problem: tiny differential signals in a noisy world

Sensors like strain gauges, load cells, RTDs and thermocouples produce differential signals — the information lives in the voltage difference between two wires, often just millivolts or even microvolts. Three things go wrong when you try to read them directly:

  1. The signal is too small. A typical load cell outputs about 2 mV per volt of excitation. With 5 V excitation that is 10 mV at full load — an Arduino-class 10-bit ADC with a 5 V reference resolves roughly 4.9 mV per step. You get about two usable steps across the whole measurement range.
  2. Common-mode noise swamps the signal. Long sensor wires pick up mains hum and switching noise identically on both wires. You only care about the difference, so a circuit that rejects what is common to both wires is essential.
  3. Loading changes the sensor. A sensor has output impedance. Connect a low-impedance load and the voltage you are trying to measure changes. You need inputs that draw essentially no current.

An instrumentation amplifier solves all three at once: high input impedance, precise and stable gain, and strong rejection of common-mode signals.

How an instrumentation amplifier works

The classic three-op-amp topology

The standard IA is built from three op-amps. Two non-inverting buffers form the input stage, and a difference amplifier forms the output stage:

  • Input stage (two op-amps): each sensor wire feeds a non-inverting amplifier input. Input impedance is the op-amp's input impedance — megaohms to gigaohms — so the sensor is barely loaded.
  • Gain-setting resistor (Rg): a single resistor between the two input op-amps sets the gain of the whole circuit. One resistor, one gain equation, no resistor matching required from you.
  • Output stage (one op-amp): a difference amplifier subtracts the two buffered signals and references the result to a REF pin, letting you shift the output to sit inside your ADC's range (for example, centre it at 1.65 V for a 3.3 V ADC).

The gain equation you will actually use

For the classic three-op-amp IA:

Gain = 1 + (2R / Rg)

where R is the fixed feedback resistor value and Rg is the single gain-setting resistor you choose. With R = 25 kΩ (a common internal value), choosing Rg = 500 Ω gives a gain of 101. Because gain is set by one resistor, it is far easier to get right than a discrete difference amplifier, where four resistors must match to within a fraction of a percent for decent common-mode rejection.

Why not just use a difference amplifier built from one op-amp?

You can, and many students do. But a single-op-amp difference amplifier has two practical weaknesses: its input impedance is set by the resistor network (typically tens of kilohms, low enough to load some sensors), and its common-mode rejection depends on how well four discrete resistors match. An integrated IA like the AD620 or INA125 has laser-trimmed internal resistors, so it delivers the specified CMRR — typically 100 dB or more — without you hand-matching anything.

Key specifications that matter for your project

  • CMRR (common-mode rejection ratio): how well the amplifier ignores signals common to both inputs. 100 dB means a 1 V common-mode disturbance appears as 10 µV at the output — effectively invisible.
  • Input offset voltage and drift: a small error voltage at the input gets multiplied by the gain. A 50 µV offset at gain 1000 becomes 50 mV at the output. For high gains, pick an IA with low offset and low drift, and add an offset-null or calibration step.
  • Gain error and nonlinearity: integrated IAs specify these; typically fractions of a percent, fine for student work.
  • Supply range: many IAs run on dual supplies (±5 V to ±15 V) but several (INA122, INA333) work on a single 3.3 V or 5 V rail, which matters when your whole project is USB-powered.

A practical build: load cell to microcontroller

Step 1 — Understand what the sensor gives you

A four-wire load cell is a Wheatstone bridge of four strain gauges. Excited with 5 V, it outputs a differential voltage proportional to load — typically 2 mV/V, so 10 mV full-scale. The two output wires also sit at roughly half the excitation voltage (2.5 V common-mode), which is why you cannot just amplify one wire with a normal op-amp.

Step 2 — Choose gain so full-scale fills the ADC range

Decide your ADC span first. For a 3.3 V ADC with the IA output referenced to mid-rail via the REF pin, you might want ±1.5 V of swing. Required gain:

Gain = desired swing / sensor full-scale = 1.5 V / 0.010 V = 150

For an INA125 (internal R = 60 kΩ, gain = 4 + 60 kΩ / Rg), solve Rg ≈ 413 Ω — use the nearest standard value, 412 Ω, and calibrate out the small error in software.

Step 3 — Wire the IA (INA125 example)

  • Sensor excitation: bridge powered from the same 5 V rail as the IA (ratiometric — supply drift cancels out, which is a free accuracy win).
  • Sensor + output to IA pin 6, sensor − output to IA pin 7 (check your part's datasheet pinout — it varies).
  • Rg between the gain pins.
  • REF pin (pin 5 on many parts) to a clean mid-rail reference — a resistor divider buffered by an op-amp, or your ADC's internal reference output. Do not leave REF floating.
  • IA output to the ADC input. Keep the wire short.
  • Decouple the supply pins with 0.1 µF ceramic capacitors close to the chip. This single step kills a surprising number of "mysterious noise" problems.

Step 4 — Calibrate in software

Even with perfect hardware, offset and gain errors remain. A two-point calibration (zero load, known load) with a straight-line fit removes most of it:

# Two-point calibration: fit reading -> grams
def calibrate(zero_reading, zero_grams, known_reading, known_grams):
    slope = (known_grams - zero_grams) / (known_reading - zero_reading)
    intercept = zero_grams - slope * zero_reading
    return slope, intercept

slope, intercept = calibrate(512, 0, 2871, 1000)
weight = slope * adc_value + intercept
print("weight (g):", round(weight, 1))

Average each calibration reading over a few hundred samples to push noise down.

Step 5 — Layout and wiring rules that actually matter

  • Twisted pair from sensor to IA inputs — twisting makes induced noise appear equally on both wires, where CMRR can kill it.
  • Keep the IA close to the sensor, not close to the microcontroller. Amplify before the long cable run, never after.
  • Single-point ground: sensor ground, IA ground and ADC ground meet at one point. Ground loops turn your wiring into a noise antenna.
  • Keep digital and switching noise away: route the sensor traces away from PWM motor drivers, relay coils and DC-DC converter inductors.

Common mistakes students make

  • Saturating the output. Gain 1000 on a 10 mV signal sounds fine until a 2.5 V common-mode offset plus a small bridge imbalance pushes the output into the supply rail. Check the IA's output swing limits in the datasheet and leave headroom.
  • Forgetting the REF pin. A floating REF pin picks up noise and your whole measurement drifts. Tie it to a stable reference.
  • Using the wrong gain resistor tolerance. Rg sets your gain directly — a 5% resistor gives you 5% gain error before you start. Use 1% or better, or calibrate it out.
  • Expecting the IA to fix a broken bridge. If one strain gauge is cracked or a solder joint is dry, no amplifier recovers the signal. Measure the bridge with a multimeter first: opposite corners should show the excitation voltage, adjacent corners roughly half.
  • Amplifying after the ADC. The IA must come before digitisation. Amplifying a noisy digital reading just gives you bigger noisy numbers.

Alternatives and when to use them

  • Single op-amp difference amplifier: acceptable when the sensor impedance is low, gains are modest (under ~10) and you can match resistors to 0.1%. Cheaper, more parts to get wrong.
  • 24-bit ADC with built-in PGA (e.g. HX711): for load cells specifically, the HX711 combines a 24-bit sigma-delta ADC with a fixed-gain (128) instrumentation front end. It is the pragmatic choice for weighing projects and costs less than a precision IA plus a separate ADC.
  • Isolation amplifiers: when the sensor sits at a dangerous or very different potential (mains-side current sensing), galvanic isolation matters more than precision. Different part, different problem.

FAQ

Can I build an instrumentation amplifier from three LM358s?
You can, and it is a good learning exercise. But the LM358 has millivolt-level offset and poor drift, and you must match six resistors yourself. For a real measurement project, a single integrated IA (AD620, INA125, INA122) costs little and performs far better.

My reading drifts with temperature — is the IA broken?
Probably not. Strain gauges themselves drift with temperature, and so does offset voltage. Use a full-bridge sensor (temperature effects cancel), keep excitation ratiometric, and re-zero in software before each measurement session.

Do I need a dual power supply?
Not necessarily. Single-supply IAs (INA122, INA333) run happily on 3.3 V or 5 V. Dual supplies give more output swing, which helps at high gains — weigh that against the extra supply circuitry.

How much gain is too much?
Gain multiplies offset and noise along with the signal. A rule of thumb: keep total gain such that the amplified offset stays well below your ADC's least significant bit budget, and never exceed the IA's output swing. Gains of 100–1000 are routine; beyond that, check noise and offset specs carefully.

Why does my output sit at the supply rail with no load?
Usually a wiring error (inputs swapped or floating), a saturated output from excessive gain, or the REF pin left floating. Check wiring with a multimeter before suspecting the chip.

Limitations

An instrumentation amplifier cannot create information that is not in the sensor signal — it amplifies noise and drift along with the measurement, so sensor quality and wiring still dominate your final accuracy. Integrated IAs are single-channel, so multi-sensor systems need one per channel or multiplexing. Precision comes with bandwidth limits: at high gains most IAs are only flat to a few kilohertz, so they suit slow physical signals (force, pressure, temperature) rather than fast transients. And while an IA rejects common-mode noise superbly, it does nothing about differential noise — that is what shielding, twisting and filtering are for.

More project guides

More in Electronics / E&TC