Arduino Weight Measurement using Load Cell and HX711 Module
Arduino Weight Measurement
using Load Cell and HX711 Module
Today
we are going to Measure the Weight by interfacing Load Cell and HX711
Weight Sensor with Arduino. We
have seen weight machines at many shops, where machine displays the weight just
by placing any item on the weighing platform. So here we are building the same Weighing
machine by using Arduino and Load cells, having capacity of measuring upto
40kg.
This limit can be further
increased by using the Load cell of higher capacity.
Required Components:
·
Arduino Uno
·
Load cell (40kg)
·
HX711 Load cell Amplifier
Module
·
16x2 LCD
·
Connecting wires
·
USB cable
·
Breadboard
·
Nut bolts, Frame and base
Load Cell and HX711 Weight Sensor Module:
Load cell is transducer which transforms force or pressure into
electrical output. Magnitude of this electrical
output is directly proportion to the force being applied. Load cells have strain gauge, which deforms when
pressure is applied on it. And
then strain gauge generates electrical signal on deformation as its effective
resistance changes on deformation. A load
cell usually consists of four strain gauges in a Wheatstone bridge
configuration.
Load cell comes in various
ranges like 5kg, 10kg, 100kg and more, here we have used Load cell, which can
weight upto 40kg.
Now
the electrical signals generated by Load cell is in few millivolts, so they
need to be further amplify by some amplifier and hence HX711 Weighing Sensor
comes into picture. HX711 Weighing
Sensor Module has HX711 chip, which is a 24 high precision A/D converter (Analog
to digital converter). HX711 has two analog input channels and we can get
gain up to128 by programming these channels. So HX711 module amplifies the low
electric output of Load cells and then this amplified & digitally
converted signal is fed into the Arduino to derive the weight.
Load
cell is connected with HX711 Load cell Amplifier using four wires. These four wires are Red, Black, White and Green/Blue. There
may be slight variation in colors of wires from module to module. Below the connection details and diagram:
·
RED Wire is connected to E+
·
BLACK Wire is connected to E-
·
WHITE Wire is connected to A-
·
GREEN Wire is connected to A+
Fixing Load Cell with Platform and Base:
This
step is optional and you can directly put the weights on the Load cell without
Platform and can simply clamp it without fixing it with any base, but it’s better to attach a platform for putting the
large things on it and fix it on a Base so that it stand still. So here we need to make a frame or platform
for putting the things for weight measurement. A base is also required to fix the load cell over
it by using nuts and bolts. Here
we have used a hard cardboard for the frame for placing things over it and a
wooden board as Base. Now do the connections as
shown in the circuit diagram and you are ready to go.
Circuit Explanation:
Connections
for this project are easy and schematic is given below. 16x2
LCD pins RS, EN, d4, d5, d6, and d7 are connected with
pin number 8, 9, 10, 11, 12 and 13 of Arduino respectively. HX711 Module’s DT and SCK pins are directly connected with Arduino's pin A0
and A1.
Load cell connections with
HX711 module are already explained earlier and also shown in the below circuit
diagram.
Working Explanation:
Working
of this Arduino Weight Measurement project is easy. Before going into details, first we have to calibrate
this system for measuring correct weight. When user will power it up then system will
automatically start calibrating. And if
user wants to calibrate it manually then press the push button. We have created a function void calibrate() for calibration purpose, check the code
below.
For calibration, wait for LCD indication for putting 100 gram over the load
cell as shown in below picture. When
LCD will show “put 100g” then put the 100g weight over the load cell
and wait.
After some seconds
calibration process will be finished. After
calibration user may put any weight (max
40kg)
over the load cell and can
get the value over LCD in grams.
In
this project, we have used Arduino to control whole the
process. Load cell senses the weight and
supplies a electrical analog voltage to HX711 Load Amplifier Module. HX711 is a 24bit ADC, which amplifies and
digitally converts the Load cell output. Then this amplified value is fed to the Arduino. Now Arduino calculate the output of HX711 and
converts that into the weight values in grams and show it on LCD. A push button is used for
calibrating the system. We have written a Arduino
program for whole process, check the Code and demo Video at
the end of this tutorial.
Programming Explanation:
Programming
part of this project is little complex for beginners. In this project, we did not use any library
for interfacing HX711 load sensor with Arduino. We have just followed the datasheet of HX711 and
application notes.
Although there are some
libraries present for this purpose, where you only need to include that library
and you can get the weight using one line of code.
First
of all, we have included header file for LCD and defined the pins for the same. And for push button also. Then declared some variables for calculation
purpose.
#include
<LiquidCrystal.h>
LiquidCrystal
lcd(8, 9, 10, 11, 12, 13);
#define
DT A0
#define
SCK A1
#define
sw 2
long
sample=0;
float
val=0;
long
count=0;
After
it, we have created below function for reading data from HX711 module and
return its output.
unsigned
long readCount(void)
{
unsigned long Count;
unsigned char i;
pinMode(DT,
OUTPUT);
digitalWrite(DT,HIGH);
digitalWrite(SCK,LOW);
Count=0;
pinMode(DT,
INPUT);
while(digitalRead(DT));
for (i=0;i<24;i++)
{
digitalWrite(SCK,HIGH);
Count=Count<<1;
digitalWrite(SCK,LOW);
if(digitalRead(DT))
Count++;
}
digitalWrite(SCK,HIGH);
Count=Count^0x800000;
digitalWrite(SCK,LOW);
return(Count);
}
After
it, we have initialize LCD and give directions to input and output pins
in void setup().
void
setup()
{
Serial.begin(9600);
pinMode(SCK,
OUTPUT);
pinMode(sw,
INPUT_PULLUP);
lcd.begin(16, 2);
lcd.print(" Weight ");
lcd.setCursor(0,1);
lcd.print(" Measurement ");
delay(1000);
lcd.clear();
calibrate();
}
Next
in void loop() function,
we have read data from HX711 module and converted this data into weight (grams) and
sent it to the LCD.
void
loop()
{
count= readCount();
int w=(((count-sample)/val)-2*((count-sample)/val));
Serial.print("weight:");
Serial.print((int)w);
Serial.println("g");
lcd.setCursor(0,0);
lcd.print("Weight ");
lcd.setCursor(0,1);
lcd.print(w);
lcd.print("g ");
if(digitalRead(sw)==0)
{
val=0;
sample=0;
w=0;
count=0;
calibrate();
}
}
Before
this, we have created a calibration function in which we have calibrated the system
by placing the 100gm weight over the Load cell.
void
calibrate()
{
lcd.clear();
lcd.print("Calibrating...");
lcd.setCursor(0,1);
lcd.print("Please Wait...");
for(int
i=0;i<100;i++)
{
count=readCount();
sample+=count;
Serial.println(count);
}
..... ....
..... .....
Demo & Code
Arduino Weight Measurement using Load Cell and HX711 Module
Reviewed by XXX
on
สิงหาคม 27, 2560
Rating:
ไม่มีความคิดเห็น