基于EFM32TG840F16 MCU的室內(nèi)甲醛檢測儀設(shè)計
圖 2:主程序結(jié)構(gòu)框圖
系統(tǒng)上電后,進(jìn)行初始化和中斷處理操作,主要完成系統(tǒng)自檢和復(fù)位。初始化完成后,開始采樣濃度值,并判斷是否有按鍵按下。如果有按鍵按下,則進(jìn)行相應(yīng)數(shù)據(jù)處理,并執(zhí)行功能指令,然后在液晶顯示屏上顯示相應(yīng)信息。如果沒有按鍵按下,則顯示當(dāng)前實測濃度值,等待用戶進(jìn)行下一步操作,系統(tǒng)轉(zhuǎn)入定時計時階段。
2.2 低功耗中斷子程序
為減小系統(tǒng)功耗,延長電池的使用時間,設(shè)計時考慮設(shè)備在較長時間段內(nèi)處于待機狀態(tài)時,應(yīng)盡量降低功耗。系統(tǒng)設(shè)計低功耗中斷子程序(見圖3)
圖3:低功耗中斷子程序結(jié)構(gòu)框圖
這里采用一個定時器。當(dāng)定時器大于0 時,系統(tǒng)處于開機狀態(tài);當(dāng)定時器倒數(shù)到0 時,系統(tǒng)自動進(jìn)入低功耗模式,并關(guān)閉LCD 模塊和A/D 模塊。其中定時器是通過軟件對控制寄存器進(jìn)行設(shè)置實現(xiàn)的。具體操作是這樣:開機時,對定時器初始化一個大于0 的值,比如60,并且在每按一次有效鍵時,系統(tǒng)重新初始化這個值。因此,當(dāng)沒有按任何有效鍵時,60s 后就會自動進(jìn)入休眠狀態(tài),從而實現(xiàn)降耗目的。在休眠期間,若有按鍵按下,微處理器響應(yīng)中斷,系統(tǒng)退出休眠狀態(tài),返回到正常工作狀態(tài)。
2.3 采樣數(shù)據(jù)處理子程序
為提高檢測精度,采樣數(shù)據(jù)處理軟件設(shè)計是關(guān)鍵。系統(tǒng)采用采樣數(shù)據(jù)排隊與中值濾波法。數(shù)據(jù)排隊就是在給定的數(shù)據(jù)暫存區(qū)內(nèi)不斷地用最新數(shù)據(jù)取代最早數(shù)據(jù)的過程;利用軟件進(jìn)行數(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 性能強勁,可升級空間極大。
網(wǎng)線測試儀相關(guān)文章:網(wǎng)線測試儀原理
評論