老古开发网首页
导航:老古开发网首页文章索引文章分类嵌入式系统→[快速折线式线性化方法]
| -文章搜索 - 最新文章 - |

快速折线式线性化方法

发布时间:2006年2月25日 点击次数:561
来源:单片机与嵌入式系统应用   作者:黑龙江省七台河市热力公司 何学新
 
快速折线式线性化方法 黑龙江省七台河市热力公司何学新 摘要线性化是经常遇到的问题。本文讨论的方法采用逻辑分区的办法取代了通常的比较运算,因而程序简练,运行较快。 关键词线性化曲线逼进A/D转换器 一、 原理 折线式线性化的基本原理如图1所示。图中曲线y=f(x)是线性化前输入量和输出量的关系,直线y=kx是期望得到的关系。把全量程按y轴等分成若干个区间,并用数字作代号表示之。对应最小y值的区间代号为0,其他依次为1,2……。如图1中AyBy即为1#区间。在1#区间,就可近似地把曲线AB看成是直线AB,只要把区间划分得足够小,这样做是允许的。 图1折线式线性化基本原理为使AB逼近直线y=kx,需要做2点工作:(1) 将AB向上平移,使其左端点在直线上;(2) 将其斜率乘以1个因子,令其等于k。 上述第1点不难做到,而第2点,其实质就是当x有不同的增量Δx和Δx′时,y应当有1个相同的增量Δy=kΔx,而不是按直线AB的斜率增加。 直线AB的斜率kAB=(By-Ay)/(Bx-Ax),它是前端信号(例如热电偶)固有的,无法改变。为此须引进1个修正因子r,使 Δy=r\5Δx′=kΔx 由上式可得 r=kΔx/Δx′(1) 在实际工作中,通常将y作自变量来求x。例如,热电偶测温,虽然温度是真正的自变量,但我们却只能根据A/D转换器的输出值来求温度。式中的k值也是任选的,安全不必受曲线的约束,只要能合理地解释它就可以了。还是以热电偶测温为例,选用12位的A/D转换器,最大码值为4095,温度范围为0~1000℃,每个字的温度数不是1个整数,为0244℃。我们完全可以设定1个合适的k值,令转换完成后的值有一个确定的意义。例如,每个字01℃。因此,可以认为转换后的输出值是另外一个量,不妨用xz来表示它。故可以一般地写出校正方程为 xz=xzn+rn\5Δy(2) 注意在上式中,是把y作为自变量看待的;式中的脚标n为各区间的代号,从左至右依次取0,1,2,……,n;xzn依次取各区间左端点之x值,即O(原点),A,B,C等各点的x值,称之为基值;rn是各区间的斜率;Δy是y相对于基值的增量;xz是校正后的输出。一般按一定规律把xzn和rn放在表格中。我们要做的就是:(1) 确定数据所在区间并据此提取出相应的xzn及rn;(2) 计算Δy;(3) 作算术运算,求出xz。 二、 编程实现 问题的关键是要把经A/D转换后的二进制数看成是2个二进制数。设转换后的数共有n+m位,其中n是高位位数,m是低位位数。如果以2m-1作为区间大小,并把2n-1作为区间代号,则只要使有效的高n位从原数据中分离出来,成为1个独立的二进制数,也就得到了区间代号,而剩余的m位即是区间的增量。用这种方法,可以把整个量程按校正前输出量(A/D转换值)的大小均匀地划分成2n个数据区间,再用区间号作为相对地址指针,查找表格就很容易了。 下面的程序片段演示了这一方法。假定程序采用的是8051单片机,12位A/D转换,从P1和P3输入,分成16个区间进行校正。 XXH:[]MOV[]R1,P1;低位存入R1中〖2〗MOV[]A,P3;高位存入ACC中[2]ANL[]A,#0FH;A/D共12位,其中4位在高字节的 ;低4位中,它即是区间号,析出之[2]MOV[]R2,A;结果送R2保存[2]RL[]A;基值及斜率值皆以16位格式保存,故作指 ;针查表时应乘以2[2]RL[]A;基值及斜率值相邻存放,故应再乘以2[2]MOV[]B,A;保存指针于B中[2]MOV[]DPTR,#JZZ;将基值表格的地址送DPTR寄 ;存器[2]MOV[]A,@A+DPTR;将存放在表格中的基值送 ;R3,R4寄存器[2]MOV[]R3,A;[2]INC[]B;[2]MOV[]A,B;[2]MOV[]A,@A+DPTR;[2]MOV[]R4,A;至此,取基值的工作已经完成[2]INC[]B;[2]MOV[]A,B;[2]MOV[]A,@A+DPTR;[2]MOV[]R5,A;[2]INC[]B;[2]MOV[]A,B;[2]MOV[]A,A+@A+DPTR;[2]MOV[]R6,A;至此取斜率已保存在R5,R6中〖2〗…剩余的工作按照(2)式计算即可,程序略。 三、 实现细节 本方法是采用按A/D输出值均匀分区,因此,要选用合适位数的A/D转换器并适当控制前端放大器的增益,以便于分区和显示。例如,假设量程为0~1000,对应的输入为132mV,并选用12位的A/D转换器,则应使输入为132mV时,A/D的输出为07FFH。 运算通常采用定点算法,速度较快。为减小误差。可将基值及斜率均乘以一因子保存,并将Δy亦以同一比例放大,得出结果后再除以同一因子。 虽然本方法说明的是曲线逼近直线,但实际上它也可以逼近曲线。 在分区较多时,表格制作的工作量也随之增大,但可以用计算机完成这一工作:先建立一个数据库,将原始参数输入其中。然后,编制1个程序,完成计算并输出成目标机(如8051单片机)的源程序(略)。 结束语 本文讨论了1种线性化方法,其优点是速度快,程序简练。但必须熟悉所用计算机的指令系统才能较好地运用它。MES

欢迎进入老古论坛进行讨论
[嵌入式系统] 相关文章:
PIC16F877单片机的图形液晶显示模块接口技术
简介:
PIC16F877单片机的图形液晶显示模块接口技术 重庆大学电气工程学院严利平卓清锋刘和平 摘要详述PIC16F877单片机的MG\ 12232图形点阵式液晶显示器的硬件接口电路特点和接口软件编程方法。 关键词PIC16F877LCD接口 引言 由于液晶显示器(LCD)具有功耗低、体积小、质量轻、超薄等其他显示器无法比拟的优点,它广泛用于各种智能型仪器和低功耗电子产品中。点阵式(或图形式)LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕上下左右滚动、动画、闪烁、文本特征显示等功能,用途十分广泛。本文在简介液晶显示器MG\ 12232的驱动器SED1520F0A的......

P87LPC764单片机的I²C总线显示电路
在VC++中用ActiveX控件实现与单片机的串行通信
基于分级通信模式的住宅小区自动电能计费系统的研制
ispPAC10在系统可编程模拟电路及其应用
液晶显示模块KS0713及其应用
基于Visual C++6.0的PC机与DSPs的串行通信
基于MC68HC11单片机实现垂直奇偶校验
数字信号处理器与图形液晶显示模块的接口
VxWorks在高速数字电台互联网中的应用
 
下一个:[嵌入式系统]CPLD在高速数据采集系统中的应用
简介:
在51系列单片机上实现非抢先式消息驱动机制的RTOS 厦门大学许俊许克平 摘要针对51系列单片机的特点,用面向对象的思维方法,构造一个基于非抢先式消息驱动机制的RTOS。具体阐述RTOS中消息的封装和消息队列、主循环、消息的获取和发送、定时处理以及核心管理模块的构成。 关键词单片机RTOS面向对象消息队列定时处理 8051单片机在中小型应用场合相当常见。在20世纪80年代中期,Intel公司将8051内核使用权以专利互换或出售的形式转让给世界上许多著名的IC制造商,使得8051成为众多厂商支持的、发展出上百种品种的大家族;同时由于8051单片机是进入中国市场最早的单片机之一,在国内有众多的仿......
 

上一个:[嵌入式系统]按通用操作格式设计的多机通信软件

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:10分钟 执行时间:16毫秒