1 引言
许多情况下需要测量温度参数。通常测温系统的主要器件是热敏电阻,由于它体积小、重复性好、测量方法简单,所以在测温系统中广泛应用。但采用热敏电阻的测温系统需要A/D转换,而且测量精度不高。本文采用Dallas公司生产的一种新型温度传感器DS18B20,它集温度测量、A/D转换于一体,其测量范围宽(-55℃~+125℃),精度高(0.0625℃),DS18B20是一款具有单总线结构的器件。
由DS18B20组建的温度测量单元体积小,便于携带、安装。同时,DS18B20的输出为数字量,可以直接与单片机连接,无需后级A/D转换,控制简单。由于DS18B20具有单总线特性,便于扩展,可在一根总线上挂接多个DS18B20来组建温度测量网络。
2 硬件电路设计
本系统设计采用 Mega8单片机控制DS18B20,由显示电路显示当前温度。其系统硬件电路如图1所示。Atmel的Mega8单片机采用RTSC(精简指令集),指令执行速度快,内嵌8 KB Flash程序存储器,支持ISP(在系统编程),片内含有大容量的RAM区,具有SPT总线、I2C总线、ADC功能。Mega8单片机体积小,功能强,具有PDIP-28封装及TQFP封装。
DS18B20采用单总线方式和Mega8单片机相连,即DS18B20的1引脚和3引脚接地,2引脚通过一只240 Ω的电阻接至Mega8的PB7引脚,同时将PB7引脚采用一只4.7 kΩ的电阻上拉至VCC。
单总线即只用一根信号线,既供电,又传输数据,而且数据传输是双向的,单总线具有"线与"功能,连接方便,便于扩展。
由于DS18B20采用 CMOS技术,耗电量很小,从总线上"偷"一点电保存到DS18B20内的电容中就可供给器件工作。串联240 Ω电阻的目的是防止有缺陷的程序损坏DS18B20,如果没有正确地采用OC(集电极开路)或OD(漏极开路)结构驱动DS18B20,而是选择推挽方式,DS18B20可能被烧坏。 2.1 DS18B20的控制时序
由于DS18B20是采用一根I/O总线读写数据,因此,DS18B20对读写数据位有严格的时序要求。DS18B20遵循相应的通信协议从而保证数据传输的正确性和完整性。该通信协议定义了多种信号时序:初始化时序、读时序、写时序。所有时序都是将单片机作为主机,DS18B20作为从机。每一次命令和数据传输都是从主机启动写时序开始,如果要求从机回送数据,在写命令后,主机需启动读时序接收数据。所有的读、写时序至少需要60μs,且每两个独立的时序之间至少需要1μs的恢复时间。数据和命令的传输都足低位优先。
DS18B20的复位时序包括主机发出的复位脉冲和从机发出的应答脉冲。上机通过拉低单总线并保持至少480μs产十复位脉冲,然后由主机释放总线,进入接收模式。主机释放总线时,会产生一个由低电半跳变为高电平的上升沿,DS18B20检测到该上升沿后,延时15μs~60μs,接着DS18B20通过拉低总线60μs~240μs产生应答脉冲。主机接收到DB18B20的应答脉冲后就开始对DS18B20进行ROM命令和功能命令操作。DS18B20的复位时序如图2所示。
DS18B20的读时序分为读0时序和读1时序。DS18B20的读时序是主机将单总线拉为低电平,在15μs之内释放单总线,以便使DS18B20将数据传输到单总线上。若DS18B20发送1,总线保持高电平,若发送0,则总线为低电平。由于DS18B20发送数据后保持15μs有效时间,因此,主机在读时序时必须释放总线,且保持15μs的采样总线状态,以便接收DS18B20发送数据。DS18B20的读时序如图3所示。
DS18B20具有下面控制命令,如表1所示。
3 软件设计
Mega8单片机对DS18B20的控制严格遵循单总线的复位及读、写时序要求,同时,需要写入必要的控制字控制DS18B20完成相应工作。当写入0x44控制字启动DS18B20温度转换后,需要等待至少800 ms,在这个时间段内DS18B20完成温度的采集和A/D转换,此时读取的数据才是正确的。软件程序流程图如图5所示。
DS18B20集温度测量、A/D转换于一体,具有体积小、动态范围宽、测量精度高、单总线结构等特点。经试验,基于Mega8单片机和DS18B20的温度测量仪,设计简单,控制方便,测量准确,测温范围宽,完全可以取代水银温度计和热敏电阻测量。利用单总线具有很强的扩展性,还可以组建多点的温度检测网络。因此,基于Mega8单片机和DS18B20的温度测量仪,具有广泛的应用前景。