基于ARM7和數字溫度傳感器的多點測溫系統設計
0 引言
溫度檢測是現代檢測技術的重要組成部分,在保證產品質量、節約能源和**生產等方面起著關鍵的作用。傳統的溫度檢測是基于模擬傳感,模擬信號易受干擾,不穩定,價格高,體積大。隨著科學技術的發展,由單片集成電路構成的溫度傳感器的種類越來越多,測量的精度越來越高,數字溫度傳感器具有價格低、高精度、適用微型封裝、能工作在寬溫度范圍內等優點。在很多應用中,數字溫度傳感器正開始替代傳統的模擬溫度傳感器,如DSl8B20、DS18B21和DS16B20等。本文提出了一種基于DSl8B20數字化傳感器的溫度采集系統。
1 系統硬件設計
GP I O LPC2114 IIC 模擬總線 CH375 LCD USB接口 DS18B20(2) DS18B20(1) DS18B20(n) 鍵盤 上 位 機 E2PROM … 電源 JTAG 復位
圖1 系統結構框圖
多點測溫系統通過鍵盤設置,利用數字溫度傳感器DS18B20檢測不同環境、不同要求下的個點或多點的溫度,然后LPC2114讀取溫度值,通過USB接口將數據傳輸給上位機,在上位機的顯示界面上顯示,以提示相關人員對所檢測的環境作出相應措施。
本系統分為ARM處理器模塊、LCD顯示鍵盤設置模塊、n個DS18B20組成的測溫模塊、USB 通行模塊組成。本系統結構見圖1。
1.1 LPC2114處理器模塊
ARM處理器包括ARM7、ARM9、ARM9E、ARM10E、SecurCore、Intel的Xscale、StrongARM等幾個系列[1]。總共有30家半導體公司與ARM簽訂了硬件技術使用許可協議,其中包括Intel、IBM、LG半導體、NEC、SONY、PHILIPS和國家半導體這樣的大公司[2]。
本系統選用Philips公司的ARM7TDMI-S核ARM微處理器LPC2114。這款處理器由較小的64引腳了LQFP封裝,極低的功耗和極小的體積。它具有16KB靜態RAM、128KB片內Flash、4路10位ADC、多個內部中斷、2個32位定時器、6路輸出的PWM單元等片上資源,所以特別適用于工業控制和醫療系統等。本設計選用它,能夠滿足小型化、低功耗、低成本的要求。
1.2 溫度檢測模塊
DS18B20是DALLAS公司生產的一線式數字溫度傳感器,主要由4部分組成:64位ROM、溫度傳感器、高低溫度報警觸發器TH和TL、配置寄存器[3]。與其它溫度傳感器相比,它具有以下特性:
(1)具有3引腳TO-92小體積封裝形式;
(2)溫度測量范圍為-
(3)其工作電源既可在遠端引入,也可采用寄生電源方式產生;
(4) 多個DS18B20可以并聯到3根或2根線上,CPU只需一根端口線就能與諸多DS18B20通信,占用微處理器的端口較少,可節省大量的引線和邏輯電路。以上特點使DS18B20非常適用于遠距離多點溫度檢測系統。
1.3 鍵盤設置模塊
DS18B20 具有一個配置寄存器,為了滿足測溫的靈活性以及出于**性的考慮,需要在不同的場合根據不同的需要對這幾個寄存器進行配置。R1、R0決定溫度轉換的精度位數:R1R0=“
DS18B20還具有兩個8位的高低溫報警寄存器TH和TL。通過設置報警的臨界值確定被測對象是否在要求的溫度范圍內,如果超出了警戒溫度則及時提醒操作者進行適當的操作。
以上所有這些配置都可以通過8位鍵盤來操作,包括兩位數的精度設置、3位數高低溫警戒溫度值得設定和報警標志的開關。鍵值功能表見表1。
表1 8位鍵值功能表
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
多點采集 |
單點采集 |
配置 |
確認 |
百位 |
十位 |
個位 |
報警開/關 |
因為對顯示界面要求不高,可用128×64點陣的中文液晶顯示器來提供,包括當前精度設置、警戒溫度上下限值以及國警戒溫度的開關。如果是單點溫度采集,則顯示該點的通道號以及該通道的當前溫度值。軟件部分還通過液晶顯示器向用戶提供界面友好的中文向導來引導用戶一步步進行正確的操作[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 10 11 圖2 LPC2114實現USB總線 A0 D0 D1 D2 D3 D4 D5 D6 D7
2 系統軟件設計
多點測溫系統的控制系統軟件設計主要包括三個面:先移植嵌入式實時多任務操作系統
2.1 移植
由于設計
2.2 DS18B20測溫軟件設計
每一個DS18B20在其ROM中都存在有其**的48位序列號,在出廠前已寫入片內ROM中。主機在進入操作程序前必須用讀ROM(33H)命令將該DS18B20的序列號讀出。
當主機需要對眾多在線DS18B20的某一個進行操作時,首先要發出匹配ROM(55H)。接著主機提供64位序列(包括該DS18B20的48位序列號),之后的操作就是針對該DS18B20的。
在DS18B20組成的多點測溫系統中,主機在發出跳ROM命令之后,再發出統一的溫度轉換啟動碼44H,就可以實現所有DS18B20的統一轉換。再經過1s后就可以用很少的時間去逐一讀回每個DS18B20的溫度數據。。這種方式使其時間值往往小于傳統方式。
由于DS18B20與微處理器間采用串行數據傳送,在對DS18B20進行讀寫編程時,必須嚴
格的保證讀寫的時序,否則將無法讀取測溫結果。因此,對DS18B20 操作部分采用匯編語言來實現。初始化流程見圖3。
本系統可經過設置模塊來設置不同要求的測溫方式,根據前面定義的鍵盤設置模塊可知,可以實現單點測溫和多點測溫。兩種方式**不同就是ARM向DS18B20發送溫度轉換命令和讀取溫度寄存器之前,單點溫度檢測要首先發送匹配命令55H,然后是選定通道DS18B20的ROM號;而多點測溫只要發送略過ROM命令CCH即可。對第n通道進行溫度檢測,讀取并存儲溫度值。多點溫度讀取轉換流程見圖4。
開始 Y 圖4 多點溫度讀取轉換流程圖 N n-1=0? 總線變高? 總線變低,檢測DS18B20響應結束信號 DS18B20存 在信號? 總線變高? LPC2114釋放總線 LPC2114發送 復位脈沖 N N Y Y 返回 LPC2114向所有DS18B20 發送復位命令 延時300 N Y 圖3 初始化流程圖 跳過匹配ROM LPC2114向所有DS18B20溫度變換命令 延時1s(等待全部溫度轉換結束) 讀第n個DS18B20溫度 LPC2114向所有DS18B20發送復位命令 匹配第n個ROM 存儲緩沖區指針增1
2.3 USB驅動軟件設計
當溫度采集后,要通過USB接口傳到上位機,其中CH375與微處理器的接口通過固化在Flash中的固件程序(Firmare)來完成的。Firmare是USB和用戶代碼之間的接口。本次USB接口芯片的固件設計成完全的中斷驅動,以保持響應得實時性。
上位機應用層發送主動請求給LPC2114,被動應答是指在LPC2114收到數據請求后,上傳給上位機應用層的應答數據。所有的通訊都由上位機應用層發起,然后以接收到LPC2114的應答結束,完整的過程包括:① 上位機將數據請求發送給CH375 芯片;② CH375 芯片以中斷方式通知LPC2114;③ LPC2114進入中斷服務程序,獲取CH375 的中斷狀態并分析;④ 如果是上傳,則釋放當前USB 緩沖區,然后退出中斷程序;⑤ 如果是下傳,則從數據下傳緩沖區中讀取數據塊;⑥ 分析接收到的數據塊,準備應答數據,也可以先退出中斷程序再處理;⑦ LPC2114將應答數據寫入批量端點的上傳緩沖區中,然后退出中斷程序;⑧ CH375 芯片將應答數據返回給上位機;⑨ 上位機接收到應答數據。
應用程序 USB硬件 用戶態 I/O系統服務 Win32 API調用 WIN32子系統 I/O管理器 USB總線驅動程序 功能驅動程序 核心態 圖5 USB驅動程序的分層結構
雖然Windows2000提供有多種通用的USB驅動程序,但并不滿足本嵌入式系統的設計需求,因此本系統采用Windows DDK(Device Driver Kit)開發工具,開發了基于WDM模型的USB設備功能驅動程序[8]。
運行在核心態的USB驅動程序是基于WIN32驅動程序模型WDM(Windows Driver Model)的,它采用分層驅動程序模型,由USB總線驅動程序和USB功能驅動程序兩部分組成,總線驅動程序由操作系統提供,只需編寫相應的功能驅動程序即可。
本功能驅動程序主要由四個模塊組成:初始化模塊、I/O模塊、即插即用管理模塊和電源管理模塊。另外,還有一個.INF文件用于驅動程序的安裝, INF文件含有安裝一個WDM設備驅動程序需要的所有必要的信息,包括要復制的文件列表、要創建的注冊表項、設備的ID和兼容ID等。USB驅動程序的分層結構見圖5。
3 結束語
將n個DS18S20構建成一個多點測溫系統,實現了多點溫度測量,其轉換精度高,抗干擾能力強,實時性好,使用時無需標定和測試;與LPC2114的接口簡單,可方便地實現多點組網測溫,給硬件設計工作帶來了極大的方便。另外采用DS18S20能有效地降低成本,簡化系統設計,占用系統I/O資源少、擴展方便,在多點溫度檢測中有比較好的應用前景。