一种针对滑动变阻器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采集线性化处理,在其他方面的线性化处理也能提供参考。
一种针对滑动变阻器AD值采集线性化处理算法相关推荐
- matlab里滑动变阻器,利用MATLAB作图分析滑动变阻器大小的选择
科学教 育研 究 2011年 第 10期 读 写算 利用MATI,=AB作图分析滑动变阻器大小 的选择 左 洁 (泗阳中学高中部 江苏 泗阳 223700) [摘 要 1用MATLAB~图功能即通过表 ...
- ADC VS参考电压在测量时和AD值的大小对应关系
背景是这样的,用24位的ADC,外接人体电阻,进行电阻AD值采集,当VS = 2.4V时,体电阻的AD值对应值为9.86 * 10 ^ 5量级,当VS = 2.8V时,体电阻的AD值对应值为7.01 ...
- STM32F103VET6单片机16路ADC采集通道,AD值3种处理方式效果对比
首先来看一下采样电路的原理图,本电路运用了16个10K滑动变阻器对3.3V的系统电压进行分压.10K滑动变阻器有3个引脚,两端的引脚分别接到+3.3V和GND上,通过调节滑动变阻器,其 ...
- 51单片机AD采集滑动变阻器电压并通过串口每秒发送一次电压
51单片机AD采集电压通过串口每秒发送一次电压值 这个是题目要求,利用AD转换芯片ET2046每秒检测一次滑动变阻器电压,转换成ASCLL码后通过串口发送数据.同时加三个指示灯来显示现在的电压范围. ...
- 电压越低采集的ad值反而变大_网络课堂 | 专业基础知识培训系列3采集仪功能说明与选择...
前面视频介绍了采集仪模数转换器的工作原理和幅频域相关参数.对于数据采集仪,模数转换模块是其最基本的功能.适宜的精度指标可以保证数据的质量,但是仍有很多功能是测试工程师在进行数据采集的过程中需要使用的, ...
- AD转换实验 编写程序利用ADC0804 AD转换器采集电位器的模拟电压,将采集到的数字量在程序中换算成实际采集的模拟电压,并用数码管显示所采集的实际模拟电压值。(如:AD转换后的数字量为128,则
编写程序利用ADC0804 AD转换器采集电位器的模拟电压,将采集到的数字量在程序中换算成实际采集的模拟电压,并用数码管显示所采集的实际模拟电压值.(如:AD转换后的数字量为128,则数码管应该显示2 ...
- android手机传感器坐标系,一种将手机内置传感器采集数据从手机坐标系转换到参考坐标系的处理方法与流程...
本发明提出了一种将手机内置传感器采集的三轴加速度数据从手机坐标系转换到大地参考坐标系的处理方法,该方法涉及到移动通信.模式识别和情景感知等领域. 背景技术: 目前基于智能手机的行为识别是环境智能中的一 ...
- 12v电流表的正确接法_滑动变阻器的分压与限流接法
我们在初中学习滑动变阻器时,都是以串联的方式接入电路.我们可以说"接入电路的电阻是多少".上了高中之后,我们将滑动变阻器的新接法--分压接法.这时,我们就不能再说"接入电 ...
- matlab仿真OLED出现的摩尔纹,一种针对OLED屏的高鲁棒性DeMURA方法与流程
本发明涉及图像处理技术领域. 背景技术: OLED屏每个发光单元与输入灰度呈现出的关系模型造成局部不均匀性,这种不均匀性又叫MURA,来自于日语音译,代表粗糙的.不光滑的意思. 为了消除MURA,本领 ...
最新文章
- 5 修改request对象变量_【总结】前端5大常见设计模式,代码一看你就懂!
- linux cron crontab anacron 计划任务 定时任务
- 动态规划:连续子数组的最大和
- Http请求中Content-Type讲解以及在Spring MVC注解中produce和consumes配置详解
- php和java 2017_Php与java的区别
- 训练日志 2019.1.10
- oracle date 截取年月,在Oracle中,可用于提取日期时间类型特定部分(如年、月、日、时、分、秒)的函数有那些...
- Atitit netcore 问题与解决 目录 1. 导入第三方dll库	1 1.1. 跨平台开发netcore程序	2 1.2. 不能生产dll问题,可能是360杀毒监控了。。	2 2. 运行dl
- atitit.基于虚拟机的启动器设计 --java 启动器 java生成exe
- abaqus算出来的转角单位是什么_ABAQUS中的单位使用方法
- cad被管理员阻止_CAD注册机无法以管理员身份输入的解决方案
- ps考证分数是用电脑改的吗
- python3.7怎么设置字体大小,python字体大小如何设置
- excel高效之sumproduct()带权重计算 如:绩效
- 麻雀虽小五脏俱全 现代C++思想 值得推敲
- android 画布画笔,安卓画笔笔锋的实现探索(一)
- 异步FIFO跨时钟域亚稳态如何解决?
- CentOS下Qt安装
- 文件系统之super_block
- 出向链路负载均衡之协议分流