HX711是专门给称重传感器设计的24位ADC芯片,配合悬臂梁式称重传感器使用,几块钱一个模块,精度能到1克。做电子秤、宠物喂食秤、花盆称重监测这类项目都离不开它。普通的Arduino模拟口只有10位精度,读数跳得厉害,HX711直接把模拟信号转成24位数字量,稳定得多。

称重传感器四根线怎么接HX711
悬臂梁式称重传感器一般出四根线:红色E+(激励正)、黑色E-(激励负)、白色A-(信号负)、绿色A+(信号正)。这四根线接到HX711模块的J1排针上,对应E+、E-、A-、A+。不同厂家的传感器线色可能不一样,拿到手先看卖家给的色标,别光靠颜色猜。
HX711模块另一侧引出四个引脚接Arduino:VCC接5V或3.3V都行,GND接地,DT(数据)和SCK(时钟)接任意两个数字引脚,比如DT接D3、SCK接D2。这两根线不是I2C也不是SPI,是HX711自己的同步串行协议,通信很简单,靠时序翻转。
代码怎么写:HX711库一步到位
Arduino IDE里搜HX711库,推荐bogde写的HX711 Arduino Library,装好之后代码很简单。初始化时指定DT和SCK引脚,然后读HX711.get_value()拿到原始AD值。这个原始值是个二十几位的整数,直接看没啥意义,需要校准后才能换算成克。
校准分两步:先不放东西,读一次空载值作为零点;再放一个已知重量的东西(比如一罐330ml的可乐,约355克),读一次满载值。用公式算出scale系数:scale = (满载读数 - 空载读数) / 已知重量。之后每次读数减去空载值再除以scale就是实际重量了。这个scale系数跟传感器量程、HX711增益档有关,换了模块或传感器要重新校准。
增益档位怎么选:128倍还是64倍
HX711支持三档增益:128倍(通道A默认)、64倍(通道A)、32倍(通道B)。家用称重场景用128倍就够了,灵敏度高,能分辨小重量变化。如果你的传感器量程大(比如50kg以上),128倍可能读数不稳,可以降到64倍牺牲一点灵敏度换稳定性。
代码里用HX711.set_gain(128)设置。注意每次set_gain之后要重新读一次空载值,因为增益档变了零点会漂。
做电子秤的那些坑
第一个坑是震动和气流。HX711精度太高了,桌子晃一下、风扇吹一下,读数就跳。做电子秤的时候,传感器底下要垫橡胶垫减震,上面加个亚克力板当防风罩。如果读数还是跳,可以在代码里做10次采样取平均。
第二个坑是温漂。称重传感器是应变片原理,温度变化会引起零点漂移。冬天开机冷机和热机半小时后的读数能差几十克。做精确称重要预热几分钟再校准,或者代码里加温度补偿。
第三个坑是传感器固定方向。悬臂梁式传感器有方向性,固定端和受力端别装反。装反了也能读出数据,但线性度差很多,称重不准。传感器上一般标了箭头指示受力方向,安装时对着看。
HX711加悬臂梁传感器这套方案,在DIY称重领域基本是标配组合了。几块钱的模块、几行代码就能做出克级精度的电子秤。关键是校准要做仔细,物理减震要做到位,这两点搞定了就很稳。










温漂这个坑确实有,我之前冬天做秤,开机就校准,结果用着用着读数越来越大,后来看了datasheet才发现是温漂。现在我都先预热5分钟再校准。
请问校准的时候用已知重量的东西,具体怎么确定那个东西的重量?
HX711确实好用,我做了个猫咪喂食秤,悬臂梁传感器5kg量程,校准之后精度能到2克。不过有个坑:那个bogde的库默认gain是128,我用50kg传感器的时候读数跳得厉害,改成64就好了。