要實時地采樣一個按鈕、光開關、分解器、壓力、化學或其它傳感器">

      技術頻道

      如何為模擬傳感器確定最佳采樣速率

      要實時地采樣一個按鈕、光開關、分解器、壓力、化學或其它傳感器,需要以多高的速率來對輸入進行采樣呢?是間隔10ms還是30ms?怎樣才知道最佳速率是多少呢?我曾問一位工程師在某個應用中最佳的采樣速率是多少,他回答5ms。至于原因,他說:“因為在這個速率下應用能夠工作,我們花了幾天時間來測試各種采樣速率,只有這個速率能很好地工作。”


      在另一個應用中,說明書列出了一個采樣速率,這是根據一個類似應用得到的。在說明書上規定這個數值使得系統的設計人員喪失了任何靈活性。如果事實上這個速率不是應用的最佳采樣速率該怎么辦呢?如果新的軟件看來能夠在規定的采樣速率下工作,那么在應用的整個生命周期中,這個速率將很可能將一直固定不變。只有在當采樣軟件不能工作時,采樣速率才可能會受到懷疑。


      為什么要采用試探糾錯法?

      在能夠采用科學和數學的方法時,為什么還要通過試探糾錯法來確定采樣速率呢?本文將詳細討論一個更為有效的簡單過程。利用特別的方法選擇采樣速率會帶來幾個問題。


      首先,對于一個給定的應用,不應該花費幾天的時間通過試探糾錯試驗來確定恰當的采樣速率。如果能進行系統的工程分析,只需少量的實驗便可得出正確的答案。


      其次,“最佳”的定義是什么?某個應用的最佳答案對于另一個應用未必也是最佳答案。試探糾錯法常用來確定采樣速率,而且測試是在只包含了傳感器采樣程序的最小系統(而非完整系統)上進行的。本文開始時所提到的那個工程師選擇“5ms”的采樣間隔,他的程序是為一個需要去抖動處理的按鈕開關所編寫的。通過測試,他最終選擇了5ms的查詢間隔時間,因為這時系統不會把單次按壓誤記為雙次按壓,另一方面這個間隔也足夠短,不至于把一個真正的雙次按壓誤認為抖動。


      事實上,5ms的查詢時間對于這個系統來說或許可以接受,但在考慮其它因素(特別是系統的實時響應)之前,很難斷定它是否是最佳選擇。


      例如,如果處理器負擔過重,而5ms一次的采樣需要占用CPU 40%的能力時怎么辦呢?一種選擇是將采樣間隔時間增加到10ms,這樣可以把對CPU的占用率降低一半,另一種選擇是以半速執行控制程序。從系統的角度看,哪一種方案更好呢?或者更重要的是,在采樣占用的資源與采樣對處理器使用的影響,以及實時調度能力和優先級轉換等其它因素之間是否有一個很好的折衷呢?


      在選擇采樣速率時,通常有幾個供選擇的目標,如:


      * 盡可能快地采樣,以獲得最高的精度;


      * 盡可能慢地采樣,以節省處理器的時間;


      * 采樣速率足夠低,使噪聲對輸入信號的影響不大;


      * 采樣速率足夠高,以提供足夠的響應時間;


      * 采樣速率是控制算法頻率的倍數,以便將抖動降到最低。


      事實上,沒有任何答案能夠最佳地適合所有系統,但在針對某個特定應用和目標硬件的特性時,通常有一個答案比其它大多數答案更好。


      本文將示范如何結合試驗和數學分析,系統地確定一組較好的采樣速率,并討論當應用的實時要求給定時,如何從這組采樣速率中選擇一個恰當的數值。


      以下是一種確定采樣速率的系統方法:


      1. 測量應用的傳感器特性;


      2. 如果輸入信號中包含噪聲,選擇一種對數據進行濾波的算法;


      3. 根據其功能計算出采樣速率的上限和下限;


      4. 分析采用上限和下限采樣速率時對各種性能的影響;


      5. 區分各種影響的輕重主次,在計算出的上限和下限之間確定一個適當的采樣速率。


      為了設計一個優秀的解決方案,這種方法結合了實驗測量和對應用需求的分析理解。雖然此方法可用于大多數類型的傳感器,但本文將集中討論模擬輸入傳感器。


      模擬輸入傳感器


      模擬輸入傳感器通過模數轉換器(ADC)為處理器提供數據。采樣速率是指單位時間內從ADC讀取數據并傳遞給使用該數據的其它應用部件的次數。采樣速率直接影響輸入信號的時間分辨率,其方式與ADC的位數對空間分辨率的影響大致類似。


      最大誤差是采樣速率的函數。我們將誤差e(t)定義為任意時刻t實際傳感器的值與控制算法所用值之間的差異。注意t是連續的,因此隨著采樣速率Ts提高,輸入值恒定,誤差通常會增大,如圖1所示。

      1

      信號處理技術中常用奈奎斯特準則來確定采樣速率。奈奎斯特準則規定,采樣速率至少必須為輸入信號中最高頻率分量的兩倍。采樣頻率滿足這一要求時,才可以重建原始輸入信號。


      但是,在讀取模擬傳感器時,奈奎斯特準則無法適用于大部分嵌入式控制應用。重建原始信號需要較強的計算能力,從而需要數字信號處理器。另一方面,在嵌入式控制系統中無需重建模擬輸入,它的輸入信號一般是用來提供敏感輸入,以作為反饋控制基礎的,因而系統只需要最近的數據。因此,這里的問題是數據必須要多“近”,才能將誤差保持在應用規定的最大范圍之內。


      確定采樣速率的范圍


      對于微控制器而言,采用奈奎斯特準則時,可以通過系統中的最高頻率分量來決定最低采樣速率fmin。我們將最高頻率分量記為F,并定義w=2pF。則模擬輸入中最壞的變化可表示為:

      2

      上式中,n為ADC的位數。當g(t)的導數最大時,g(t)的最大變化率G出現。因此:

      3


      在許多應用中,最大變化速率可能已由最大斜率限定,例如對于一個數字溫度計,可能規定為“1度/秒”。根據ADC的取值范圍,通過簡單的比例關系,可將此最大變化率轉換為Da/Dt(ADC單位/秒)的形式。


      在其它的場合,可以通過試驗來合理估計最大值。例如,假設將一個模擬速度傳感器連接到一臺帶有最小負載的發動機上,則速度的最大變化率將發生在發動機開足馬力后到達穩態的時候。測量時可使用模擬傳感器作為輸入,按處理器的最大能力快速采樣,并按照ADC的單位來記錄速度值。


      假設采樣速率為Dt。在一個Dt的間隔期間,讀取測量結果將產生一個DA。如果Da是兩個連續ADC讀數之間的差值,且DA=max(Da),我們就可以計算DA/Dt。如果由于Dt太小,輸入DA的有效位成為問題,則可以結合多個采樣轉而計算kDA/kDt,這里k為采樣的個數目,且k>1。


      注意,這個Dt只用于本次試驗,目的是找出Ts(最終應用的最恰當的Dt值),以便在占用資源最少的情況下保證足夠的精度。

      由于DA/Dt是規定的最大變化率,在定義上也稱為G,我們將關系記為:

      4

      設E為允許的最大誤差,它表示為信號最大范圍的一個百分比。即,對于一個最大值為5%的誤差,E=0.05。


      因此,ADC的最低采樣速率fmin可計算如下:

      5


      例如,如果一個應用的最大變化率相當于采樣一個50Hz的正弦波,用一個8位ADC來讀取傳感器,且最大誤差為5%。則fmin=50p/0.05=3.1kHz,采樣周期Tmin=1/fmin=318μs。


      有意思的是需要注意,最低采樣速率不是ADC位數的函數。但是,ADC的位數為最大誤差確定了一個邊界:

      2


      那么,如果應用規定的最大誤差為1個ADC單位(即ADC的最佳分辨率),多高的采樣速率能滿足這個誤差要求呢?答案是DA=1。為了計算這個值,在式4中設E=2-n,有:

      6


      式中fmax為實現最高分辨率的采樣速率。


      對于一個具體的ADC器件和應用,比fmax更高的采樣速率毫無必要,因為器件的分辨率限制了誤差的降低。


      模擬輸入傳感器的采樣速率下限如式4,上限如式6。作為小結,如果給定F:

      7

      或者如果已知DA/Dt:

      8

      注意,這些式子給出了一個限制,它在ADC滿刻度范圍(即0到2n-1)的基礎上假設了一個最大誤差。在一些應用中,可能沒有使用ADC的全部滿刻度范圍,此時應該用ADC的實際范圍來代替2n。


      例如,為了確定fs的有效范圍,考慮一個應用在受控高功率加熱系統中的溫度傳感器。這個傳感器連接到一個轉換時間為50μs的10位ADC。系統設計為在-20°C到200°C的溫度范圍之間工作。此外,控制算法要求在所有給定點傳感器讀數的誤差不超過0.5°C,以保證平穩控制。


      系統開發的起始階段通過一個實驗來確定DA/Dt。傳感器在一個小型溫度絕緣密封裝置中被冷卻到-20°C。密封裝置中放置有一個加熱器,它只對傳感器進行加熱。如果同時還對其它物體進行加熱,將使系統的負載增大,并且延緩加熱的速度。編寫并執行對傳感器進行采樣和記錄數據的程序代碼后,加熱器被開到最大功率。當傳感器被加熱到200°C時,切斷加熱器。此時,在一個反映實際應用的環境下對最大冷卻速率進行測量。如果是被動冷卻,只需打開熱封閉裝置即可;如果是主動冷卻 (如使用風扇),則應開啟有關的制冷設備。


      這里的目標是為了獲得近似的測量值。可能還需要一個更為完善的設備(如反映系統實際負載的設備)來對測量結果進行精密調整。但是,這些初步的估計值可以給出對所需采樣速率的一個相當好的一階近似,用作系統設計和實現中的指導。


      假設將傳感器從-20°C加熱到200°C需要380秒。仔細考察這些數據后我們發現,在1秒的間隔時間內,最大溫升為3.5°C。假設這個10位ADC已經過校準,ADC輸出為0時對應溫度-20°C,輸出0x3FF時對應溫度200°C,并且這個對應關系是線性的,則每秒變化3.5°C對應每秒變化16個ADC單位。因此,DA/Dt=16。同時,由于在220°C的范圍內規定的最大誤差為0.5°C,因此傳感器讀數的最大誤差為0.23%,即E=0.0023。


      采用式8計算模擬傳感器的采樣速率范圍,得:

      9
      或:

      10

      這意味著,采樣速率低于每秒6.8次可能會導致超出控制系統算法規定范圍的誤差,尤其是在最大加熱或冷卻周期期間。采樣速率的上限是每秒16次。但是注意,與信號跳躍變化的數字輸入傳感器不同,過快地采樣模擬傳感器不會導致誤差。事實上,采樣速率上限標志著一個閾值,超過這個速率更快地采樣也不會提高控制系統的精度。


      確定最佳采樣速率


      現在已經得到了可用值的一個范圍,下一步是根據應用和硬件的各種屬性,在這個取值范圍內確定最佳的采樣速率。以下是在確定最佳采樣速率時可能遇到的一些問題。


      你可能注意到了,ADC的實際轉換時間并不影響采樣速率。當轉換時間與采樣速率相比可以忽略時,這是一種普遍情況。另一方面,假設轉換時間為60ms(對于高分辨率ADC來說這個轉換時間是相當普遍的)。由于轉換時間較長,將ADC配置為連續模式工作,并將采樣速率設置為16.67Hz(正好是轉換速率的一個倍數)相當理想。如果想節省處理器的時間,也可以按照這個速率的一半-即8.33Hz-進行采樣。由于這個速率處在計算范圍之內,應用仍能正確工作。但是,不能以四分之一速率(4.16Hz)對模擬輸入進行采樣,因為這個速率在計算范圍之外,并且會導致超出規定范圍的誤差。以非轉換時間倍數的任何頻率采樣都將導致時鐘畸變,并有可能引發更多的問題,即使采樣速率在計算范圍之內亦然。


      作為另一個微幅調整的例子,假設已經確定控制系統需要更精確的傳感器讀數,即傳感器讀數的百分數誤差E必須降低。這使得fmin的下限必須提高,意味著傳感器需要更快地采樣。在新的規定值E已經給定的情況下,可以采用式8來快速確定新的最低采樣速率。這樣只花幾分鐘便可分析確定對采樣速率的調整,而不必花上幾小時或幾天來嘗試通過實驗進行調整。

      注意,這個例子考慮采用未經濾波的模擬輸入數據,如果需要采用輸入濾波來減小噪聲,那么在分析中必須考慮對濾波算法的需求。


      概括地說,采樣速率的取值范圍為設計提供了一個起點。如果有任何參數發生變化,可以相應地改變計算,根據需要獲得新的采樣速率。


      本文小結


      本文提供的方案不是一個適用于所有模擬傳感器的解決方案,而是展示了一條分析與實驗相結合的途徑。讀者應根據所選用的特定傳感器、具體應用的需求,以及自己通過簡單實驗獲得的合理測量結果,不斷修改這一方法。需要記住的一點是,在為嵌入式系統開發軟件時,應用基本設計可以顯著節省開發過程中的時間,并能獲得更好的結果,至少是與任何特別的方法同樣好的結果。

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 日韩毛片基地一区二区三区| 国产成人精品视频一区| 日韩好片一区二区在线看| 亚洲丰满熟女一区二区哦| 99精品国产高清一区二区三区| 精品深夜AV无码一区二区老年 | 99久久精品国产高清一区二区 | 乱中年女人伦av一区二区| 伊人久久一区二区三区无码| 国产精品区一区二区三在线播放| 亚洲免费视频一区二区三区| 精品国产日韩一区三区| 国产手机精品一区二区| 91一区二区在线观看精品| 久久久精品人妻一区二区三区四| 亚洲国产精品无码久久一区二区 | 亚洲日韩国产一区二区三区在线 | 日韩精品无码中文字幕一区二区 | 国产美女一区二区三区| 日韩人妻精品一区二区三区视频| 伊人久久大香线蕉av一区| 亚洲乱色熟女一区二区三区丝袜 | 久久久精品人妻一区亚美研究所| 久久99久久无码毛片一区二区| 亚洲片国产一区一级在线观看| 午夜无码一区二区三区在线观看 | 午夜福利av无码一区二区| 日韩亚洲一区二区三区| 一区二区三区日韩精品| 国产精品夜色一区二区三区| 国产香蕉一区二区在线网站| 国产精品无码一区二区在线| 国产一区二区影院| 一区二区视频免费观看| 伊人色综合一区二区三区| 精品国产一区二区三区色欲| 亚洲AV无码国产一区二区三区| 国产精品成人一区二区三区| 久久综合精品国产一区二区三区| 综合久久一区二区三区 | 视频一区二区精品的福利|