【87】四点应变片称重设备

本文介绍基于四点式悬挂应变片的高精度称重设备设计,涵盖硬件选型(STM32L431+ADS1261)、数据稳定性判断、零点自动追踪、二阶Butterworth低通滤波器应用及温度补偿模型。重点分析滤波算法对低频称重信号的保真处理,以及最小二乘法在多点传感器融合中的实现,确保直流重量信号无失真、抗干扰强、温漂可控。

1 引言

        本blog记录了四点式悬挂称重设备开发过程中的一些内容,在写中总结,在写中分析,亦便于日后的回顾和复习。

2 滤波器

2.1 一阶低通滤波

2.1.1 概念

        一阶低通滤波器,目的是将截止频率以内的信号无衰减通过,高于截止频率的信号被阻断(产生衰减)。

        上述H(s)是一阶低通滤波器的传递函数。

2.1.2 电路一阶低通滤波器

        如下展示为最常见的RC一阶低通滤波器。

        其传递函数如下:

        对比标准传递函数公式,可得  RC = \frac{1}{2pi*fc},因此可根据截止频率fc来设计RC得值。

2.1.3 数字一阶低通滤波器

        如下是一阶低通滤波器模型。

        下图展示了经过一阶低通滤波后,波形的前后对比。

2.2 Butterworth 滤波器

        ButterWorth滤波器是IIR无限脉冲响应滤波器的一种,是经典逼近式。设计目标是使通带内的频率响应尽可能平坦(无波纹),且整体幅频响应单调下降。代价是过渡带(从通带到阻带的下降斜率)相对平缓,信号的选择性不如其他类型。

2.3 常见滤波器总结

2.3.1 IIR滤波器

        IIR是无限冲激响应滤波器,输出不仅取决于当前输入信号,也取决于过去的输入和过去的输出。

2.3.2 IIR滤波器

        FIR是有限冲激响应滤波器,FIR 只会“记住”有限个输入样本,影响输出的仅是有限个样本。

        常见滤波器比较:

3 系统方案

3.1 硬件方案

主控MCU:STM32L431

ADS1261高精度ADC模块:20SPS+FIR

3.2 数据稳定性判断方案

        数据稳定性判断,开辟了12个数据作为缓存基础数据,每新来一个数据则替换掉最旧的数据。

(1)窗口数据不满时,不稳定;

(2)新数据超过当前数据平均值上下,连续两次,则判断为数据不稳定;

(3)计算窗口缓存数据方差,方差小,则表明数据较为稳定;

3.2 零点自动追踪方案

        在不放重物清空下,ADC采集应变片的数值也会随机跳变,且因为应变片具有迟滞性,空载0点不一定是一个固定值。因此为了测量精度更高,在应变片adc值变化较小时,空载0点需合理的跟随实际的0点进行微小的变化。

(1)数据不稳定时,判断adc值是否穿越了0点adc0,如果有穿越,那么数据异常重量显示清零;

(2)零点自动跟随方案使用的是一阶低通滤波:

zero_new = zero_old + α × (ADC_current - zero_old)

        更新频率是每1.5s间隔,调用一阶低通滤波算法,进行一次0点自动更随。只有ADC值变化小于500这个数值或测量重量变化在0.1kg变化内,才允许自动跟踪。

3.3 二阶ButterWorth 低通滤波器

        二阶Butterworth滤波器传递函数如下。

        其特点如下(来自deepseek):

        在称重采集应变片传感器 ADC 值时选择 Butterworth 滤波器,核心原因在于称重信号本质上是直流或极低频信号,而 Butterworth 滤波器在通带内具有“最大平坦”的幅频响应,意味着它能在有效滤除高频噪声和振动干扰的同时,不引入任何通带纹波,从而避免对真实的重量直流分量造成周期性调制或失真。

        项目中使用Butter worth滤波器对信号滤波,并使用IIR滤波器进行对比,滤波器设计如下。

IIR滤波器:

参数:一阶低通滤波、α = 0.6

公式:zero_new = zero_old + α × (ADC_current - zero_old)

Butter Worth滤波器:

参数:采样率5Hz 、 截止频率0.016Hz、二阶低通滤波、窗口大小是12

        项目中滤波器滤波前后比对如下。


        在采样率和截止频率设置不对情况下,可能会出现不好的滤波效果,如下图示。

        空载时波形变化。

3.4 四点式悬挂称重

        本项目是四点悬挂式称重,每个悬挂点有一个应变片传感器,通过ads1261采集传感器的模拟量,然后再使用最小二乘法直接拟合,实现对物体的称重。

// 矩阵直接拟合方案
// W  = cw[0]*x1  + cw[1]*x2  + cw[2]*x3  + cw[3]*x4
// Mx = cmx[0]*x1 + cmx[1]*x2 + cmx[2]*x3 + cmx[3]*x4
// My = cmy[0]*x1 + cmy[1]*x2 + cmy[2]*x3 + cmy[3]*x4

// 参数说明:
// x1 ~ x4 分别是四个通道采集到的adc值
// cw 是 重量与adc系列
// cmx、cmy是 重心位置与adc值系数

3.5 温度补偿

         本项目工程中使用两点线性温度预测模型。

// 如以常温T0 = 25度、T1 = 80度为范围进行温度补偿参数计算

// 零点补偿系数 
// k0 单位是 count/°C = "每变化 1°C,零点漂几个 count"
k0 = ( adc0(80°C) − adc0(25°C) ) / ( T2 − T1 )

//灵敏度补偿系数
// k1 单位 1/°C = "每变化 1°C,灵敏度相对变了百分之几
k1 = ( cw(80°C) − cw(25°C) ) / ( cw(25°C) × (80 − 25) )
   = ( cw_t2 − cw_ref ) / ( cw_ref × 55 )

        温度补偿参数确认需进行如下标定示例。

时间点1:常温 25°C
   └─ 跑一次完整 CALIB_ALL(0kg + 28 点)
      → 得到 adc0(25°C)、cw(25°C)   ← 这就是"参考点",T_cal = 25

时间点2:5°C(已热平衡)
   └─ 快速量两组:0kg 各通道零位 + 50kg 放台面中心各通道
      → 得到 adc0(5°C)、cw(5°C)       ← 这就是"第二点",T2 = 5

(1)零点补偿系数k0 单位(count/°C)

零点温度补偿模型:

补偿值(adc) = K0 *  温度 = x count/℃ * y ℃ = count 

重量 = cw * ( adc值 + 补偿值(adc))  = x kg/count  * y count = kg

(2)灵敏度补偿系数k1 单位(1/°C)

灵敏度温度补偿模型:

补偿值cw_new = cw * ( 1 + k1) * Δ温度 = x kg/count 

重量 = cw_new * adc值  = x kg/count  * y count = kg

        总温度补偿模型:

重量 = cw_new * ( adc值 + 补偿值(adc))  = x kg/count  * y count = kg

       

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值