Saturday, June 6, 2015

Arduino Hx711 Digital Scale

After finding a broken scale in the trash at work, I decided to remove the load cell and build a digital scale with an Arduino. The output of the load cell is too minute for an Arduino to read on it's own, so I picked up a <$5 amplifier module online to convert the reading into a signal the Arduino can read. The Hx711 module is a 24 bit ADC, which offers high resolution and amplification. It's also designed for scale / load cell applications, so talking to it requires a minimum of code.

Connections are fairly simple. You will need a 4 wire load cell, and those typically have Green, White, Red, and Black wires.


Connect as follows:
Red: E +
White: A +
Green: A -
Black: E -

B- & B+ could be used for another load cell, but we are not using these.

If you get negative readings (-12g), reverse the A+ and A- wires.

On the other side of the module:

GND: Arduino GND
DT: Arduino A2 (can change this in code)
SCK: Arduino A3 (can change this in code)
VCC: Arduino +5

Library:

You will need to download the library files (the library files at dfrobot will not install properly using the add library function, these will).

Per the instructions at dfrobot, you may have to adjust a value in the Hx711.h file in the library to zero your scale. Mine did not need that.

Code:

/* sample for digital weight scale of hx711
 * library design: Weihong Guan (@aguegu)
 * library host on
 *https://github.com/aguegu/ardulibs/tree/3cdb78f3727d9682f7fd22156604fc1e4edd75d1/hx711
 */

// Hx711.DOUT - pin #A2
// Hx711.SCK - pin #A3

#include <Hx711.h>
Hx711 scale(A2, A3);

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print(scale.getGram(), 1);
  Serial.println(" g");
  delay(200);
}

To put the measured value into a variable for further processing, replace the code in void loop with:

float value = scale.getGram();
Serial.print(value);
Serial.println(" g");
delay(200);





14 comments:

  1. hi, the result shows negative reading with all crt connections as advised . please advise how to overcome this drawback

    ReplyDelete
  2. hi,i still encounter -ve readings even after following the above mentioned steps. Plz advise

    ReplyDelete
  3. To calibrate your scale, see https://github.com/aguegu/ardulibs/tree/master/hx711

    ReplyDelete
  4. how can i read the data from another load cell connected to B+ and B-?

    ReplyDelete
  5. Can't find link for part list can u link it?. Im trying to make automatic gunpowder scale, so can I make it that I set a weight and when the scale reaches it, it will open motor relay.. Sorry my bad english...

    ReplyDelete
    Replies
    1. The HX711 posted above, an Arduino, and a 4 wire load cell .....

      Delete
  6. Value of gram that is got form using Hx711 is too slow and delay. How to do to get fast.

    ReplyDelete
  7. ca I used it in raspberry? in arduino the green and red wire connect to analog pin, how about in raspi?

    ReplyDelete
    Replies
    1. hx711 have adc 24bit conect to digital pins

      Delete
    2. The arduino analog pins can also be used in digital mode, as they are in this project. The pi can interface as well. See http://hivetool.org/w/index.php?title=Interface_the_HX711_to_Pi

      Delete
  8. Hi
    What we have to do to add calibration function with micro switches.and how to add micro switches in code .

    ReplyDelete
  9. Hi
    How to read Pascal if I used pressure sensor

    ReplyDelete