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.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;
}
}
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).
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.
hold the black lead to the metal of the USB socket (Arduino ground).
with the red lead you should measure 4.25-4.30volt on the E+ and zero! volt on E-
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
you should measure less than 20 millivolt between to A+ and A-
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.
Leo..
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.
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).