袁 立, 呂洪武, 王宏志
(長春工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,吉林長春 130012)
隨著我國科研實(shí)力快速穩(wěn)定的發(fā)展,在實(shí)驗(yàn)室管理中對(duì)實(shí)驗(yàn)室環(huán)境提出了更高的要求。實(shí)驗(yàn)室環(huán)境直接影響到實(shí)驗(yàn)?zāi)芊耥樌M(jìn)行。因此,實(shí)驗(yàn)室環(huán)境的實(shí)時(shí)監(jiān)測(cè)對(duì)科學(xué)技術(shù)的發(fā)展有著重要的意義。
實(shí)驗(yàn)室環(huán)境監(jiān)測(cè)中溫度和濕度是重要參數(shù)[1]。傳統(tǒng)的實(shí)驗(yàn)室環(huán)境監(jiān)測(cè)系統(tǒng)中采用的PC機(jī)控制監(jiān)控系統(tǒng)具有精準(zhǔn)、穩(wěn)定等優(yōu)勢(shì),但是也存在著成本過高、系統(tǒng)龐大等諸多問題[2]。
文中的主要研究目標(biāo)是從監(jiān)測(cè)實(shí)驗(yàn)室溫度和濕度出發(fā),針對(duì)高等院校中實(shí)驗(yàn)室環(huán)境,通過采用嵌入式開發(fā)技術(shù)和室內(nèi)環(huán)境檢測(cè)技術(shù),在測(cè)量環(huán)境溫度和濕度的前提下,研究設(shè)計(jì)一種成本低、實(shí)用性高、易便攜的溫濕度監(jiān)測(cè)系統(tǒng)。
實(shí)驗(yàn)室溫濕度監(jiān)測(cè)系統(tǒng)由ARM芯片對(duì)溫濕度傳感器控制,通過傳感器實(shí)現(xiàn)對(duì)溫濕度數(shù)據(jù)的采集,并對(duì)采集的數(shù)據(jù)進(jìn)行處理與顯示。ARM芯片具有高性能、低功耗的特點(diǎn),可以應(yīng)用在嵌入式Web服務(wù)器設(shè)計(jì)等諸多領(lǐng)域[3]。當(dāng)溫濕度數(shù)據(jù)超出或低于設(shè)定溫濕度值時(shí),由ARM驅(qū)動(dòng)報(bào)警裝置實(shí)現(xiàn)報(bào)警功能。該實(shí)驗(yàn)室溫濕度監(jiān)測(cè)系統(tǒng)原理結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)原理結(jié)構(gòu)
系統(tǒng)主控芯片選用三星公司的基于ARM7TDMI內(nèi)核的S3C44B0微處理器[4],該芯片內(nèi)部有8 KB Cache。ARM7TDMI體系結(jié)構(gòu)的特點(diǎn)是集成了Thumb代碼壓縮器,片內(nèi)有ICE斷點(diǎn)調(diào)試硬件和1個(gè)32位的硬件乘法器,S3C44B0內(nèi)置系統(tǒng)存儲(chǔ)控制器,LCD控制器等,還有2個(gè)通用DMA控制器(ZDMA),2個(gè)外圍DMA控制器(BDMA),1個(gè)支持多主設(shè)備的I2C控制器,1個(gè)IIS總線控制器,5個(gè)PWM定時(shí)器和1個(gè)內(nèi)部定時(shí)器,看門狗定時(shí)器Watch Dog,71個(gè)通用可編程的I/O口和8個(gè)外部中斷源,具有8通道輸入的10位ADC和具有日歷功能的實(shí)時(shí)時(shí)鐘RTC。
溫濕度傳感器則選用DHT11[5]溫濕度傳感器,該傳感器是一款溫濕度一體化的數(shù)字傳感器。該傳感器包括一個(gè)電阻式測(cè)濕元件和一個(gè)NTC測(cè)溫元件,并與一個(gè)MCU相連接。通過與微處理器簡單的電路連接就能夠?qū)崟r(shí)采集本地濕度和溫度。DHT11與MCU之間采用一個(gè)I/O端口完成輸入、輸出雙向傳輸通信。傳感器內(nèi)部40 bit的濕度和溫度數(shù)據(jù)一次性傳給主機(jī),校驗(yàn)數(shù)據(jù)采用校驗(yàn)和的方式,能有效保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。DHT11功耗很低,5 V電源電壓下,工作平均最大電流0.5 m A。DHT11的技術(shù)參數(shù)如下:工作電壓范圍:3.3~5.5 V;工作電流:平均0.5 m A;輸出:單總線數(shù)字信號(hào);測(cè)量范圍:濕度20%RH~90%RH,溫度0~50℃;精度:濕度±5%RH,溫度±2℃;分辨率:濕度1%RH,溫度1℃。
傳感器數(shù)據(jù)輸出的是未編碼的二進(jìn)制數(shù)據(jù)。數(shù)據(jù)(濕度、溫度、整數(shù)、小數(shù))之間分開處理。DHT11的數(shù)據(jù)格式十分簡單,和MCU的一次通信最長為3 ms左右。
ARM芯片S3C44B0的PG2引腳和DHT11傳感器的DATA引腳相連,DHT11采用3.3 V供電,如圖2所示。
圖2 ARM芯片與DHT11連線圖
S3C44B0的PG2引腳是一個(gè)復(fù)用多功能引腳,可以設(shè)置成輸出引腳、外部中斷引腳等。PG2引腳還有一個(gè)可以設(shè)置成使能或禁止的上拉電阻。
系統(tǒng)通過預(yù)先設(shè)定的溫、濕度閾值作為主要判斷依據(jù),當(dāng)實(shí)驗(yàn)室環(huán)境中監(jiān)測(cè)到的溫、濕度數(shù)據(jù)超過或低于設(shè)定的閾值范圍時(shí),屏幕就會(huì)顯示當(dāng)前溫、濕度數(shù)值,并且發(fā)出警告,由蜂鳴器發(fā)出報(bào)警。系統(tǒng)使用模塊化任務(wù)設(shè)計(jì),主要任務(wù)包括溫濕度監(jiān)測(cè)、ARM I/O控制、數(shù)據(jù)顯示、閾值設(shè)定等。
嵌入式系統(tǒng)使用μC/OS-II[6]操作系統(tǒng),該系統(tǒng)是一個(gè)實(shí)時(shí)操作系統(tǒng)內(nèi)核[7],包含了任務(wù)調(diào)度、文件管理、任務(wù)管理、時(shí)間管理、內(nèi)存管理以及任務(wù)間通信和同步等基本功能。μC/OS-II的目標(biāo)是實(shí)現(xiàn)一個(gè)基于優(yōu)先級(jí)調(diào)度的搶占式實(shí)時(shí)內(nèi)核,并在這個(gè)內(nèi)核之上提供最基本的系統(tǒng)服務(wù),例如信號(hào)量、郵箱、消息隊(duì)列、內(nèi)存管理、中斷管理等。μC/OS-II獲得廣泛使用不僅僅是因?yàn)樗脑创a開放,還有一個(gè)重要原因,就是它的可移植性。μC/OS-II的大部分代碼是用C語言寫成的,只有與處理器硬件相關(guān)的一部分代碼用匯編語言編寫??梢哉f,μC/OS-II在最初設(shè)計(jì)時(shí)就考慮到了系統(tǒng)的可移植性,這一點(diǎn)和同樣源代碼開放的Linux很不一樣,后者在開始的時(shí)候只是用于x86體系結(jié)構(gòu),然后才將與硬件相關(guān)的代碼單獨(dú)提取出來。
目前μC/OS-II支持ARM,Power PC,MIPS,68K/Cold Fire和x86等多種體系結(jié)構(gòu)。
文中軟件程序開發(fā)選用CodeWarrior for ADS v1.2[8],該軟件支持ARM10之前的所有ARM系列微控制器,支持軟件調(diào)試及JTAG硬件仿真,支持匯編、C和C++源程序。CodeWarrior for ADS v1.2集成開發(fā)環(huán)境主要提供了下面一些功能:
1)按照工程項(xiàng)目的方式來組織源代碼文件、庫文件以及其它文件。
2)設(shè)置各種生成選項(xiàng),以生成不同配置的映像文件。
3)一個(gè)源代碼編譯器。它保存了代碼中定義的各種符號(hào),使用戶可以在源代碼中方便地跳轉(zhuǎn)。
4)在文本文件中進(jìn)行字符串的搜索和替換。
5)文本文件比較功能。
6)用戶還可以根據(jù)自己的愛好設(shè)置集成環(huán)境的特色界面。
ARM芯片與DHT11通信過程如圖3所示。
圖3 ARM芯片與DHT11通信過程
主機(jī)信號(hào)由ARM芯片的PG2引腳發(fā)出。
在CodeWarrior for ADS v1.2軟件開發(fā)環(huán)境下,結(jié)合系統(tǒng)的功能可將程序分為:主程序、溫濕度監(jiān)測(cè)任務(wù)、報(bào)警功能任務(wù)、系統(tǒng)數(shù)據(jù)顯示任務(wù)等。通過μC/OS-II操作系統(tǒng)對(duì)任務(wù)的調(diào)度,實(shí)現(xiàn)了溫濕度的監(jiān)測(cè)和報(bào)警。系統(tǒng)主程序流程如圖4所示。
圖4 系統(tǒng)主程序流程
ARM啟動(dòng)傳感器DHT11后,DHT11發(fā)送響應(yīng)信號(hào),把總線拉高80μs,準(zhǔn)備發(fā)送數(shù)據(jù),每一位數(shù)據(jù)都以50μs低電平時(shí)隙開始,高電平的長短決定了數(shù)據(jù)位是0還是1。
溫濕度監(jiān)測(cè)任務(wù)的程序流程如圖5所示。
圖5 溫度檢測(cè)流程
主要完成DHT11的啟動(dòng),定時(shí)器2的設(shè)置,溫濕度數(shù)據(jù)的讀取等功能。定時(shí)器2中斷服務(wù)程序流程如圖6所示。
主要完成中斷引腳設(shè)置,定時(shí)器5的初始化及啟動(dòng)等功能。
EINT2中斷服務(wù)程序流程如圖7所示。
圖6 Time2中斷服務(wù)程序流程
圖7 EINT2中斷服務(wù)程序流程
其作用是保存在發(fā)生中斷時(shí)TCNTO5寄存器的當(dāng)前值。
處理傳感器數(shù)據(jù)的算法是:根據(jù)高電平之前出現(xiàn)的上升沿時(shí)刻TCNTO5寄存器的值(設(shè)為T1),以及高電平之后出現(xiàn)的下降沿時(shí)刻TCNTO5寄存器的值(設(shè)為T2),來計(jì)算高電平的時(shí)間,其中T1和T2的值可從全局?jǐn)?shù)組Timer5data[84]中得到。若(T1-T2)<28,則此高電平傳輸?shù)奈粸?;若68<(T1-T2)<75,則此高電平傳輸?shù)奈粸?。
將搭建好的硬件平臺(tái)通過串行接口連接到PC機(jī)上,使用CodeWarrior for ADS集成開發(fā)環(huán)境,配以JTAG仿真器,將映像文件加載到嵌入式控制模塊中,進(jìn)行系統(tǒng)調(diào)試和測(cè)試實(shí)驗(yàn)等工作。
結(jié)合設(shè)計(jì)實(shí)物,對(duì)系統(tǒng)的測(cè)量精確度進(jìn)行了校驗(yàn)。校驗(yàn)方式主要通過測(cè)量多組溫濕度數(shù)據(jù)與標(biāo)準(zhǔn)溫濕度狀況相對(duì)比,監(jiān)測(cè)結(jié)果見表1。
表1 測(cè)量分析數(shù)據(jù)
由表1結(jié)果可以看出,溫度監(jiān)測(cè)精度誤差小于等于1.7℃,濕度精度誤差小于等于3.0%RH,滿足系統(tǒng)的應(yīng)用設(shè)計(jì)要求,并且能夠達(dá)到實(shí)驗(yàn)室對(duì)溫度和濕度的監(jiān)測(cè)要求。
此外,分別作了溫濕度報(bào)警功能的測(cè)試。設(shè)定溫度閾值為4~10℃時(shí),在環(huán)境溫度超出溫度設(shè)定閾值后,蜂鳴器報(bào)警。設(shè)定濕度閾值為40%RH~50%RH,在環(huán)境濕度超出濕度設(shè)定閾值后,蜂鳴器報(bào)警。
最后,使用Tektronix的TDS2002型示波器驗(yàn)證軟件驅(qū)動(dòng)程序的正確與否,某次從顯示器讀到的數(shù)據(jù)為濕度36.0%RH,溫度15.0℃,則對(duì)應(yīng)的數(shù)據(jù)為:0010 0100,0000 0000,0000 1111, 0000 0000,0011 0011,如圖8所示。
圖8 系統(tǒng)運(yùn)行時(shí)示波器顯示波形
由以上數(shù)據(jù)就可得到濕度和溫度的值,計(jì)算方法:濕度=濕度整數(shù)×濕度小數(shù)=36.0%RH;溫度=溫度整數(shù)×溫度小數(shù)=15.0℃;校驗(yàn)=濕度整數(shù)+濕度小數(shù)+溫度整數(shù)+溫度小數(shù)=51.0(濕度+溫度)(校驗(yàn)正確)。
串行接口實(shí)驗(yàn)數(shù)據(jù)如圖9所示。
圖9 串行接口實(shí)驗(yàn)數(shù)據(jù)圖
以高校實(shí)驗(yàn)室環(huán)境溫濕度為研究背景,利用嵌入式開發(fā)、室內(nèi)環(huán)境監(jiān)測(cè)等技術(shù),通過合理地構(gòu)建ARM嵌入式開發(fā)平臺(tái),對(duì)實(shí)時(shí)環(huán)境溫度和濕度進(jìn)行監(jiān)測(cè)和預(yù)警。實(shí)驗(yàn)結(jié)果表明,系統(tǒng)設(shè)計(jì)滿足易便攜、穩(wěn)定性好、成本低等要求,具有一定的實(shí)際應(yīng)用價(jià)值。
[1] 戴善溪,張效民.基于ZigBee技術(shù)的數(shù)字式溫濕度監(jiān)測(cè)網(wǎng)絡(luò)設(shè)計(jì)[J].國外電子測(cè)量技術(shù),2010,33(2):47-49.
[2] 周云輝,王嬌,錢云飛.基于嵌入式的環(huán)境溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].電子測(cè)量技術(shù),2012,35(9):80-82.
[3] 宮麗男,呂洪武,王宏志.基于ARM9的嵌入式Web服務(wù)器的設(shè)計(jì)[J].長春工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2009,30(5):323-326.
[4] 王海民,王宏志.STM32以太網(wǎng)控制系統(tǒng)[J].長春工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2014,35(1):60-65.
[5] 廣州奧松電子有限公司.數(shù)字溫濕度傳感器DHT11[EB/OL](2013-04-30)[2013-12-15].http://www.aosong.com.
[6] Jean J Labrosse.嵌入式實(shí)時(shí)操作系統(tǒng)μC﹨OS-Ⅱ[M].邵貝貝,譯.北京:北京航空航天大學(xué)出版社,2003.
[7] 熊茂華,楊震倫.ARM9嵌入式系統(tǒng)設(shè)計(jì)與開發(fā)應(yīng)用[M].北京:清華大學(xué)出版社,2007.
[8] 杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003.