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]返回供电模式: