资讯详情

NAU7802高精度电子秤设计:从原理到量产校准的工程实践

📅 2026/10/6 5:39:14 | 华诺云谱 👁 阅读
NAU7802高精度电子秤设计:从原理到量产校准的工程实践
电子秤这东西看起来简单不就是个传感器加个屏幕嘛但真要做到精度稳定、跳数小、长期不漂移里面的门道比大多数人想象的多得多。我前后做过好几款基于应变片式传感器的称重设备从最初用运放加分立ADC搭电路到后来转向集成方案踩过的坑足够写一本小册子。NAU7802 这颗 24 位 ADC 是我目前在小量程高精度称重场景下最常用的方案之一它把 PGA、振荡器、桥路激励和数字滤波都集成进去了外围只需要几个电容和电阻就能跑起来特别适合做 3kg 以内的电子秤、厨房秤、咖啡秤或者小型配料系统。但能跑起来和跑得准之间隔着一条很宽的河。很多人第一次用 NAU7802 的时候接上线、读出来数据、发现数值乱跳或者零点漂移严重就开始怀疑芯片有问题。实际上绝大多数情况下问题出在硬件布局、激励方式、校准流程或者滤波参数上。这篇内容我会从实际项目出发把 NAU7802 从原理到落地的完整链路拆开讲清楚包括应变片桥路的匹配、模拟前端的布局要点、I2C 通信的稳定性处理、校准算法的设计以及最终怎么把这些东西整合成一个能稳定出数的电子秤。不管你是刚接触称重电子的新手还是已经做过几款秤但精度始终差一口气的老手应该都能从里面找到有用的东西。1. 应变片桥路与 NAU7802 的匹配逻辑1.1 为什么 24 位 ADC 不是精度瓶颈很多人一上来就盯着 ADC 的位数看觉得 24 位就是比 16 位强实际上在称重应用里ADC 的分辨率只是整个信号链里的一环。一个典型的应变片式称重传感器满量程输出通常只有 1mV/V 到 3mV/V 之间。假设你用 5V 激励满量程差分输出也就 5mV 到 15mV。而 NAU7802 的 PGA 可以设置 1、2、4、8、16、32、64、128 倍增益在 128 倍增益下15mV 的满量程信号被放大到 1.92V这时候 ADC 的有效位数才能真正被利用起来。但问题在于应变片桥路的输出阻抗、温漂特性、非线性度以及激励源的稳定性都会直接影响最终精度。我见过太多案例ADC 选得很好但传感器本身的一致性差或者激励电压随温度变化导致读数漂移。所以第一步不是选 ADC而是搞清楚你的传感器特性和精度需求之间的匹配关系。传感器满量程输出推荐 PGA 增益有效分辨率约适用场景1mV/V12817-18 bit小量程精密秤2mV/V64-12818-19 bit常规电子秤3mV/V32-6418-19 bit大量程台秤这张表的意思是如果你的传感器输出很小就必须用高增益把信号拉起来否则 ADC 的低几位全是噪声。但增益也不是越高越好增益越高对前端噪声和失调的要求就越苛刻。1.2 桥路激励方式的选择与影响NAU7802 内部集成了一个低噪声的 LDO 稳压器可以给外部桥路提供激励电压典型值是 4.5V 左右取决于 AVDD。这个设计很方便但要注意它的驱动能力有限如果你的传感器桥路阻抗较低比如 350Ω 的传感器激励电流可能达到十几毫安这时候内部 LDO 的负载调整率就会影响激励电压的稳定性。我的做法是对于 350Ω 桥路的传感器优先考虑外部独立激励源比如用一个低温漂的基准电压源加缓冲运放来驱动桥路。NAU7802 的激励输出可以作为参考电压输入REFP/REFN这样 ADC 的参考电压和桥路激励是同源的比例式测量的好处是激励电压的绝对精度和温漂会被抵消掉。注意如果你用内部 LDO 直接激励桥路同时又把内部 LDO 作为参考电压那比例式测量的优势是成立的。但如果你用外部激励源就必须把外部激励分压后接入 REFP/REFN否则测量结果会随激励电压波动。1.3 传感器选型中的隐性参数选传感器的时候除了量程、输出灵敏度、非线性度这些明面上的参数还有几个隐性参数会直接影响你的调试难度。一个是零点漂移也就是空载时输出随温度的变化量另一个是蠕变也就是负载恒定情况下输出随时间的变化。这两个参数在规格书里通常都有但很多人不看。我一般会优先选零点漂移小于 0.5% FS/10°C 的传感器蠕变小于 0.05% FS/30min 的型号。如果传感器本身漂移大后面用软件补偿会非常痛苦因为你很难区分是传感器漂移还是电路漂移。2. 模拟前端布局与抗干扰设计2.1 电源去耦不是随便放几个电容NAU7802 有两个电源引脚AVDD 和 DVDD。AVDD 给模拟部分供电DVDD 给数字部分供电。很多人图省事直接把两个引脚接到同一个 3.3V 电源上然后在每个引脚旁边放一个 0.1uF 电容就完事了。这种做法在低精度场景下勉强能用但如果你想要稳定的 18 位以上有效精度电源处理必须认真对待。我的标准做法是AVDD 用独立的 LDO 供电或者在 AVDD 前面加一级 RC 滤波比如 10Ω 加 10uF 加 0.1uF。DVDD 可以和 MCU 共用电源但同样要加去耦。关键是 AVDD 的电源纹波要控制在 1mV 以内否则它会直接调制到测量结果上。另外NAU7802 的 VBG 引脚内部基准旁路需要接一个 1uF 到 10uF 的电容到地这个电容的位置要尽量靠近芯片引脚走线要短而粗。我见过有人把这个电容放在板子另一头结果噪声大得没法用。2.2 模拟走线的三个原则模拟前端的 PCB 布局我总结下来就是三个原则短、隔离、对称。短是指传感器到 NAU7802 的差分输入走线要尽可能短最好控制在 5cm 以内。如果传感器和板子之间有较长距离建议用屏蔽线并且屏蔽层单点接地。隔离是指模拟走线和数字走线要分开尤其是 I2C 的 SCL 和 SDA 走线不要和模拟输入走线平行走长距离。如果必须交叉尽量垂直交叉。对称是指差分输入的两根走线要等长、等宽、靠近走这样共模干扰才能被有效抑制。NAU7802 的输入是差分输入但如果你走线不对称共模抑制比会大幅下降。2.3 接地策略与噪声来源排查接地这件事说起来简单做起来难。我的经验是模拟地和数字地在芯片下方分开铺铜然后在一点通过磁珠或者 0Ω 电阻连接。这个连接点要靠近芯片的 AGND 引脚。如果你发现读数噪声大可以按以下顺序排查先用示波器看 AVDD 上的纹波如果超过 2mV先解决电源问题。再看传感器激励电压是否稳定如果激励源本身在跳后面全白搭。检查差分输入走线是否靠近了高频信号线比如时钟线或者 PWM 线。最后检查 NAU7802 的配置寄存器确认采样率和滤波参数是否合理。我遇到过一次特别隐蔽的问题板子上有一个 LED 指示灯它的限流电阻走线刚好从模拟输入旁边经过LED 闪烁的时候读数就会跳。后来把 LED 走线改到板子另一层就好了。这种问题用万用表根本查不出来必须用示波器看波形。3. NAU7802 寄存器配置与采样率取舍3.1 上电初始化流程NAU7802 的上电初始化有一套固定流程顺序错了可能读不到正确数据。我的标准初始化步骤如下上电后等待至少 10ms让内部 LDO 稳定。复位芯片写 R0x00 的 RR 位为 1然后等待复位完成。配置 PGA 增益R0x01 的 GAINS 位根据传感器输出选择合适增益。配置采样率R0x02 的 CRS 位通常选 10SPS 或 20SPS。使能内部 LDO 给桥路激励R0x01 的 VLDO 位。开启转换R0x00 的 PUD 位为 1。等待 DRDY 引脚变低然后读取 24 位数据。// NAU7802 初始化示例伪代码 void nau7802_init(void) { i2c_write(NAU7802_ADDR, 0x00, 0x00); // 复位 delay_ms(10); i2c_write(NAU7802_ADDR, 0x01, 0x30); // PGA128, LDO使能 i2c_write(NAU7802_ADDR, 0x02, 0x10); // 10SPS i2c_write(NAU7802_ADDR, 0x00, 0x06); // 开启转换 }这段代码看起来简单但每一步都有讲究。比如复位后必须等待足够时间否则后续配置可能不生效。PGA 增益的选择要结合传感器输出增益太高会导致饱和太低则浪费分辨率。3.2 采样率与噪声的权衡NAU7802 支持 10SPS、20SPS、40SPS、80SPS 和 320SPS 几种采样率。采样率越低内部数字滤波器的抑制效果越好噪声越小。10SPS 模式下50Hz 和 60Hz 工频干扰会被有效抑制适合大多数称重场景。但低采样率意味着响应速度慢。如果你做的是动态称重比如传送带上快速过磅10SPS 就不够用了得用 80SPS 甚至 320SPS。这时候噪声会明显增大需要配合软件滤波来平滑数据。我的建议是静态称重优先用 10SPS动态称重根据实际需求选 80SPS 或 320SPS然后在 MCU 端做滑动平均或者中值滤波。滑动平均的窗口大小要根据响应速度要求来定一般 4 到 16 个点比较合适。3.3 寄存器读写中的常见坑NAU7802 的 I2C 接口有一个特点读写寄存器时需要先写寄存器地址然后读或写数据。这个过程中如果 I2C 总线受到干扰可能会出现数据错位。我的做法是在每次读写后都检查 ACK 信号如果失败就重试重试三次还失败就复位 I2C 总线。另外NAU7802 的 DRDY 引脚是开漏输出需要接上拉电阻。如果你用轮询方式读数据可以不用 DRDY直接读 R0x00 的 CR 位来判断转换是否完成。但轮询会占用 MCU 资源而且可能读到重复数据。我一般还是用 DRDY 中断方式响应更及时。还有一个坑是NAU7802 的转换数据是 24 位补码格式读取后需要做符号扩展。如果你直接当成无符号数处理负值会变成很大的正数。这个错误在调试时很容易被发现但如果你用的是现成的库最好确认一下库里面有没有正确处理符号。4. 校准算法从两点校准到多点拟合4.1 为什么两点校准不够用大多数电子秤的校准流程就是两点校准空载时记录零点放上标准砝码后记录满量程点然后计算斜率和截距。这个方法在理想线性传感器上没问题但实际传感器的非线性度通常在 0.02% 到 0.05% FS 之间对于高精度秤来说这个非线性误差已经不可忽略了。我做过一个 3kg 量程的秤用两点校准后在 500g 和 2500g 两个点的误差分别是 0.3g 和 -0.5g。虽然看起来不大但对于要求 0.1g 分辨率的秤来说这个误差已经超标了。后来改用五点校准加分段线性拟合误差降到了 ±0.1g 以内。4.2 多点校准的实操步骤多点校准的步骤比两点校准复杂一些但效果提升明显。我的做法是空载记录零点 ADC 值连续采样 100 次取平均。依次放上 20%、40%、60%、80%、100% 满量程的标准砝码每个点稳定后采样 100 次取平均。用最小二乘法拟合一条直线或者用分段线性插值。把拟合参数存入 MCU 的 Flash 中每次上电后加载。import numpy as np # 校准数据砝码重量和对应的ADC读数 weights np.array([0, 500, 1000, 1500, 2000, 2500, 3000]) # 单位g adc_values np.array([1000, 850000, 1700000, 2550000, 3400000, 4250000, 5100000]) # 最小二乘拟合 coeffs np.polyfit(adc_values, weights, 1) slope, intercept coeffs[0], coeffs[1] def adc_to_weight(adc): return slope * adc intercept这段代码演示了最小二乘拟合的基本思路。实际使用中我建议把校准数据也存下来如果发现拟合残差太大可以改用分段线性插值。分段线性插值的好处是不需要假设传感器是线性的每个区间内单独计算斜率。4.3 温漂补偿的实用方案温漂是电子秤精度的大敌。应变片传感器本身有温漂NAU7802 的基准电压也有温漂这两个漂移叠加在一起可能导致读数在温度变化 10°C 时漂移几十克。我的补偿方案是在板子上靠近传感器的地方放一个 NTC 热敏电阻或者数字温度传感器实时监测环境温度。然后在不同温度下做校准建立温度-零点漂移曲线和温度-灵敏度漂移曲线。实际运行时根据当前温度查表补偿。这个方案需要额外的校准工作量但对于精度要求高的场景是值得的。如果不想做全温度范围的校准至少可以在常温下校准后用经验公式做一阶补偿。比如零点漂移通常和温度呈线性关系可以用两个温度点的数据算出漂移系数。提示温漂补偿的前提是温度传感器要能真实反映传感器附近的温度不要把温度传感器放在发热元件旁边否则补偿会适得其反。5. 软件滤波与数据稳定性的实战处理5.1 滑动平均与中值滤波的组合原始 ADC 数据即使经过硬件优化仍然会有一定的噪声。我通常会用滑动平均加中值滤波的组合来平滑数据。具体做法是先取最近 N 个采样值去掉最大值和最小值然后对剩下的值求平均。这样既能抑制随机噪声又能剔除突发的尖峰干扰。N 的选择要根据采样率和响应速度来定。10SPS 采样率下N8 意味着 0.8 秒的响应延迟对于静态称重是可以接受的。如果你需要更快的响应可以减小 N但噪声会相应增大。5.2 动态阈值与稳定判定电子秤的一个基本功能是判断读数是否稳定。我的做法是连续比较最近几次滤波后的值如果变化量小于某个阈值比如 0.5 个最小分度值就认为读数稳定锁定显示。这个阈值不能设得太小否则永远等不到稳定也不能太大否则读数还没稳定就锁定了。实际调试时我会先把阈值设大一点观察稳定判定的效果然后逐步收紧。对于 0.1g 分辨率的秤阈值设在 0.2g 到 0.3g 之间比较合适。5.3 开机零点跟踪与自动去皮开机零点跟踪是电子秤的另一个实用功能。每次开机时如果空载读数在零点附近的一个小范围内就自动把当前值设为零点。这个范围不能太大否则会把小重量误认为零点也不能太小否则传感器稍微漂移就无法归零。自动去皮则是用户放上容器后按一下去皮键把当前重量设为零点。这个功能实现简单但要注意去皮后如果容器重量超过量程要有提示。6. 从样机到产品的工程化细节6.1 结构设计对精度的影响很多人忽略了结构设计对电子秤精度的影响。传感器的安装方式、秤盘的刚度、底座的平整度都会影响测量结果。我见过一个案例秤盘用了一块很薄的铝板放上砝码后秤盘本身变形导致传感器受力不均匀读数重复性很差。我的经验是秤盘要有足够的刚度最好用 2mm 以上的铝板或者不锈钢板。传感器的一端固定在底座上另一端悬空秤盘通过一个传力柱压在悬空端上。传力柱的位置要正对传感器的受力中心偏移会导致附加力矩影响线性度。6.2 长期稳定性测试与老化处理样机做出来后不要急着批量生产先做至少 72 小时的老化测试。老化测试的内容包括空载零点漂移、满载蠕变、反复加载卸载的重复性。我一般会用一个简单的数据记录脚本每隔 10 分钟记录一次读数和温度然后画成曲线看趋势。如果发现零点在老化过程中持续漂移可能是传感器或者电路板存在应力释放。这时候可以把传感器和电路板在常温下放置 24 小时后再校准或者做一次温度循环比如 0°C 到 40°C 各保持 2 小时来加速应力释放。6.3 量产校准的效率优化小批量生产时手动校准还能应付。但到了批量生产每个秤都做多点校准就太慢了。我的做法是在产线上只做两点校准零点和满量程然后抽检 5% 做多点校准用抽检数据来修正整体的拟合参数。这样既能保证精度又能提高效率。另外校准工装也很重要。我设计过一个简单的校准工装用气缸推动标准砝码上下料配合自动校准脚本一个秤的校准时间可以压缩到 10 秒以内。7. 常见故障排查与调试经验7.1 读数跳变严重时的排查链路读数跳变是最常见的问题排查时我一般按以下顺序进行检查电源纹波用示波器看 AVDD 和 DVDD 上的噪声。检查传感器激励电压是否稳定如果激励源在跳读数必然跳。检查差分输入走线是否受到干扰可以尝试在输入端加 RC 滤波。检查 NAU7802 的配置确认采样率和 PGA 增益是否合适。检查 MCU 端的 I2C 时序确认读写是否稳定。有一次我遇到读数每隔几秒跳一次的问题排查了很久才发现是 MCU 的看门狗定时器中断影响了 I2C 时序。后来把 I2C 读写放在临界区里问题就解决了。7.2 零点漂移的根因分析零点漂移可能来自传感器、电路或者环境。我的排查方法是先断开传感器用短接线短接 NAU7802 的输入端观察读数是否漂移。如果漂移说明是电路问题如果不漂移说明是传感器或者机械结构问题。电路问题通常是基准电压漂移或者 PGA 失调漂移。NAU7802 的内部基准温漂典型值是 10ppm/°C在 0°C 到 40°C 范围内可能漂移 400ppm对于 24 位 ADC 来说这个漂移是可见的。如果要求更高可以考虑用外部低温漂基准。7.3 I2C 通信失败的几种可能I2C 通信失败通常有几种表现读不到数据、读到的数据全是 0xFF 或者 0x00、数据偶尔错位。我的排查经验是先用示波器看 SCL 和 SDA 的波形确认时序是否正确。检查上拉电阻是否合适NAU7802 的 I2C 速率支持 400kHz上拉电阻一般用 4.7kΩ。检查地址是否正确NAU7802 的 7 位地址是 0x2A写地址是 0x54读地址是 0x55。如果总线上有其他设备确认地址没有冲突。我遇到过一种情况I2C 总线上挂了一个 OLED 屏幕屏幕刷新的时候会拉低 SDA导致 NAU7802 通信失败。后来把两个设备分到不同的 I2C 总线上就好了。7.4 温度变化导致读数漂移的应对温度变化导致的漂移前面提到了补偿方案。但如果你不想做复杂的温度补偿至少可以做到以下几点来减小温漂影响选择低温漂的传感器和基准源。在结构设计上让传感器远离发热元件。在软件上做简单的零点跟踪比如每隔一段时间检测空载状态并自动归零。这些措施不能完全消除温漂但可以把漂移控制在可接受的范围内。8. 精度验证与性能评估方法8.1 用标准砝码做重复性测试重复性测试是评估电子秤性能的基本方法。具体做法是用同一个标准砝码反复加载和卸载 10 次记录每次加载后的读数计算最大值和最小值的差。这个差值就是重复性误差。对于 0.1g 分辨率的秤重复性误差应该控制在 0.2g 以内。如果超过这个值说明系统噪声或者机械结构有问题。8.2 线性度测试与误差曲线绘制线性度测试需要多个标准砝码从空载到满量程均匀取点。每个点稳定后记录读数然后计算每个点的误差读数减去砝码重量画成误差曲线。理想情况下误差曲线应该是一条接近零的水平线实际会有一定的弯曲。如果误差曲线的弯曲程度超过规格要求可以考虑用多点校准来修正。如果修正后仍然不达标可能是传感器本身非线性度太大需要更换传感器。8.3 长期稳定性观察的实操建议长期稳定性观察需要时间和耐心。我的做法是把秤放在一个温度相对稳定的环境中每隔 1 小时记录一次空载读数和满载读数持续 24 小时以上。然后分析读数的变化趋势看是否存在单调漂移或者周期性波动。如果发现周期性波动可能是环境温度变化或者电源波动引起的。如果发现单调漂移可能是传感器或者电路存在老化效应。这些信息对于改进设计非常有价值。9. 关键参数速查与选型参考9.1 NAU7802 核心参数一览参数典型值备注分辨率24 位有效位数取决于增益和采样率PGA 增益1-128步进为 2 的幂次采样率10-320SPS低采样率噪声更小电源电压2.7-5.5VAVDD 和 DVDD 可独立供电内部 LDO4.5V可给桥路激励I2C 速率最高 400kHz标准 I2C 接口基准温漂10ppm/°C内部基准这张表可以作为选型和调试时的快速参考。需要注意的是有效位数和采样率、增益都有关系不是固定值。9.2 传感器与 ADC 的匹配建议选传感器的时候我一般会遵循以下原则传感器输出灵敏度越高越好这样可以降低对 PGA 增益的要求。传感器桥路阻抗要和激励源的驱动能力匹配350Ω 桥路需要更大的激励电流。传感器的非线性度和温漂要尽可能小这两项直接决定最终精度。传感器的量程要留 20% 的余量避免过载损坏。9.3 常用外围元件选型清单元件推荐型号/参数用途去耦电容0.1uF X7R电源去耦基准旁路电容1uF X7RVBG 引脚I2C 上拉电阻4.7kΩSCL/SDA激励滤波电容10uF桥路激励输入滤波电阻100Ω差分输入输入滤波电容0.1uF差分输入这些元件看起来不起眼但选型和布局不当会直接影响性能。比如输入滤波电容要用低漏电流的型号否则会影响测量精度。10. 从调试台到实际场景的落地思考10.1 不同应用场景的精度需求差异电子秤的应用场景很多精度需求差异很大。厨房秤一般要求 1g 分辨率量程 3kg 到 5kg咖啡秤要求 0.1g 分辨率量程 2kg 左右实验室天平要求 0.001g 分辨率量程几百克。不同场景对 ADC、传感器和结构的要求完全不同。NAU7802 适合的是中高精度场景也就是 0.1g 到 1g 分辨率的电子秤。如果你要做 0.001g 分辨率的分析天平NAU7802 可能就不够用了需要考虑更高端的 ADC 方案。10.2 成本与性能的平衡策略做产品不能只看性能还要看成本。NAU7802 的价格在同类芯片中属于中等偏上但它的集成度高外围元件少整体方案成本其实有优势。如果为了省几毛钱用分立方案调试成本和不良率可能会吃掉省下来的钱。我的建议是小批量或者对精度要求高的场景直接用 NAU7802 这样的集成方案大批量且精度要求不高的场景可以考虑更便宜的 16 位或者 18 位方案。10.3 后续升级与扩展方向NAU7802 的方案做完之后如果想进一步提升精度可以考虑几个方向一是换用更低噪声的外部基准源二是增加温度补偿通道三是优化机械结构减少应力干扰。如果想增加功能可以加蓝牙或者 WiFi 模块把数据传到手机或者云端。但不管怎么升级核心思路都是一样的先把模拟前端做干净再把校准做准确最后才是软件功能的堆叠。顺序反了后面会越做越乱。我在实际项目中最深的体会是电子秤这个东西硬件是基础校准是灵魂软件滤波是保障。三者缺一不可而且必须按顺序做好。很多人一上来就研究滤波算法结果硬件噪声太大怎么滤都滤不干净。先把电源和布局做扎实再认真做校准最后用简单的滤波就能得到很稳定的读数。这个顺序我踩过很多次坑才真正理解。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑