HX711 称重传感器电子秤:Arduino 接线与校准教程

Illustration of a DIY weighing scale made from two round wooden plates, a silver bar load cell, a green HX711 module and an Arduino Uno weighing an apple

要做一台电子秤,你需要四样零件:Arduino Uno、一条 5kg 条形称重传感器(load cell)、一块 HX711 放大模块,以及两块安装板。称重传感器靠弯曲来测重量——一端固定在底板,另一端固定在秤盘,HX711 再把那一点点微小的形变换算成克数,显示在你的 Arduino 上。

条形称重传感器到底是怎么测出重量的?

5kg 条形称重传感器是一整条实心铝条,白色保护贴纸下面藏着应变片(strain gauge)。固定住一端、在另一端挂上重物,铝条会发生头发丝级别的微小弯曲——应变片的电阻随之变化,但变化量小到 Arduino 引脚根本没法直接读取。这就轮到放大器出场了。

HX711 模块是一块专为电子秤设计的 24 位 ADC:通道 A 以 128 或 64 的增益放大称重传感器的信号;每秒输出 10 或 80 次采样,取决于模块上的 RATE 焊盘(这类板子出厂设为 10——做秤绰绰有余);供电范围 2.6–5.5V,所以 Uno 的 5V 引脚就能带动整套系统。

称重传感器要怎么安装,读数才会准?

称重传感器安装板套件之所以存在,是因为大多数电子秤项目翻车的地方是安装——不是接线,也不是代码。条形称重传感器只有在能自由弯曲时才能工作。这意味着一个特定的“三明治”结构:一端固定在底板另一端固定在秤盘,再用套件里的小垫片(spacer)把传感器条与两块板隔开,垫片留出弯曲间隙——让它上下各有一条看得见的空隙。

三条规则决定这台秤的成败:

  • 一块板只锁一端。底板固定一端,秤盘挂在相对的另一端。两端都刚性锁死,传感器条就无法弯曲——不管放什么上去,读数都几乎不动。
  • 保住弯曲间隙。把垫片装在传感器条和每块板之间。传感器条平贴在板面上会“触底”,读数就会卡住或者偏低。
  • 顺着受力方向装。如果传感器条上印着箭头,箭头指向负载施压的方向(向下,从秤盘那一侧)。压错面或压错端,会得到错误甚至负数的读数。

传感器条两端各有两个螺纹孔——用套件配的沉头螺丝锁进最靠近每端的那一对孔,板与传感器条之间夹上垫片。

条形称重传感器安装在两块圆板之间的侧视分解示意图,垫片撑出弯曲间隙
三明治结构:底板固定一端,秤盘挂在另一端,垫片把弯曲间隙撑开。
称重传感器错误与正确安装方式的对比图:一条被两端刚性夹死的传感器条,和一条用垫片正确隔开、可以弯曲的传感器条
左:两端锁死、没有间隙——传感器条弯不了。右:一块板只锁一端、加上垫片——传感器条能弯曲,才能测量。

称重传感器怎么接 HX711 和 Arduino Uno?

绿色的 XFW-HX711 板一边是称重传感器的接线端子,另一边是接 Arduino 的引脚。这类条形传感器的常见约定是红 = 激励+、黑 = 激励−、白 = 信号−、绿 = 信号+——但线色在不同批次之间会有出入,所以下面的表格只当起点,不当铁律。B− 和 B+ 留空——这个项目只用通道 A(通道 B 的增益固定为较低的 32)。

称重传感器接线 HX711 端子 含义
红色 E+ 激励 +(电桥供电)
黑色 E− 激励 −
白色 A− 信号 −(通道 A)
绿色 A+ 信号 +(通道 A)
HX711 引脚 Arduino Uno 引脚 备注
VCC 5V 支持 2.6–5.5V;用 Uno 的 5V 没问题。
GND GND 共地。
DT (DOUT) D2 数据输出;任何数字引脚都行。
SCK D3 时钟;任何数字引脚都行。

两点实用提醒。第一,HX711AG 出厂时排针是散装在袋子里的——先把排针焊好(或者把线直接焊上)再去相信任何读数,因为排针松动是读数乱跳的头号原因;具体做法看我们的排针焊接教程。第二,如果你的线色对不上,就用万用表把线对找出来:每一对真正的组合(激励对、信号对)测出来大约是完整的电桥电阻,而任何混搭组合大约只有它的四分之三。两对真组合当中,读数略高的那对是激励对(E+/E−),略低的那对是信号对(A+/A−)——这一系列传感器条的输入端大约是 1115Ω,输出端约 1000Ω——电阻怎么量,我们的万用表使用教程里有示范。想做更精细的测量,还有更高精度的 HX711 版本可选。

接线图:四根称重传感器线接入 HX711 模块,另外四根线从 HX711 接到 Arduino Uno
传感器接 HX711 的一侧(E+、E−、A−、A+),HX711 接 Uno 的另一侧(VCC、GND、DT 接 D2、SCK 接 D3)。

怎么用已知重量校准这台秤?

HX711 输出的是原始计数值,不是克数——所谓校准,就是找出把两者互相换算的那个数字。先安装库:在 Arduino IDE 里打开 Sketch → Include Library → Manage Libraries,搜索 Bogdan Necula 编写的 HX711 Arduino Library。然后上传这个校准程序:

#include "HX711.h"

const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;

HX711 scale;

void setup() {
  Serial.begin(57600);
  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
  Serial.println("Remove all weight. Taring in 3 seconds...");
  delay(3000);
  scale.tare();  // 把当前(空载)读数设为零点
  Serial.println("Done. Now place your known weight on the platform.");
}

void loop() {
  // 取 10 次读数的平均值,去皮偏移已扣除
  long raw = scale.get_value(10);
  Serial.print("Raw value: ");
  Serial.println(raw);
  delay(1000);
}

秤盘上什么都不放,程序会自己去皮(tare,归零)。接下来放上一个你真正知道重量的东西:官方规格里标明重量的手机很好用,或者一件未开封的包装食品(包装上印的是净重,所以整包会比那个数字略重)。数学只有一行:

校准系数 CALIBRATION_FACTOR = 原始读数 ÷ 已知重量(克)。如果放上 200g 重物时串口监视器显示大约 84,000,那你的系数就在 420 左右。原始读数是负数,说明传感器方向或接线反了——把负号一并留在系数里,最终的秤照样显示正数。

校准时把手机放在 DIY 称重传感器电子秤上当参考重量的插图,旁边放着一台笔记本电脑
用你真正知道重量的东西来校准——规格表标明重量的手机,胜过厨房里的猜测。

电子秤的完整 Arduino 代码是什么?

下面这份最终程序是校准程序的“大哥”:把你的系数填进 CALIBRATION_FACTOR,上传,串口监视器就成了秤的显示屏。以后想加一块正经的屏幕?我们 Arduino 数字时钟教程里的 LCD1602 I2C 接线可以原封不动搬进这个项目。

#include "HX711.h"

const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;

// 换成你自己校准得到的那个数字
const float CALIBRATION_FACTOR = 420.0;

HX711 scale;

void setup() {
  Serial.begin(57600);
  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
  scale.set_scale(CALIBRATION_FACTOR);
  Serial.println("Remove all weight. Taring in 3 seconds...");
  delay(3000);
  scale.tare();
  Serial.println("Scale ready.");
}

void loop() {
  if (scale.is_ready()) {
    // 取 10 次读数的平均值,换算成克
    float grams = scale.get_units(10);
    Serial.print("Weight: ");
    Serial.print(grams, 1);
    Serial.println(" g");
  } else {
    Serial.println("HX711 not found - check DT/SCK wiring");
  }
  delay(500);
}

最后一两克有点飘是正常的——业余级的条形传感器会随温度轻微漂移,长时间压着重物也会有轻微蠕变。每次开始称重前先去皮一次,数字最稳定。读数疯狂乱跳几乎从来不是 HX711 芯片的错:多半是排针没焊、一对线接反,或者上面那一节讲的安装问题。

我们聊天里最常见的请求之一就是 “load cell + HX711 install tutorial video please”——下面这支视频把四线接法、安装和校准从头到尾完整演示了一遍(它的代码部分用的是另一个 HX711 库——请以本页的程序为准):

我们在真实客户身上最常见到的错误

客服聊天里几乎每一个称重传感器加 HX711 的安装问题,都逃不出下面这几种。

  1. 把传感器条两端都锁死。秤能开机、能去皮,然后放上重物却几乎没反应。传感器条必须能自由弯曲——一端固定在底板,另一端固定在秤盘,中间留出弯曲间隙。
  2. 省掉垫片。传感器条平贴在板上直接“触底”,远没到 5kg 读数就卡死了。安装板套件里的垫片不是包装填充物——它们本身就是机构的一部分。
  3. 盲目相信线色。白绿信号对接反,读数就是负数或镜像。把 A+ 和 A− 上的那对线对调,或者保留负的校准系数。
  4. 排针不焊就用 HX711。松松插在面包板孔里的引脚,制造出来的正是那种大家回头去怪芯片的乱跳读数。
  5. 拿猜出来的重量做校准。结果秤读得非常稳定——稳定地错。用规格标明重量的手机,或者别的核实过的参考重量。

常见问题

为什么我的读数是负的?

要么是信号对接反了(白线和绿线在 A+ 与 A− 上互换),要么是传感器装反了,负载把它往箭头相反的方向压弯。对调两根信号线、翻转安装方向,或者干脆用负的校准系数——三种做法得到的结果一样正确。

为什么读数过几分钟就漂移?

业余级条形称重传感器会随温度变化轻微漂移,长时间承重也会有轻微蠕变——在这个价位这是正常现象,不是故障。每次称重前先去皮;需要可重复的数据时,别让重物在秤盘上一放就是几个小时。

这个称重传感器能称超过 5kg 吗?

不能——超过额定值后,传感器条可能永久变形,之后就再也读不准了。预计要称更重的东西,就换同款传感器条的 10kg 或 20kg 版本(同一个商品页面有售),并在最大值之下留出安全余量。

HX711 的排针真的必须焊吗?

必须。排针出厂时散装在袋子里、没有焊接,松松插在孔里的引脚会时通时断,表现出来就是读数乱跳或卡死。花 10 分钟拿电烙铁焊好,一劳永逸。

能不能不看串口监视器,改接一块 LCD 显示屏?

可以——带 I2C 背包的 LCD1602 只需要四根线(5V、GND、A4、A5),并且不占用 HX711 用的 D2 和 D3。先让秤在串口监视器上正常工作,再把打印语句搬到 LCD 上。

最后更新:2026年8月。有问题?WhatsApp 联系我们

Leave a Reply

Your email address will not be published. Required fields are marked *