Arduino Bathroom Scale With 50 Kg Load Cells and HX711 Amplifier

58,492

209

31

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

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(DOUT, CLK); 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.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(DOUT, CLK); void setup() { Serial.begin(9600); Serial.println("HX711 scale demo"); 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

  • Epilog X Contest

    Epilog X Contest
  • Faux-Real Contest

    Faux-Real Contest
  • Cardboard Challenge

    Cardboard Challenge

31 Discussions

0
None
msameer39

9 days ago

Looks awesome. I am ordering stuff to make it .

0
None
JiangP

Question 9 days ago on Step 5

how do I measure the force in simulink? find it hard to process DOUT and CLK

0
None
Asif2025

3 months 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
2 replies
0
None
BanyuTAsif2025

Reply 17 days ago

do you get solution ? i just get 0 to much

0
None
IsidroM7Asif2025

Reply 8 weeks ago

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

Please if you can Help me

1
None
IsidroM7

8 weeks ago

Hi, I have a problem, the black cables are all connected equally, or they are connected in pairs of two, for example: cell one with two and cell three with four.

2 replies
0
None
IsidroM7kazuo-saito

Reply 8 weeks ago

Can you pass me your two codes?
and photos of how do you connect everything?
Please

0
None
IsidroM7kazuo-saito

Reply 8 weeks ago

how did you do connect the black cables?
And how did you calibrate the sensor?
Because I have a problem with my scale.
Please Helpme

0
None
kazuo-saitoIsidroM7

Reply 8 weeks ago

I calibrate the sensor ,using the number=21500 worked for my 200Kg max scale setup. After readings begin, I placed known weight on scale. If there is a difference between known weight and scale reading, I changed the calibration factor bit by bit to minimize the difference. In my case I do not use (+) nor (-), because I cloud not change the calibration factor by (+) nor (-).

0
None
DegrawStkazuo-saito

Reply 4 months ago

Wow, this is the coolest use I have seen so far! Why are you measuring the weight of the box?

0
None
kazuo-saitoDegrawSt

Reply 4 months ago

Because, the weight is one of the most reliable signals we could get without disturbing bees daily life. The signals tell us the time when we could gather honey,and also tell us bees health. Japanese wild bee is rather sensitive so I want to watch them from remote places.

0
None
pchatill

Question 2 months ago on Step 3

Hi. That works well!! Thank you for sharing
But where did you find the plate to fix the sensors?
( image on step 1:Mount the load cells).
Thanks for answer

1 answer
0
None
DegrawStpchatill

Reply 2 months ago

The picture is from an old bathroom scale, you can use a broken one for the project . If you don't have this I glue the load cells with epoxy to a thick wood board.

0
None
SanderB17

Question 2 months ago

Hi, I installed everything like said in the instructions but somehow when I try to calibrate the sensors it keeps telling me there is no weight on it. I don't know what the problem is. Is there anyone who can help me?

1 answer
0
None
DegrawStSanderB17

Reply 2 months ago

Wiring the load cells can be very hard, there are a lot of connections and it is confusing. If the reading only shows zero it is usually a wiring problem. One thing that helps fix a wiring problem is to use Load Cell Combinator board from Sparkfun - https://www.sparkfun.com/products/13878 . It makes the connections more organized and it is very cheap.

Also check the load cells individually using a multimeter to make sure there are no broken wires inside the load cell.

0
None
HardwareSpec

8 months ago

I have connected up the three wire load sensor to the amplifier and arduino as mentioned above. The output gives me zero reading even if I place a weight on top of these load sensors. Measured the highest resistance for the three wires and the White- Red pair had the highest resistance similar to the one you have above. It wiuld be great if you could help me.

2 replies
0
None
HardwareSpecDegrawSt

Reply 8 months ago

I do have a Sparkfun HX711 board connected up to 4 load cells. Somehow I am not getting a reading. Did check the voltages and seems to work fine.