基于ARM7和数字温度传感器的多点测温系统设计
0 引言
温度检测是现代检测技术的重要组成部分,在保证产品质量、节约能源和**生产等方面起着关键的作用。传统的温度检测是基于模拟传感,模拟信号易受干扰,不稳定,价格高,体积大。随着科学技术的发展,由单片集成电路构成的温度传感器的种类越来越多,测量的精度越来越高,数字温度传感器具有价格低、高精度、适用微型封装、能工作在宽温度范围内等优点。在很多应用中,数字温度传感器正开始替代传统的模拟温度传感器,如DSl8B20、DS18B21和DS16B20等。本文提出了一种基于DSl8B20数字化传感器的温度采集系统。
1 系统硬件设计
图1 系统结构框图
多点测温系统通过键盘设置,利用数字温度传感器DS18B20检测不同环境、不同要求下的个点或多点的温度,然后LPC2114读取温度值,通过USB接口将数据传输给上位机,在上位机的显示界面上显示,以提示相关人员对所检测的环境作出相应措施。
本系统分为ARM处理器???、LCD显示键盘设置??椤?/span>n个DS18B20组成的测温???、USB 通行??樽槌?。本系统结构见图1。
1.1 LPC2114处理器???span lang="EN-US">
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 温度检测???/span>
DS18B20是DALLAS公司生产的一线式数字温度传感器,主要由4部分组成:64位ROM、温度传感器、高低温度报警触发器TH和TL、配置寄存器[3]。与其它温度传感器相比,它具有以下特性:
(1)具有3引脚TO-92小体积封装形式;
(2)温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;
(3)其工作电源既可在远端引入,也可采用寄生电源方式产生;
(4) 多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。
1.3 键盘设置???span lang="EN-US">
DS18B20 具有一个配置寄存器,为了满足测温的灵活性以及出于**性的考虑,需要在不同的场合根据不同的需要对这几个寄存器进行配置。R1、R0决定温度转换的精度位数:R1R0=“00”,9位精度,*大转换时间为93.75ms;R1R0=“01”,10位精度,*大转换时间为187.5ms;R1R0=“10”,11位精度,*大转换时间为375ms;R1R0=“11”,12位精度,*大转换时间为750ms;未编程时默认为12位精度。可以根据不同的情况的要求通过键盘操作来改变精度的位数,以求得在准确度和转换速度之间的一个折中点。
DS18B20还具有两个8位的高低温报警寄存器TH和TL。通过设置报警的临界值确定被测对象是否在要求的温度范围内,如果超出了警戒温度则及时提醒操作者进行适当的操作。
以上所有这些配置都可以通过8位键盘来操作,包括两位数的精度设置、3位数高低温警戒温度值得设定和报警标志的开关。键值功能表见表1。
表1 8位键值功能表
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
多点采集
|
单点采集
|
配置
|
确认
|
百位
|
十位
|
个位
|
报警开/关
|
因为对显示界面要求不高,可用128×64点阵的中文液晶显示器来提供,包括当前精度设置、警戒温度上下限值以及国警戒温度的开关。如果是单点温度采集,则显示该点的通道号以及该通道的当前温度值。软件部分还通过液晶显示器向用户提供界面友好的中文向导来引导用户一步步进行正确的操作[4]。
1.4 USB通信???span lang="EN-US">
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
|
D+
D-
A0
D0
D1
D2
D3
D4
D5
D6
D7
|
CH375是南京沁恒研发的一个USB总线的通用接口芯片,支持USB-HOST主机方式和USB-DEVICE/SLAVE设备方式[5]。全速USB-HOST主机接口,兼容USB2.0,在本地端,具有8位数据总线,读、写、片选控制线以及中断输出,可以方便地挂接到LPC2114系统总线上。外围元器件只需晶体和电容,支持5V电源电压和3.3V电源电压。主机端点输入和输出缓冲区各64字节,支持常用的12Mbps全速USB设备及控制传输、批量传输、中断传输。自动检测USB设备的连接和断开,提供设备连接和断开的时间通知。内置控制传输的协议处理器,简化常用的控制传输。内置固件处理Mass-Storage海量存储设备的专用通信协议固件,支持Bulk-Only传输协议,SCSI、UFI、RBC或等效命令集的USB存储设备(包括USB硬盘/USB闪存盘/U盘),方便将测试数据存储在U盘等海量存储设备上。同样,通过LPC2114的P1[16:31]模拟总线方式,模拟出读/写时序,实现与上位机数据的高速传输。CH375支持USB的控制传输、批量传输、中断传输。出于即时性考虑,本系统采用中断传输方式。LPC2114实现USB总线见图2。
2 系统软件设计
多点测温系统的控制系统软件设计主要包括三个面:先移植嵌入式实时多任务操作系统 C/OS-Ⅱ,然后就是采集温度参数设置、DS18B20操作,*后就是LPC2114与上位机通信接口USB的驱动及上位机中多路温度显示界面。
2.1 移植 C/OS-Ⅱ内核
C/OS-Ⅱ是一个完整的,可移植、固化、裁剪的占先式实时多任务内核[6]。 C/OS-Ⅱ是用ANSI的C语言编写的,包含一个小部分汇编语言代码,使之可供不同架构的微处理器是用。目前,它已经在几十种从8位到64位的微处理器上实现了成功的移植。
由于设计 C/OS-Ⅱ时就考虑到了在不同处理器上移植,因而移植 C/OS-Ⅱ实际上需要修改的代码量很小。由于篇幅的限制, C/OS-Ⅱ在LPC2114上的移植方法和过程,见参考文献[2]。
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。
2.3 USB驱动软件设计
当温度采集后,要通过USB接口传到上位机,其中CH375与微处理器的接口通过固化在Flash中的固件程序(Firmare)来完成的。Firmare是USB和用户代码之间的接口。本次USB接口芯片的固件设计成完全的中断驱动,以保持响应得实时性。
上位机应用层发送主动请求给LPC2114,被动应答是指在LPC2114收到数据请求后,上传给上位机应用层的应答数据。所有的通讯都由上位机应用层发起,然后以接收到LPC2114的应答结束,完整的过程包括:① 上位机将数据请求发送给CH375 芯片;② CH375 芯片以中断方式通知LPC2114;③ LPC2114进入中断服务程序,获取CH375 的中断状态并分析;④ 如果是上传,则释放当前USB 缓冲区,然后退出中断程序;⑤ 如果是下传,则从数据下传缓冲区中读取数据块;⑥ 分析接收到的数据块,准备应答数据,也可以先退出中断程序再处理;⑦ LPC2114将应答数据写入批量端点的上传缓冲区中,然后退出中断程序;⑧ CH375 芯片将应答数据返回给上位机;⑨ 上位机接收到应答数据。
设备驱动程序就是控制硬件设备的一组函数。WDM(Win32 Driver Model)是Microsoft公司力推的全新的驱动程序模式,它的应用平台是Windows 98/Me/2000操作系统[7].
虽然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资源少、扩展方便,在多点温度检测中有比较好的应用前景。