曹振華
(蘇州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院機(jī)電與信息技術(shù)學(xué)院,蘇州 215009)
AD采集中二值跳動分析及對策研究
曹振華
(蘇州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院機(jī)電與信息技術(shù)學(xué)院,蘇州215009)
二值跳動,指的是測量值在兩個(gè)值之間反復(fù)跳動,例如溫度測量儀表中顯示當(dāng)前溫度的值一直在23和24之間跳動,這種跳動影響系統(tǒng)體驗(yàn)感和穩(wěn)定性。本文以溫度測量系統(tǒng)為例,僅研究在反映真實(shí)溫度值情況下的二值跳動原因、危害及解決策略。
在嵌入式系統(tǒng)中,溫度值的獲取通常采用AD采集模塊和溫度傳感器搭配的方式實(shí)現(xiàn),溫度傳感器自身限定了溫度測量的范圍,而AD采集模塊的精度限定了獲取到的溫度值的細(xì)分度,細(xì)分度不合適,會造成溫度的二值跳動。
AD采集模塊的作用是將系統(tǒng)中的模擬量(Analog)轉(zhuǎn)換成對應(yīng)的數(shù)字量(Digital),例如在溫度采集中是將傳感器送出的與當(dāng)前溫度值具有一一對應(yīng)關(guān)系的模擬量(電流或者電壓值)轉(zhuǎn)換成一定數(shù)據(jù)寬度的與當(dāng)前溫度具有一一對應(yīng)關(guān)系的數(shù)字[1-2],這個(gè)數(shù)據(jù)寬度和儀表需要計(jì)量的溫度范圍共同決定了儀表可以顯示的溫度的精度,因此,AD采集模塊最重要的參數(shù)就是數(shù)據(jù)寬度,專業(yè)術(shù)語為“位數(shù)”。
(1)位數(shù)
AD采集模塊的位數(shù)決定了該模塊輸出數(shù)字量的寬度,例如常見的8位、10位和12位AD采集模塊,可以輸出的數(shù)字量分別為0~255、0~1023和0~4095[3],更高位數(shù)的AD采集模塊輸出的數(shù)字量更多[4-5],一般位數(shù)為N的AD采集模塊輸出的數(shù)字量寬度為0~2N-1。
位數(shù)越大,可以輸出的數(shù)字量范圍就越大,對于同一個(gè)溫度區(qū)間細(xì)分度就越高,所以在同樣的條件下選擇的AD采集模塊位數(shù)越高,理論上可以顯示更加精確的溫度值[6]。
(2)參考電壓范圍
參考電壓范圍也就是AD采集模塊所能感受到的電壓的范圍,這一范圍決定了傳感器輸出的模擬量的有效范圍,如果傳感器的輸出模擬量在有效范圍內(nèi)越多,采集到的溫度信號就全面[7-9],通常參考電壓范圍是固定好的,在實(shí)際設(shè)計(jì)中采用適當(dāng)電路改變傳感器模擬量的輸出范圍,從而調(diào)整二者的擬合程度。
當(dāng)一個(gè)系統(tǒng)的AD采集模塊和傳感器電路確定了,這個(gè)系統(tǒng)所能采集出的溫度值范圍就確定了,例如采用8位的AD采集模塊,參考電壓設(shè)為0~4V,傳感器通過適當(dāng)電路調(diào)節(jié)為0-100度時(shí)輸出線性對應(yīng)關(guān)系的電壓為0~5V,系統(tǒng)要求輸出一位小數(shù)。本單元以這種硬件配置為例說明。
2.1輸出溫度范圍分析
表1 溫度最大值計(jì)算公式
AD采集模塊參考電壓為0~4V,說明該AD模塊所能轉(zhuǎn)換的模擬量范圍為0-4V,傳感器輸出的0~5V范圍超過了AD模塊的能力,所以4~5V的范圍被扔掉了,利用對應(yīng)關(guān)系可以知道,該溫度傳感器測量的溫度最大值X的計(jì)算公式如表1-1,得出最大可以測量80度,80~100度的溫度值無法測量。
2.2輸出溫度精度分析
由于該AD采集模塊的精度為8位,因此該模塊所能輸出的數(shù)字量范圍為0~255,細(xì)分256份,由此可見,該系統(tǒng)所能輸出的溫度跨度80度,細(xì)分256份以后,每份為0.3125度[10-11],這是AD值和溫度值對應(yīng)的關(guān)系如表2。
表2 溫度與AD值對應(yīng)關(guān)系
由圖1可以推斷,當(dāng)ADx=49時(shí),對應(yīng)的溫度值為15.373度;當(dāng)ADx=50時(shí),對應(yīng)的溫度值為15.686度,也就是說,15.373與15.686之間的溫度是無法直接獲取和顯示的,如果溫度要求顯示一位小數(shù),則只能顯示15.4和15.7,顯示精度為0.3度。
2.3二值跳動分析
系統(tǒng)無法準(zhǔn)確顯示15.4~15.7之間的溫度點(diǎn),但是實(shí)際溫度是連續(xù)的,某時(shí)刻環(huán)境溫度為靠近兩個(gè)真實(shí)溫度值的中間值時(shí),這時(shí)AD模塊由于精度限制,無法做給出與之一一對應(yīng)的AD值,只能給出與之相近的AD值,如表3所示,例如當(dāng)前溫度為15.5294,更接近15.373,則當(dāng)前溫度顯示15.4度,如果當(dāng)前溫度稍微有點(diǎn)波動,例如15.5296,這時(shí)候溫度更接近15.686,顯示15.7度,實(shí)際上0.0001度的溫度波動很正常,無法避免,微風(fēng)通過或者濕度變化或者電壓微小波動都可能會引起這個(gè)波動值,這時(shí),儀表溫度就會在15.4和15.7兩個(gè)值之間來回跳動,也就出現(xiàn)了本文提出的二值跳動問題。
表3
3.1體驗(yàn)感降低在環(huán)境溫度相對穩(wěn)定的情況下,如果溫度顯示儀表的顯示值在兩個(gè)值之間反復(fù)跳動,則會給用戶系統(tǒng)不穩(wěn)定、產(chǎn)品質(zhì)量差、產(chǎn)品性能低下等直觀感覺,從而降低了產(chǎn)品的體驗(yàn)感,直接影響到產(chǎn)品的銷量。
3.2調(diào)溫設(shè)備頻繁啟動
在上述例子中,如果設(shè)備中配備有溫度調(diào)整空調(diào)設(shè)備,制冷點(diǎn)為15.7,加熱點(diǎn)為15.4,或者制冷點(diǎn)和加熱點(diǎn)正好位于15.4~15.7之間,當(dāng)溫度值跳變?yōu)?5.7度時(shí),壓縮機(jī)會啟動,開始制冷,當(dāng)溫度值跳變到15.4度時(shí),加熱設(shè)備又會迅速開始加熱升溫。二值跳動頻繁時(shí),加熱設(shè)備和制冷設(shè)備交替頻繁啟動,不但會導(dǎo)致被監(jiān)控空間的溫度異常波動,更會導(dǎo)致制冷設(shè)備的損壞。
4.1二值跳動的特征及一般解決方法
(1)穩(wěn)定性:二值跳動的兩個(gè)值一般是穩(wěn)定的,在某一環(huán)境下,這兩個(gè)值是固定的,例如上述例子中,溫度會穩(wěn)定的在15.4和15.7兩個(gè)值之間跳動。
(2)頻繁性:二值跳動不會自行停止,沒有跳動次數(shù)限定,會一直持續(xù)跳動。
(3)近似性:兩個(gè)值圍繞在真實(shí)值的兩側(cè),都比較接近真實(shí)值。
圍繞這些特性,一般會采用均值法、極值法等方法解決上述問題,例如取3個(gè)數(shù)值的平均值作為顯示值,取三個(gè)數(shù)值中的最大值或者最小值作為顯示值,這些方法都在一定程度上可以降低二值跳動的頻率,但是無法根除二值跳動[6,12]。
例如在上述例子中,一秒內(nèi)采集到的三個(gè)數(shù)值都是15.4,下一秒采集到的數(shù)據(jù)都是15.7,這樣無論采用極值法還是均值法,都解決不了二值跳動現(xiàn)象。
4.2溫度趨勢法
溫度趨勢法是指在獲取一個(gè)實(shí)際溫度值時(shí),并不是直接提交給顯示器,而是判斷當(dāng)前獲取的溫度值是否符合當(dāng)前一段時(shí)間的溫度變化趨勢,根據(jù)溫度變化趨避決定采集值是否可以顯示。
例如當(dāng)前溫度的趨勢是升溫趨勢,上一次顯示的溫度為15.4度,這時(shí)采集到一個(gè)溫度值為15.1,那么15.1背離了升溫的趨勢,所以不能顯示,而繼續(xù)顯示15.4度;如果當(dāng)前溫度趨勢是降溫,上一次顯示的溫度為15.4度,這時(shí)采集到一個(gè)溫度值為15.1,那么15.1符合降溫趨勢,所以可以直接顯示。
優(yōu)點(diǎn):可以剔除一部分不符合規(guī)律的毛刺溫度值,在一定程度上避免了二值跳動的現(xiàn)象。
缺點(diǎn):在這種方法中,溫度變化趨勢是最重要的指標(biāo)之一,對于低性能設(shè)備,分析得到溫度變化趨勢算法比較復(fù)雜,而且如果真實(shí)溫度是背離前一段時(shí)間溫度趨勢的,那么真實(shí)值的顯示會出現(xiàn)滯后的現(xiàn)象。
4.3二值緩存法
既然是二值跳動,則溫度值是在兩個(gè)值之間跳動,因此,二值緩存法的思想就是獲取并把這兩個(gè)值存入緩存,并且根據(jù)實(shí)際情況決定顯示這兩個(gè)值中的那一個(gè)值或者平均值,當(dāng)下一次采集到溫度值時(shí),首先到緩存中查看是否是跳變數(shù)值,如果不是,則直接顯示,如果是,則保持上一次顯示的數(shù)據(jù)。
例如在上述例子中,溫度一直在15.4和15.7之間跳動,那么就把這兩個(gè)數(shù)值存入緩存,假如這個(gè)溫度儀表是用在低溫敏感設(shè)備中,可以顯示15.4度,當(dāng)下一次采集到溫度值為16時(shí),首先到緩存中查看可知不是跳變數(shù)值,則直接顯示,并將低溫緩存數(shù)據(jù)設(shè)置為15.7,高溫緩存數(shù)據(jù)設(shè)置為16;如果采集到的數(shù)值為15.4或者15.7,到緩存中查看時(shí)發(fā)現(xiàn)是跳變數(shù)值,則不改變顯示數(shù)據(jù),顯示15.4,實(shí)例代碼如下所示。
二值緩存實(shí)例代碼:
本文設(shè)計(jì)的溫度趨勢法和二值緩存法在筆者指導(dǎo)的2015年大學(xué)生實(shí)踐創(chuàng)新訓(xùn)練計(jì)劃項(xiàng)目《智能店小二系統(tǒng)設(shè)計(jì)》中獲得了應(yīng)用,項(xiàng)目總采集一路溫度值,為了獲取持續(xù)的數(shù)據(jù)做分析,本文利用串口調(diào)試工具持續(xù)接收模塊發(fā)出來的溫度數(shù)據(jù)幀,其中AB CD為幀頭,EF為幀尾,中間部分為溫度值,均為16進(jìn)制顯示。圖1的上圖為未使用任何算法時(shí)溫度傳感器采集出的溫度值,下圖為加入二值緩存算法之后的數(shù)據(jù)。
圖1 二值緩存前后效果對比
從圖1可以看出,二值緩存法可以有效地避免二值跳變現(xiàn)象,獲得了穩(wěn)定的溫度數(shù)值。在實(shí)驗(yàn)過程中,也采用溫度趨勢法進(jìn)行了實(shí)驗(yàn),當(dāng)溫度按照一定曲線波動變化時(shí),溫度顯示有一定滯后現(xiàn)象,主要是因?yàn)楂@取溫度趨勢時(shí)忽略掉了一些實(shí)際溫度值所導(dǎo)致的。
[1]王宜懷.嵌入式技術(shù)基礎(chǔ)與實(shí)踐(第2版)[M].北京:清華大學(xué)出版社,2011.
[2]王宜懷.嵌入式系統(tǒng)原理與實(shí)踐:ARM Cortex-M4 Kiis微控制器[M].北京:電子工業(yè)出版社,2012.
[3]MC9S08AC16,Rev.0 Datasheet[M].Freescale Semiconductor H.K.Ltd,2007.
[4]王貴鋒.高精度數(shù)字式溫度測量系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[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-),男,山東臨沂人,碩士研究生,研究方向?yàn)榍度胧綉?yīng)用技術(shù)
2016-05-24
2016-08-15
在嵌入式系統(tǒng)AD采集中,經(jīng)常會遇到采集到的AD值在兩個(gè)值之間反復(fù)跳動的現(xiàn)象,有些是系統(tǒng)電磁干擾造成的、有些是系統(tǒng)硬件性能造成的、也有些是實(shí)際情況的真實(shí)反映,這些二值跳動現(xiàn)象,會導(dǎo)致儀表數(shù)據(jù)的跳動,不但影響系統(tǒng)體驗(yàn)感,而且容易導(dǎo)致系統(tǒng)設(shè)備頻繁啟動,影響系統(tǒng)穩(wěn)定性。通過對實(shí)測數(shù)據(jù)進(jìn)行分析,深入探討二值跳動的原因及危害,針對反映真實(shí)情況的二值跳動現(xiàn)象,提出二值緩存法和趨勢法等解決方法,有效解決二值跳動問題,在所指導(dǎo)開發(fā)的2015年大學(xué)生實(shí)踐創(chuàng)新訓(xùn)練計(jì)劃項(xiàng)目中得到穩(wěn)定發(fā)揮,提升系統(tǒng)的體驗(yàn)感并有效避免控溫設(shè)備的頻繁啟動。
二值跳動;二值緩存法;趨勢法;模數(shù)采集;溫度儀表;電磁干擾
2015年大學(xué)生實(shí)踐創(chuàng)新訓(xùn)練計(jì)劃項(xiàng)目《智能店小二系統(tǒng)設(shè)計(jì)》
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.