新聞中心

EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 在數(shù)據(jù)采集應(yīng)用中怎樣選擇合適的采樣率

在數(shù)據(jù)采集應(yīng)用中怎樣選擇合適的采樣率

作者: 時間:2009-02-03 來源:網(wǎng)絡(luò) 收藏

理想開關(guān)

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

克服這種問題的最好方法是考慮實際應(yīng)用狀況然后再做取舍。假如10μs的閉合時間確實是有可能的,但在每一千次閉合中才會出現(xiàn)一次(0.1%),由于99.9%的時間里σmin都大于10μs,那么5ms最小閉合時間更加切合實際,而且比10μs最小閉合時間使用的CPU資源要少很多。但漏掉一個10μs開關(guān)閉合對于一個具體的應(yīng)用來說是不是可以接受呢?圖5:去反彈算法的狀態(tài)圖和布爾函數(shù)。

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

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

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

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

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

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

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

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







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

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

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

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

本文結(jié)論

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

雖然本文中提到的數(shù)字開關(guān)代表了很多嵌入式系統(tǒng)器件,但是它們還很不全面,不過我的目的是證明組合式分析實驗方法的有效性,而不是提供對所有可能存在的傳感器都適用的解決辦法。該方法依具體使用的傳感器、使用場合以及通過簡單試驗獲得合理數(shù)據(jù)的能力的不同而需要作不同程度的修正。


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉