The resistive load cells works on the principle of piezo-resistivity. When a load/force/stress is applied to the sensor, it changes its resistance. This change in resistance leads to a change in output voltage when a input voltage is applied.

A load cell is made by using an elastic member(with very highly repeatable deflection pattern) to which a number of strain gauges are attached.

In figure 1, the load cell has a total of four strain gauges that are bonded to the upper and lower surfaces of the load cell.

When load is applied to the resistive load cell, the elastic member, deflects as shown and creates strain at those area due to stress applied. Two of the strain gauges in compression and other two in tension.

### Wheatstone Bridge Circuit

The four strain gauges are configured in a Wheatstone Bridge configuration with four separate resistor connected as shown.

when you apply force it causes stress which creates a change in resistance and a imbalance on the Wheatstone Bridge results in a change in output voltage(20mVolt) an Op-amp is need for higher amplitude (0-5V).

In our circuit, 2 amplifiers were used. The first one had a gain of 47 and the second one gave us a gain of 11. This would give the circuit a total gain of 517. Ideally, the total gain should be 574.71 which would result in the voltage output to be 5V, but due to the equipment constraints the maximum gain was 517 and this gave a voltage of 4.5V.

Below in Figure 4, is the Load Cell block diagram.

Below is a mass vs voltage table which was used in our research in determining the gain required for the system.

As seen in the chart in Figure 5, there is a linear relationship between Mass and Voltage.

Apparatus:

2. Resistors.(1kΩ,10kΩ,47kΩ, 100kΩ)
3. Multimeter.
5. LM Amplifier,
6. Arduino Nano.

Procedure for Building the System

Steps in making the weight measurement system:

Exact resistors values aren’t possible, due to equipment constraints, therefore various resistors in series and parallel allow the system accurate as possible

1. At the leftmost side of the breadboard the circuit was started.
2. Then, the positive output pin of the Load Cell was connected to a 1kΩ resistor then to the inverting pin of the operational amplifier with a 47kΩ resistor to ground.
3. After this, the negative output pin of the Load Cell was connected to a 1k resistor then to the non-inverting pin of the operational amplifier.
4. Then, a 47kΩ resistor was connected from the operational amplifier to the non-inverting pin.
5. Next, the output of the 1st operational amplifier was connected to the inverting pin of the 2nd operational amplifier.
6. A 100kΩ resistor was connected in between the inverting pin and the output pin.
7. Lastly, a 10kΩ resistor was connected from the non-inverting pin to ground.

Circuit Diagram

Below is a circuit diagram of the system built in OrCAD Cadence Capture.

In the circuit above there will be a loading effect, which has an impact on the load impendence and cause the voltage level of a voltage source to reduced. The circuit has thus been adapted to reduce the loading effect down to 5%. As seen in Figure 7.

The Arduino Code.

Below is the Arduino code used in this system.

``````//
// Code for a load cell sensor
// Written by David Haran, Martin Olaseni, Mpoyi Tshivuila, Carmen Boupda, last updated 13/12/2020
//
// Arduino pins:
//
//    A0
double Voltage;                                   // Voltage variable
int AnalogValue;                                  // Value at pin A0
double weight;                                    // Variable weight for the fluid
int Vin = A0;                                     // Vin is Analog Pin A0
double Offset_Voltage = 0.1;                      // Value is used to counteract offset voltage

void setup(){
Serial.begin(9600);                             // Start the connection with the computer. Transmits 9600 bits/sec which is the default for Arduino
pinMode (Vin,INPUT);                            // Output from the amplifier will be connected to this pin
}

void loop(){
//Reads the bit value (ranges from 0-1023 bits)
Serial.print("AnalogValue: ");
Serial.println(AnalogValue);                    // Prints out the bit value read (Between 0-1023)
delay(1000);                                    // 1 second pause

//Bits to Voltage
Voltage = (analogRead(Vin)/1023.0)*5.0;         // (bit value/max bit value)*Vmax
if(Voltage<1)                                   // To do with small voltage at 0g, when amplified is almost 1V
Voltage=Voltage-Offset_Voltage;                 // Reduces the offset voltage seen at low voltage values
if(Voltage<0)
Voltage=0;                                      // Ensures the voltage is never a negative value
Serial.print("Voltage: ");
Serial.println(Voltage);                        // Prints out voltage value
delay(1000);                                    // 1 second pause

//Convert digital value to weight in gramms
weight=(Voltage*200);                           // Change the multiplier with respect to the weight range you want, if you want 10kg rather than 0 - 1kg range multiply by 2000 rather than 200.
Serial.print("Weight: ");
Serial.print(weight);                         // Prints the weight
Serial.println(" g");
delay(1000);                                    // 1 second pause
}``````

The Simulation Video

Below is the video demonstration of the system.

References

Figure 4 – Mass v Voltage Table – https://odonnellrobotics.wordpress.com/?fbclid=IwAR0AYkyCAt-U2MGtCwgN2AcBI-OY6yD6EkAnM82AKCs5Rrx4FADOEHYsJzo