袁 立, 呂洪武, 王宏志
(長春工業大學計算機科學與工程學院,吉林長春 130012)
隨著我國科研實力快速穩定的發展,在實驗室管理中對實驗室環境提出了更高的要求。實驗室環境直接影響到實驗能否順利進行。因此,實驗室環境的實時監測對科學技術的發展有著重要的意義。
實驗室環境監測中溫度和濕度是重要參數[1]。傳統的實驗室環境監測系統中采用的PC機控制監控系統具有精準、穩定等優勢,但是也存在著成本過高、系統龐大等諸多問題[2]。
文中的主要研究目標是從監測實驗室溫度和濕度出發,針對高等院校中實驗室環境,通過采用嵌入式開發技術和室內環境檢測技術,在測量環境溫度和濕度的前提下,研究設計一種成本低、實用性高、易便攜的溫濕度監測系統。
實驗室溫濕度監測系統由ARM芯片對溫濕度傳感器控制,通過傳感器實現對溫濕度數據的采集,并對采集的數據進行處理與顯示。ARM芯片具有高性能、低功耗的特點,可以應用在嵌入式Web服務器設計等諸多領域[3]。當溫濕度數據超出或低于設定溫濕度值時,由ARM驅動報警裝置實現報警功能。該實驗室溫濕度監測系統原理結構如圖1所示。

圖1 系統原理結構
系統主控芯片選用三星公司的基于ARM7TDMI內核的S3C44B0微處理器[4],該芯片內部有8 KB Cache。ARM7TDMI體系結構的特點是集成了Thumb代碼壓縮器,片內有ICE斷點調試硬件和1個32位的硬件乘法器,S3C44B0內置系統存儲控制器,LCD控制器等,還有2個通用DMA控制器(ZDMA),2個外圍DMA控制器(BDMA),1個支持多主設備的I2C控制器,1個IIS總線控制器,5個PWM定時器和1個內部定時器,看門狗定時器Watch Dog,71個通用可編程的I/O口和8個外部中斷源,具有8通道輸入的10位ADC和具有日歷功能的實時時鐘RTC。
溫濕度傳感器則選用DHT11[5]溫濕度傳感器,該傳感器是一款溫濕度一體化的數字傳感器。該傳感器包括一個電阻式測濕元件和一個NTC測溫元件,并與一個MCU相連接。通過與微處理器簡單的電路連接就能夠實時采集本地濕度和溫度。DHT11與MCU之間采用一個I/O端口完成輸入、輸出雙向傳輸通信。傳感器內部40 bit的濕度和溫度數據一次性傳給主機,校驗數據采用校驗和的方式,能有效保證數據傳輸的準確性。DHT11功耗很低,5 V電源電壓下,工作平均最大電流0.5 m A。DHT11的技術參數如下:工作電壓范圍:3.3~5.5 V;工作電流:平均0.5 m A;輸出:單總線數字信號;測量范圍:濕度20%RH~90%RH,溫度0~50℃;精度:濕度±5%RH,溫度±2℃;分辨率:濕度1%RH,溫度1℃。
傳感器數據輸出的是未編碼的二進制數據。數據(濕度、溫度、整數、小數)之間分開處理。DHT11的數據格式十分簡單,和MCU的一次通信最長為3 ms左右。
ARM芯片S3C44B0的PG2引腳和DHT11傳感器的DATA引腳相連,DHT11采用3.3 V供電,如圖2所示。

圖2 ARM芯片與DHT11連線圖
S3C44B0的PG2引腳是一個復用多功能引腳,可以設置成輸出引腳、外部中斷引腳等。PG2引腳還有一個可以設置成使能或禁止的上拉電阻。
系統通過預先設定的溫、濕度閾值作為主要判斷依據,當實驗室環境中監測到的溫、濕度數據超過或低于設定的閾值范圍時,屏幕就會顯示當前溫、濕度數值,并且發出警告,由蜂鳴器發出報警。系統使用模塊化任務設計,主要任務包括溫濕度監測、ARM I/O控制、數據顯示、閾值設定等。
嵌入式系統使用μC/OS-II[6]操作系統,該系統是一個實時操作系統內核[7],包含了任務調度、文件管理、任務管理、時間管理、內存管理以及任務間通信和同步等基本功能。μC/OS-II的目標是實現一個基于優先級調度的搶占式實時內核,并在這個內核之上提供最基本的系統服務,例如信號量、郵箱、消息隊列、內存管理、中斷管理等。μC/OS-II獲得廣泛使用不僅僅是因為它的源代碼開放,還有一個重要原因,就是它的可移植性。μC/OS-II的大部分代碼是用C語言寫成的,只有與處理器硬件相關的一部分代碼用匯編語言編寫。可以說,μC/OS-II在最初設計時就考慮到了系統的可移植性,這一點和同樣源代碼開放的Linux很不一樣,后者在開始的時候只是用于x86體系結構,然后才將與硬件相關的代碼單獨提取出來。
目前μC/OS-II支持ARM,Power PC,MIPS,68K/Cold Fire和x86等多種體系結構。
文中軟件程序開發選用CodeWarrior for ADS v1.2[8],該軟件支持ARM10之前的所有ARM系列微控制器,支持軟件調試及JTAG硬件仿真,支持匯編、C和C++源程序。CodeWarrior for ADS v1.2集成開發環境主要提供了下面一些功能:
1)按照工程項目的方式來組織源代碼文件、庫文件以及其它文件。
2)設置各種生成選項,以生成不同配置的映像文件。
3)一個源代碼編譯器。它保存了代碼中定義的各種符號,使用戶可以在源代碼中方便地跳轉。
4)在文本文件中進行字符串的搜索和替換。
5)文本文件比較功能。
6)用戶還可以根據自己的愛好設置集成環境的特色界面。
ARM芯片與DHT11通信過程如圖3所示。

圖3 ARM芯片與DHT11通信過程
主機信號由ARM芯片的PG2引腳發出。
在CodeWarrior for ADS v1.2軟件開發環境下,結合系統的功能可將程序分為:主程序、溫濕度監測任務、報警功能任務、系統數據顯示任務等。通過μC/OS-II操作系統對任務的調度,實現了溫濕度的監測和報警。系統主程序流程如圖4所示。

圖4 系統主程序流程
ARM啟動傳感器DHT11后,DHT11發送響應信號,把總線拉高80μs,準備發送數據,每一位數據都以50μs低電平時隙開始,高電平的長短決定了數據位是0還是1。
溫濕度監測任務的程序流程如圖5所示。

圖5 溫度檢測流程
主要完成DHT11的啟動,定時器2的設置,溫濕度數據的讀取等功能。定時器2中斷服務程序流程如圖6所示。
主要完成中斷引腳設置,定時器5的初始化及啟動等功能。
EINT2中斷服務程序流程如圖7所示。

圖6 Time2中斷服務程序流程

圖7 EINT2中斷服務程序流程
其作用是保存在發生中斷時TCNTO5寄存器的當前值。
處理傳感器數據的算法是:根據高電平之前出現的上升沿時刻TCNTO5寄存器的值(設為T1),以及高電平之后出現的下降沿時刻TCNTO5寄存器的值(設為T2),來計算高電平的時間,其中T1和T2的值可從全局數組Timer5data[84]中得到。若(T1-T2)<28,則此高電平傳輸的位為0;若68<(T1-T2)<75,則此高電平傳輸的位為1。
將搭建好的硬件平臺通過串行接口連接到PC機上,使用CodeWarrior for ADS集成開發環境,配以JTAG仿真器,將映像文件加載到嵌入式控制模塊中,進行系統調試和測試實驗等工作。
結合設計實物,對系統的測量精確度進行了校驗。校驗方式主要通過測量多組溫濕度數據與標準溫濕度狀況相對比,監測結果見表1。

表1 測量分析數據
由表1結果可以看出,溫度監測精度誤差小于等于1.7℃,濕度精度誤差小于等于3.0%RH,滿足系統的應用設計要求,并且能夠達到實驗室對溫度和濕度的監測要求。
此外,分別作了溫濕度報警功能的測試。設定溫度閾值為4~10℃時,在環境溫度超出溫度設定閾值后,蜂鳴器報警。設定濕度閾值為40%RH~50%RH,在環境濕度超出濕度設定閾值后,蜂鳴器報警。
最后,使用Tektronix的TDS2002型示波器驗證軟件驅動程序的正確與否,某次從顯示器讀到的數據為濕度36.0%RH,溫度15.0℃,則對應的數據為:0010 0100,0000 0000,0000 1111, 0000 0000,0011 0011,如圖8所示。

圖8 系統運行時示波器顯示波形
由以上數據就可得到濕度和溫度的值,計算方法:濕度=濕度整數×濕度小數=36.0%RH;溫度=溫度整數×溫度小數=15.0℃;校驗=濕度整數+濕度小數+溫度整數+溫度小數=51.0(濕度+溫度)(校驗正確)。
串行接口實驗數據如圖9所示。

圖9 串行接口實驗數據圖
以高校實驗室環境溫濕度為研究背景,利用嵌入式開發、室內環境監測等技術,通過合理地構建ARM嵌入式開發平臺,對實時環境溫度和濕度進行監測和預警。實驗結果表明,系統設計滿足易便攜、穩定性好、成本低等要求,具有一定的實際應用價值。
[1] 戴善溪,張效民.基于ZigBee技術的數字式溫濕度監測網絡設計[J].國外電子測量技術,2010,33(2):47-49.
[2] 周云輝,王嬌,錢云飛.基于嵌入式的環境溫濕度監測系統設計[J].電子測量技術,2012,35(9):80-82.
[3] 宮麗男,呂洪武,王宏志.基于ARM9的嵌入式Web服務器的設計[J].長春工業大學學報:自然科學版,2009,30(5):323-326.
[4] 王海民,王宏志.STM32以太網控制系統[J].長春工業大學學報:自然科學版,2014,35(1):60-65.
[5] 廣州奧松電子有限公司.數字溫濕度傳感器DHT11[EB/OL](2013-04-30)[2013-12-15].http://www.aosong.com.
[6] Jean J Labrosse.嵌入式實時操作系統μC﹨OS-Ⅱ[M].邵貝貝,譯.北京:北京航空航天大學出版社,2003.
[7] 熊茂華,楊震倫.ARM9嵌入式系統設計與開發應用[M].北京:清華大學出版社,2007.
[8] 杜春雷.ARM體系結構與編程[M].北京:清華大學出版社,2003.