#esp32 #measurement #load #cell #interrupt #embedded-hal #scale

loadcell

一个基于 embedded hal 的无 std 库,用于 hx711 称重传感器。可选支持 esp32 的中断。

2 个不稳定版本

0.2.0 2024年1月13日
0.1.0 2023年10月19日

#598硬件支持

42 每月下载量

MIT/Apache

32KB
253

hx711

一个针对 ESP32 的 hx711 的无 std Rust 库。

概述

HX711 是一个称重传感器放大器。通过将放大器连接到微控制器,您将能够读取称重传感器电阻的变化,并且通过一些校准,您将能够获得非常精确的重量测量。这可以用来创建自己的工业秤、过程控制或简单的存在检测。

此驱动程序实现了在此 数据表 中描述的必需的位打孔,并抽象出详细细节,以提供通用的 LoadCell 接口,具有缩放测量(校准)和偏移测量(去皮)的功能。

此库大量使用 embedded-hal,整个阻塞方法足够通用,适用于任何由 embedded-hal 支持的设备(测试帮助非常受欢迎)。中断方法目前仅适用于 esp32,利用 esp32-hal

有关硬件和连接的更多信息,请参阅 sparkfun 的全面指南。

安装

此 crate 在 crates.io 上,这意味着您可以通过在您的 cargo.toml 中包含此行来安装它

loadcell = "0.1.0"

使用

/examples/ 文件夹提供了库的关键用法。

构造函数将拥有提供的引脚

let mut load_sensor = hx711::HX711::new(hx711_sck, hx711_dt, delay);

然后可以使用此 load_sensor 对象

// zero the sensor
load_sensor.tare(16);
// set the sensitivity/scale
load_sensor.set_scale(1.0);

loop {
    if load_sensor.is_ready() {
        let reading = load_sensor.read_scaled();
        esp_println::println!("Last Reading = {:?}", reading);
    }
    delay.delay_ms(5u32);
}

校准

假设称重传感器的输出是一个将原始测量值 (x) 映射到输出测量值 (y) 的线性函数。当称重传感器初始化时,它有一些偏移量 (c)。必须校准设备以确定灵敏度 (m),可以通过以下公式完成

y = mx + c

首先,可以通过“零点”称重传感器来确定偏移量 (c)。使用 tare 函数来完成此操作,并自动使用 num_samples 样本计算偏移量。

其次,这应该对每个单独的负载单元进行,通过在秤上放置已知质量,可以计算出m值。如果您知道yxc的值,则可以通过以下公式计算m的值:

m = (y-c)/x

我个人从m = 1开始,并调整它,直到y与秤上的质量匹配。

依赖项

~0.1–2.4MB
~47K SLoC