基于EFM32TG840F16 室內(nèi)甲醛檢測儀設(shè)計
2.3 采樣數(shù)據(jù)處理子程序
為提高檢測精度,采樣數(shù)據(jù)處理軟件設(shè)計是關(guān)鍵。系統(tǒng)采用采樣數(shù)據(jù)排隊與中值濾波法。數(shù)據(jù)排隊就是在給定的數(shù)據(jù)暫存區(qū)內(nèi)不斷地用最新數(shù)據(jù)取代最早數(shù)據(jù)的過程;利用軟件進行數(shù)據(jù)排隊具有通用性和靈活性。原理(見圖4)。
圖4:采樣數(shù)據(jù)更新排隊的雙倍暫存區(qū)擴展法
由圖4 可見, 將暫存區(qū)的空間擴大為需要保存數(shù)據(jù)空間的2 倍, 并將暫存區(qū)等分為前后相連的2 個區(qū), 每個區(qū)的長度與需保存數(shù)據(jù)長度相等。當(dāng)前采樣得到的一組新數(shù)據(jù)同時存入2 個區(qū)的對應(yīng)位置,這樣2 組相同采樣數(shù)據(jù)之間剛好間隔1 個區(qū)的長度, 間隔內(nèi)的全部數(shù)據(jù)連同最后1 個最新數(shù)據(jù)即為當(dāng)前排隊結(jié)果。以后每組新采樣數(shù)據(jù)依次向后存入暫存區(qū), 存滿后再從頭開始。每次采樣周期中完成相應(yīng)的排隊更新任務(wù)后記下當(dāng)前隊列的首(或末)地址作為指針并保存,供處理程序取數(shù)時使用,這樣一來就滿足實時排序的要求。
對排隊后的數(shù)據(jù)采取中位值濾波算法。算法的具體實現(xiàn)過程:取N 個連續(xù)采樣數(shù)據(jù),并按照遞增或遞減順序排列,取中間值作為本次采樣值。中位值濾波算法能有效地克服因偶然因素引起的干擾或波動而產(chǎn)生的誤差。即提高系統(tǒng)的檢測精度。
3 結(jié)束語
本甲醛檢測儀采用EFM32TG840F16 單片機作為核心控制單元,電路結(jié)構(gòu)簡單、外設(shè)功能模塊豐富,功耗低,待機時間長,支持IAP 功能,軟件升級方便,另外該MCU 性能強勁,可升級空間極大。
評論