电子秤设计核心链路:从应变片到ADC的模拟前端与标定
简介这份资源面向电子信息、自动化及相关专业的课程设计学习者提供一套基于电阻应变式传感器的2kg手提电子秤完整设计方案帮助读者理解从重量信号采集到数字显示的整条测量链路。压缩包内共1个doc文档约91KB以文字与电路图形式系统梳理了测量电桥、差动放大、A/D转换与LED显示四大模块并给出系统原理图与单元电路推导过程。内容涵盖电阻应变片的工作原理与桥式测量电路、LM358差动放大器的选型与放大倍数计算、ICL7107双积分A/D转换及显示电路连接方式还提及Tedea-Huntleigh拉式称重传感器的选用思路。目前已有260人学习适合需要完成电子秤课程设计、撰写设计报告或搭建传感器测量电路原型的读者参考可据此快速把握方案框架与关键器件参数。1. 从一张应变片到稳定读数电子秤设计的核心链路很多人第一次做电子秤会下意识觉得难点在代码——ADC 读一下、换算成克、显示出来就完事。真正上手才发现读数跳得厉害、空载不为零、放上砝码线性度差问题几乎全出在模拟前端。电阻应变式传感器输出的满量程信号通常只有几毫伏到十几毫伏叠在几十毫伏的零点偏置上直接进 ADC 基本没法用。所以这套设计的核心链路是应变片把重量转成差分电压差动放大电路把差分信号放大到 ADC 能吃的量级A/D 转换把它变成数字量最后用软件做去皮、标定和滤波。适合电子、自动化专业做课程设计或毕设的人也适合想把模拟前端这块补扎实的嵌入式从业者。下面按信号从物理量到数字量的顺序把每一级的选型和参数讲清楚。2. 电阻应变式传感器与惠斯通电桥的信号特性2.1 应变片工作原理与电桥输出公式金属箔式应变片贴在弹性体上受力形变时电阻发生变化关系是 ΔR/R K·εK 是应变片灵敏系数常见箔式片在 2.0 左右ε 是应变。单片的电阻变化量极小而且温漂直接混在信号里所以工程上不会用单片而是把四片接成惠斯通电桥。全桥接法下四臂同时受力输出为Vout Vin · K · ε半桥接法输出减半单臂接法还要再减半而且单臂的非线性误差最大。这就是为什么电子秤几乎都用全桥——灵敏度最高、温漂互相抵消、非线性最小。以常见的 1kg 量程传感器为例额定输出标称 1mV/V供桥电压 5V满量程差分输出就是 5mV。这个数字要记住后面放大倍数全靠它算。2.2 供桥电压与传感器选型参数表供桥电压不是越高越好。电压高输出信号大但应变片自热加剧零点漂移会变大。常见做法是 5V 或 3.3V 供电配合低噪声稳压。选传感器时重点看这几个参数参数典型值说明额定输出1mV/V满量程差分输出决定放大倍数非线性±0.05%FS影响标定曲线拟合零点输出±0.1mV/V空载偏置需软件去皮输入阻抗1000Ω影响供桥驱动能力蠕变±0.05%FS/30min长时间加载的漂移选型时如果量程是 5kg就别买 50kg 的传感器去测 500g因为满量程输出被压缩信噪比会明显变差。常见做法是让实际工作重量落在传感器量程的 30% 到 70% 之间。2.3 用万用表先验证电桥是否正常焊好传感器引线后别急着上电放大先用万用表确认电桥本身没问题。四线制传感器一般是红黑为激励、绿白为信号# 断电状态下测输入输出阻抗 # 红黑之间输入阻抗应为标称值如 1000Ω 左右 # 绿白之间输出阻抗通常也是 1000Ω 左右 # 红黑与绿白之间不应导通否则内部短路上电后用毫伏档测绿白差分电压空载应在零点输出范围内用手轻压弹性体读数应有稳定变化。这一步能排掉大部分“焊反了”“线断了”的低级问题。如果空载差分电压就有几十毫伏先检查供桥电压是否正常、应变片是否已经损坏。3. 基于 LM358 的差动放大电路设计与参数计算3.1 为什么用差动放大而不是单端放大传感器输出是差分信号两根信号线上都叠着共模电压大约是供桥电压的一半即 2.5V。如果用单端放大共模电压会被一起放大运放直接饱和。差动放大电路只放大两输入之差共模被抑制这是它存在的根本理由。经典三运放仪表放大器共模抑制比最高但成本高对电子秤这种精度要求用 LM358 搭两级差动放大就够这也是热搜里 LM358 反复出现的原因——便宜、双运放、单电源能工作。3.2 单级差动放大倍数计算与电阻取值差动放大电路的增益公式在 R1R3、R2R4 的匹配条件下为Gain R2 / R1假设满量程差分输出 5mV希望放大到 1V 左右给 ADC需要增益 200 倍。单级 200 倍不现实因为电阻匹配误差会被同样放大共模抑制会崩掉。常见做法是分两级每级 14 倍左右或者第一级 20 倍、第二级 10 倍。下面是一级差动放大的取值示例R1 R3 1kΩ 反相端与同相端输入电阻 R2 R4 20kΩ 反馈电阻 Gain 20k / 1k 20 倍电阻必须用 1% 精度金属膜电阻四只电阻的匹配度直接决定共模抑制比。如果 R2/R1 和 R4/R3 不相等共模电压就会漏到输出表现为空载读数随供桥电压波动。3.3 LM358 单电源供电的偏置与电压跟随器LM358 不是轨到轨运放输出最高只能到 Vcc-1.5V 左右输入共模范围也不含负轨。单电源供电时必须把信号抬到中间电位否则负半周被削掉。常见做法是用两只等值电阻分压出 Vcc/2再用一个电压跟随器做低阻基准Vcc 5V R5 R6 10kΩ 分压得到 2.5V LM358 另一半接成电压跟随器输出 2.5V 基准电压跟随器的作用是把高阻分压点变成低阻输出避免被后级差动电路的输入电阻拉偏。这个 2.5V 基准接到差动放大电路同相端的偏置电阻上让输出静态工作点落在 2.5V 附近这样正负方向的重量变化都有摆幅空间。热搜里的“LM358 电压跟随器”在这个位置就是干这个的。3.4 两级级联的完整参数与实测调整两级级联时第一级增益不宜过高否则第二级输入容易饱和。推荐第一级 20 倍、第二级 10 倍总增益 200 倍。级间可以直接耦合因为第一级输出已经抬到 2.5V 附近。调试时按这个顺序来空载上电测第一级输出应在 2.5V 附近偏离超过 0.2V 就检查偏置电阻。放上已知砝码测第二级输出用实际输出除以理论输出反推实际增益。如果增益偏低检查反馈电阻是否焊错如果输出饱和到 3.5V 以上说明增益过大或偏置不对。注意LM358 的压摆率只有 0.3V/μs带宽 1MHz放大 200 倍后带宽只剩 5kHz。电子秤信号变化慢这个带宽完全够但别指望它做高速采集。4. A/D 转换选型与电子秤采样程序实现4.1 分辨率估算多少位 ADC 才够先算需要多少分辨率。1kg 量程、希望分辨 1g就是 1/1000约 10 位。但这是理想情况实际要考虑噪声和标定余量通常留 4 倍余量也就是需要 12 位以上有效位。常见选择是 HX711 这类专用 24 位称重 ADC内置 PGA直接接电桥省掉外部放大。如果用通用 MCU 内置 12 位 ADC配合前面 200 倍放大理论分辨够但 MCU 的 ADC 噪声和参考电压稳定性会成为瓶颈。课程设计里两种都常见追求简单用 HX711追求把模拟链路讲清楚就用 LM358 加 MCU 内置 ADC。4.2 采样、去皮与滑动平均滤波代码不管用哪种 ADC软件部分都要做三件事去皮、标定、滤波。下面是一段通用的采样处理逻辑class Scale: def __init__(self): self.zero_offset 0 # 空载零点 self.scale_factor 1.0 # 每克对应的 ADC 码值 self.buffer [] def tare(self, raw): # 去皮记录当前空载读数作为零点 self.zero_offset raw def calibrate(self, raw, known_weight_g): # 标定用已知砝码反推比例系数 self.scale_factor (raw - self.zero_offset) / known_weight_g def read(self, raw): # 滑动平均滤波窗口 8 self.buffer.append(raw) if len(self.buffer) 8: self.buffer.pop(0) avg sum(self.buffer) / len(self.buffer) return (avg - self.zero_offset) / self.scale_factor逻辑说明tare在空载时调用一次把零点存下来calibrate放上已知砝码后调用算出每克对应多少 ADC 码值read每次采样先做 8 点滑动平均再换算。参数说明窗口大小 8 是折中太小滤波效果差太大响应变慢标定砝码建议选量程的 50% 到 80%比如 1kg 量程用 500g 砝码这样比例系数误差最小。4.3 采样时序与参考电压的稳定性如果用 MCU 内置 ADC参考电压的稳定性直接决定读数稳定性。常见做法是用外部基准芯片或者用 MCU 的 VDDA 但加 LC 滤波。采样时序上电子秤不需要高速10Hz 到 80Hz 足够采样率太高反而把工频干扰采进来。可以在代码里做 50Hz 陷波或者干脆把采样率设成 50Hz 的整数倍再平均让工频干扰在平均中抵消。这一步是很多课程设计忽略的地方读数跳往往不是放大不够而是参考电压在抖。5. 标定、线性度验证与常见故障排查5.1 两点标定法与线性度检查标定至少用两个点空载和满量程附近。更严谨的做法是取 5 个点做最小二乘拟合看非线性误差。操作步骤空载调用tare记录零点。放 200g 砝码记录读数与 200g 比较。依次放 400g、600g、800g、1000g记录每个点读数。用读数对重量做线性拟合看残差是否在 ±2g 以内。如果中间点偏差大、两端准通常是放大电路非线性如果整体偏移是标定系数问题如果重复性差是机械结构或传感器安装问题。5.2 读数跳动的四类原因与定位方法现象可能原因定位方法空载跳动大参考电压不稳示波器看基准纹波加载后漂移应变片自热降低供桥电压读数随温度变电桥温漂检查是否全桥接法数值阶跃ADC 丢码检查采样时序定位时先用示波器看放大输出如果模拟输出本身就在跳问题在前端如果模拟输出稳、数字读数跳问题在 ADC 或参考。这个二分法能省掉大量瞎猜时间。5.3 用已知砝码做重复性测试的脚本重复性比绝对精度更重要。下面这段逻辑用来做 10 次加载卸载测试def repeatability_test(scale, adc, weight_g, times10): results [] for i in range(times): input(放上砝码后回车) raw adc.read() results.append(scale.read(raw)) input(取下砝码后回车) avg sum(results) / len(results) spread max(results) - min(results) print(f平均 {avg:.1f}g, 极差 {spread:.1f}g) return spread参数说明times取 10 次spread是极差反映重复性。如果极差超过 3g说明机械安装或滤波需要改进。这个测试比单次标定更能暴露问题。5.4 差动放大电路的共模抑制实测技巧想验证差动放大的共模抑制可以故意改变供桥电压看输出变化。理想情况下供桥电压变化 0.1V输出应该几乎不变。如果输出跟着变说明电阻匹配不好。实测时用可调电源给电桥供电从 4.9V 调到 5.1V记录输出变化量。变化量除以供桥变化量再除以增益就是等效共模增益。这个值越小越好常见做法是四只电阻用同一批次、同阻值的金属膜电阻匹配度能到 0.1% 以内。如果手头只有 5% 电阻可以在同批里挑阻值最接近的四只效果会好很多。本文还有配套的精品资源点击获取