Arduino Bathroom Scale With 50 Kg Load Cells and HX711 Amplifier

120,163

234

53

Introduction: Arduino Bathroom Scale With 50 Kg Load Cells and HX711 Amplifier

This Instructable describes how to make a weighing scale using readily available off the shelf parts.

Materials needed:

  1. Arduino - (this design uses a standard Arduino Uno, other Arduino versions or clones should work also)
  2. HX711 on breakout board - This microchip is specially made for amplifying the signals from load cells and reporting them to another mircocontroller. The load cells plug into this board, and this board tells the Arduino what the load cells measure.
  3. 50kg load cells (x4) - Load cells are specially shaped metal parts that have strain gauges glue to them. The strain gauges are resistors that change their resitance when they are bent. When the metal part bends, the resistance of the load cell changes (the HX711 measures this small change in resistance accurately). You can buy the load cells and HX711 as a kit here: https://www.amazon.com/Degraw-amplifier-weight-Arduino-Bathroom/dp/B075Y5R7T7/ If you do purchase the kit please leave a review! It is really helpful for future buyers.
  4. Sturdy flat mounting surface - a stiff piece of hardwood or metal is ideal
  5. Wires in various colors for connecting all the parts
  6. Power supply for Arduino

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Mount the Load Cells

Mount the 4 load cells to the bottom of the scale in the four corners. Epoxy works well to hold them in place. See the mounting diagram, it shows which surface should be mounted to the base and which surface should touch the floor.

Step 2: Verify the Load Cell Wiring

The wiring diagram is made assuming the load cell is constructed like this picture.

To make sure you get it right, be sure to figure out which two terminals on the load cells have the highest resistance between them (E.g. Black and White, to match the schematic), wire them in a big color matching loop, like B-B W-W B-B W-W and then excite (E+/E-) two opposite center taps (R) and sense (A+/A-) on the other pair of center taps.

This page on Sackexchange has even better information: https://arduino.stackexchange.com/questions/11946/how-to-get-weight-data-from-glass-electronic-bathroom-scale-sensors/18698#18698

Step 3: Wire the Load Cells and HX711

See the wiring diagram for how to connect the load cells, HX711, and Arduino.

Some of the load cell wires are connected together to form what is called a Wheatstone bridge arrangement. This can get a little confusing. A good option for connecting all the load cells in a clean, easy to understand way is the SparkFun load cell combinator board - https://www.sparkfun.com/products/13878

This arrangement allows the loads on all of the different load cell sensors to be combined and measured at once.

Step 4: Add HX711 Library to Your Arduino IDE

The HX711 library is available here: https://github.com/bogde/HX711

See this link on the Arduino website for instructions on how to add the library to your Arduino IDE: https://www.arduino.cc/en/Guide/Libraries

Step 5: Calibrate and Weigh!

Sparkfun has great Arduino programs to run the scale. The most up to date versions are available on GitHub and reprinted below: https://github.com/sparkfun/HX711-Load-Cell-Amplifier

The first software step is to determine calibration factors for the scale. To do this, run this code:

/*
 Example using the SparkFun HX711 breakout board with a scale
 By: Nathan Seidle
 SparkFun Electronics
 Date: November 19th, 2014
 License: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license).

 This is the calibration sketch. Use it to determine the calibration_factor that the main example uses. It also
 outputs the zero_factor useful for projects that have a permanent mass on the scale in between power cycles.

 Setup your scale and start the sketch WITHOUT a weight on the scale
 Once readings are displayed place the weight on the scale
 Press +/- or a/z to adjust the calibration_factor until the output readings match the known weight
 Use this calibration_factor on the example sketch

 This example assumes pounds (lbs). If you prefer kilograms, change the Serial.print(" lbs"); line to kg. The
 calibration factor will be significantly different but it will be linearly related to lbs (1 lbs = 0.453592 kg).

 Your calibration factor may be very positive or very negative. It all depends on the setup of your scale system
 and the direction the sensors deflect from zero state
 This example code uses bogde's excellent library:"https://github.com/bogde/HX711"
 bogde's library is released under a GNU GENERAL PUBLIC LICENSE
 Arduino pin 2 -> HX711 CLK
 3 -> DOUT
 5V -> VCC
 GND -> GND

 Most any pin on the Arduino Uno will be compatible with DOUT/CLK.

 The HX711 board can be powered from 2.7V to 5V so the Arduino 5V power should be fine.

*/

#include "HX711.h"

#define DOUT  3
#define CLK  2

HX711 scale;

float calibration_factor = -7050; //-7050 worked for my 440lb max scale setup

void setup() {
  Serial.begin(9600);
  Serial.println("HX711 calibration sketch");
  Serial.println("Remove all weight from scale");
  Serial.println("After readings begin, place known weight on scale");
  Serial.println("Press + or a to increase calibration factor");
  Serial.println("Press - or z to decrease calibration factor");

  scale.begin(DOUT, CLK);
  scale.set_scale();
  scale.tare(); //Reset the scale to 0

  long zero_factor = scale.read_average(); //Get a baseline reading
  Serial.print("Zero factor: "); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
  Serial.println(zero_factor);
}

void loop() {

  scale.set_scale(calibration_factor); //Adjust to this calibration factor

  Serial.print("Reading: ");
  Serial.print(scale.get_units(), 1);
  Serial.print(" lbs"); //Change this to kg and re-adjust the calibration factor if you follow SI units like a sane person
  Serial.print(" calibration_factor: ");
  Serial.print(calibration_factor);
  Serial.println();

  if(Serial.available())
  {
    char temp = Serial.read();
    if(temp == '+' || temp == 'a')
      calibration_factor += 10;
    else if(temp == '-' || temp == 'z')
      calibration_factor -= 10;
  }
}

After calibrating the scale, you can run this sample program, then hack it up for your own purposes:

/* 
 Example using the SparkFun HX711 breakout board with a scale
 By: Nathan Seidle
 SparkFun Electronics
 Date: November 19th, 2014
 License: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license).

 This example demonstrates basic scale output. See the calibration sketch to get the calibration_factor for your
 specific load cell setup.

 This example code uses bogde's excellent library:"https://github.com/bogde/HX711"
 bogde's library is released under a GNU GENERAL PUBLIC LICENSE

 The HX711 does one thing well: read load cells. The breakout board is compatible with any wheat-stone bridge
 based load cell which should allow a user to measure everything from a few grams to tens of tons.
 Arduino pin 2 -> HX711 CLK
 3 -> DAT
 5V -> VCC
 GND -> GND

 The HX711 board can be powered from 2.7V to 5V so the Arduino 5V power should be fine.

*/

#include "HX711.h"

#define calibration_factor -7050.0 //This value is obtained using the SparkFun_HX711_Calibration sketch

#define DOUT  3
#define CLK  2

HX711 scale;

void setup() {
  Serial.begin(9600);
  Serial.println("HX711 scale demo");

  scale.begin(DOUT, CLK);
  scale.set_scale(calibration_factor); //This value is obtained by using the SparkFun_HX711_Calibration sketch
  scale.tare(); //Assuming there is no weight on the scale at start up, reset the scale to 0

  Serial.println("Readings:");
}

void loop() {
  Serial.print("Reading: ");
  Serial.print(scale.get_units(), 1); //scale.get_units() returns a float
  Serial.print(" lbs"); //You can change this to kg but you'll need to refactor the calibration_factor
  Serial.println();
}

2 People Made This Project!

Recommendations

  • Magnets Challenge

    Magnets Challenge
  • Raspberry Pi Contest 2020

    Raspberry Pi Contest 2020
  • Wearables Contest

    Wearables Contest

53 Discussions

0
greeninrit
greeninrit

16 days ago

Can it Measure 50gms Object?

0
semih.tavukcu16
semih.tavukcu16

25 days ago

Do we have to use 1K ohm resistors for connection? And also in my setup, when I put weight on the platform, value is getting higher for 2-3 seconds and then it starts to get lower stabily. And if a lift the weight, value is getting lower for a 2-3 seconds then again it starts to get higher stabily. Anyone have any idea why?

1
Asif2025
Asif2025

1 year ago

Ok, I made it. It worked for a few days but now it shows only zero value if any weight is placed or not. What do you think the problem is?

IMG_20181006_220444.jpgIMG_20181006_221512.jpgIMG_20181006_222015.jpg
0
JonathanD139
JonathanD139

Reply 2 months ago

I have also that problem. Has someone a solution?

0
odelagarza
odelagarza

Reply 7 weeks ago

I think how the load cells are mounted is the problem, you have to be careful to fix the load cells only in the edge, ( all around ) but not in the center, you must have a hole in the middle where the cells are mounted to be free to move , remember in the center of the plate is located the sensor, if you put the cells on a table there will not be a space at bottom to move and you will get 0. in the following picture the load cell is upsidedown and the red painted area must be not touching anything at all when is mounted.

load cell.png
0
BanyuT
BanyuT

Reply 1 year ago

do you get solution ? i just get 0 to much

0
IsidroM7
IsidroM7

Reply 1 year ago

Can you solved the problem?
Because I have the same problem.

Please if you can Help me

0
brycopter
brycopter

Question 2 months ago on Step 5

Hey everyone! Is it possible to configure this to only use one of the load cells and not run in a series? How would I go about doing that? Thanks!

0
priyank.accuster228
priyank.accuster228

2 months ago

after all the connection the weighing scale is showing leave the weight as it is taking weight continuously without any weight on weighing scale

0
muhdzar93
muhdzar93

Question 6 months ago on Step 4

i've tried it and work nicely. i tested when the arduino is off when there is item on the weight. When i turn on the power back, the reading is zero while the item is still on the weight? is there a way to solve this problem?

0
MarT28
MarT28

Answer 6 months ago

There is the Tara command in setup. This set the amount to zero....

0
muhdzar93
muhdzar93

7 months ago

the load cell wire are too thin.. do anyone have an idea to make it tougher/last longer?
Thanks in advance

1
DegrawSt
DegrawSt

Reply 7 months ago

You can put shrink wrap over the wires, or cover them in silicone or hot glue to make them sturdier. It is best not to make the wires longer or use thicker wire. This can change the resistance value of the load cell.

0
mfadil1212a
mfadil1212a

7 months ago

hi I want to ask, if we use 4 load cell sensors worth 50 kg, is the total weight that can be measured to be 200 kg?

0
DegrawSt
DegrawSt

Reply 7 months ago

Yes, the total weight that can be measured with the 4 50kg sensors is 200kg. The weight has to be fairly even on all 4 sensors so 1 does not get overloaded.

0
bethesdakid
bethesdakid

Question 9 months ago on Step 5

Did you use a WIFI Arduino REV3 or a WIFI shield? do you reduce current between readings to below 5 microamps? Can you get readings on an iPhone?

0
DavidH1124
DavidH1124

9 months ago

Hello,
Thanks for posting these instructions, as they seem very thorough.
I'm having some trouble, and its very likely an extremely simple fix, as I haven't touched a circuit board in years. I did great in that one class I took a decade ago... which is worth nothing at the moment.
I keep getting an error: "no matching functon for call to 'HX711::HX711(int, int)' "
This happens when i try to load the calibration code into the arduino. What gives?
Any help would be greatly appreciated!

0
tommykar
tommykar

Reply 9 months ago

Hello,
I am working on a beehive scale using these sensors and setup. I had the same problem and the reason was that the HX711 library updated during March in a way that is not compatible with old projects anymore. Remove all versions of HX711 library that you installed, delete them from the local folder and install the previous version of the library. The scripts of this article was written based on the previous version. Check here , https://github.com/bogde/HX711/releases For me everything works. The calibration script is what i needed

0
DavidH1124
DavidH1124

Reply 9 months ago

PASSED THAT ERROR. now on to, HX711 does not name a type

Capture.JPG
0
EnricaC2
EnricaC2

Reply 9 months ago

Do you mind explaining how you got rid of the error?