在數據采集應用中怎樣選擇合適的采樣率

發(fā)布時(shí)間:2011-1-20 20:31    發(fā)布者:techshare
關(guān)鍵詞: 采樣率 , 數據采集
在具體數據采集應用中,試錯測試可能使用得最為普遍,但它既不是最快的也不是最好的確定抽樣率的方法。采用系統工程分析并通過(guò)一系列預先設計好的試驗,可以幫助快速找到適合的采樣率。本文以彈球開(kāi)關(guān)為例,介紹選擇采樣率時(shí)應考慮的一些因素。

最近我問(wèn)一個(gè)工程師他系統所使用的采樣率是多少,他回答說(shuō):“5毫秒”。我接著(zhù)問(wèn)他為什么,“因為它合適,”他說(shuō)道!拔覀兓撕芏嗵靵(lái)測試不同的采樣率,只有這個(gè)最合適!

他的系統是一個(gè)按鈕開(kāi)關(guān),要求去除掉一些反彈效應。他和他的試驗小組最后選擇5ms作為間隔是因為在測試過(guò)程中,采用這樣的采樣率既不會(huì )將一個(gè)信號錯誤地認為是兩個(gè)信號,且由于速度快,也不會(huì )將有用的雙擊誤認為是反彈。




5毫秒也許是一個(gè)可以接受的數值,但由于沒(méi)有考慮系統其它因素,尤其是實(shí)時(shí)反應時(shí)間,我們確實(shí)無(wú)法知道這是不是最好的答案。

假設處理器過(guò)載,例如5ms采樣時(shí)間造成40%過(guò)載,情況會(huì )怎樣呢?可以將采樣時(shí)間間隔增加到10ms而把代碼占用的CPU資源降低到20%,另外一種方法是保持采樣率不變,而將控制碼執行的速度降低一半。那么從系統的角度來(lái)看哪一種方法更好呢?在采樣資源和處理器利用率以及其它實(shí)時(shí)因素(如調度與優(yōu)先級調換)間有沒(méi)有一種好的折衷方法呢?下面讓我們具體來(lái)看一看。

選擇標準

在選擇采樣率時(shí),有幾個(gè)對立的因素要考慮,這些因素包括:

·采樣應盡可能快,這樣精度才高

·采樣應盡可能慢,以節約處理器的時(shí)間

·采樣應快到能提供足夠的響應時(shí)間

·采樣應慢到輸入信號不受噪聲的影響

·采樣率應為控制算法頻率的倍數,以減少抖動(dòng)

由于沒(méi)有一個(gè)答案能滿(mǎn)足所有的要求,所以在考慮具體應用特性時(shí)只能找到一種比其它都更好的采樣率,本文介紹的技術(shù)將有助于確定這個(gè)采樣率,包括下面幾個(gè)步驟:

1. 測量傳感器的特性。

2. 如果輸入有噪聲,應選擇合適的算法將其濾掉。

3. 只在滿(mǎn)足功能的基礎上計算采樣率的最高和最低界限。

4. 在最高和最低界限之間確定均衡點(diǎn)。

5. 按均衡點(diǎn)優(yōu)先次序在最高和最低界限間確定采樣率。

這種方法適用于所有傳感器,下面我們以實(shí)例集中討論數字開(kāi)關(guān)的情形。

數字開(kāi)關(guān)

數字輸入最簡(jiǎn)單的形式是開(kāi)關(guān),當開(kāi)關(guān)合上時(shí),開(kāi)關(guān)的值是1,打開(kāi)時(shí)值為0,如果是負邏輯,結果剛好相反。很多嵌入式系統都有一個(gè)或多個(gè)開(kāi)關(guān),如果開(kāi)關(guān)很少,少于純數字輸入/輸出(DIO)端口數量時(shí),它們通常直接接到DIO端口上;開(kāi)關(guān)數量多的時(shí)候則由一個(gè)開(kāi)關(guān)矩陣來(lái)控制,這個(gè)以后另文再述。



一個(gè)理想的開(kāi)關(guān)在合上時(shí)的信號為1,打開(kāi)時(shí)信號是0,從一種狀態(tài)到另一種狀態(tài)的轉換是瞬時(shí)完成的。但實(shí)際上,還有上升和下降時(shí)間需要考慮,由于這些時(shí)間和電路電容成正比,所以通常只有幾個(gè)納秒。在我們的分析中,只要傳感器數據讀取速度慢過(guò)每秒10萬(wàn)次,就可以將上升和下降時(shí)間忽略不計,因為讀取速度慢,有些開(kāi)關(guān)如光開(kāi)關(guān)和結構緊固的瞬態(tài)開(kāi)關(guān)其特性還是非常理想的。

然而大多數機械開(kāi)關(guān)都有反彈效應。當開(kāi)關(guān)合上時(shí),從0到1的轉換不是在瞬間完成或者說(shuō)不是連續上升的。圖1a顯示了從示波器上看到的一個(gè)機械開(kāi)關(guān)輸出轉換過(guò)程的波形,圖1b是開(kāi)關(guān)輸出的數字信號波形。主脈沖前后多余的脈沖就是所謂的反彈,它產(chǎn)生于開(kāi)關(guān)內部機械彈片發(fā)生接觸的時(shí)候。如果反彈會(huì )造成不良的影響,就必須對其進(jìn)行濾波,這個(gè)過(guò)程通常稱(chēng)為去反彈。

測量關(guān)閉時(shí)間

要決定采樣率,就需要知道最小開(kāi)關(guān)關(guān)閉時(shí)間,我們用σmin表示,它也是確保采樣軟件探測到開(kāi)關(guān)狀態(tài)的最短時(shí)間。有時(shí)候系統會(huì )具體規定,在沒(méi)有規定的情況下,就需要通過(guò)實(shí)驗,在具體系統需求和硬件特性的基礎上確定。

最小開(kāi)關(guān)時(shí)間一般用來(lái)作為數據噪聲的閾值使用,而不是實(shí)際開(kāi)關(guān)打開(kāi)或關(guān)閉的時(shí)間。如果在輸入端檢測到脈沖的持續時(shí)間小于最小關(guān)閉時(shí)間,軟件就可能把它漏過(guò),我們不把這個(gè)看作是故障。另一方面,如果脈沖時(shí)間等于或大于σmin,軟件將保證檢測到開(kāi)關(guān)的狀態(tài)。

下面是我和一些工程技術(shù)人員對彈球機的研究經(jīng)驗分析,彈球機是一種很好的實(shí)驗工具,因為它具備好幾種類(lèi)似于數字輸入開(kāi)關(guān)的機構,每種都有不同的特性,圖2顯示了其中的一些。 圖2a中的開(kāi)關(guān)必須經(jīng)常監測,因為彈球運行速度很快,對于這類(lèi)開(kāi)關(guān),我們測量得到它的σmin大概是10ms。(實(shí)際測量值帶有小數位,我們分析時(shí)也是使用帶小數的實(shí)際測量值,但為討論方便起見(jiàn)本文中我們都四舍五入取為整數。)這個(gè)值根據環(huán)境不同而有所不同,改變環(huán)境特性可能會(huì )得到不同的最快開(kāi)關(guān)關(guān)閉時(shí)間。也可以通過(guò)測量和分析來(lái)確定彈球通過(guò)開(kāi)關(guān)的最快速度,如果這樣的話(huà),σmin可通過(guò)數學(xué)方法推導出來(lái),它是最大球速和開(kāi)關(guān)尺寸的函數。

圖2b是一個(gè)中速開(kāi)關(guān)。由于彈球方向改變,球通過(guò)開(kāi)關(guān)時(shí)的速度值范圍比最高速度要慢很多。在這個(gè)實(shí)驗中,我們測得這些開(kāi)關(guān)的最短開(kāi)關(guān)關(guān)閉時(shí)間是50ms。

慢速開(kāi)關(guān)是指在軟件檢測到之前它總是關(guān)閉的,直到發(fā)出重新打開(kāi)的命令,圖2c就是這樣一種開(kāi)關(guān)。在上面一個(gè)圖中,球落在裝有開(kāi)關(guān)的洞里,當軟件檢測到有球存在以后,再觸發(fā)電磁閥將球彈出去;在下面圖中,球打在擋片上使彈簧將擋片拉下來(lái),然后電磁閥再啟動(dòng)將擋片重新推上去。

對于慢速開(kāi)關(guān),最短開(kāi)關(guān)閉合時(shí)間是觸發(fā)電磁閥的控制軟件的函數,在我們實(shí)驗中電磁閥觸發(fā)頻率是10Hz。 一般我們假定開(kāi)關(guān)閉合后沒(méi)有被鎖住,采用鎖住的方法通常不現實(shí),有時(shí)候根本不可能,如像開(kāi)關(guān)矩陣。如果把開(kāi)關(guān)鎖住,結果就如圖2c中的開(kāi)關(guān)一樣,其速度是發(fā)出解除鎖存信號任務(wù)的函數。

如果開(kāi)關(guān)不是理想的,還必須測量它的穩定時(shí)間,我們用τ來(lái)表示,它指達到正確反映開(kāi)關(guān)狀態(tài)的穩定值之前,開(kāi)關(guān)可能彈起的時(shí)間。



我們發(fā)現圖2a中左邊的滾輪開(kāi)關(guān)并不理想,但右邊的光電開(kāi)關(guān)卻非常理想,它沒(méi)有任何反彈。出于分析的目的,我們對最壞情況穩定時(shí)間τmax特別感興趣。

通過(guò)實(shí)驗我們可得到σmin和τmax。測量時(shí)我們把開(kāi)關(guān)放在Vcc和GND之間,并通過(guò)一個(gè)限流下拉電阻,Vout接在邏輯分析儀上,然后將邏輯分析儀設定為上升沿觸發(fā)(圖3)。

用最快的速度將開(kāi)關(guān)閉合后再打開(kāi)。如果是一個(gè)理想的或接近理想的開(kāi)關(guān),你可以看到開(kāi)關(guān)很平滑地從0變?yōu)?,再從1變?yōu)?;如果是一個(gè)有反彈的開(kāi)關(guān),輸出的波形跟圖4就有點(diǎn)類(lèi)似。將這個(gè)實(shí)驗反復幾十次,記錄下每次的σmin和τmax。

在進(jìn)行這些實(shí)驗的時(shí)候,必須要考慮最終應用中開(kāi)關(guān)的工作情況。在彈球機上,球通過(guò)開(kāi)關(guān)的速度比人按下再放開(kāi)的速度要快,也比人用手將球滾過(guò)開(kāi)關(guān)的速度要快,正因為此,在測試過(guò)程中我們采用電磁閥來(lái)觸動(dòng)推桿將球推過(guò)開(kāi)關(guān),而不是用手指來(lái)觸動(dòng)開(kāi)關(guān)或用手將球滾過(guò)開(kāi)關(guān)。

設計為手工操作的開(kāi)關(guān)要經(jīng)歷各種按壓,因此應針對不同情況重復進(jìn)行實(shí)驗。例如輕輕按下時(shí)開(kāi)關(guān)穩定時(shí)間快,但閉合時(shí)間也短;而使勁按下開(kāi)關(guān)閉合時(shí)間長(cháng),但也許由于反彈其穩定時(shí)間也長(cháng),實(shí)驗時(shí)要記錄下最小、平均及最大σmin和τmax。為了使采樣數據真實(shí),可以在工休場(chǎng)所進(jìn)行實(shí)驗,要求進(jìn)來(lái)休息的每一個(gè)人很快地按幾下開(kāi)關(guān),再慢慢地按幾下,再幾次連著(zhù)按兩下,其目的是為了能得到盡可能接近使用者的數據。如果是小孩用的東西,就叫小孩來(lái)按開(kāi)關(guān);如果使用者是18至80歲的人,就讓這個(gè)年齡段的人來(lái)試。多收集數據或許可以防止災難性的結果,不會(huì )使生產(chǎn)出來(lái)的產(chǎn)品有些人根本就不能正常使用。

理想開(kāi)關(guān)

理想開(kāi)關(guān)的穩定時(shí)間永遠是0,采樣率要保證所有開(kāi)關(guān)的閉合都檢測到,因此比最小閉合時(shí)間短。雖然看起來(lái)簡(jiǎn)單,但也有一個(gè)取舍的問(wèn)題,如果σmin是10μs,我們是否要每10μs就檢測一次?這樣做肯定會(huì )耗盡CPU所有的可用資源。

克服這種問(wèn)題的最好方法是考慮實(shí)際應用狀況然后再做取舍。假如10μs的閉合時(shí)間確實(shí)是有可能的,但在每一千次閉合中才會(huì )出現一次(0.1%),由于99.9%的時(shí)間里σmin都大于10μs,那么5ms最小閉合時(shí)間更加切合實(shí)際,而且比10μs最小閉合時(shí)間使用的CPU資源要少很多。但漏掉一個(gè)10μs開(kāi)關(guān)閉合對于一個(gè)具體的應用來(lái)說(shuō)是不是可以接受呢?



答案取決于實(shí)際的應用。如果開(kāi)關(guān)閉合是由人來(lái)操縱,我們可以假設按開(kāi)關(guān)時(shí)太輕了,使用者只要按重一點(diǎn)就可以了;如果閉合是彈球機中的一個(gè)開(kāi)關(guān),我們可以認為開(kāi)關(guān)沒(méi)有真正閉合,結果也就是玩的人得不到分;但是如果開(kāi)關(guān)的閉合與有毒氣體的釋放有關(guān),那么我們就要把它測出來(lái),在這種情形下,我們要將開(kāi)關(guān)鎖住,或者由一個(gè)專(zhuān)門(mén)的小處理器每隔10μs讀取一次數據。

我們假設只有檢測到σmin大于5ms的開(kāi)關(guān)閉合是可以接受的,這時(shí)精度也有99.9%,但如果此時(shí)CPU過(guò)載了又怎么辦?可不可以用10ms來(lái)代替5ms從而進(jìn)一步使CPU負載減半呢?根據實(shí)驗,這樣精度會(huì )降到99.0%。如果在實(shí)際應用中沒(méi)有問(wèn)題,那么這種取舍還是值得的。但是如果采樣率改為10ms后精度降到了85%,這種取舍就有點(diǎn)危險了。記錄下所有σmin的實(shí)驗結果能有助于你正確評估如何在精度和CPU的利用率間找到平衡。

到現在為止所提到的開(kāi)關(guān)都是理想狀態(tài)下的開(kāi)關(guān),開(kāi)關(guān)反彈對選擇合適采樣率又增加了一些影響。非理想開(kāi)關(guān) 我們來(lái)看一下圖2a中的滾球開(kāi)關(guān)。該開(kāi)關(guān)的輸出如圖4a,過(guò)濾后的波形如圖4b。輸出通過(guò)去反彈算法過(guò)濾,以給應用處理代碼提供一個(gè)純凈的信號,表示開(kāi)關(guān)的閉合狀態(tài)。已有很多文獻介紹了多種硬件和軟件去反彈算法。下面分析中所用到的算法如圖5所示,它是一個(gè)同步狀態(tài)機,需要對同一數值進(jìn)行兩次連續采樣,以記錄開(kāi)關(guān)的狀態(tài)改變。對不同的算法,采樣率分析和結果會(huì )有所不同。

在嵌入式處理器中可以直接用布爾代數執行這種算法,該方法的另一個(gè)優(yōu)點(diǎn)是可對多個(gè)開(kāi)關(guān)同時(shí)去反彈。例如表1中的代碼顯示了圖5去反彈算法執行情況,這里同時(shí)對8個(gè)獨立的輸入進(jìn)行處理,假設每個(gè)輸入都用輸入變量x的一位來(lái)表示。

如果硬件設計可以靈活改變,也可采用FPGA在硬件中執行狀態(tài)機邏輯。在這種情形下,不需要再用軟件對開(kāi)關(guān)進(jìn)行去反彈,可以認為開(kāi)關(guān)是理想的,硬件狀態(tài)機的時(shí)序和我們下面的分析沒(méi)有太大區別。

如果開(kāi)關(guān)關(guān)閉后在最小關(guān)閉時(shí)間內采樣少于兩次,開(kāi)關(guān)的動(dòng)作就會(huì )被過(guò)濾掉,這也就決定了采樣周期的上限是σmin/2。

現在我們來(lái)看看采樣周期的下限,我們將去反彈算法的最低要求看作是不能將兩次連續的開(kāi)關(guān)動(dòng)作搞錯。例如我們得到兩個(gè)為1的樣本,后面是兩個(gè)0,然后又是兩個(gè)1。假定只有最后兩個(gè)1是穩定狀態(tài),此時(shí)過(guò)濾后的輸出在穩定時(shí)間內至少有4個(gè)樣本。為防止出現誤判斷,在開(kāi)關(guān)關(guān)閉瞬間我們必須最多取三次樣,所以采樣周期要大于τmax/3。

將上限和下限合在一起,對于圖5所示的狀態(tài)機數字輸入去反彈輸入驅動(dòng)器我們可得采樣周期Ts(采樣率fs=1/Ts)的條件:




有可能出現的值表明了采樣率可接受取舍范圍。假設τmax是3ms,σmin是10ms,那么由等式1可得1mss<5ms。為了盡量減少采樣占用的CPU時(shí)間資源,我們把采樣時(shí)間定在5ms附近。

采取快速采樣(如1ms)的另一個(gè)理由是試驗獲得的關(guān)閉時(shí)間也許不是最小值。如果希望采集到99.0%的開(kāi)關(guān)閉合,快一些的采樣率也許能將這個(gè)數值提高一點(diǎn)。但為了避免系統將反彈誤認為是開(kāi)關(guān)閉合,采樣率絕不要小于1ms。

當然,也可能采樣率范圍都不可接受。我們以一個(gè)特殊的反彈開(kāi)關(guān)作為例子,它的穩定時(shí)間是6ms,最小關(guān)閉時(shí)間是4ms。此時(shí),式1得到一個(gè)空集,沒(méi)有一個(gè)采樣率可以保證捕獲到開(kāi)關(guān)的閉合且確保反彈不會(huì )誤認為是好幾次開(kāi)關(guān)閉合。

要解決這個(gè)問(wèn)題,設計人員就必須考慮其它的方法。有一種辦法是采用不同的去反彈算法,如在三個(gè)1而不是兩個(gè)連續的1中找出兩個(gè)1;另一種辦法是考慮開(kāi)關(guān)閉合時(shí)的內部到達時(shí)間;第三種辦法是要么提高σmin,偶爾錯過(guò)開(kāi)關(guān)的閉合,要么減少τmax,偶爾將一次開(kāi)關(guān)閉合當作兩個(gè)事件。不管選擇哪一種,這些方法都要容易記錄下來(lái),如果選擇被證明不好,更變設計僅僅只需改變采樣率就可以了,或者改變有限狀態(tài)機定義的算法。

本文結論

歸納起來(lái),我們用試驗和分析得到輸入的采樣率有效范圍,當范圍確定以后,再考慮實(shí)際應用的其它因素,在可接受范圍內選擇一個(gè)最佳采樣率。采用這種方法可以相對較快地得到合適采樣率,因其它應用和系統問(wèn)題進(jìn)行調節也只要幾分鐘就可以了,不需要用幾天或幾個(gè)星期的時(shí)間進(jìn)行試錯測試和微調。

雖然本文中提到的數字開(kāi)關(guān)代表了很多嵌入式系統器件,但是它們還很不全面,不過(guò)我的目的是證明組合式分析實(shí)驗方法的有效性,而不是提供對所有可能存在的傳感器都適用的解決辦法。該方法依具體使用的傳感器、使用場(chǎng)合以及通過(guò)簡(jiǎn)單試驗獲得合理數據的能力的不同而需要作不同程度的修正。
本文地址:http://selenalain.com/thread-50295-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页