基于EFM32TG840F16室內(nèi)甲醛檢測(cè)儀設(shè)計(jì)方案
甲醛是一種重要的化工原料和有機(jī)溶劑,廣泛使用于家庭裝修的材料中。過量甲醛氣體,將誘發(fā)疾病甚至致癌,直接危害著人們的身體健康和生命安全。本檢測(cè)儀采用32 位超低功耗EFM32TG840F16 微處理器和高靈敏度甲醛傳感器CH20/S-10,實(shí)現(xiàn)甲醛濃度的信號(hào)處理和采樣,系統(tǒng)外接通訊接口及必要的擴(kuò)展功能模塊,構(gòu)建智能化、多功能的檢測(cè)系統(tǒng)。
1. 系統(tǒng)硬件設(shè)計(jì)
甲醛檢測(cè)儀硬件主要由單片機(jī)主控系統(tǒng)、甲醛傳感器接口、液晶顯示(LCD)、功能鍵盤、數(shù)據(jù)存儲(chǔ)、打印和報(bào)警輸出等功能模塊構(gòu)成。系統(tǒng)硬件結(jié)構(gòu)框圖(見圖1)。
圖1 系統(tǒng)功能框圖
該系統(tǒng)采用32 位EFM32TG840F16 單片機(jī)作為主控核心,內(nèi)嵌16KB Flash 程序存儲(chǔ)器和4KB RAM、多達(dá)160 段LCD 驅(qū)動(dòng)器(最大8COM驅(qū)動(dòng)、支持動(dòng)畫、閃爍等各種特效)、8 通道/12 位 ADC(支持硬件過采樣)、2個(gè)USART(支持SPI\UART\I2S)、1個(gè)LEUART、1個(gè)LESENSE(支持阻、感、容性信號(hào)檢測(cè))、3個(gè)運(yùn)放、硬件加解密AES、2個(gè)12位DAC 及大量的I/O 端口等,完全滿足本甲醛檢測(cè)儀的各項(xiàng)功能需求。該芯片主要特點(diǎn)是:低電壓(1.85 ~ 3.8V)、低功耗( EM2模式下僅有0.9uA)、 32 位指令、高性能(基于Cortex-M3內(nèi)核),具有極低的運(yùn)行功耗、快速的喚醒時(shí)間、功能強(qiáng)大、高抗擾(未用引腳都是和MCU內(nèi)部斷開的)、外設(shè)可以自主工作(主要得益于DMA和PRS外設(shè)反射系統(tǒng))以及超節(jié)能(ADC:12bit,1Msps,僅需350uA;Analog Comparator:僅需100nA;LCD:本位功耗0.55uA;LEUART:9600波特率下僅需150nA;AES:128/256bit 加/解密僅需54/75個(gè)周期)、便于智能化和便攜式等優(yōu)點(diǎn)。而且齊全的配套開發(fā)工具比如開發(fā)板具有電流實(shí)時(shí)監(jiān)控功能,可以定位代碼位置,便于工程師及時(shí)優(yōu)化代碼以節(jié)能![member]
1.1 甲醛傳感器接口模塊
傳感器接口模塊由CH20/S-10 甲醛傳感器、I/ V 轉(zhuǎn)換器RCV420 等組成。甲醛傳感器由甲醛探
頭和CH20 傳感器構(gòu)成。當(dāng)室內(nèi)甲醛氣體被內(nèi)部采樣系統(tǒng)吸收后,產(chǎn)生與甲醛濃度成正比的電流值,由于單片機(jī)A/D 采樣的是電壓值,而被檢測(cè)的是微量的電流值;因而需要將電流值放大并轉(zhuǎn)換為相應(yīng)的電壓值。采用集成I/V 轉(zhuǎn)換器RCV420,將電流值轉(zhuǎn)換為對(duì)應(yīng)的0 ~ 3.6V 電壓, 送至 EFM32TG840F16 的A/D 轉(zhuǎn)換接口ADC,實(shí)現(xiàn)對(duì)濃度信號(hào)的檢測(cè)。單片機(jī)進(jìn)行運(yùn)算和處理,將處理結(jié)果及范圍進(jìn)行查表和分段線性化,完成傳感器信號(hào)與濃度高低對(duì)應(yīng)。系統(tǒng)中RCV420 具有精密運(yùn)放和電阻網(wǎng)絡(luò)功能,能將4 ~ 20mA 環(huán)路電流轉(zhuǎn)換為 0 ~ 3.6V 電壓, 在無外部調(diào)整的情況下,可用獲得 86dB 的共模抑制比, 具有高性能及抗干擾能力。
1.2 數(shù)據(jù)存儲(chǔ)與打印模塊
在EFM32TG840F16 外擴(kuò)展2KB 的E2PROM(也可用片內(nèi)flash模擬EEPROM),通過I2C 總線與EFM32TG840F16數(shù)據(jù)口相連,用于存儲(chǔ)采樣來的甲醛濃度數(shù)據(jù),以備打印機(jī)打印。打印機(jī)接口電路通過RS-232 串行口直接和微處理器相連,通過采用軟件設(shè)定的方式打印出甲醛濃度值。
1.3 鍵盤與顯示模塊
系統(tǒng)外接鍵盤和LCD 顯示設(shè)備,實(shí)現(xiàn)人機(jī)對(duì)話功能。鍵盤設(shè)置為3×3 陣列鍵盤,設(shè)有功能選擇鍵、OK 鍵、報(bào)警確認(rèn)及打印鍵,完成濃度顯示、數(shù)據(jù)查詢、打印及開關(guān)機(jī)功能。微處理器EFM32TG840F16 內(nèi)含LCD 驅(qū)動(dòng)電路,可驅(qū)動(dòng)160 段的LCD,且超低功耗,特別適合便攜式儀器儀表中使用。用戶通過LCD 顯示,讀取檢測(cè)濃度值、打印和設(shè)置相關(guān)功能等信息。
1.4 其它模塊
本系統(tǒng)的供電電壓為3V,采用兩節(jié)電池供電,也可外接3V 直流電源。系統(tǒng)的時(shí)鐘是外置晶振提供。為滿足個(gè)性化需要,還增加蜂鳴器報(bào)警電路。
2. 系統(tǒng)軟件設(shè)計(jì)
在軟件設(shè)計(jì)中采用模塊化設(shè)計(jì)方法,使用嵌入式C 語言編寫,在IAR 編譯環(huán)境中進(jìn)行。這不僅給程序的調(diào)試、修改提供很大方便,而且為今后功能的進(jìn)一步擴(kuò)展創(chuàng)造有利條件。
2.1 主程序設(shè)計(jì)
主程序是系統(tǒng)軟件的核心,它通過調(diào)用各子程序便可實(shí)現(xiàn)系統(tǒng)功能。系統(tǒng)主程序結(jié)構(gòu)框圖(見圖 2)。
系統(tǒng)上電后,進(jìn)行初始化和中斷處理操作,主要完成系統(tǒng)自檢和復(fù)位。初始化完成后,開始采樣濃度值,并判斷是否有按鍵按下。如果有按鍵按下,則進(jìn)行相應(yīng)數(shù)據(jù)處理,并執(zhí)行功能指令,然后在液晶顯示屏上顯示相應(yīng)信息。如果沒有按鍵按下,則顯示當(dāng)前實(shí)測(cè)濃度值,等待用戶進(jìn)行下一步操作,系統(tǒng)轉(zhuǎn)入定時(shí)計(jì)時(shí)階段。
2.2 低功耗中斷子程序
為減小系統(tǒng)功耗,延長(zhǎng)電池的使用時(shí)間,設(shè)計(jì)時(shí)考慮設(shè)備在較長(zhǎng)時(shí)間段內(nèi)處于待機(jī)狀態(tài)時(shí),應(yīng)盡量降低功耗。系統(tǒng)設(shè)計(jì)低功耗中斷子程序(見圖3)
這里采用一個(gè)定時(shí)器。當(dāng)定時(shí)器大于0 時(shí),系統(tǒng)處于開機(jī)狀態(tài);當(dāng)定時(shí)器倒數(shù)到0 時(shí),系統(tǒng)自動(dòng)進(jìn)入低功耗模式,并關(guān)閉LCD 模塊和A/D 模塊。其中定時(shí)器是通過軟件對(duì)控制寄存器進(jìn)行設(shè)置實(shí)現(xiàn)的。具體操作是這樣:開機(jī)時(shí),對(duì)定時(shí)器初始化一個(gè)大于0 的值,比如60,并且在每按一次有效鍵時(shí),系統(tǒng)重新初始化這個(gè)值。因此,當(dāng)沒有按任何有效鍵時(shí),60s 后就會(huì)自動(dòng)進(jìn)入休眠狀態(tài),從而實(shí)現(xiàn)降耗目的。在休眠期間,若有按鍵按下,微處理器響應(yīng)中斷,系統(tǒng)退出休眠狀態(tài),返回到正常工作狀態(tài)。
2.3 采樣數(shù)據(jù)處理子程序
為提高檢測(cè)精度,采樣數(shù)據(jù)處理軟件設(shè)計(jì)是關(guān)鍵。系統(tǒng)采用采樣數(shù)據(jù)排隊(duì)與中值濾波法。數(shù)據(jù)排隊(duì)就是在給定的數(shù)據(jù)暫存區(qū)內(nèi)不斷地用最新數(shù)據(jù)取代最早數(shù)據(jù)的過程;利用軟件進(jìn)行數(shù)據(jù)排隊(duì)具有通用性和靈活性。原理(見圖4)。
由圖4 可見, 將暫存區(qū)的空間擴(kuò)大為需要保存數(shù)據(jù)空間的2 倍, 并將暫存區(qū)等分為前后相連的2 個(gè)區(qū), 每個(gè)區(qū)的長(zhǎng)度與需保存數(shù)據(jù)長(zhǎng)度相等。當(dāng)前采樣得到的一組新數(shù)據(jù)同時(shí)存入2 個(gè)區(qū)的對(duì)應(yīng)位置,這樣2 組相同采樣數(shù)據(jù)之間剛好間隔1 個(gè)區(qū)的長(zhǎng)度, 間隔內(nèi)的全部數(shù)據(jù)連同最后1 個(gè)最新數(shù)據(jù)即為當(dāng)前排隊(duì)結(jié)果。以后每組新采樣數(shù)據(jù)依次向后存入暫存區(qū), 存滿后再從頭開始。每次采樣周期中完成相應(yīng)的排隊(duì)更新任務(wù)后記下當(dāng)前隊(duì)列的首(或末)地址作為指針并保存, 供處理程序取數(shù)時(shí)使用,這樣一來就滿足實(shí)時(shí)排序的要求。
對(duì)排隊(duì)后的數(shù)據(jù)采取中位值濾波算法。算法的具體實(shí)現(xiàn)過程:取N 個(gè)連續(xù)采樣數(shù)據(jù),并按照遞增或遞減順序排列,取中間值作為本次采樣值。中位值濾波算法能有效地克服因偶然因素引起的干擾或波動(dòng)而產(chǎn)生的誤差。即提高系統(tǒng)的檢測(cè)精度。
3. 結(jié)束語
本甲醛檢測(cè)儀采用EFM32TG840F16 單片機(jī)作為核心控制單元,電路結(jié)構(gòu)簡(jiǎn)單、外設(shè)功能模塊豐富,功耗低,待機(jī)時(shí)間長(zhǎng),支持IAP功能,軟件升級(jí)方便,另外該MCU性能強(qiáng)勁,可升級(jí)空間極大。