曹振華
(蘇州經貿職業技術學院機電與信息技術學院,蘇州 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.