发 帖  
原厂入驻New

基于单总线器件DS18B20的温度测量仪

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

只有小组成员才能发言,加入小组>>

491个成员聚集在这个小组

加入小组

热门话题

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表