使用带有 HX711 和 ESP32 模块的 20kg 电子称重传感器获得的值不正确
Incorrect value getting with 20kg electronic load cell with HX711 and ESP32 module
我有一个 20kg 的电子称重传感器来测量我项目中的重量。为了将称重传感器值转换为人类可读格式,我使用了 HX711 模块来转换值并提供给我的 ESP32 模块。问题是高达 900gms 它给出了适当的重量但是当我们增加重量时它给出了随机的长负值(例如 -806235)。我不知道为什么会出现这种情况,即使称重传感器的容量是测量重量高达 20 公斤。
我在 ESP32 的代码中包含了 HX711 库。 Link 是:https://github.com/bogde/HX711
#include "HX711.h"
#define snsr_clk 4
#define snsr_data 15
HX711 scale;
float currentweight, scale_factor;
void setup()
{
Serial.begin(9600);
scale.begin(snsr_data, snsr_clk);
//scale.set_scale(); //for calibration
scale.set_scale(103229); //measured scale factor
scale.tare();
}
void loop()
{
//For calibration purpose---------------------
/*currentweight = scale.get_units(10);
//Serial.print("Current weight:\t");
//Serial.println(currentweight);
scale_factor = (currentweight);
Serial.print("Scale Factor:\t");
Serial.println(scale_factor);*/
//--------------------------------------------
//To get value in kg---------------------
Serial.print("Get Unit:\t");
Serial.println((scale.get_units(10)*1000));
//----------------------------------------------
}
请指导我如何获得超过 900 克的重量。
耶皮..!!我解决了这个错误。 HX711 的库有一点变化。 shiftIn函数的变化如下图:
uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder)
{
uint8_t value = 0;
uint8_t i;
for(i = 0; i < 8; ++i) {
digitalWrite(clockPin, HIGH); //remove comment from here
if(bitOrder == LSBFIRST)
value |= digitalRead(dataPin) << i;
else
value |= digitalRead(dataPin) << (7 - i);
//digitalWrite(clockPin, HIGH); //comment this line
digitalWrite(clockPin, LOW);
}
return value;
}
我有一个 20kg 的电子称重传感器来测量我项目中的重量。为了将称重传感器值转换为人类可读格式,我使用了 HX711 模块来转换值并提供给我的 ESP32 模块。问题是高达 900gms 它给出了适当的重量但是当我们增加重量时它给出了随机的长负值(例如 -806235)。我不知道为什么会出现这种情况,即使称重传感器的容量是测量重量高达 20 公斤。
我在 ESP32 的代码中包含了 HX711 库。 Link 是:https://github.com/bogde/HX711
#include "HX711.h"
#define snsr_clk 4
#define snsr_data 15
HX711 scale;
float currentweight, scale_factor;
void setup()
{
Serial.begin(9600);
scale.begin(snsr_data, snsr_clk);
//scale.set_scale(); //for calibration
scale.set_scale(103229); //measured scale factor
scale.tare();
}
void loop()
{
//For calibration purpose---------------------
/*currentweight = scale.get_units(10);
//Serial.print("Current weight:\t");
//Serial.println(currentweight);
scale_factor = (currentweight);
Serial.print("Scale Factor:\t");
Serial.println(scale_factor);*/
//--------------------------------------------
//To get value in kg---------------------
Serial.print("Get Unit:\t");
Serial.println((scale.get_units(10)*1000));
//----------------------------------------------
}
请指导我如何获得超过 900 克的重量。
耶皮..!!我解决了这个错误。 HX711 的库有一点变化。 shiftIn函数的变化如下图:
uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder)
{
uint8_t value = 0;
uint8_t i;
for(i = 0; i < 8; ++i) {
digitalWrite(clockPin, HIGH); //remove comment from here
if(bitOrder == LSBFIRST)
value |= digitalRead(dataPin) << i;
else
value |= digitalRead(dataPin) << (7 - i);
//digitalWrite(clockPin, HIGH); //comment this line
digitalWrite(clockPin, LOW);
}
return value;
}