基于ARM7和數字溫度傳感器的多點(diǎn)測溫系統設計
0 引言
溫度檢測是現代檢測技術(shù)的重要組成部分,在保證產(chǎn)品質(zhì)量、節約能源和**生產(chǎn)等方面起著(zhù)關(guān)鍵的作用。傳統的溫度檢測是基于模擬傳感,模擬信號易受干擾,不穩定,價(jià)格高,體積大。隨著(zhù)科學(xué)技術(shù)的發(fā)展,由單片集成電路構成的溫度傳感器的種類(lèi)越來(lái)越多,測量的精度越來(lái)越高,數字溫度傳感器具有價(jià)格低、高精度、適用微型封裝、能工作在寬溫度范圍內等優(yōu)點(diǎn)。在很多應用中,數字溫度傳感器正開(kāi)始替代傳統的模擬溫度傳感器,如DSl8B20、DS18B21和DS16B20等。本文提出了一種基于DSl8B20數字化傳感器的溫度采集系統。
1 系統硬件設計
圖1 系統結構框圖
多點(diǎn)測溫系統通過(guò)鍵盤(pán)設置,利用數字溫度傳感器DS18B20檢測不同環(huán)境、不同要求下的個(gè)點(diǎn)或多點(diǎn)的溫度,然后LPC2114讀取溫度值,通過(guò)USB接口將數據傳輸給上位機,在上位機的顯示界面上顯示,以提示相關(guān)人員對所檢測的環(huán)境作出相應措施。
本系統分為ARM處理器模塊、LCD顯示鍵盤(pán)設置模塊、n個(gè)DS18B20組成的測溫模塊、USB 通行模塊組成。本系統結構見(jiàn)圖1。
1.1 LPC2114處理器模塊
ARM處理器包括ARM7、ARM9、ARM9E、ARM10E、SecurCore、Intel的Xscale、StrongARM等幾個(gè)系列[1]??偣灿?span lang="EN-US">30家半導體公司與ARM簽訂了硬件技術(shù)使用許可協(xié)議,其中包括Intel、IBM、LG半導體、NEC、SONY、PHILIPS和國家半導體這樣的大公司[2]。
本系統選用Philips公司的ARM7TDMI-S核ARM微處理器LPC2114。這款處理器由較小的64引腳了LQFP封裝,極低的功耗和極小的體積。它具有16KB靜態(tài)RAM、128KB片內Flash、4路10位ADC、多個(gè)內部中斷、2個(gè)32位定時(shí)器、6路輸出的PWM單元等片上資源,所以特別適用于工業(yè)控制和醫療系統等。本設計選用它,能夠滿(mǎn)足小型化、低功耗、低成本的要求。
1.2 溫度檢測模塊
DS18B20是DALLAS公司生產(chǎn)的一線(xiàn)式數字溫度傳感器,主要由4部分組成:64位ROM、溫度傳感器、高低溫度報警觸發(fā)器TH和TL、配置寄存器[3]。與其它溫度傳感器相比,它具有以下特性:
(1)具有3引腳TO-92小體積封裝形式;
(2)溫度測量范圍為-55℃~+125℃,可編程為9位~12位A/D轉換精度,測溫分辨率可達0.0625℃,被測溫度用符號擴展的16位數字量方式串行輸出;
(3)其工作電源既可在遠端引入,也可采用寄生電源方式產(chǎn)生;
(4) 多個(gè)DS18B20可以并聯(lián)到3根或2根線(xiàn)上,CPU只需一根端口線(xiàn)就能與諸多DS18B20通信,占用微處理器的端口較少,可節省大量的引線(xiàn)和邏輯電路。以上特點(diǎn)使DS18B20非常適用于遠距離多點(diǎn)溫度檢測系統。
1.3 鍵盤(pán)設置模塊
DS18B20 具有一個(gè)配置寄存器,為了滿(mǎn)足測溫的靈活性以及出于**性的考慮,需要在不同的場(chǎng)合根據不同的需要對這幾個(gè)寄存器進(jìn)行配置。R1、R0決定溫度轉換的精度位數:R1R0=“00”,9位精度,*大轉換時(shí)間為93.75ms;R1R0=“01”,10位精度,*大轉換時(shí)間為187.5ms;R1R0=“10”,11位精度,*大轉換時(shí)間為375ms;R1R0=“11”,12位精度,*大轉換時(shí)間為750ms;未編程時(shí)默認為12位精度??梢愿鶕煌那闆r的要求通過(guò)鍵盤(pán)操作來(lái)改變精度的位數,以求得在準確度和轉換速度之間的一個(gè)折中點(diǎn)。
DS18B20還具有兩個(gè)8位的高低溫報警寄存器TH和TL。通過(guò)設置報警的臨界值確定被測對象是否在要求的溫度范圍內,如果超出了警戒溫度則及時(shí)提醒操作者進(jìn)行適當的操作。
以上所有這些配置都可以通過(guò)8位鍵盤(pán)來(lái)操作,包括兩位數的精度設置、3位數高低溫警戒溫度值得設定和報警標志的開(kāi)關(guān)。鍵值功能表見(jiàn)表1。
表1 8位鍵值功能表
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
多點(diǎn)采集
|
單點(diǎn)采集
|
配置
|
確認
|
百位
|
十位
|
個(gè)位
|
報警開(kāi)/關(guān)
|
因為對顯示界面要求不高,可用128×64點(diǎn)陣的中文液晶顯示器來(lái)提供,包括當前精度設置、警戒溫度上下限值以及國警戒溫度的開(kāi)關(guān)。如果是單點(diǎn)溫度采集,則顯示該點(diǎn)的通道號以及該通道的當前溫度值。軟件部分還通過(guò)液晶顯示器向用戶(hù)提供界面友好的中文向導來(lái)引導用戶(hù)一步步進(jìn)行正確的操作[4]。
1.4 USB通信模塊
P0.31 1
P1.28 27
P1.24 8
P1.30 3
P1.29 4
P1.23 15
P1.22 16
P1.21 17
P1.20 18
P1.19 19
P1.18 20
P1.17 21
P1.16 22
|
圖2 LPC2114實(shí)現USB總線(xiàn)
|
D+
D-
A0
D0
D1
D2
D3
D4
D5
D6
D7
|
CH375是南京沁恒研發(fā)的一個(gè)USB總線(xiàn)的通用接口芯片,支持USB-HOST主機方式和USB-DEVICE/SLAVE設備方式[5]。全速USB-HOST主機接口,兼容USB2.0,在本地端,具有8位數據總線(xiàn),讀、寫(xiě)、片選控制線(xiàn)以及中斷輸出,可以方便地掛接到LPC2114系統總線(xiàn)上。外圍元器件只需晶體和電容,支持5V電源電壓和3.3V電源電壓。主機端點(diǎn)輸入和輸出緩沖區各64字節,支持常用的12Mbps全速USB設備及控制傳輸、批量傳輸、中斷傳輸。自動(dòng)檢測USB設備的連接和斷開(kāi),提供設備連接和斷開(kāi)的時(shí)間通知。內置控制傳輸的協(xié)議處理器,簡(jiǎn)化常用的控制傳輸。內置固件處理Mass-Storage海量存儲設備的專(zhuān)用通信協(xié)議固件,支持Bulk-Only傳輸協(xié)議,SCSI、UFI、RBC或等效命令集的USB存儲設備(包括USB硬盤(pán)/USB閃存盤(pán)/U盤(pán)),方便將測試數據存儲在U盤(pán)等海量存儲設備上。同樣,通過(guò)LPC2114的P1[16:31]模擬總線(xiàn)方式,模擬出讀/寫(xiě)時(shí)序,實(shí)現與上位機數據的高速傳輸。CH375支持USB的控制傳輸、批量傳輸、中斷傳輸。出于即時(shí)性考慮,本系統采用中斷傳輸方式。LPC2114實(shí)現USB總線(xiàn)見(jiàn)圖2。
2 系統軟件設計
多點(diǎn)測溫系統的控制系統軟件設計主要包括三個(gè)面:先移植嵌入式實(shí)時(shí)多任務(wù)操作系統 C/OS-Ⅱ,然后就是采集溫度參數設置、DS18B20操作,*后就是LPC2114與上位機通信接口USB的驅動(dòng)及上位機中多路溫度顯示界面。
2.1 移植 C/OS-Ⅱ內核
C/OS-Ⅱ是一個(gè)完整的,可移植、固化、裁剪的占先式實(shí)時(shí)多任務(wù)內核[6]。 C/OS-Ⅱ是用ANSI的C語(yǔ)言編寫(xiě)的,包含一個(gè)小部分匯編語(yǔ)言代碼,使之可供不同架構的微處理器是用。目前,它已經(jīng)在幾十種從8位到64位的微處理器上實(shí)現了成功的移植。
由于設計 C/OS-Ⅱ時(shí)就考慮到了在不同處理器上移植,因而移植 C/OS-Ⅱ實(shí)際上需要修改的代碼量很小。由于篇幅的限制, C/OS-Ⅱ在LPC2114上的移植方法和過(guò)程,見(jiàn)參考文獻[2]。
2.2 DS18B20測溫軟件設計
每一個(gè)DS18B20在其ROM中都存在有其**的48位序列號,在出廠(chǎng)前已寫(xiě)入片內ROM中。主機在進(jìn)入操作程序前必須用讀ROM(33H)命令將該DS18B20的序列號讀出。
當主機需要對眾多在線(xiàn)DS18B20的某一個(gè)進(jìn)行操作時(shí),首先要發(fā)出匹配ROM(55H)。接著(zhù)主機提供64位序列(包括該DS18B20的48位序列號),之后的操作就是針對該DS18B20的。
在DS18B20組成的多點(diǎn)測溫系統中,主機在發(fā)出跳ROM命令之后,再發(fā)出統一的溫度轉換啟動(dòng)碼44H,就可以實(shí)現所有DS18B20的統一轉換。再經(jīng)過(guò)1s后就可以用很少的時(shí)間去逐一讀回每個(gè)DS18B20的溫度數據。。這種方式使其時(shí)間值往往小于傳統方式。
由于DS18B20與微處理器間采用串行數據傳送,在對DS18B20進(jìn)行讀寫(xiě)編程時(shí),必須嚴
格的保證讀寫(xiě)的時(shí)序,否則將無(wú)法讀取測溫結果。因此,對DS18B20 操作部分采用匯編語(yǔ)言來(lái)實(shí)現。初始化流程見(jiàn)圖3。
本系統可經(jīng)過(guò)設置模塊來(lái)設置不同要求的測溫方式,根據前面定義的鍵盤(pán)設置模塊可知,可以實(shí)現單點(diǎn)測溫和多點(diǎn)測溫。兩種方式**不同就是ARM向DS18B20發(fā)送溫度轉換命令和讀取溫度寄存器之前,單點(diǎn)溫度檢測要首先發(fā)送匹配命令55H,然后是選定通道DS18B20的ROM號;而多點(diǎn)測溫只要發(fā)送略過(guò)ROM命令CCH即可。對第n通道進(jìn)行溫度檢測,讀取并存儲溫度值。多點(diǎn)溫度讀取轉換流程見(jiàn)圖4。
總線(xiàn)變低,檢測DS18B20響應結束信號
|
LPC2114向所有DS18B20
發(fā)送復位命令
|
LPC2114向所有DS18B20發(fā)送復位命令
|
2.3 USB驅動(dòng)軟件設計
當溫度采集后,要通過(guò)USB接口傳到上位機,其中CH375與微處理器的接口通過(guò)固化在Flash中的固件程序(Firmare)來(lái)完成的。Firmare是USB和用戶(hù)代碼之間的接口。本次USB接口芯片的固件設計成完全的中斷驅動(dòng),以保持響應得實(shí)時(shí)性。
上位機應用層發(fā)送主動(dòng)請求給LPC2114,被動(dòng)應答是指在LPC2114收到數據請求后,上傳給上位機應用層的應答數據。所有的通訊都由上位機應用層發(fā)起,然后以接收到LPC2114的應答結束,完整的過(guò)程包括:① 上位機將數據請求發(fā)送給CH375 芯片;② CH375 芯片以中斷方式通知LPC2114;③ LPC2114進(jìn)入中斷服務(wù)程序,獲取CH375 的中斷狀態(tài)并分析;④ 如果是上傳,則釋放當前USB 緩沖區,然后退出中斷程序;⑤ 如果是下傳,則從數據下傳緩沖區中讀取數據塊;⑥ 分析接收到的數據塊,準備應答數據,也可以先退出中斷程序再處理;⑦ LPC2114將應答數據寫(xiě)入批量端點(diǎn)的上傳緩沖區中,然后退出中斷程序;⑧ CH375 芯片將應答數據返回給上位機;⑨ 上位機接收到應答數據。
設備驅動(dòng)程序就是控制硬件設備的一組函數。WDM(Win32 Driver Model)是Microsoft公司力推的全新的驅動(dòng)程序模式,它的應用平臺是Windows 98/Me/2000操作系統[7].
雖然Windows2000提供有多種通用的USB驅動(dòng)程序,但并不滿(mǎn)足本嵌入式系統的設計需求,因此本系統采用Windows DDK(Device Driver Kit)開(kāi)發(fā)工具,開(kāi)發(fā)了基于WDM模型的USB設備功能驅動(dòng)程序[8]。
運行在核心態(tài)的USB驅動(dòng)程序是基于WIN32驅動(dòng)程序模型WDM(Windows Driver Model)的,它采用分層驅動(dòng)程序模型,由USB總線(xiàn)驅動(dòng)程序和USB功能驅動(dòng)程序兩部分組成,總線(xiàn)驅動(dòng)程序由操作系統提供,只需編寫(xiě)相應的功能驅動(dòng)程序即可。
本功能驅動(dòng)程序主要由四個(gè)模塊組成:初始化模塊、I/O模塊、即插即用管理模塊和電源管理模塊。另外,還有一個(gè).INF文件用于驅動(dòng)程序的安裝, INF文件含有安裝一個(gè)WDM設備驅動(dòng)程序需要的所有必要的信息,包括要復制的文件列表、要創(chuàng )建的注冊表項、設備的ID和兼容ID等。USB驅動(dòng)程序的分層結構見(jiàn)圖5。
3 結束語(yǔ)
將n個(gè)DS18S20構建成一個(gè)多點(diǎn)測溫系統,實(shí)現了多點(diǎn)溫度測量,其轉換精度高,抗干擾能力強,實(shí)時(shí)性好,使用時(shí)無(wú)需標定和測試;與LPC2114的接口簡(jiǎn)單,可方便地實(shí)現多點(diǎn)組網(wǎng)測溫,給硬件設計工作帶來(lái)了極大的方便。另外采用DS18S20能有效地降低成本,簡(jiǎn)化系統設計,占用系統I/O資源少、擴展方便,在多點(diǎn)溫度檢測中有比較好的應用前景。