标题: 10分钟理解DS18B20数字温度计模块 [打印本页]

作者: ppptalk    时间: 2018-4-11 15:57
标题: 10分钟理解DS18B20数字温度计模块
1. 明确目的


DS18B20是美国DALLA半导体公司推出的一种数字化单总线器-数字温度计。既然是数字温度计,那么它一定具备这样的能力-把周围环境的温度信号转换成数字信号。那么这个转换的结果放到哪里去了呢?存放到了一个叫做Scratchpad的上面,这个Scratchpad是什么意思不用去管它,只需要知道它是一个SRAM就可以了。这个Scratchpad一共有9个字节(BYTE0~BYTE8),转换的数字信息就存放在BYTE0和BYTE1,如下图所示。所以,目的就很明确了,对于DS18B20模块就是去读Scratchpad的BYTE0和BYTE1.




2. 思路分析


现在目的已经知道了,就是读Scratchpad(read scratchpad)的BYTE0和BYTE1. 那么怎么样Read Scratchpad呢?当然是去查看DS18B20的芯片手册了。阅读说明书你会发现Read Scratchpad是一个功能命令(DS18B20 FUNCTION COMMANDS),类似的还有其他很多功能命令,如下图所示:




说明书上已经讲的非常清楚了,要求每次在访问DS18B20的时候一定要遵循以下步骤,如下所示,






简单的讲,你想发送一个功能命令Read Scratchpad, 那必须在它前面加两步,初始化命令(Initialization)和ROM命令(ROM Command)。初始化命令只有一个,很容易确定,但是ROM命令有多个,需要找到一个与功能命令Read Scratchpad相匹配的ROM命令。如果总线上只有一个DS18B20模块,选择Skip ROM就可以了。
这样整个步骤就很简单了,先初始化,然后发送skip rom命令,紧接着发送read scratchpad命令,然后开始接收DS18B20传送的数据,第0和第1个字节就是我们所需要的。这样读出来的全部是0和1组成的信号,我们还需要将这些0和1组成的信号翻译成“温度值”。怎么样翻译,去查看说明书上的温度-数据对应表就可以了,如下所示:






注意这个表中的数据是补码形式,如果你只是考虑温度为正的情况,那么就不用去管原码,反码和补码了。因为对于正数的原码,反码和补码都是一样的。


如果读写操作正确的话,此时计算出来的温度应该是+85摄氏度。通过这个值可以判断你的读写程序和温度计算过程是否正确。那么为什么是+85摄氏度呢?在一上电的时候,DS18B20处在一个"idle state",简单的讲就是它没有工作,没有采集周围环境的温度。Scratchpad的BYTE0和BYTE1里面放的默认值是+85,所以你读到的其实是它的默认值。如果你想让DS18B20开始工作,那么很简单,发送一个Convert T命令就可以了。注意Convert T也是一个功能命令(Function Command),同样的按照前面的规则,给它添加初始化命令和ROM命令。


这样整个过程是不是完了呢?注意DS18B20完成温度的采集和转换是需要时间的,好比你敲隔壁的门,那你发出“敲门”这个命令后,你同学过来开门是需要时间的,在这个过程中你要做的事情就是等待。同样的,当你发送一个Convert T命令后,你需要等待DS18B20完成温度采集和转换的工作。那么等待多长呢,这个与你设置精度有关,精度越高,需要的时间越长,最多不超过750ms。当然这个过程中,你也可以采用忙信号检测的方式来判断。

3. 操作步骤


这样整个操作步骤就非常简单了,
  1. (1) initial                       (DS18B20初始化)
  2. (2) skip rom
  3. (3) convert T                 (让DS18B20开始工作采集周围温度)
  4. (4) busy check              (等待DS18B20完成采集)
  5. (5)  initial                        (DS18B20初始化)
  6. (6) skip rom
  7. (7) read scratchpad       (发送读scratchpad命令)
  8. (8) rcv data                     (接收DS18B20传过来的数据)
  9. (9) cal                             (计算温度值)
  10. (10) display                    (把这个值显示出来)
复制代码


4. 参考代码

DS18B20参考代码.rar (50.62 KB, 下载次数: 238)





上一篇:

10分钟理解LCD1602液晶显示模块
10分钟理解LCD1602如何显示自定义字符
10分钟理解OLED显示模块




作者: 15931666846    时间: 2018-4-11 17:36
很给力!
作者: 无时崩溃    时间: 2018-4-11 18:38
感谢楼主分享
作者: 那就微笑吧    时间: 2018-4-11 19:44
厉害厉害
作者: whdiy751124    时间: 2018-4-13 17:25
学习学习
作者: 一笑、    时间: 2018-4-13 20:06
给力      
作者: chaoself    时间: 2018-4-14 08:13
很给力!
作者: dicdoctor    时间: 2018-4-20 14:01
很有用谢谢。

作者: luxujin    时间: 2018-4-20 20:03
很有用谢谢。
作者: liuwenwu    时间: 2018-4-21 10:06
谢谢!刚好用到
作者: VVSuperman    时间: 2018-4-21 19:44
总结的不错

作者: yzh123    时间: 2018-4-23 11:43
感谢楼主分享
作者: love1120909472    时间: 2018-4-23 16:28
谢谢分享
作者: 虚妄XW    时间: 2018-4-23 21:39
正在学习这个温度传感器,感谢楼主分享
作者: 青青之歌    时间: 2018-4-23 23:21
讲得很通俗易懂
作者: ZXHREG    时间: 2018-4-24 22:07
简单

作者: 贝贝屋    时间: 2018-4-25 08:45
新手路过。看看学习下。。。。

作者: 此人ID不合法    时间: 2018-4-25 22:22
新人学习了
作者: qq383570990    时间: 2018-4-26 11:26

很给力!
作者: 心有天下    时间: 2018-4-26 15:39
还有很多疑惑,希望读完作者的思路。非常感谢楼主。
作者: Juneral    时间: 2018-4-26 17:52
不错的见解
作者: wu307105    时间: 2018-4-26 20:35
学到了谢谢
作者: jfb18331619    时间: 2018-4-27 11:47
好文章啊
作者: xushu1113551892    时间: 2018-4-27 13:02
新手路过
作者: kingdream    时间: 2018-4-27 14:01
很详细,还是觉得第一个图6啊
作者: 51heiRay    时间: 2018-4-28 18:12
涨知识
作者: 740014566    时间: 2018-4-29 11:03
学习下
作者: middfat    时间: 2018-4-29 12:20
好好学习,天天控制……
作者: aa11水喵    时间: 2018-5-1 22:29

感谢楼主分享!
作者: MJX74FBI    时间: 2018-5-1 22:44
写的真好,楼主下回功夫了。
作者: 5f688    时间: 2018-5-2 15:18
理解一下
作者: f193876392    时间: 2018-5-2 16:22
看一下

作者: raymondau    时间: 2018-5-2 16:36
学习一下,放分享
作者: 2669020082    时间: 2018-5-2 16:59
学习学习学习
作者: 吖吖love    时间: 2018-5-2 19:39
正需要啊,学习到了

作者: lixinren45    时间: 2018-5-2 21:03
学习一下.
作者: cy_0211    时间: 2018-5-5 23:08
看看,,,,,,,
作者: 猛虎将军    时间: 2018-5-6 13:36
好东西,谢谢分享
作者: benbird2011    时间: 2018-5-6 20:27
之前写了个单1820的 现在需要个双1820的
作者: qwertyui123    时间: 2018-5-6 23:22
看一看看
作者: yzcde    时间: 2018-5-6 23:33
学习了
作者: wx13808433053    时间: 2018-5-6 23:50
想学习这个,谢谢楼主
作者: 0858dll    时间: 2018-5-7 08:48
了解了解
作者: zhangyaolu    时间: 2018-5-7 16:57
听说回复才能看到
作者: 18942352071    时间: 2018-5-9 17:50
想要,毕设做不出来,要哭了
作者: wxsky1997    时间: 2018-5-10 19:53
感谢分享
作者: qltk    时间: 2018-5-11 08:58
描述的非常通俗易懂,谢谢!!!
作者: lon7085    时间: 2018-5-11 10:30
感谢楼主分享

作者: vstcg    时间: 2018-5-12 22:36
真的很清楚
作者: 黑人盘子    时间: 2018-5-12 23:31
之前就想过类似的做法就是找不到好的传感器,讲的很不错的
作者: 玩什么玩学习去    时间: 2018-5-13 09:32
厉害厉害
作者: wuzixu    时间: 2018-5-13 20:12
讲得很好
作者: 独家记忆12138    时间: 2018-5-14 13:22
支持楼主
作者: w963135423    时间: 2018-5-14 14:22
写的不错,比网上查的更容易理解
作者: lxd951214    时间: 2018-5-14 21:31
10分钟理解DS18B20数字温度计模块
作者: 秋高气爽112233    时间: 2018-5-14 23:44
学习学习
作者: Live电子    时间: 2018-5-15 09:24
正要弄温度计,学习了
作者: 刘广书    时间: 2018-5-15 10:06
谢谢分享
作者: 564    时间: 2018-5-16 09:16
正在学习中
作者: 564    时间: 2018-5-16 09:18
楼主给力,学习学习
作者: 花花21    时间: 2018-5-17 09:08
学习真的很有用
作者: tanyaming    时间: 2018-5-17 10:44
非常好的分享
作者: lzl881005    时间: 2018-5-18 10:36
非常的详细,支持楼主
作者: nameddd    时间: 2018-5-21 15:27
感谢分享
作者: YeHanWei    时间: 2018-5-21 19:55
讲得挺好的,不知道为什么移植到其他板后,初始化总是有错
作者: zhangtutu    时间: 2018-5-22 06:28
大佬大佬
作者: 西门米粉儿    时间: 2018-5-22 09:28
感谢分享
作者: Jokera    时间: 2018-5-22 12:53
楼主好厉害,总结的太到位了!
作者: HEIYOUB    时间: 2018-5-22 22:17
真的想了解这个芯片,不然这个项目会做的稀里糊涂的

作者: 5314039    时间: 2018-5-22 23:16
谢谢分享
作者: 1933823644    时间: 2018-5-23 00:48
厉害厉害
作者: kltws    时间: 2018-5-23 19:09
不错的分享

作者: JokerMOMO    时间: 2018-5-24 16:44
棒棒哒
作者: LWSZ    时间: 2018-5-25 09:13
学习 学习
作者: yimiba    时间: 2018-5-25 09:44
感谢分享
作者: jason005    时间: 2018-5-25 11:21
感谢楼主分享
作者: jason005    时间: 2018-5-25 11:22
感谢楼主分享
作者: jason005    时间: 2018-5-25 11:23

感谢楼主分享
作者: tt98    时间: 2018-5-25 20:47
用这个芯片成本太高了,做产品要是对精度没有太大要求的话还是用NTC划算!
作者: lichengjie2015    时间: 2018-5-25 23:39
厉害了
作者: 老胖熊    时间: 2018-5-26 15:23
讲的很清楚
作者: 万般皆下品    时间: 2018-5-28 22:24
来学习学习
作者: smartphone    时间: 2018-5-28 22:50
谢谢 慢慢学习
作者: 807874484    时间: 2018-5-29 13:21
感谢

作者: BigWheels    时间: 2018-6-3 22:32
谢谢讲授
作者: 837657313    时间: 2018-6-4 07:57
讲的很清楚
作者: zsyzdx    时间: 2018-6-6 22:13
感谢楼主!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
作者: swzz    时间: 2018-6-7 16:01
正要学习18b20,谢谢
作者: 78336478    时间: 2018-6-7 19:32
6666666
作者: 转角遇到dogs    时间: 2018-6-10 16:06
好资料,感谢
作者: manpingshui    时间: 2018-6-10 20:45
在哪呢我没看见啊

作者: 杰克汗    时间: 2018-6-11 00:45
超级厉害很详细
作者: yuki_ring    时间: 2018-6-11 08:23
很详细,初步了解了,谢谢楼主
作者: dingqinhong    时间: 2018-6-24 11:12
感谢楼主分享 对我来说很有用
作者: 天霸动霸成    时间: 2018-6-24 22:12
66666666
作者: 沈经理    时间: 2018-6-24 22:57
写的很好,简洁明了
作者: gogo7707    时间: 2018-6-25 12:49
刚写楼主分享
作者: 听雪    时间: 2018-6-25 15:09
DS18B20传感器刚好用到
作者: SKU    时间: 2018-6-25 17:55
看一看,瞧一瞧
作者: kkxyjf    时间: 2018-6-25 20:10
想看,想学习!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1