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

      技術(shù)頻道

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

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


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


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

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


      首先,對于一個給定的應(yīng)用,不應(yīng)該花費幾天的時間通過試探糾錯試驗來確定恰當(dāng)?shù)牟蓸铀俾省H绻苓M(jìn)行系統(tǒng)的工程分析,只需少量的實驗便可得出正確的答案。


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


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


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


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


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


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


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


      * 采樣速率足夠高,以提供足夠的響應(yīng)時間;


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


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


      本文將示范如何結(jié)合試驗和數(shù)學(xué)分析,系統(tǒng)地確定一組較好的采樣速率,并討論當(dāng)應(yīng)用的實時要求給定時,如何從這組采樣速率中選擇一個恰當(dāng)?shù)臄?shù)值。


      以下是一種確定采樣速率的系統(tǒng)方法:


      1. 測量應(yīng)用的傳感器特性;


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


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


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


      5. 區(qū)分各種影響的輕重主次,在計算出的上限和下限之間確定一個適當(dāng)?shù)牟蓸铀俾省?/P>


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


      模擬輸入傳感器


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


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

      1

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


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


      確定采樣速率的范圍


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

      2

      上式中,n為ADC的位數(shù)。當(dāng)g(t)的導(dǎo)數(shù)最大時,g(t)的最大變化率G出現(xiàn)。因此:

      3


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


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


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


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

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

      4

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


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

      5


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


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

      2


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

      6


      式中fmax為實現(xiàn)最高分辨率的采樣速率。


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


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

      7

      或者如果已知DA/Dt:

      8

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


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


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


      這里的目標(biāo)是為了獲得近似的測量值。可能還需要一個更為完善的設(shè)備(如反映系統(tǒng)實際負(fù)載的設(shè)備)來對測量結(jié)果進(jìn)行精密調(diào)整。但是,這些初步的估計值可以給出對所需采樣速率的一個相當(dāng)好的一階近似,用作系統(tǒng)設(shè)計和實現(xiàn)中的指導(dǎo)。


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


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

      9
      或:

      10

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


      確定最佳采樣速率


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


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


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

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


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


      本文小結(jié)


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

      文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。

      主站蜘蛛池模板: 无码中文字幕乱码一区| 国产区精品一区二区不卡中文| 亚洲乱码国产一区网址| 无码人妻一区二区三区在线| 国产午夜一区二区在线观看| 91一区二区在线观看精品| 福利片免费一区二区三区| 奇米精品一区二区三区在| 欧美av色香蕉一区二区蜜桃小说| 亚洲AV无码一区东京热久久| 亚洲国产专区一区| 精品一区二区三区影院在线午夜| 国产成人精品第一区二区| 乱子伦一区二区三区| 国产丝袜美女一区二区三区| 精品aⅴ一区二区三区| 成人区精品人妻一区二区不卡| 色系一区二区三区四区五区| 国产精品熟女视频一区二区| 无码一区二区三区AV免费| 亚洲国产成人久久一区二区三区| 国产福利91精品一区二区三区| 国产亚洲一区二区手机在线观看| 亚洲国产精品一区二区第四页| 黑人一区二区三区中文字幕| 日韩精品一区二区三区视频| 亚洲中文字幕丝袜制服一区 | 亚洲av无一区二区三区| 亚洲午夜一区二区电影院| 亚洲一区二区三区高清不卡| 91视频一区二区三区| 日本一区二区三区四区视频| 内射一区二区精品视频在线观看 | 日韩电影一区二区三区| 国产精品va无码一区二区 | 狠狠爱无码一区二区三区| 国产一区二区三区日韩精品| 国产一区二区三区在线观看影院 | 一区视频在线播放| 三上悠亚一区二区观看| 亚洲一区二区三区高清|