曹振华
(苏州经贸职业技术学院机电与信息技术学院,苏州 215009)
AD采集中二值跳动分析及对策研究
曹振华
(苏州经贸职业技术学院机电与信息技术学院,苏州215009)
二值跳动,指的是测量值在两个值之间反复跳动,例如温度测量仪表中显示当前温度的值一直在23和24之间跳动,这种跳动影响系统体验感和稳定性。本文以温度测量系统为例,仅研究在反映真实温度值情况下的二值跳动原因、危害及解决策略。
在嵌入式系统中,温度值的获取通常采用AD采集模块和温度传感器搭配的方式实现,温度传感器自身限定了温度测量的范围,而AD采集模块的精度限定了获取到的温度值的细分度,细分度不合适,会造成温度的二值跳动。
AD采集模块的作用是将系统中的模拟量(Analog)转换成对应的数字量(Digital),例如在温度采集中是将传感器送出的与当前温度值具有一一对应关系的模拟量(电流或者电压值)转换成一定数据宽度的与当前温度具有一一对应关系的数字[1-2],这个数据宽度和仪表需要计量的温度范围共同决定了仪表可以显示的温度的精度,因此,AD采集模块最重要的参数就是数据宽度,专业术语为“位数”。
(1)位数
AD采集模块的位数决定了该模块输出数字量的宽度,例如常见的8位、10位和12位AD采集模块,可以输出的数字量分别为0~255、0~1023和0~4095[3],更高位数的AD采集模块输出的数字量更多[4-5],一般位数为N的AD采集模块输出的数字量宽度为0~2N-1。
位数越大,可以输出的数字量范围就越大,对于同一个温度区间细分度就越高,所以在同样的条件下选择的AD采集模块位数越高,理论上可以显示更加精确的温度值[6]。
(2)参考电压范围
参考电压范围也就是AD采集模块所能感受到的电压的范围,这一范围决定了传感器输出的模拟量的有效范围,如果传感器的输出模拟量在有效范围内越多,采集到的温度信号就全面[7-9],通常参考电压范围是固定好的,在实际设计中采用适当电路改变传感器模拟量的输出范围,从而调整二者的拟合程度。
当一个系统的AD采集模块和传感器电路确定了,这个系统所能采集出的温度值范围就确定了,例如采用8位的AD采集模块,参考电压设为0~4V,传感器通过适当电路调节为0-100度时输出线性对应关系的电压为0~5V,系统要求输出一位小数。本单元以这种硬件配置为例说明。
2.1输出温度范围分析
表1 温度最大值计算公式
AD采集模块参考电压为0~4V,说明该AD模块所能转换的模拟量范围为0-4V,传感器输出的0~5V范围超过了AD模块的能力,所以4~5V的范围被扔掉了,利用对应关系可以知道,该温度传感器测量的温度最大值X的计算公式如表1-1,得出最大可以测量80度,80~100度的温度值无法测量。
2.2输出温度精度分析
由于该AD采集模块的精度为8位,因此该模块所能输出的数字量范围为0~255,细分256份,由此可见,该系统所能输出的温度跨度80度,细分256份以后,每份为0.3125度[10-11],这是AD值和温度值对应的关系如表2。
表2 温度与AD值对应关系
由图1可以推断,当ADx=49时,对应的温度值为15.373度;当ADx=50时,对应的温度值为15.686度,也就是说,15.373与15.686之间的温度是无法直接获取和显示的,如果温度要求显示一位小数,则只能显示15.4和15.7,显示精度为0.3度。
2.3二值跳动分析
系统无法准确显示15.4~15.7之间的温度点,但是实际温度是连续的,某时刻环境温度为靠近两个真实温度值的中间值时,这时AD模块由于精度限制,无法做给出与之一一对应的AD值,只能给出与之相近的AD值,如表3所示,例如当前温度为15.5294,更接近15.373,则当前温度显示15.4度,如果当前温度稍微有点波动,例如15.5296,这时候温度更接近15.686,显示15.7度,实际上0.0001度的温度波动很正常,无法避免,微风通过或者湿度变化或者电压微小波动都可能会引起这个波动值,这时,仪表温度就会在15.4和15.7两个值之间来回跳动,也就出现了本文提出的二值跳动问题。
表3
3.1体验感降低在环境温度相对稳定的情况下,如果温度显示仪表的显示值在两个值之间反复跳动,则会给用户系统不稳定、产品质量差、产品性能低下等直观感觉,从而降低了产品的体验感,直接影响到产品的销量。
3.2调温设备频繁启动
在上述例子中,如果设备中配备有温度调整空调设备,制冷点为15.7,加热点为15.4,或者制冷点和加热点正好位于15.4~15.7之间,当温度值跳变为15.7度时,压缩机会启动,开始制冷,当温度值跳变到15.4度时,加热设备又会迅速开始加热升温。二值跳动频繁时,加热设备和制冷设备交替频繁启动,不但会导致被监控空间的温度异常波动,更会导致制冷设备的损坏。
4.1二值跳动的特征及一般解决方法
(1)稳定性:二值跳动的两个值一般是稳定的,在某一环境下,这两个值是固定的,例如上述例子中,温度会稳定的在15.4和15.7两个值之间跳动。
(2)频繁性:二值跳动不会自行停止,没有跳动次数限定,会一直持续跳动。
(3)近似性:两个值围绕在真实值的两侧,都比较接近真实值。
围绕这些特性,一般会采用均值法、极值法等方法解决上述问题,例如取3个数值的平均值作为显示值,取三个数值中的最大值或者最小值作为显示值,这些方法都在一定程度上可以降低二值跳动的频率,但是无法根除二值跳动[6,12]。
例如在上述例子中,一秒内采集到的三个数值都是15.4,下一秒采集到的数据都是15.7,这样无论采用极值法还是均值法,都解决不了二值跳动现象。
4.2温度趋势法
温度趋势法是指在获取一个实际温度值时,并不是直接提交给显示器,而是判断当前获取的温度值是否符合当前一段时间的温度变化趋势,根据温度变化趋避决定采集值是否可以显示。
例如当前温度的趋势是升温趋势,上一次显示的温度为15.4度,这时采集到一个温度值为15.1,那么15.1背离了升温的趋势,所以不能显示,而继续显示15.4度;如果当前温度趋势是降温,上一次显示的温度为15.4度,这时采集到一个温度值为15.1,那么15.1符合降温趋势,所以可以直接显示。
优点:可以剔除一部分不符合规律的毛刺温度值,在一定程度上避免了二值跳动的现象。
缺点:在这种方法中,温度变化趋势是最重要的指标之一,对于低性能设备,分析得到温度变化趋势算法比较复杂,而且如果真实温度是背离前一段时间温度趋势的,那么真实值的显示会出现滞后的现象。
4.3二值缓存法
既然是二值跳动,则温度值是在两个值之间跳动,因此,二值缓存法的思想就是获取并把这两个值存入缓存,并且根据实际情况决定显示这两个值中的那一个值或者平均值,当下一次采集到温度值时,首先到缓存中查看是否是跳变数值,如果不是,则直接显示,如果是,则保持上一次显示的数据。
例如在上述例子中,温度一直在15.4和15.7之间跳动,那么就把这两个数值存入缓存,假如这个温度仪表是用在低温敏感设备中,可以显示15.4度,当下一次采集到温度值为16时,首先到缓存中查看可知不是跳变数值,则直接显示,并将低温缓存数据设置为15.7,高温缓存数据设置为16;如果采集到的数值为15.4或者15.7,到缓存中查看时发现是跳变数值,则不改变显示数据,显示15.4,实例代码如下所示。
二值缓存实例代码:
本文设计的温度趋势法和二值缓存法在笔者指导的2015年大学生实践创新训练计划项目《智能店小二系统设计》中获得了应用,项目总采集一路温度值,为了获取持续的数据做分析,本文利用串口调试工具持续接收模块发出来的温度数据帧,其中AB CD为帧头,EF为帧尾,中间部分为温度值,均为16进制显示。图1的上图为未使用任何算法时温度传感器采集出的温度值,下图为加入二值缓存算法之后的数据。
图1 二值缓存前后效果对比
从图1可以看出,二值缓存法可以有效地避免二值跳变现象,获得了稳定的温度数值。在实验过程中,也采用温度趋势法进行了实验,当温度按照一定曲线波动变化时,温度显示有一定滞后现象,主要是因为获取温度趋势时忽略掉了一些实际温度值所导致的。
[1]王宜怀.嵌入式技术基础与实践(第2版)[M].北京:清华大学出版社,2011.
[2]王宜怀.嵌入式系统原理与实践:ARM Cortex-M4 Kiis微控制器[M].北京:电子工业出版社,2012.
[3]MC9S08AC16,Rev.0 Datasheet[M].Freescale Semiconductor H.K.Ltd,2007.
[4]王贵锋.高精度数字式温度测量系统的设计与实现[J].自动化与仪器仪表,2015,02:38-40.
2VRJ;Two Values Cached;Trends Method;AD;Temperature Instrument;EMI
Analysis and Research on 2VRJ in AD Collection
CAO Zhen-hua
(Department of Mechatronics&Information,Suzhou Institute of Trade&Commerce,Suzhou215009)
1007-1423(2016)24-0016-04DOI:10.3969/j.issn.1007-1423.2016.24.004
曹振华(1980-),男,山东临沂人,硕士研究生,研究方向为嵌入式应用技术
2016-05-24
2016-08-15
在嵌入式系统AD采集中,经常会遇到采集到的AD值在两个值之间反复跳动的现象,有些是系统电磁干扰造成的、有些是系统硬件性能造成的、也有些是实际情况的真实反映,这些二值跳动现象,会导致仪表数据的跳动,不但影响系统体验感,而且容易导致系统设备频繁启动,影响系统稳定性。通过对实测数据进行分析,深入探讨二值跳动的原因及危害,针对反映真实情况的二值跳动现象,提出二值缓存法和趋势法等解决方法,有效解决二值跳动问题,在所指导开发的2015年大学生实践创新训练计划项目中得到稳定发挥,提升系统的体验感并有效避免控温设备的频繁启动。
二值跳动;二值缓存法;趋势法;模数采集;温度仪表;电磁干扰
2015年大学生实践创新训练计划项目《智能店小二系统设计》
The AD values are often repeated jump between two values in embedded system,we called it 2VRJ for short,it is caused by electromagnetic interference in some systems,caused by the constraints of the system hardware performance in another system,and it is the real reflection of the actual situation in some system.2VRJ not only reduces the stability of the system,but also frustrates user experience,and it results in the most serious consequences.Through the analysis of the measured data,studies the causes and harms of the 2VRJ,and designs two values cached method and trends method solution which can effectively solve the 2VRJ,it can enhance the experience of the system and avoid the frequently restart of the temperature control system in 2015 college students practice innovation training program.