How to Connect Load Cell to Arduino?

load cell arduino

Electronic weighing machine uses load cell to measure the load or pressure produced by the load, here most load cells are follows the method of strain gauge, Which converts the pressure (force) into an electrical signal, these load cells have four strain gauges that are hooked up in a Wheatstone bridge formation.

When we apply load the strain gauge resistance will change and hence the output voltage from the load cell get changes by the way we can measure the load value.

Wheatstone bridge formation of Load Cell

load cell strian gauge

Instrumentation Amplifier

The output voltage changes from the load cell may vary between millivolt range, so that we need to magnify the changes occurs in output voltage, here we used instrumentation amplifier INA 125.

This is a low power, high accuracy instrumentation amplifier with a precision voltage reference. It provides complete bridge excitation and precision differential input amplification on a single integrated circuit.

Pinout diagram of INA125

ina 125 pinout

pdf-icon Datasheet INA125


The INA125 is a 16 pin DIP (Dual Inline Package) IC. It has two stages of amplifier with reference amplifier.

Load Cell Interfacing Schematic

arduino load cell schematics

Connect load cell pins to the instrumentation amplifier as shown in the schematic diagram.

RED : Excitation +

WHITE : Signal +

GREEN : Signal –

BLACK : Excitation –

The Resistor 10Ω connected between pin 8 & 9 is responsible for Gain of INA 125 instrumentation amplifier, the output is taken combined from Vo and Sense (Pin 10 & 11) and it is fed into Arduino analog pin A0. Here the need of power supply for load cell and instrumentation amplifier solved by Arduino power pins. This circuit is designed for getting reading at serial terminal if you need to add display refer LCD interface with Arduino.

Arduino Code for Load Cell


// Load cells are linear. So once you have established two data pairs, you can interpolate the rest.

// Step 1: Upload this sketch to your arduino board

// You need two loads of well know weight. In this example A = 10 kg. B = 30 kg
// Put on load A 
// read the analog value showing (this is analogvalA)
// put on load B
// read the analog value B

// Enter you own analog values here
float loadA = 10; // kg
int analogvalA = 200; // analog reading taken with load A on the load cell

float loadB = 30; // kg 
int analogvalB = 600; // analog reading taken with load B on the load cell

// Upload the sketch again, and confirm, that the kilo-reading from the serial output now is correct, using your known loads

float analogValueAverage = 0;

// How often do we do readings?
long time = 0; // 
int timeBetweenReadings = 200; // We want a reading every 200 ms;

void setup() {

void loop() {
  int analogValue = analogRead(0);

  // running average - We smooth the readings a little bit
  analogValueAverage = 0.99*analogValueAverage + 0.01*analogValue;

  // Is it time to print? 
  if(millis() > time + timeBetweenReadings){
    float load = analogToLoad(analogValueAverage);

    Serial.print("analogValue: ");Serial.println(analogValueAverage);
    Serial.print("             load: ");Serial.println(load,5);
    time = millis();

float analogToLoad(float analogval){

  // using a custom map-function, because the standard arduino map function only uses int
  float load = mapfloat(analogval, analogvalA, analogvalB, loadA, loadB);
  return load;

float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;


Hookup Diagram

arduino load cell



  1. Alexander S November 26, 2016 Reply
    • admin December 2, 2016 Reply

Add a Comment

Your email address will not be published. Required fields are marked *