称重 HX711 + 称重传感器

2026-06-22 接口:数字(HX711专用) R2
你将学到
  • 搞懂称重传感器(应变片原理)+ HX711(24-bit ADC)各自的角色和数据链路
  • 理解展厅"拿取识别"的逻辑:重量变化阈值触发,而非精确称重
  • 掌握 HX711 方案的接线和校准步骤(去皮 + 标定)
  • 清楚 HX711 属原型/小装置方案,工程化部署需换工业称重变送器或采集模块
  • 拿到漂移处理建议、选型对比表和故障排查表

展厅里有一个很讨喜的互动形态:展台上摆着一件文物(或者道具模型),参观者把它拿起来,旁边的屏幕就开始讲这件东西的故事;放回去,屏幕回到待机界面。这种"拿起即触发"的效果,背后最常用的是称重传感器加一颗 HX711 芯片。

听起来简单,但实际做起来有三个地方容易翻车:一是不懂称重传感器的接线(应变片四线缺一不可),二是不知道要校准(买回来直接用读数乱飘),三是图省事把 HX711 直连 Arduino 就上展厅(长跑几天开始漂移、偶发死机)。这一篇把这三个问题都正面交代,然后告诉你展厅工程化要走哪条路。

R2 内容,涉及称重传感器接线和工业采集配置。HX711 的具体寄存器时序、增益配置以官方 datasheet 为准(文末 sources 附链接);工业称重变送器参数和 Modbus 接口以你所购买型号的手册为准;工业 IO 配置以科星等模块官方文档为准。


原理:两件事合作才能读到重量

称重这件事,硬件上分两步走:把物理力转成电压(称重传感器的活),再把微小电压精确数字化(HX711 的活)

第一步:称重传感器 / 应变片

称重传感器(Load Cell)的工作原理是应变效应:传感器内部有一段金属梁,上面贴了应变片(一种极细的电阻丝)。有重量压上来时,金属梁微微弯曲,应变片的电阻值随之变化(变化量很小,微应变级别)。

实际产品里,四个应变片组成一个惠斯顿电桥:两个受拉、两个受压,差分输出。好处是:温度变化造成的电阻漂移,在两组应变片上是同向的,差分输出就抵消掉了——温度补偿内置在电桥结构里。

称重传感器通常有四根线:

  • 红(E+/VCC):激励正极
  • 黑(E-/GND):激励负极
  • 绿(S+/OUT+):信号正极
  • 白(S-/OUT-):信号负极

接 HX711 时,E+ 和 E- 接 HX711 的激励输出,S+ 和 S- 接 HX711 的差分输入。四根线缺一根都不行,少接了电桥不平衡,读数乱飘或直接无输出。

💡 提示

不同厂家的称重传感器,四根线的颜色定义可能有出入(有些黄色代替白色,蓝色代替黑色)。接线前必须查你手中传感器的规格书,别凭颜色猜——颜色猜错会造成信号反向或短路。

第二步:HX711(24-bit ADC)

称重传感器的差分输出电压很微弱(满量程通常只有 1mV/V3mV/V,激励 5V 下满量程约 515mV)。普通 MCU 的 ADC(8bit/10bit/12bit)分辨率完全不够用,而且也没有差分输入。

HX711 是一颗专门为称重应用设计的 24-bit ADC:

  • 集成了可程控增益放大器(PGA),增益可选 128/64/32(以 datasheet 为准)
  • 提供差分模拟输入,直接接称重传感器
  • 数字输出通过两根线(CLK + DOUT)传给 MCU,不是标准 SPI/I2C,是 HX711 自己的同步串行协议
  • 内置低噪声差分放大器,针对称重应用优化

HX711 → MCU 之间只需要两根数字线(CLK + DOUT),直接接 Arduino/ESP32 的 GPIO 即可读取 24-bit 原始读数。


展厅用法:拿取识别 / 重量触发

展厅里称重传感器最常见的不是"精确称重几公斤",而是判断有没有东西放上去(或拿起来)——本质是检测重量变化是否超过一个阈值。

这个逻辑比精确称重简单得多:

空台重量(去皮后 = 0)
  ↓ 放上展品 → 读数 > 阈值(如 100g)→ 触发"放置"事件
  ↓ 拿起展品 → 读数 < 阈值(如 20g)→ 触发"拿起"事件

设计触发阈值时要留 margin:展品重量如果是 500g,"放置阈值"可以设 200g(放了大部分就算),"离开阈值"可以设 50g(几乎空了才算离开)。这样可以过滤掉轻微晃动或展品没放正带来的抖动。

实际项目中还要加软件去抖:连续 N 次读数都稳定超过阈值才算真正触发,过滤掉一瞬间的抖动。N 的合理值看你的轮询频率,通常"连续 3~5 次,每次间隔 50ms"能覆盖大多数场景。


HX711 接线与校准(含伪代码)

接线

称重传感器(4线)         HX711 模块            控制器(Arduino/ESP32)
  红 E+   ──────────→ E+(VCC激励)
  黑 E-   ──────────→ E-(GND激励)
  绿 S+   ──────────→ A+(差分正输入)     HX711 DT   ──→ GPIO(如 D4)
  白 S-   ──────────→ A-(差分负输入)     HX711 SCK  ──→ GPIO(如 D5)
                        VCC ──────────────→ 3.3V 或 5V(以模块规格为准)
                        GND ──────────────→ GND

线序和 GPIO 编号仅作示意,以你手中模块和控制板的实际 pinout 为准。

校准步骤(伪代码)

称重模块必须做两步校准才能得到有意义的读数:

# 伪代码,说明校准逻辑;实际代码以你使用的 HX711 库为准

# 步骤 1:去皮(Tare)
# 台面空载,记录此时的原始 ADC 读数作为"零点"
zero_offset = hx711.read_raw_average(times=20)  # 多次取平均,减少随机噪声

# 步骤 2:标定(Calibration)
# 放上已知重量的标准砝码(如 500g),记录读数
known_weight = 500.0  # 克
raw_with_weight = hx711.read_raw_average(times=20)
scale_factor = (raw_with_weight - zero_offset) / known_weight
# scale_factor = 每克对应多少个 ADC 计数,这个值保存起来

# 使用时:
def get_weight_grams():
    raw = hx711.read_raw_average(times=5)
    return (raw - zero_offset) / scale_factor

# 触发判断:
weight = get_weight_grams()
if weight > PLACE_THRESHOLD:      # 如 100g
    trigger_event("物品放置")
elif weight < REMOVE_THRESHOLD:   # 如 20g
    trigger_event("物品拿起")

你应该看到:空台时 get_weight_grams() 返回约 0;放上标定砝码时返回接近标定值;放上展品时返回展品大致重量(允许几克误差)。

💡 提示

校准后把 zero_offsetscale_factor 存到非易失存储(ESP32 用 Preferences,Arduino 用 EEPROM),下次上电不需要重新校准。展厅长期运行,建议每隔一段时间(如每周)做一次"重新去皮"——把展台清空后按去皮按钮,消除温度漂移积累。


重点警示:HX711 方案的工程局限

⚠️ 安全

HX711 + Arduino/ESP32 是原型和小装置方案,不适合直接用于需要长期无人值守运行的正式展厅部署。 原因如下:

  1. 长期漂移:HX711 在室温变化较大的环境下,零点会随温度缓慢漂移。短期(几小时)问题不大,长跑几天后可能需要重新去皮才能读准。
  2. Arduino 稳定性:Arduino/ESP32 没有工业级看门狗、没有远程监控,长期运行偶发死机难以自动恢复。
  3. 没有工业接口:无法直接接 Modbus,无法被中控系统(SoftControl)统一纳管。

工程化的两条路

方案 适用场景 接入中控
HX711 + MCU(Arduino/ESP32) 原型验证、艺术装置、临时展览、数量少且有人驻场维护 不直接接中控(可通过串口服务器转,但维护成本高)
工业称重变送器(RS485/Modbus RTU 输出) 正式展厅、需要长期稳定运行 → 串口服务器(有人) / RS485 网关 → 中控,标准 Modbus 协议
工业 IO 采集模块(含模拟量 4-20mA 输入) 称重变送器有 4-20mA 输出时 → 科星模拟量采集器(4-20mA 输入)→ Modbus → 中控

工业称重变送器内部做了温度补偿、信号稳定化处理,RS485/Modbus 输出直接被中控读,长期稳定性远高于 HX711 + MCU 方案。重量展项要上正式展厅,优先评估工业变送器方案,HX711 留给原型阶段。


精度与漂移处理

  • HX711 24-bit 理论分辨率:以激励 5V、满量程 5mV 信号计,理论上每个 ADC 计数约 0.3µV,折算到重量约零点几克的分辨率——理论值很好看,但实际受噪声、温度、传感器本身精度限制,实际有效分辨率低得多,以你的实际测试为准。
  • 温漂:应变片的灵敏度和零点都随温度变化。展厅空调关掉的夜间到开空调的白天,温差 10℃ 以上时,零点漂移可能达到几十克等效,需要运营时定期重新去皮。
  • 蠕变:放重物超过一定时间(几小时),部分低价称重传感器会出现蠕变(读数缓慢漂移),适当提高传感器量程余量(额定量程是最大承重的 1.5~2 倍)可以减缓。
  • 过载保护:展厅里参观者可能乱放重物。选传感器时注意安全过载指标(Safe Overload),这个值下传感器损坏但不永久变形;超过极限过载(Limit Load)才永久损坏。展厅建议选额定量程是展品实际重量 2 倍以上的传感器,给过载一定余量。

选型对比表

维度 常见选项 怎么选(展厅)
称重传感器量程 1kg / 5kg / 20kg / 50kg 展品实际重量 × 2 以上留余量;太大分辨率差
传感器精度级别 C3(工业)/ 普通 用于拿取识别时普通级足够;精确计量选 C3
HX711 增益 128(A通道)/ 64(A通道)/ 32(B通道) 以 datasheet 为准;高增益放大小信号但更易受干扰
工程化方案 HX711+MCU(原型)/ 工业称重变送器(正式) 正式展厅选工业变送器,以 Modbus 输出为准
变送器接口 RS485/Modbus RTU 与串口服务器或网关配合接中控
4-20mA 变送器 模拟量输出,需采集模块 配科星或同类模拟量采集器(4-20mA→Modbus)
安装形式 台秤式 / 悬挂式 / 落地柱式 按展台结构选,台秤式最常见

故障排查表

现象 最可能的原因 怎么办
读数一直是 0 或固定值 HX711 未正确初始化 / 接线错误 检查 CLK/DOUT 接线;重新初始化 HX711
读数乱飘,放东西没用 称重传感器四根线有一根断/接错 对照 datasheet 重查四线颜色;测量 E+ E- 之间是否有激励电压
零点每天都不一样 温漂 / 供电电压不稳 每次开机重新去皮;检查供电稳定性;考虑换工业变送器
放上展品读数正确,隔几小时偏了 蠕变 / HX711 温漂积累 定期去皮;换更高精度传感器;正式工程换工业变送器
偶尔读数异常大/小(毛刺) 信号线干扰 / 供电纹波 缩短 CLK/DOUT 线;信号线远离强电;加滤波电容;软件多点取平均
拿起展品反应迟钝 软件采样频率太低 / 去抖次数太多 提高采样频率;减少去抖次数(同时调整阈值补偿)
展品放上去触发了,轻碰桌子也触发 触发阈值太低 / 展台不稳固 提高阈值;加防震脚垫;软件加时间窗去抖
工业变送器 Modbus 读不到数据 地址/波特率配置不对 / RS485 终端电阻 用串口调试工具核查 Modbus 地址和波特率;RS485 总线末端加 120Ω 终端电阻

进阶 / 应用案例

  • 互动文物展柜:展柜台面下埋多个称重点,系统判断哪件展品被拿起(用重量特征区分),对应屏幕自动切换到该展品的介绍内容。实现上每件展品区域一个称重点,各自独立读数,中控做"哪路传感器触发"的路由。
  • 互动体验道具:某科技体验展用一把"重量感应剑",参观者挥动时系统读取剑的状态——这类场景用称重传感器检测剑"在架上(有重量)"还是"被拿起(无重量)",简单可靠。
  • 互动机柜展品:密码箱形展项,把特定道具放入托盘,触发开锁动画——称重是最难被参观者意外绕过的触发方式之一(比按钮可靠,因为必须真实放上展品)。
  • 与中控的配合:不管是 HX711 方案还是工业变送器方案,最终都要让中控读到一个"拿取/放置"的状态位,触发媒体播放、灯光、声音联动。关于中控接入,了解 SoftControl 展厅中控系统
  • 多传感器联动:称重识别"展品被拿起"后,可联动 PIR 感应"参观者还在展台前",两者都满足才播放完整解说——避免展品被拿走后还一直在讲。参见 PIR 人体感应图鉴

动手挑战

  1. 用 HX711 + 5kg 称重传感器 + Arduino 做一个台秤,走一遍去皮→标定→读数全流程,记录三次读数误差。理解误差来源是传感器本身还是温漂还是代码。
  2. 实现"拿取识别"逻辑:空载时读数<阈值触发一个 LED;放上 200g 物品 LED 灭;实测从放上到响应的延迟(和你的采样频率有关)。

本节学到的知识

  • 称重是两级链路:称重传感器(应变片)把力转成微弱电压,**HX711(24-bit ADC)**再把这微弱电压数字化——MCU 的普通 ADC(8/10/12bit)分辨率和差分输入都不够,必须靠 HX711。
  • 应变片内部是惠斯顿电桥(两拉两压、差分输出),温度漂移在两组间同向、差分自动抵消,温补内置在结构里。
  • 称重传感器四线缺一不可:红 E+/黑 E-(激励)、绿 S+/白 S-(信号);颜色定义各厂不同,接线前必查规格书,凭颜色猜会信号反向或短路。
  • 传感器满量程信号很小,通常 1mV/V~3mV/V(激励 5V 下约 5~15mV,以手册为准)。
  • HX711 → MCU 只用两根数字线(CLK/SCK + DOUT/DT),是它自家的同步串行协议,不是标准 SPI/I2C;增益可选 128/64/32(A 通道 128/64、B 通道 32,以 datasheet 为准),高增益放大小信号但更易受干扰。
  • 展厅用法是拿取识别而非精确称重:靠重量变化过阈值触发,放置/离开设两档阈值留 margin,再叠软件去抖(连续 3~5 次、每次约 50ms 稳定超阈值才算数)。
  • 校准必做两步:去皮(Tare)记零点 + 标定(放已知砝码)算 scale_factor(每克对应多少 ADC 计数);结果要存非易失存储(ESP32 用 Preferences / Arduino 用 EEPROM),并定期重新去皮消温漂。
  • 选传感器额定量程按展品实际重量 ×2 以上留余量,兼顾抗蠕变和过载;注意区分安全过载(Safe Overload)极限过载(Limit Load)
  • HX711+MCU 只适合原型/小装置:长期温漂、无工业看门狗、无 Modbus 接口不能被中控纳管;正式展厅走工业称重变送器(RS485/Modbus RTU),或 4-20mA 变送器配采集模块转 Modbus 进中控。
  • 工业变送器 Modbus 读不到数据,先查地址/波特率,并在 RS485 总线末端加 120Ω 终端电阻

小结 · 你掌握了什么

  • 你懂了称重传感器(应变片+惠斯顿电桥)把力转成微弱电压,HX711(24-bit ADC)把这个微弱电压变成控制器能读的数字量。
  • 你知道了接线必须四线齐全,而且颜色定义必须查 datasheet,不能凭颜色猜。
  • 你会做校准(去皮+标定),理解了 scale_factor 的物理含义,知道校准结果要存非易失存储。
  • 你清楚了 HX711 方案的工程局限:长期漂移、无工业接口——正式展厅要走工业称重变送器(RS485/Modbus),不是把 HX711 方案直接搬上展厅。
  • 你拿到了精度/漂移处理建议、选型对比表和故障排查表。

称重识别是展厅"实物互动展品"触发方式里最直觉、最难被绕过的一种。把这条链路从原型做到工程,核心就是在合适的时间换掉 HX711 方案,走工业级采集。

📄 来源 / 自校链接

本文为公开资料整理,非亲测。关键参数与代码请结合实物与下列官方来源验证。

需要展厅软硬件方案或定制开发?