二元一次方程式解决零点漂移

介绍了一种用于处理压力传感器零点漂移问题的算法——AD值平均分散法。该方法通过调整AD采样值,解决了在零点附近的压力显示及稳定性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天看到同事写的一个算法,在这里和大家分享一下:

针对压力传感器的零点漂移,AD采样值在零点附近来回波动,这样的AD值根本没办法使用,但是如果直接限制幅度,会造成正压起始点和负压起始点抬高,又要显示从0开始,这就需要在限制幅度的基础上增加AD值平均分散法(自己乱命名的)。

优点:解决显示和输出非常稳定。(将波动值限制了,基本上用户用不到这样靠近零点的压力)

缺点:被做了算法的这段压力段与实际压力有微小的差异,接着看。

 

假如:输入压力的AD值范围是-1000~1000 , 但是在 -50<0<50这一段非常不稳定,其他的段就是线性的;然后-200<0<200是客户不用的(要用也没关系)。

int Display_number;

if(-200<ADC_Value<200)

{

      if(-50<ADC_Value<50) Display_number = 0;                                 //          1

     if(50<=ADC_Value<100)Display_number=ADC_Value-50;            //           2

     if(-50<=ADC_Value<-100)Display_number=ADC_Value+50;         //           3

     if(100<=ADC_Value<200)Display_number=ADC_Value*X+Y;        //           4

     if(-100<=ADC_Value<-200)Display_number=ADC_Value*X+Y;      //           5

}

第一句 就是将跳动的ADC值-50<ADC_Value<50直接不要,丢掉。

第二句 就是往正压方向的<100的ADC值范围50-100的显示为0-50

第三句 就是往负压方向的<-100的ADC值范围-500~-100显示为0~-50

第四句和第五句就是关键了;先讲第四句,第五句和第四句差不多。 简单屡一下就是输入量ADC_Value是100~<200,输出量就是Display_number是60~200,这里觉得有点迷糊的同学自己先屡屡;现在列出二元一次方程:

100X+Y=60;

200X+Y=200;

我们用代入消元法,将第一句变形 Y= 60 -100X;带入第二句:

200X + 60 - 100X = 200;   X=1.4;  将X带入第一句,得出Y= -80;

这样子就在200的时候输入和输出对应上了。

就相当于把<50的设为0 , 把50-<100的设为0-<50 , 把100-<200的设为60-<200 ;

把最后一段的压力100个点平均分散给140个点,是不是AD值平均分散法。还可以将这个总数个数拉长或缩短,视情况而定。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值