Strain gauge (BF-350) + hx711 (always zero)

Hi everybody,

I am working on a project, which objective is to find the force applied to a point at a carbon fiber wing bar.

I am using two strain gauges BF-350, 2 resistances (330ohms), arduino and a HX711.

But the problem is because is just reading zero´s. I don´t know if the problem is the strain gauge, or the resistance, or the Wheatstone half bridge.
I did a simulation on Ansys, and the strain at the point i want to measure is about 0,03mm.

I am sending images about the Wheastone bridge that we create for that, the code and strain gauge installed at the wing bar,"

#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.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.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.

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: ");

    char temp =;
    if(temp == '+' || temp == 'a')
      calibration_factor += 10;
    else if(temp == '-' || temp == 'z')
      calibration_factor -= 10;

On your HX711 board, is the "E-" connected to GND?
(Disconnect everything and measure for 0Ω from E- to GND.)

I'd love to help, but you need to provide a schematic showing how the sensors are connected to your arduino.

Do you mean this?



I tried that, but that-s no difference.

Do u think may be the strain gauge is wrong? For my objetive is not corret?

Or maybe is the weld?

What is the source for that Wheatstone configuration?

The bridge arrangement appears to be consistent with this:


That's not a strain. Strain does not have units of length. Strain is elongation divided by length, so it is, nominally, unit-less. Since it is often such a small number when expressed as meters per meter, it is often referred to in terms of um / m, or microns per meter, or micro-strain.

One way to test whether your bridge is working is remove everything from it, apply some voltage to E+ and E-, and use your DMM to measure the resulting voltage across A+ and A-, for no load and full load. Compare the measured voltage to the voltage calculated using the properties of the strain gauges, configuration, and applied voltage.

One way to test your HX711 is to ditch the calibration part, output raw readings for no load and full load, and see if those match the expected output (obtained by calculation).

No, the whole circuit. You have missed off the important bit with the strain guages and power supply.

Any luck?
I'm having the same issue.

Those two resistances are high precision and low temperature coefficient I hope? 0.1% metal film is a good starting point. Carbon 5% resistors will not do here.

Did you read post#2.
There is a batch of green HX711 boards out there with a design/production error.
They don't work unless you solder a short wire between E- and GND of those boards.
You can identify them by holding the board against a strong light.
If the light shines through the board, then you have the one with the production error.

If you have a DMM (digital multimeter), then do this.

  1. hold the black lead to the metal of the USB socket (Arduino ground).
  2. with the red lead you should measure 4.25-4.30volt on the E+ and zero! volt on E-
  3. you should measure half of that (~2.15volt) on A+ and on A-
    Move the meter leads to A+ and A- and choose millivolt range
  4. you should measure less than 20 millivolt between to A+ and A-


1 Like


I have yes. I've seen the problems with the ground on these chips. I did ground the E- like you suggested without change. I do not think it's the chip though.
I've tried the same setup on my Arduino mega 2560 and got the readings from it. But the controller I want to use it with is a SparkFun 7-Segment Serial Display that has an Atmega328 on it. I've loaded the example code from the hx711.h library (Bogdan Necula). (FTDI programmer). Using external 6V battery for hx711 which shares ground with the controller.

I'll use Sevseg library to do the segments once I get a reading.

I can't be sure I'm getting data from the hx711 but the ADC raw readings are coming in zero. It has also sent a NaN once so I thought maybe a register on the atmega328 is wrong? ( the serial 7 seg comes pre-programmed to be used as i2c slave).

I'm out of ideas. But I believe someone smarter will figure it out

That doesn't make sense. That board only seems to be a serial to 7-segement display.
You still need some sort of Arduino with it.
If you want it to be solved, then it's best to start your own thread, not hijack this one.
Read the "how to post" guidelines first.


It made sense to me. It has been done before. I happen to need a small 7 segment display with a brain. Sparkfun has even added it to the arduino boards manager so you can program whatever you like, Customizing the display.

Yeah I thought about starting a thread, but here was someone with the same chip (Uno=atmega328) with the same problem. So I thought I'll make friends. Maybe we'll help each other out who knows.


To complete the bridge you need to add 20 ohm to the 330 resistors.
the strain gauge is 350 and 330 is far away for balancing.

Not correct.
Any reasonable resistor value can be used for the A+ leg (post#1),
as long as they both are exactly the same value (and type).

Point is that there must be zero volt (less than 20mV) between A+ and A- without weight.

1 Like

They need to be high accuracy types, carbon film is useless here, 0.5% or better metal film is good as they have accuracy and low tempcos, and ideally they should be thermally tracking each other (ie close together, away from heat sources). Even 1% change in one resistor will swing the output full scale for a strain-gauge bridge circuit, you want resistors that are stable at ppm levels (to match the stability of the strain guage elements).

Try this!

#define DOUT A4
#define CLK A5

Do you think it's an I2C device?

It is I2C.