Introduction: Measuring Weight With a Load Cell

This post will cover how to set up, troubleshoot, and re-arrange a circuit for measuring weights under 1kg.

An ARD2-2151 costs €9.50 and can be bought at:

What was used:

-A 1Kg Load Cell (ARD2-2151)

-two op amplifiers

-An Arduino

Step 1: About the Load Cell

Has a very small output and thus needs to be amplified with an instrumental amplifier (a total gain of 500 was used for this system)

A DC source of 12V is used to power the load cell.

operates in temperatures from -20 degrees Celsius to 60 degrees Celsius, making it unusable for the project we had in mind.

Step 2: Building the Circuit

The load cell has a 12V input, and the output will be connected to a instrumentation amplifier to increase the output.

The load cell has two outputs, a minus and a positive output, the difference of these will be proportional to the weight.

The amplifiers requires a +15V and -15V connection.

The output of the amplifier is connected to an Arduino which needs a 5V connection, where the analog values will be read in and re scaled to a weight output.

Step 3: Differential Op-amp

A diff amp is used to amplify the difference of the plus and minus voltage output from the load cell.

the gain is determined by R2/R

R needs to be atleast 50K ohms as the output impedence of the load cell is 1k and the two 50k resistors would give a 1% error which is exceptable

the output ranges from 0 to 120 mV this is too small and needs to be amped more, a larger gain could be used on the diff amp or an noninverting amplifier could be added

Step 4: Gain Amp

A non-inverting amp is used because the diff amp only outputs 120mV

the analog input to the arduino ranges from 0 to 5v so our gain will be around 40 to get as close as possible to that range because that would increase the sensitivity of our system.

the gain is determined by R2/R1

Step 5: Trouble Shooting

The 15V supply to the op-amp, 10V to the Load cell and the 5V to the Arduino must have a common ground.

(all 0v values need to be connected together.)

A Voltmeter can be used to make sure that the voltage drops after every resistor to help ensure there are no short circuits.

If results are varying and inconsistent the wires used can be tested by using the voltmeter to measure the resistance of the wire, if the resistance says "offline" it means there is infinite resistance and the wire has an open circuit and cannot be used. Wires should be less than 10 ohms.

resistors have a tolerance, which means they could have an error, the resistance values can be checked with a voltmeter if the resistor is removed from the circuit.

smaller resistors could be added in series or parallel to get ideal resistance values.


1/Rparallel =1/r1 + 1/r2

Step 6: Results From Each Step

The output from the load cell is very small and needs to be amplified.

The small output means the system is prone to interference.

Our system was designed around the weights we had available which was 500g,

the gain amp's gain resistance is inversely proportional to the range of our system

Step 7: Arduino Results

The relationship in these results are linear and gives us a formula to find a y value ( DU from Arduino) for a given x value(input weight).

This formula and the output will be given to the arduino to calculate the weight output for the load cell.

The amplifier has an offset of 300DU, this could be removed by inserting a balanced wheatstone bridge before the load cell voltage is amplified. which would provide the circuit with more sensitivity.

Step 8: Code

The code used in this experiment is attached above.

To decide which pin should be used to read the weight:

pinMode (A0, INPUT);

The sensitivity (x-coefficient in excel) and offset (the constant in the excel eqn) are declared:

Each time the system is set up the offset should be updated to the current DU at 0g

float offset = 309.71;
float sensitivity=1.5262;

the excel formula is then applied to the analog input

and printed out to the serial monitor

Step 9: Comparing Final Output to the Input

The final output given from the Arduino accurately calculated the output weight.

Average error of 1%

This error is caused by different DU read at the same weight when the test is repeated.

This system is not suitable for using in our project due to the temperature range limitations.

This circuit would work for weights up to 500g, as 5v is the max value into the arduino, if the gain resistance is halved the system would work up to 1kg.

The system has a large offset but is still accurate and notices changes of 0.4g.