通过电子秤进行重量测量,其背后实际上是一套完整的信号采集与数据处理流程。下面以典型的HX711称重模块实验为例,详细解析从应变片受力到最终重量数字输出的每一步实现原理。
1. 实验原理
整个称重系统的核心由应变片压力传感器与HX711模数转换器共同构成。当外力施加于应变片时,其内部电阻值会随之发生变化,进而引起所在电路中的电流产生相应改变。这一变化的电流信号进入HX711芯片后,依次经过片内低噪声可编程放大器、高精度24位A/D模数转换器等模块的精密处理,最终输出一个代表重量的数字信号。该信号通过导线传输至主控处理器,处理器再根据预设的换算关系将其转换为实际重量值。
具体而言,电子秤秤体上安装有四个应变片式压力电阻,每两个为一组,分别粘贴在秤梁的上下两个表面。这四个传感器以桥式电路方式连接,这种接法能够有效提升称重精度与抗干扰能力。至于模数转换器,我们选用的HX711芯片内部集成了时钟振荡器(为板内各模块提供同步时钟信号)和稳压电源(提供稳定的工作电压),集成度较高,能够显著降低开发难度以及实际安装时的复杂度。
2. 硬件连接
除VCC和GND电源引脚外,HX711与主控处理器之间仅需一根时钟线(SCK)和一根数据输出线(DOUT)。具体的引脚连接关系如下表所示:
3. 实验平台
本次实验基于北京迅为电子提供的预搭建开发环境(Ubuntu 18.04 + Linux内核源码),硬件平台选用RK3568开发板。
4. 实验步骤
1. 下载内核源码
首先,下载迅为官方提供的内核源码包,解压后目录结构如下所示:
2. 内核配置
默认内核中并未包含HX711驱动,需要手动添加。从网盘资料“iTOP-3568 开发板”目录下的“9_系统外设功能测试/6_V1.7底版外设快速测试资料/7_HX711测试/3_驱动模块”中,将驱动文件拷贝到内核源码的 kernel/drivers/misc/hx711 目录下:
在该目录下新建 Makefile 文件,写入以下内容:
obj-$(CONFIG_HX711) += hx711.o
新建 Kconfig 文件,写入以下内容:
config HX711
tristate "HX711"
help
This supports HX711 Module drivers.
然后在 kernel/drivers/misc/Makefile 中添加一行:
obj-y += hx711/
在 kernel/drivers/misc/Kconfig 中添加一行:
source "drivers/misc/hx711/Kconfig"
最后执行 make menuconfig 配置内核对应选项:
export ARCH=arm64
make rockchip_linux_defconfig
make menuconfig
依次进入:Device Drivers → Misc devices → <*> HX711,保存退出后执行:
make savedefconfig
然后保存到默认配置文件:
cp defconfig arch/arm64/configs/rockchip_linux_defconfig
3. 修改设备树
在设备树文件 rk356x_linux/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi 的根节点下添加如下内容:
hx711 {
status = "okay";
compatible = "a via,hx711";
sck-gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
dt-gpio = <&gpio1 10 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "gpio";
default-state = "off";
};
4. 取消复用
打开 rk356x_linux/kernel/scripts/dtc/include-prefixes/arm64/rockchip/rk3568.dtsi 文件,将与HX711引脚存在冲突的配置项注释掉。
5. 重新编译内核和设备树文件
在源码目录 rk356x_linux/kernel/arch/arm64/boot/dts/rockchip/topeet_screen_choose.dtsi 文件中开启屏幕宏定义,然后执行以下命令编译内核镜像:
./build.sh kernel
6. 更新系统内核和设备树
编译完成后,在 kernel 目录下会生成编译好的镜像文件,单独替换烧写内核镜像即可完成更新。
7. 测试
首先将 hx711_test 可执行文件拷贝到开发板的 /mnt 目录下。先不放置任何承重物,运行称重测试程序:
hx711_test
可以看到打印的重量信息显示为 0g。然后放上已知重量的承重物,再次运行同样的命令,此时打印出的重量为 159g。至此,HX711 称重模块的测试流程全部完成。
