DS18B20是一种常用的单总线温度传感器,由美国DALLAS公司生产。每个器件都有一个64位的唯一号码,可以单总线多点测温。测量范围为-55~+125度。电压范围:3.0~5.5;

封装和连接方式

较常用的封装为T0-92封装,可以将它装入不锈钢圆筒中用树脂封装就可以实现防水探测了。

连接示意图

采用寄生供电

寄生供电

采用外部电源供电。

外部供电

工作方式

主要有:初始化、ROM操作、功能指令

约定:主机——指MCU或者其它控制器件,从机——指DS18B20.

初始化

主机默认将总线置为高电平“1”,然后将DQ总线拉低“0”产生“复位脉冲”并持续低电平480us~960us后将总线置高电平“1”并释放总线,待主机释放总线后,从机等待15~60us,如果复位成功将总线拉低“0”产生“存在脉冲”并持续60~40us后释放总线,之后上拉电阻将总线置为高电平“1”,主机在延时(释放总线开始大于480us),初始化完成。

ROM指令

在成功初始化后,主机就可以从总线上寻找存在的从机了;如果总线上只有一个,可以直接读取ROM得到序列号,也可以不读取而忽略ROM。

  • Search ROM[F0H]:上电时主机需要循环使用Search ROM指令,找到总线上的所有从机。每次Search ROM后都需要返回初始化步骤。
  • Read ROM[33H]:当只有一个从机时,可以直接使用这条指令读取从机序列号。
  • Match ROM[55H]:指令后面跟从机的64位序列号,用来选中操作的从机,其它从机都将等待复位信号。
  • Skip ROM[CCH]:当只有一个从机时,发出Skip ROM指令后就可以执行其它功能指令了,并且其它功能指令返回的数据中将不带64位序列号,其后必须是紧跟一条[BEH]。
  • Alarm Search[ECH]:跟Search ROM流程一样,区别是它只返回有告警的从机序列号,一样每次Alarm ROM后都需要返回初始化步骤。

功能指令

ROM指令后就可以进行温度转换等操作了,主要通过寄存器交互,寄存器分配如下,共占用9个字节0~8。

0 —— 温度值低位 (LS Byte);1 —— 温度值高位 (MS Byte);2 —— 高温限值(TH);3 —— 低温限值(TL);4 —— 配置寄存器;5 —— 保留;6 —— 保留;7 —— 保留;8 —— CRC校验值

  • Convert T[44H]温度转换:进行一次温度转换,支持9~12位数字量。
  • Read Scratchpad[BEH]读取暂存器和CRC字节:
  • Write Scratchpad[4EH]写暂存器:
  • Copy Scratchpad[48H]复制暂存器内容到EEPROM:
  • Recall E2[B8H]从EEPROM调用配置到暂存器:
  • Read Power Supply[B4H]返回供电模式:

源代码

[ 编辑 | 历史 ]
最近由“jilili”在“2014-01-02 15:32:30”修改