在數(shù)據(jù)采集應(yīng)用中怎樣選擇合適的采樣率
在具體數(shù)據(jù)采集應(yīng)用中,試錯測試可能使用得最為普遍,但它既不是最快的也不是最好的確定抽樣率的方法。采用系統(tǒng)工程分析并通過一系列預(yù)先設(shè)計好的試驗,可以幫助快速找到適合的采樣率。本文以彈球開關(guān)為例,介紹選擇采樣率時應(yīng)考慮的一些因素。
最近我問一個工程師他系統(tǒng)所使用的采樣率是多少,他回答說:“5毫秒”。我接著問他為什么,“因為它合適,”他說道。“我們花了很多天來測試不同的采樣率,只有這個最合適。”
他的系統(tǒng)是一個按鈕開關(guān),要求去除掉一些反彈效應(yīng)。他和他的試驗小組最后選擇5ms作為間隔是因為在測試過程中,采用這樣的采樣率既不會將一個信號錯誤地認(rèn)為是兩個信號,且由于速度快,也不會將有用的雙擊誤認(rèn)為是反彈。
5毫秒也許是一個可以接受的數(shù)值,但由于沒有考慮系統(tǒng)其它因素,尤其是實時反應(yīng)時間,我們確實無法知道這是不是最好的答案。
假設(shè)處理器過載,例如5ms采樣時間造成40%過載,情況會怎樣呢?可以將采樣時間間隔增加到10ms而把代碼占用的CPU資源降低到20%,另外一種方法是保持采樣率不變,而將控制碼執(zhí)行的速度降低一半。那么從系統(tǒng)的角度來看哪一種方法更好呢?在采樣資源和處理器利用率以及其它實時因素(如調(diào)度與優(yōu)先級調(diào)換)間有沒有一種好的折衷方法呢?下面讓我們具體來看一看。
選擇標(biāo)準(zhǔn)
在選擇采樣率時,有幾個對立的因素要考慮,這些因素包括:
·采樣應(yīng)盡可能快,這樣精度才高
·采樣應(yīng)盡可能慢,以節(jié)約處理器的時間
·采樣應(yīng)快到能提供足夠的響應(yīng)時間
·采樣應(yīng)慢到輸入信號不受噪聲的影響
·采樣率應(yīng)為控制算法頻率的倍數(shù),以減少抖動
由于沒有一個答案能滿足所有的要求,所以在考慮具體應(yīng)用特性時只能找到一種比其它都更好的采樣率,本文介紹的技術(shù)將有助于確定這個采樣率,包括下面幾個步驟:
1. 測量傳感器的特性。
2. 如果輸入有噪聲,應(yīng)選擇合適的算法將其濾掉。
3. 只在滿足功能的基礎(chǔ)上計算采樣率的最高和最低界限。
4. 在最高和最低界限之間確定均衡點。
5. 按均衡點優(yōu)先次序在最高和最低界限間確定采樣率。
這種方法適用于所有傳感器,下面我們以實例集中討論數(shù)字開關(guān)的情形。
數(shù)字開關(guān)
數(shù)字輸入最簡單的形式是開關(guān),當(dāng)開關(guān)合上時,開關(guān)的值是1,打開時值為0,如果是負(fù)邏輯,結(jié)果剛好相反。很多嵌入式系統(tǒng)都有一個或多個開關(guān),如果開關(guān)很少,少于純數(shù)字輸入/輸出(DIO)端口數(shù)量時,它們通常直接接到DIO端口上;開關(guān)數(shù)量多的時候則由一個開關(guān)矩陣來控制,這個以后另文再述。
一個理想的開關(guān)在合上時的信號為1,打開時信號是0,從一種狀態(tài)到另一種狀態(tài)的轉(zhuǎn)換是瞬時完成的。但實際上,還有上升和下降時間需要考慮,由于這些時間和電路電容成正比,所以通常只有幾個納秒。在我們的分析中,只要傳感器數(shù)據(jù)讀取速度慢過每秒10萬次,就可以將上升和下降時間忽略不計,因為讀取速度慢,有些開關(guān)如光開關(guān)和結(jié)構(gòu)緊固的瞬態(tài)開關(guān)其特性還是非常理想的。
然而大多數(shù)機械開關(guān)都有反彈效應(yīng)。當(dāng)開關(guān)合上時,從0到1的轉(zhuǎn)換不是在瞬間完成或者說不是連續(xù)上升的。圖1a顯示了從示波器上看到的一個機械開關(guān)輸出轉(zhuǎn)換過程的波形,圖1b是開關(guān)輸出的數(shù)字信號波形。主脈沖前后多余的脈沖就是所謂的反彈,它產(chǎn)生于開關(guān)內(nèi)部機械彈片發(fā)生接觸的時候。如果反彈會造成不良的影響,就必須對其進(jìn)行濾波,這個過程通常稱為去反彈。
測量關(guān)閉時間
要決定采樣率,就需要知道最小開關(guān)關(guān)閉時間,我們用σmin表示,它也是確保采樣軟件探測到開關(guān)狀態(tài)的最短時間。有時候系統(tǒng)會具體規(guī)定,在沒有規(guī)定的情況下,就需要通過實驗,在具體系統(tǒng)需求和硬件特性的基礎(chǔ)上確定。
最小開關(guān)時間一般用來作為數(shù)據(jù)噪聲的閾值使用,而不是實際開關(guān)打開或關(guān)閉的時間。如果在輸入端檢測到脈沖的持續(xù)時間小于最小關(guān)閉時間,軟件就可能把它漏過,我們不把這個看作是故障。另一方面,如果脈沖時間等于或大于σmin,軟件將保證檢測到開關(guān)的狀態(tài)。
下面是我和一些工程技術(shù)人員對彈球機的研究經(jīng)驗分析,彈球機是一種很好的實驗工具,因為它具備好幾種類似于數(shù)字輸入開關(guān)的機構(gòu),每種都有不同的特性,圖2顯示了其中的一些。 圖2a中的開關(guān)必須經(jīng)常監(jiān)測,因為彈球運行速度很快,對于這類開關(guān),我們測量得到它的σmin大概是10ms。(實際測量值帶有小數(shù)位,我們分析時也是使用帶小數(shù)的實際測量值,但為討論方便起見本文中我們都四舍五入取為整數(shù)。)這個值根據(jù)環(huán)境不同而有所不同,改變環(huán)境特性可能會得到不同的最快開關(guān)關(guān)閉時間。也可以通過測量和分析來確定彈球通過開關(guān)的最快速度,如果這樣的話,σmin可通過數(shù)學(xué)方法推導(dǎo)出來,它是最大球速和開關(guān)尺寸的函數(shù)。
圖2b是一個中速開關(guān)。由于彈球方向改變,球通過開關(guān)時的速度值范圍比最高速度要慢很多。在這個實驗中,我們測得這些開關(guān)的最短開關(guān)關(guān)閉時間是50ms。
慢速開關(guān)是指在軟件檢測到之前它總是關(guān)閉的,直到發(fā)出重新打開的命令,圖2c就是這樣一種開關(guān)。在上面一個圖中,球落在裝有開關(guān)的洞里,當(dāng)軟件檢測到有球存在以后,再觸發(fā)電磁閥將球彈出去;在下面圖中,球打在擋片上使彈簧將擋片拉下來,然后電磁閥再啟動將擋片重新推上去。
對于慢速開關(guān),最短開關(guān)閉合時間是觸發(fā)電磁閥的控制軟件的函數(shù),在我們實驗中電磁閥觸發(fā)頻率是10Hz。 一般我們假定開關(guān)閉合后沒有被鎖住,采用鎖住的方法通常不現(xiàn)實,有時候根本不可能,如像開關(guān)矩陣。如果把開關(guān)鎖住,結(jié)果就如圖2c中的開關(guān)一樣,其速度是發(fā)出解除鎖存信號任務(wù)的函數(shù)。
如果開關(guān)不是理想的,還必須測量它的穩(wěn)定時間,我們用τ來表示,它指達(dá)到正確反映開關(guān)狀態(tài)的穩(wěn)定值之前,開關(guān)可能彈起的時間。
我們發(fā)現(xiàn)圖2a中左邊的滾輪開關(guān)并不理想,但右邊的光電開關(guān)卻非常理想,它沒有任何反彈。出于分析的目的,我們對最壞情況穩(wěn)定時間τmax特別感興趣。
通過實驗我們可得到σmin和τmax。測量時我們把開關(guān)放在Vcc和GND之間,并通過一個限流下拉電阻,Vout接在邏輯分析儀上,然后將邏輯分析儀設(shè)定為上升沿觸發(fā)(圖3)。
用最快的速度將開關(guān)閉合后再打開。如果是一個理想的或接近理想的開關(guān),你可以看到開關(guān)很平滑地從0變?yōu)?,再從1變?yōu)?;如果是一個有反彈的開關(guān),輸出的波形跟圖4就有點類似。將這個實驗反復(fù)幾十次,記錄下每次的σmin和τmax。
在進(jìn)行這些實驗的時候,必須要考慮最終應(yīng)用中開關(guān)的工作情況。在彈球機上,球通過開關(guān)的速度比人按下再放開的速度要快,也比人用手將球滾過開關(guān)的速度要快,正因為此,在測試過程中我們采用電磁閥來觸動推桿將球推過開關(guān),而不是用手指來觸動開關(guān)或用手將球滾過開關(guān)。
設(shè)計為手工操作的開關(guān)要經(jīng)歷各種按壓,因此應(yīng)針對不同情況重復(fù)進(jìn)行實驗。例如輕輕按下時開關(guān)穩(wěn)定時間快,但閉合時間也短;而使勁按下開關(guān)閉合時間長,但也許由于反彈其穩(wěn)定時間也長,實驗時要記錄下最小、平均及最大σmin和τmax。為了使采樣數(shù)據(jù)真實,可以在工休場所進(jìn)行實驗,要求進(jìn)來休息的每一個人很快地按幾下開關(guān),再慢慢地按幾下,再幾次連著按兩下,其目的是為了能得到盡可能接近使用者的數(shù)據(jù)。如果是小孩用的東西,就叫小孩來按開關(guān);如果使用者是18至80歲的人,就讓這個年齡段的人來試。多收集數(shù)據(jù)或許可以防止災(zāi)難性的結(jié)果,不會使生產(chǎn)出來的產(chǎn)品有些人根本就不能正常使用。
評論