一种针对滑动变阻器AD值采集线性化处理算法

在项目中,用到了采集旋钮(滑动变阻器)的AD值,然后需要将数据发送给上位机。方法比较简单,但是有个要求就是:旋钮旋转的角度(输出阻值,Rx表示)需要和发送给上位机的的数据(Y表示)成线性关系(正比例关系)。为了达到此要求,动用了一些数学思维,对整个过程进行了分析和研究,达到了很好的线性效果。

未线性化处理的现象分析


滑动变阻器在AD采集的电路中如下图所示(单片机内部自带AD采集,AD_IO输出给单片机):

这里写图片描述
根据理论分析推导,该电路的旋钮输出阻值和AD值(Ud),即Rx和Ud无法成线性关系,推导如下:

假设变量:Ua表示输入的模拟量,Ud表示采集的数字量,Rk为与旋钮串联的固定阻值,采集精度为10位采集精度(0-1024),5V的参考电压。

则:Ua/5=Ud/1024 ==》 Ud=(1024*Ua)/5

根据电路图可知电位Ua:Ua=5*Rx/(Rx+Rk),代入上式得:

Ud=1024*Rx/(Rx+Rk)
= 1024*(Rx+Rk-Rk)/(Rx+Rk)

==》Ud=1024-1024*Rk/(Rx+Rk)。 (—-式1)

上式就是Ud和Rx的函数关系式,一般正常来说,Y=Ud(即采集的AD值发送给上上位机,Y=5-5*Rk/(Rx+Rk))。明显Y和Rx不成线性,将函数进行变换,可以看出该函数其实是个反比例函数的平移后的图像。

通过实际测试,尽量保持均匀旋转旋钮,然后将采集的AD值发送给上位机,并通过EXCEL表格绘图,也可以大致的绘制出该函数图像,如下:

这里写图片描述

因此可以证明Y和Rx不成线性关系。Y的变化随Rx增加不断趋于平缓。若要将发送给上位机的的数字量与实际的Rx成线性关系,需要做如下处理。

线性化处理


要实现发送给上位机的的数字量与实际的Rx成线性关系,需要对Ud(测得的实际AD值)进行相关的变换得到Y,再将Y发送给上位机。使得Y=K*Rx(正比例,K为比例系数)。

**因此需要做的是,如何对Ud进行变换,产生合理的Y值,即得求出函数关系式:Y=f(Ud),以满足**Y=K*Rx。

处理方法:

将因为:Y=K*Rx,则Rx=Y/K,代入上面的式1中,得:

Ud=1024-1024*Rk/(Rx+Rk)=1024- (1024*Rk *K)/(Y+Rk *K)

化简得:

Y=(1024*Rk *K)/(1024-Ud) - Rk *K (—-式2)

上式就是Y=f(Ud)关系式。

Y:发送给上位机的数据。

Ud:实际采集的AD值(该公式默认10位分辨率,其他分辨率可更改1024值)

Rk:串联的电阻值(常数),一般该常数为旋钮总值的10分之一以上,因为由式1可知,如果该值太大,Ud的取值范围会变小。

K:Y与Rx的线性关系斜率,根据输出要求给定。

实际测试


测试要求和结果

已知:现采用总值50k的滑动旋钮,Rk选择2.2K电阻,AD采集为10位分辨率,5V供电。

要求从0滑动到旋钮最大值,使得数据发送给上位机值为0–250范围:
即Rx:0–50k
Y:0–250。
可得线性关系斜率(系数):K=250/50=5

代入各个参数到公式2。尽量保持均匀旋转旋钮,并通过单片机采集AD值Ud,将Y值发送给上位机。最后用EXCEL将数据绘出,如下效果图(不平滑地方可旋转不均匀有关系):
可以看出线性效果很好!并且也能满足0–250的范围输出。

这里写图片描述

误差分析(校正)

由于理论公式存在一定的误差,对于公式:Ua/5=Ud/1024,比如参考电压不一定精确为5V的现象,因此可能会对实际结果有一点影响。

方法:可以微调公式3里的1024的值,然后滑动旋钮到最大值和最小值,使得上位机数据Y也满足线性关系的最大值和最小值输出。

总结

可以看出Y与Rx能成很好的线性关系,达到所要求的目的,说明该算法具有较强的可行性和实用性!该算法不仅用于在旋钮的AD采集线性化处理,在其他方面的线性化处理也能提供参考。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值