使用 HX711 和 ESP32 模块使用 20kg 电子称重传感器获得的值不正确

查尔斯 123

我有一个 20 公斤的电子称重传感器来测量我的项目的重量。为了将称重传感器值转换为人类可读的格式,我使用了 HX711 模块,该模块可以转换值并提供给我的 ESP32 模块。问题是高达 900 克它给出了适当的重量,但是当我们放置更多重量时,它给出随机长负值(例如 -806235)。我不知道为什么会发生这种情况,即使称重传感器的容量是测量高达 20 公斤的重量。

我在 ESP32 的代码中包含了 HX711 库。链接是: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 克的重量。

查尔斯 123

耶皮..!!我解决了错误。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;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ESP32 和 Freertos:如何正确使用 Freertos 的任务和队列

使用监视器和模拟写入 (ESP32) 时的奇怪行为

ESP32交替使用BLE和WiFi

无法使用 esp32 和 Arduinojson 从 Googlesheet 获取数据

如何使用esp32 ulp中断脉冲计数器和定期唤醒深度睡眠模式

如何使用公共IP和SSL将ESP32连接到MQTT服务器?

如何在Lua中将ESP32和NodeMCU与蓝牙配合使用

使用ESP32为无线调制解调器配置DHCP softAP

使用SJA1000(ESP32)进行CAN控制器验收过滤

使用 Android 从 ESP32 Socket 服务器接收数据

从 Nodemcu ESP32 和 Firebase 发送传感器数据

使用外部DAC的ESP32 I2S音频播放中的失真,采样频率高于20kSps

使用 WiFi.h 从 WiFiClient ESP32 获取数据

使用ESP32测量蓝牙连接力

为什么使用对数时显示Esp32“ nan”?

使用 PWM 使 ESP32 Huzzah (MicroPython) 上的 LED 闪烁

立即使用esp将数据从NodeMcu(ESP266)发送到ESP32?

我正在尝试使用 int 从蓝牙向 Arduino ESP32 输入一个值,但该值被读取错误,

使用 esp32 在 arduino 中执行简单任务时出现此看门狗计时器错误

ESP32 / ESP8266使用WiFi连接到本地主机

无法使用esp32从Firebase获取正确的数据。每次使用get函数时,串行监视器的输出均为0。请帮我

如何读取带有 ESP32 中断和全局标志的旋转编码器

ESP32 上的 CoAP 服务器和 Node 客户端

ESP32 Wifiserver 和 Android Appp

微控制器(esp32)使用 x86 还是 arm,我可以在这些 MCU 中安装 Linux

在Windows 7上使用Eclipse编译esp32应用程序:找不到“ make”

如何使用http向ESP32发送字符串

WiFi工作时,您可以使用ESP32的所有GPIO引脚吗?

ESP32 如何使用 http.addHeader() 添加 Host 标头