国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

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

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

最近我問一個工程師他系統所使用的采樣率是多少,他回答說:“5毫秒”。我接著問他為什么,“因為它合適,”他說道!拔覀兓撕芏嗵靵頊y試不同的采樣率,只有這個最合適!

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




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

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

選擇標準

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

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

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

·采樣應快到能提供足夠的響應時間

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

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

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

1. 測量傳感器的特性。

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

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

4. 在最高和最低界限之間確定均衡點。

5. 按均衡點優先次序在最高和最低界限間確定采樣率。

這種方法適用于所有傳感器,下面我們以實例集中討論數字開關的情形。

數字開關

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



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

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

測量關閉時間

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

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

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

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

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

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

如果開關不是理想的,還必須測量它的穩定時間,我們用τ來表示,它指達到正確反映開關狀態的穩定值之前,開關可能彈起的時間。



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

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

用最快的速度將開關閉合后再打開。如果是一個理想的或接近理想的開關,你可以看到開關很平滑地從0變為1,再從1變為0;如果是一個有反彈的開關,輸出的波形跟圖4就有點類似。將這個實驗反復幾十次,記錄下每次的σmin和τmax。

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

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

理想開關

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

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



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

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

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

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

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

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

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

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




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

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

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

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

本文結論

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

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

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

廠商推薦

  • Microchip視頻專區
  • 常見深度學習模型介紹及應用培訓教程
  • Microchip第22屆中國技術精英年會上海首站開幕
  • 電動兩輪車設計生態系統
  • 技術熱潮席卷三城,2025 Microchip中國技術精英年會圓滿收官!
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表