New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to get kilogram from hx711? and the proper calibration. #70
Comments
You need to just use a bit of math, so it will depend on how good your inner child is at math.
So say you have a raw value of 10000 for 0 weight (tare) and 20000 for 1000g, and want readings in g Your numbers will be completely different, but the method is the same. |
@electrokean thank you for answering. Ive tried your solution and here are the results (please see attached image). y is hard coded. now my question, how am i going to get kilogram from these results.. |
You use those calculated values in Note read the comments in HX711.h - it explains the difference between all the |
@electrokean heres my code for calibration where should i put the scale.set_scale(m) and scale.set_offset(b)? should i put it inside the calibration() which is called by setup()? or should i put it inside the loop()? and what should be put first? the scale.set_scale(m) or scale.set_offset(b)? Sorry if i have too many questions. Im a total newbie.. |
You only call Please read the code written by bogde and try to understand it! It is very small, and most is quite easy to follow. Also, please don't include screenshots of code. You should copy and paste them inside a markdown code block (surrounded by back-quotes) |
Thank you so much @electrokean! |
The hx711 outputs a value corresponding to the ratio of difference voltage divided by the voltage applied to the load cell. This ratio is factored by the gain. Full scale output is 800000 to 7FFFFF in hexadecimal and corresponds to 0.5 to - 0.5 difference ratio V/V. The load cell calibration certificate tells me the output at a particular voltage with a defined load applied. My certificate says 1.996 mV at 5 V with 50 kg applied. The difference ratio is then 0.0003992 V/V at 50 kg. I am using a gain of 128 so this difference ratio becomes 0.0511 V/V. This is then 10.2 % of the full scale 0.5 V and will correspond to 800000 x 10.2 % in hexadecimal. This will be a decimal value of 857275 for 50 kg. The sensitivity is therefore 17145 per kg. |
my hx711 output value is flactuating from 1000-4000 up and down, is it normal? |
4000 is 0.047 % of full scale. So don't worry about it. Take an average over more readings if you want a steady value. I suspect that this is normal. |
I found that was a factor of 2 out. The gain of my setup is 8573 /kgf. Does anyone know what's this is. I will let you know if I can figure it out. |
The load cell I have has a sensitivity of 1.966 mV/V at 50kg. This is then amplified to 0.2555 V/V. This is then 0.511 of the Hx711 half scale output of 0.5 V/V. The digital output is therefore 0.511 x 800000 in hexadecimal. This will be 4286579 in decimal for 50 kg. The sensitivity is then 85731 per kg. |
You need to read the README file and make use of |
The first thing I notice is that you should have four wires from each load cell. You should start by reading each load cell separately. As I explained earlier in this thread you should have a sensitivity value for the load cell. Use this to set the gain as I described. I suggest that if you want to sum up the readings you should read both cells independently and then you can add the values. Let me know if this makes sense. |
You appear to have an apostrophe at the beginning of your #include statement. I guess that this is not in the code. |
Okay. The two sensors are actually two half bridges that need to be measured as a pair. |
How many mV per V are they supposed give at 50 KG? |
at 50 kg? |
I don't exactly know how to find it. can you tell me the steps to find those values? |
Did you have any certificate with the cells? |
The load cell I have has a sensitivity of 1.966 mV/V at 50kg. This is then amplified to 0.2555 V/V when the 128 gain of the hx711 is applied. This is then 51.1 % of the Hx711 half scale output of 0.5 V/V. The digital output is therefore 0.511 x 800000 in hexadecimal. This will be 4286579 in decimal for 50 kg. The sensitivity is then 85731 per kg. |
Should I use a multimeter to measure the sensitivity? |
or is there any device or code which i can use to find the sensitivity value. I didn't get any certificate details with the product. |
Then determine the output for a couple of weights that you trust. The values will be high. Tell me what output you get for these known weights. |
/* This is the calibration sketch. Use it to determine the calibration_factor that the main example uses. It also Setup your scale and start the sketch WITHOUT a weight on the scale This example assumes pounds (lbs). If you prefer kilograms, change the Serial.print(" lbs"); line to kg. The Your calibration factor may be very positive or very negative. It all depends on the setup of your scale system 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 8 HX711 scale(DOUT, CLK); float calibration_factor = 8875; //-7050 worked for my 440lb max scale setup void setup() { scale.set_scale(); long zero_factor = scale.read_average(); //Get a baseline reading void loop() { scale.set_scale(calibration_factor); //Adjust to this calibration factor Serial.print("Reading: "); if(Serial.available()) |
I have used this code and the value that i have got for 500g is 700g and for 3.4kg the values are fluctuating between 3.4 and 4.5 |
What is the calibration factor that gave these figures? |
Have you been pressing a and z to adjust the factor? |
500 g is one percent of full scale so it is not a suitable value for calibration of your load cell. The 3.4 kg is a bit better but you need to get a steady reading using average function of the hx711 library. |
The max values of the 24 bit twos complement are 8388608 and - 8388607. 200 kg will be represented as 2147484. So your initial scale factor should be 10737/kg. |
Hi, My application (using ESP32 DEVKIT) requires to go to sleep after reading the value and wakes up at regular intervals and after each wake-up, the setup() runs with the scale.tare() and I get "0" (zero) readings- note that the object being weighed is not removed from the sclae. If I comment-out/remove the scale.tare(); , I get 200gms less. My understanding is that once the calibration_factor is known, scale.tare(); is not required. Am I missing something? |
David |
It is a 200 kgf load cell so you should expect 0 when it is unloaded. Check resistance from the red wire to the black and white wires. The resistance to the negative excitation wire will be about 400 ohms. Red is always the positive excitation |
I measured with HX711 off [not connected]: |
Not what I expected! I guess the HX711 is influencing the result. Please measure again with all connections to the HX711 disconnected. |
Only the cell wires |
It seems pretty clear that the output is red and green. White to black is the excitation. The only thing that doesn't make sense is the white to black resistance. I would expect this to be 390 ohms. |
It seems pretty that the output is red and green. White to black is the excitation. The only thing that doesn't make sense is the white to black resistance. I would expect this to be 390 ohms. |
If you see my third post before, the manufacter give |
It is not what you would expect. Yes white and black are excitation. |
SerBazanis With white and black as your input are you still not getting sensible output? David |
Here in Greece we vote today so in 2 hours i will try it... |
Hot day in southern Italy by the beach for me. |
Ok David When you come to Athens i will give you honey from abete [elato in Greek]. Thank you again |
Now I need to figure out why I am a factor of two out. I am glad it worked out for you. |
Full scale for the HX711 is 20 mV for a 5 V excitation. This is 0.004 V/V. If you have a load cell sensitivity of 1.001 mV/V then this is 0.25025 of the full range of the HX711. The digital output for full range is 8388608. 25.025 % of this is 2099249. |
One would assume that the 1.001 mV/V corresponds to the stated rating of the device. If the 1.001 mV/V of the load cell actually corresponds to 100 kgf then the scale factor is 20992. |
The 20 mV for 5 V comes from the HX711 datasheet description. 'Channel A |
David |
1.5 kg is just too small for a 200 kgf load cell. You will have temperature drift in the HX711 and the load cell. Try hanging your own body weight on it. |
Don't use the load cell to measure less than 20 kgf as in 10% of its rating. |
Please share a simple formula for calibration of any type of load cell |
Hi,We are talking about 2’s complement format thus range is not 8388608 and - 8388607 but 8388608 and -16777216,so far i know. |
Hi, i was just trying to understand the formula at the beginning. Formula
Explanation
Exampleb = 10000 (raw value no weight) ResultSo we are interested in x: raw = 10000x = (raw - b) / m = (10000 - 10000) / 10 = 0g raw = 20000x = (raw - b) / m = (20000 - 10000) / 10 = 1000g raw = 15000x = (raw - b) / m = (15000 - 10000) / 10 = 500g Usage
|
@schef your explanation is very good. As you show you can rewrite the formula to solve in various ways. If you swap the definitions of x and y that just changes the effective slope (m) and intersection (b) values you get when solving. In my head I prefer to solve for y being actual weight, but the values required by the HX711 library may actually work the way you write. It has been a long time (5.5 years) since I last used this library, so I don't remember. I'm guessing so based on your results. Cheers! |
@marm496 2^24 = 16777216 - so you can only have that many unique values in 24 bits. |
Thanks for explaining. I will also note that the actual excitation value (AVDD from the datasheet) needs to be calculated from the schematic VBG, R1, and R2 values. For the module I have and when supplying 5 V to the module this is: Note the AVDD equation was incorrect on earlier HX711 datasheets. THe R1 and R2s were swapped. The full scale differential input range is not +/- 20mV but: The +/- 20mV in the datasheet is a nominal value. So if you have 2mV/V sensitivity transducer, the full scale output would be: The ratio of the ADC range is thus: So 0.512*8388608 LSBs= 4294967 LSBs at full scale. Please correct me if I am wrong. |
hello there, i'm trying to use load cell with Arduino Mega 2560 , i'm able to read the values from "HX711" but not proper values its like(335542,335543,335542,335542....)how can i change these values to weights , one thing i don't understand till now how calibration will be done and what is the procedure.. please give a reply... please see my code correct/give me any inputs to get proper weights //====================load_cell data logging =====================// } void clk() |
Hello @electrokean @DavidRTucker and everyone, I have a case, the formula used to find the output of the hx711 module? can anyone help me ? Loadcell Specifications: Thank you ... |
Hi! Can someone please explain how to get kilogram from xh711? and also how to properly calibrate it. I am using arduino mega, hx711 and 4pcs of 50kg load cell (the one you see inside the bathroom scale).. please i need it for my project. and also, please do not use jargon words, for im just a beginner.. consider it like explaining to a child =D
The text was updated successfully, but these errors were encountered: