文献标识码: A
DOI:10.16157/j.issn.0258-7998.190940
中文引用格式: 贾红敏,张立广,淡建超. 一种基于最小二乘法的AD转换在线校正方法[J].电子技术应用,2020,46(2):80-83.
英文引用格式: Jia Hongmin,Zhang Liguang,Dan Jianchao. Online correction method for AD conversion based on least squares algorithm[J]. Application of Electronic Technique,2020,46(2):80-83.
0 引言
在计算机控制系统中,往往需要对模拟量信号进行采集,但计算机只能识别数字量信号,因此需要将实际的物理量转换为计算机所能识别的数字量。AD转换芯片作为模拟量采集的核心部件,AD转换的精度直接影响到控制系统的精度。AD转换受传感器自身特性的非线性、参考电压波动、温漂、零漂等问题的影响,导致实际物理量与转换后的数字量之间存在非线性关系,使转换精度无法满足控制系统的要求[1],因此需要对AD转换结果进行校正。
对于AD转换中存在的非线性问题,通常可从硬件和软件两方面进行处理。硬件处理在尽可能减少非线性的基础上[2],通常配合软件处理一起。软件处理的方法较多,其拟合精度高,快速性好,通常有线性近似法、分段直线回归法、传统的回归法(如最小二乘法)等,目的都是采用软件的方法尽可能降低由于非线性带来的误差。
本文提出了一种基于最小二乘法的最优化分段线性拟合方法,对AD转换结果进行软件在线校正,最后将校正后的分段点、斜率和截距等数据下发到被校正装置(如以STM32为MCU的模拟量采集系统)中。经实际测试验证,其拟合速度快、准确性高且操作方便。
1 最小二乘法
软件实现线性化是基于最小二乘法原理的[3-4]。以满足用户要求的误差标准为前提,将整个量程范围划分为不同的区间,在每个分段区间内对实际物理量和转换后数字量采用最小二乘法进行直线拟合,确定各直线的待定系数ai(斜率)和bi(截距)。确定ai和bi后,得到yi=aix+bi这样一条直线,使得用这条直线去近似这段曲线时,整个区间内的误差都较小,最后可得到整个量程范围内确定的函数关系。
得到ai、bi值,则可确定各区间内直线的函数关系。
2 软件线性化基本思路
经理论分析和实验表明,实际物理量和AD转换后数字量间的非线性关系主要分布在低端和高端,中间基本上是线性关系。因此,简单地对整个量程区间的非线性关系进行线性拟合时,两端与实际曲线的拟合度很低[5],得到的拟合函数无法准确地表达整个量程范围内实际物理量和数字量间的关系。
如果不进行分段线性校正,拟合函数f(x)的阶数必须高于7[6],才能满足控制系统精度的要求。而由于高阶拟合函数计算复杂,需要用到迭代法,计算时间长,占用内存多,难以在实际中应用。因此就需要分段,将整个量程范围根据误差标准经过计算进行划分区间,分别对每个划分区间进行拟合,各区间有不同的拟合函数,此时可认为每个划分区间中的实际物理量和数字量间存在线性关系,而在整个量程范围内实际物理量和数字量之间是非线性关系。
理论证明,只要分段的间距足够小,分段的数量足够多,对于任意的连续函数,在误差允许的范围内,都可以用分段线性化来处理。但是在实际应用中,应根据误差标准来划分区间,划分的区间数量不宜太多。当允许误差较大时,分段数较少;当允许误差较小时,分段数较多。此动态分段方法既可简化得到拟合函数的过程,又能提高转换精度,满足控制要求。基于最小二乘法的最优化分段线性拟合方法的基本思路为:
(1)假设有一组样本数据(xi,yi)(i=0,1,2,…,n-1)(数字量xi从小到大排列),用户根据实际测试需求,输入允许误差ε及量程范围[M,N](M、N均为数字量)。
(2)计算机取出数据(xi,yi)的前3个点,拟合区间为[M,x2]。用最小二乘法求出各点在拟合区间[M,x2]内的拟合系数a0和b0并依次计算各点的误差值εi,其中εi=
|yi-(a0xi+b0)|。
(3)将各点误差值εi与允许误差ε进行比较。若这3个数据点均满足允许误差,计算下一个点x3的误差值ε3。将ε3值与允许误差ε进行比较,若仍小于允许误差,则拟合区间再增加一个数据x3,拟合区间为[M,x3]。依次类推,直到在区间[M,xk]中出现某点xk,其误差值εk大于允许误差ε,计算机会自动将区间[M,xk]减少一个数据xk。此时可得到分段区间[M,xk-1]内满足精度要求的拟合函数表达式y0=a0x+b0,且这条直线延伸到量程范围的起始点M。
若这3个数据点中有任何一个点不满足允许误差,则将3个数据点中的前两个点根据“两点确定一条直线”定律,连接成一条直线且这条直线延伸到量程范围的起始点M,分段区间为[M,x1]。且设定这3个数据点中不满足误差要求的点为第3个,为方便叙述,假设这个点为xk。
(4)下一段从xk-1点开始,计算机取3个数字量xk-1、xk、xk+1,此时拟合区间为[xk-1,xk+1],用最小二乘法求出各点在拟合区间[xk-1,xk+1]内的拟合系数aj和bj(j=1,2,…,n-2),并依次计算各点的误差值εk。沿用步骤(3)中的方法,找出新区域内的拟合表达式。直至计算判断达到量程范围上限N点,拟合过程结束。至此得到了符合允许误差的各段拟合函数,覆盖了整个量程范围。
根据上述方法,在实际校正中会出现很多种可能,图1和图2为两种典型情况下的处理方式。情况1为有3个点满足误差标准的处理方式,情况2为有3个点不满足误差标准的处理方式。
3 软件线性化的实现
AD转换在线校正软件使用VS2010 C#开发,并将校正后的允许误差、量程范围、分段数、分段区间、斜率a和截距b等参数保存到Access数据库中,用户可根据允许误差和量程范围随时查询。
软件可校正的物理量有直流电压、直流电流、交流电压、交流电流和交流频率,每次只能校正一个物理量。AD转换在线校正软件主要包括串口设置界面、非线性校正界面(主界面)和实时曲线界面。串口设置界面主要用来设置校正软件与被校正装置间的通信参数;非线性校正界面包括数据请求、数据显示、拟合折线和历史数据查询四部分,实现数字量的接收、物理量的输入、根据允许误差和量程范围进行分段线性校正并将参数下发给被校正装置,以及保存和查询等功能;被校正装置根据校正软件下发的参数进行物理量的回归运算[7],校正软件通过发送指令读取运算得到的物理量值,并将物理量值通过实时曲线界面显示。非线性校正界面如图3所示。
4 软件线性化测试结果
在软件线性化测试中,被校正装置为以STM32为MCU的模拟量采集系统,其内部AD转换器的位数为12 bit,物理量为直流电压,其量程范围为1~10 V。AD转换后数字量与实际测量的物理量如表1所示。
通过本文提出的校正方法对表1中的数据进行最优化分段线性校正,当允许误差分别为0.2和0.5时,其拟合分段直线如图4和图5所示。由图4和图5校正结果对比可知,计算机可以根据允许误差的大小来动态调整分段区间,得到最优化分段,使得分段数最优;校正过程方便,用户只需手动输入实际物理量、允许误差和量程范围;并且校正的准确度高,要求的允许误差越小,校正后的折线越逼近实际曲线。
在上述测试条件下,允许误差为0.2和0.5时,其拟合结果的分段数、分段区间、各段系数及最大误差如表2所示。由两组数据对比结果可知,拟合结果的分段区间不是固定的,而是会根据允许误差的不同实现动态分配,从而实现了分段数的最优化。同时,对于不同的允许误差,当允许误差较小时,分段区间越多,拟合精度越高,因此在实际的运用中,可根据需要设置允许误差,获得校正数据,从而实现提高物理量回归运算精度的目的。
5 结论
本文提出了一种基于最小二乘法的最优化分段线性拟合方法,经过实际测试验证,拟合精度高,分段合理,算法简单且快速性好,达到了方便、准确实现非线性校正的目的。在实际操作时,用户需要将实际测量的物理量、量程范围及允许误差输入到软件中,计算机可根据软件程序自动计算出分段区间和拟合系数,用户再将拟合参数下发给被校正装置即可。此方法也可用于嵌入式系统的辅助开发中,进行模拟量的非线性校正,提高非线性校正的灵活性和准确性。
参考文献
[1] 国培光.模拟量分段线性化校正电路设计[J].西北农业大学学报,1995,23(3):55-62.
[2] 何朝晖,陈厚鹏,戎蒙恬.采样保持电路中的一种增益误差自校正方法[J].上海交通大学学报,2004,38(5):733-737.
[3] 解乐,刘建国,程寅,等.一种非接触式道面温度测量系统研制[J].电子技术应用,2017,43(6):75-78.
[4] 李纬良,肖辉,方鹏飞.基于STM32的扬声器定心支片顺性测量系统设计[J].电子技术应用,2019,45(7):102-106,116.
[5] 曹金华,贺黎潇,沈安东,等.基于KL25的AD转换动态在线校正技术[J].实验室研究与探索,2013,32(10):249-252.
[6] 马松岭.最小二乘法在热电偶电势-温度特性线性化中的应用[J].西安建筑科技大学学报(自然科学版),2001,33(1):86-88.
[7] 刘伟,沈安东,王宜怀.低端嵌入式系统中物理量回归算法的优化[J].现代电子技术,2008(18):31-34.
作者信息:
贾红敏,张立广,淡建超
(西安工业大学 电子信息工程学院,陕西 西安710021)