如果您需要對按鈕、光電開關(guān)、旋轉(zhuǎn)變壓器、壓力、化學(xué)或其他傳感器進行實時采樣,您應(yīng)該以多快的速度對輸入進行采樣?每 10 毫秒?每 30 毫秒?您怎么知道惠的價格是多少?在之前的一篇文章(“如何選擇合理的采樣率”,2002 年 7 月,第 20 頁)中,我講述了我與一位工程師的對話。我問他的特定應(yīng)用的采樣率是多少。
他的回答是“5毫秒”。
“為什么?” 我問。
“因為它有效,”他說?!拔覀兓藥滋鞎r間測試各種采樣率,這就是有效的?!?/p>
在另一個應(yīng)用中,規(guī)范列出了僅根據(jù)其在類似應(yīng)用中的使用而制定的采樣率。將此值包含在規(guī)范中,給系統(tǒng)設(shè)計者帶來了任何靈活性。如果該速率實際上不是該應(yīng)用程序的采樣率怎么辦?如果新軟件似乎可以在指定的采樣率下工作,那么該采樣率將在應(yīng)用程序的生命周期內(nèi)保持固定,并且該值永遠(yuǎn)不會受到質(zhì)疑。只有當(dāng)采樣軟件不起作用時,采樣率才會受到質(zhì)疑。
在我之前的文章中,我解釋了一種科學(xué)地確定數(shù)字輸入采樣率的方法。在本文中,我將回顧這些信息并討論它如何應(yīng)用于模擬傳感器。
選擇多個
選擇采樣率的臨時方法會帶來幾個問題。
首先,不應(yīng)該花費數(shù)天的試錯測試來確定給定應(yīng)用程序的正確采樣率。相反,對當(dāng)前的應(yīng)用和問題進行系統(tǒng)工程分析只需進行幾次實驗就可以得出正確的答案。
其次,“”的定義是什么?一個應(yīng)用程序的答案不一定是另一應(yīng)用程序的答案。通常,使用試錯法來確定采樣率,并且測試是在僅包含傳感器采樣代碼(而不是整個應(yīng)用程序)的系統(tǒng)上執(zhí)行的。還記得對我的問題回答“5ms”的工程師嗎?他的代碼是為需要一些去抖的按鈕開關(guān)創(chuàng)建的。通過測試,他終選擇了 5 毫秒的輪詢時間,因為它似乎不會將單次推送錯誤地記錄為兩次,并且速度足夠快,不會將故意的兩次推送誤解為彈跳。
實際上,5 毫秒的輪詢時間對于該系統(tǒng)來說可能是可以接受的,但如果不考慮其他因素(特別是系統(tǒng)的實時響應(yīng)),很難說這是否是答案。
例如,如果處理器過載并且 5ms 采樣使用了 CPU 容量的 40%,該怎么辦?將采樣間隔增加到 10 毫秒將使 CPU 利用率減半。另一種選擇可能是以一半的速度執(zhí)行控制代碼。從系統(tǒng)的角度來看,哪個更好?或者更重要的是,用于采樣的資源、采樣對處理器使用的影響以及實時可調(diào)度性和優(yōu)先級反轉(zhuǎn)等其他因素之間是否存在良好的折衷?
選擇采樣率時,通常有幾個相互競爭的目標(biāo),例如:
盡可能快地采樣以獲得的準(zhǔn)確性。
盡可能慢地采樣以節(jié)省處理器時間。
采樣速度足夠慢,噪聲不會在輸入信號中占主導(dǎo)地位。
采樣速度足夠快以提供足夠的響應(yīng)時間。
以控制算法頻率的倍數(shù)進行采樣,以限度地減少抖動。
事實上,通常沒有適用于所有系統(tǒng)的答案,但當(dāng)考慮特定應(yīng)用程序和目標(biāo)硬件的特殊性時,通常有一個答案比大多數(shù)其他答案都更好。在本文中,我將展示如何系統(tǒng)地識別一個解決方案。通過實驗和數(shù)學(xué)分析相結(jié)合,確定一組良好的采樣率,并討論如何根據(jù)應(yīng)用程序的實時要求從該組中選擇正確的值。以下是確定采樣率的系統(tǒng)方法:
測量應(yīng)用的傳感器特性。
如果輸入中存在噪聲,請選擇用于過濾數(shù)據(jù)的算法。
僅根據(jù)函數(shù)計算采樣率的下限和上限。
確定使用下限利率和上限利率之間的權(quán)衡。
優(yōu)先考慮權(quán)衡,以確定計算的下限和上限之間的合適采樣率。
該方法將實驗測量與對應(yīng)用需求的分析理解相結(jié)合,以便設(shè)計出良好的解決方案。雖然該方法可用于大多數(shù)類型的傳感器,但在本文中我們僅關(guān)注模擬輸入。
模擬輸入
模擬輸入通過模數(shù)轉(zhuǎn)換器 (ADC) 向處理器提供數(shù)據(jù)。采樣率是指從 ADC 讀取數(shù)據(jù)并將其傳遞到使用該數(shù)據(jù)的其他應(yīng)用程序組件的次數(shù)。采樣率直接影響輸入信號的時間分辨率,就像 ADC 中的分辨率位數(shù)影響空間分辨率一樣。
誤差是采樣率的函數(shù)。我們將誤差 ε( t ) 定義為實際傳感器值與控制算法在任何時間使用的值t 之間的差值。 請注意,t 是連續(xù)的,因此隨著采樣率T s 的增加,輸入值恒定,誤差通常會增加。如圖 1 所示。

圖 1:模擬信號采樣產(chǎn)生的誤差示例 ε( t )=|y-Ksin(ω t )|
在信號處理中,奈奎斯特準(zhǔn)則用于確定采樣率。具體來說,奈奎斯特準(zhǔn)則規(guī)定采樣率必須至少是輸入信號中頻率分量的兩倍。給定這樣的采樣率,就可以重建原始輸入信號。
不幸的是,在讀取模擬傳感器時,奈奎斯特準(zhǔn)則不能用于大多數(shù)嵌入式控制應(yīng)用。重建原始信號需要強大的計算能力;因此需要數(shù)字信號處理器。另一方面,在嵌入式控制系統(tǒng)中,模擬輸入不需要重構(gòu)。相反,輸入通常用于提供感覺輸入作為反饋控制的基礎(chǔ)。因此,只需要的數(shù)據(jù)。因此,問題是該數(shù)據(jù)必須有多“新”才能將誤差保持在應(yīng)用程序指定的范圍內(nèi)。
電子發(fā)燒友App






























評論