目前检测温度一般采用热电偶或热敏电阻作为传感器。这种传感器至仪表之间通常都要用专用的温度补偿导线,而温度补偿导线的价格很高,并且线路太长,会影响测量精度,这是直接以模拟量形式进行采集的不可避免的问题。在实际应用中,往往需要对较远处的温度信号进行监视。为此,设计了一种用单片机与数字温度传感器集成的方案,它可以以更低的成本和更高的精确度实现温度检测。
l 系统综述
系统硬件设计以Atmel公司的AT89S52单片机为核心,主要由电源电路、复位电路、晶振电路、串口通讯电路、温度传感器电路、12864液晶显示电路、I2C存储器电路以及按键输入电路构成。温度采集电路采用单总线数字温度传感器实现温度采集,可设计为一路或多路;温度存储电路采用I2C接口E2PRPOM存储芯片,以实现数据记录;液晶显示电路采用图形点阵液晶显示器,以实现温度的即时显示。同时配以键盘输入电路,可以接收用户指令输入,随时改变工作模式,或查询任意时间的温度数据。
2 硬件系统设计
硬件电路设计总体结构图如图1所示。由+5 V电源电路、手动复位电路、晶振电路(11.059 2 MHz)构成单片机最小系统,完成单片机的基本运行需求。串口电路用于通信,实现与主机的交互。温度采集电路、1602液晶显示电路、I2C存储器电路为该设计的三个核心模块,实现主要设计功能,同时实现按键输入电路。
2.1 温度采集电路设计
该设计采用Dallas公司生产的3引脚T0-T2小体积封装温度传感器DSl8820。DSl820是美国Dallas半导体公司推出的第一片支持“单总线”接口的温度传感器。它具有微型化、低功耗、高性能,抗干扰能力强,易配微处理器等优点,可直接将温度转化成串行数字信号,供微机处理。
温度测量范围为-55~+125 ℃,可编程为9~12位A/D转换精度,被测温度用符号扩展的16位数字量方式串行输出。测温分辨率可达O.062 5 ℃,其工作电源既可在远端引入,也可采用寄生电源方式产生,易于系统集成。多个DSl8820可以并联到三根或两根线上,CPU只需一根端口线就能与诸多DSl8820通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DSl8820非常适用于远距离多点温度检测系统。温度传感器电路图如图2所示。
2.2 I2C存储器扩展电路设计
I2C总线(Inter Integrated Circuitbus)包括一条数据线(SDA)和一条时钟线(SCL),是单片机系统常用的总线结构。这种总线结构尽可能地节省了单片机I/O资源,为多路温度采集保留了最大的扩展空间。
该设计中采用的存储器AT24C16是Atmel公司生产的I2C接口E2PROM芯片。AT24C16中带有片内寻址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的操作,且所有字节都以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8 B的数据。I2C存储器电路图3所示。
2.3 液晶显示电路设计
液晶显示电路采用1602带字库液晶实现。这一液晶模块,接口功能明确,操作简单,简化了电路设计,自带字库极大地方便了显示操作的实现。
3 系统功能实现
系统软件设计主要有两项任务,是用于不间断记录温度数据;二是用于接收用户输入,响应用户指令。
温度记录程序中每隔固定时间间隔采集温度数据,将温度数据与当前时间一并记录。若不扩展实时时钟芯片,可用软件方式,依据时间间隔计算转换得到当前时间,避免使用时钟芯片增加系统成本。对于用户按键输入,以外部中断方式予以响应。
该设计中没有采用操作系统,因此,多任务的调度是系统功能实现的关键之一。该设计没有输入中断产生时,为普通单任务系统;中断产生时,工作在多任务模式下。因此,中断产生后,两个任务模仿Linux操作,系统系多线程工作模式实现调度。
由于单片机工作频率所限,加之温度传感器为单总线串行器件,读/写占用时间周期相对较长,因此系统应考虑环境温度变化的剧烈程度。
4 结语
该设计可以实现温度数据的采集与长时间数据记录,既可以单独采样其中任意一路,也可以实现多路同时采样,同时可以与主机交互。该系统的整个运行过程在同一地点进行集中监控,方便又节省人力,实现了温度的采集、显示、存储于一体的集成记录功能。设计使用的外围元件较少。具有设计简单,扩展灵活,功能较全面等特点。