Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >树莓派基础实验25:DS18B20温度传感器实验

树莓派基础实验25:DS18B20温度传感器实验

作者头像
张国平
发布于 2020-09-27 02:23:40
发布于 2020-09-27 02:23:40
2.1K00
代码可运行
举报
运行总次数:0
代码可运行

一、介绍

   温度传感器DS18B20是一款常用的数字温度传感器,具有体积小,硬件成本低,抗干扰能力强,精度高的特点。数字温度传感器易于连接,并可以在包装后应用于各种场合,与传统的AD采集温度传感器不同,采用1线总线,可直接输出温度数据。


二、组件

★Raspberry Pi主板*1

★树莓派电源*1

★40P软排线*1

★DS18B20温度传感器模块*1

★面包板*1

★跳线若干

三、实验原理

DS18B20温度传感器

DS18B20模块原理图

   DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原理如下图所示:

DS18B20测温原理

   图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号发送给计数器1。高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。

DS18B20温度传感器技术性能描述:

①、 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

DS18B20

② 、测温范围 -55℃~+125℃,固有测温误差1℃。在摄氏度-10 ° C至+85 ° C范围内精度为±0.5 ° C

③、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。

④、工作电源: 3.0~5.5V/DC (可以数据线寄生电源)

⑤ 、在使用中不需要任何外围元件

⑥、 测量结果以9~12位数字量方式串行传送

⑦ 、不锈钢保护管直径 Φ6

⑧ 、适用于DN15~25, DN40~DN250各种介质工业管道和狭小空间设备测温

⑨、 标准安装螺纹 M10X1, M12X1.5, G1/2”任选

⑩ 、PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。

四、实验步骤

第1步:连接电路。

树莓派

T型转接板

温度传感器模块

GPIO7

G4

OUT

5V

5V

VCC

GND

GND

GND

DS18B20温度传感器实验电路图

DS18B20温度传感器实验接线图

第2步:升级操作系统内核。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get update
sudo apt-get upgrade

第3步:编辑/boot/config.text文件。在文件底部添加一行:dtoverlay=w1-gpio。

/boot/config.text文件

第4步:重启树莓派系统。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo reboot

第5步:安装设备驱动程序并确认设备是否有效。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices/
ls

确认设备是否有效

  上图中28-0300a2791d24是一个外部温度传感器设备的序列号,但它会随每个设备而变化。因为DS18B20温度传感器的序列号是唯一的。

第6步:查看设备数据,检查当前温度。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pi@raspberrypi:/sys/bus/w1/devices $ cd 28-0300a2791d24
pi@raspberrypi:/sys/bus/w1/devices/28-0300a2791d24 $ ls
driver  hwmon  id  name  power  subsystem  uevent  w1_slave
pi@raspberrypi:/sys/bus/w1/devices/28-0300a2791d24 $ cat w1_slave 
16 01 55 05 7f a5 a5 66 b5 : crc=b5 YES
16 01 55 05 7f a5 a5 66 b5 t=17375

  数据文件中序号为1的行(由于计算机中排序从0开始,序号为1的行即第2行,后面相似的情况一样),序号为9的字符段“t=17375”中的数字就是当前温度值。如果要将其转换为摄氏度,也可以除以1000,即当前温度为17375÷1000=17.375°C。

第7步:编写控制程序。运行代码后,在屏幕上显示当前温度值。

实验结果显示情况

  程序中导入了操作系统的库os,详情可以点击链接: https://www.runoob.com/python/os-file-methods.html

  程序中也使用了Python 字符串内建函数,更多字符串操作可以点击链接: https://www.runoob.com/python/python-strings.html

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env python
#----------------------------------------------------------------
#   Note:
#       ds18b20's data pin must be connected to pin7.
#       replace the 28-XXXXXXXXX as yours.
#----------------------------------------------------------------
import os  #导入操作系统的库os

ds18b20 = ''

def setup():
    global ds18b20
    for i in os.listdir('/sys/bus/w1/devices'):
    #os.listdir(path) 返回path指定的文件夹包含的文件或文件夹的名字的列表
    
        if i != 'w1_bus_master1':
    #里面除了文件'w1_bus_master1',另外一个就是温度数据文件所在的文件夹
    
            ds18b20 = i   
    #将温度数据文件所在的文件夹名赋值给全局变量ds18b20

def read():

    location = '/sys/bus/w1/devices/' + ds18b20 + '/w1_slave'
    #location是温度数据文件的地址
    
    tfile = open(location)  
    #os.open(file, flags[, mode])打开一个文件
    text = tfile.read()     
    #  os.read(fd, n)从文件描述符 fd 中读取最多 n 个字节,返回包含
    #  读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。
    
    tfile.close()
    #os.close(fd)关闭文件描述符 fd
    
    secondline = text.split("\n")[1]
    #   string.split(str="", num=string.count(str))
    #   以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+ 个子字符串
    #计算机里序号是从0开始计算,取1即是第二行
    
    temperaturedata = secondline.split(" ")[9]
    #以空格为分隔符,取序号为9的字符段,如:t=17375
    
    temperature = float(temperaturedata[2:])
    #取字符串(如:t=17375)第2位及以后部分,即数字部分17375
    
    temperature = temperature / 1000
    return temperature
    
def loop():
    while True:
        if read() != None:
            print "Current temperature : %0.3f C" % read()
           #以单精度浮点小数的形式输出,保留三位小数
def destroy():
    pass

if __name__ == '__main__':
    try:
        setup()
        loop()
    except KeyboardInterrupt:
        destroy()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
树莓派综合项目1:智能温度测量系统实验
  我们可以在编程时通过操纵杆PS2调整下限和上限值。操纵杆PS2有五个操作方向:向上、向下、向左、向右和向下按压。在这个项目中,我们将使用左右方向来控制上限值,上下方向来控制下限值。如果按一下操纵杆,系统将退出。
张国平
2020/09/27
1.3K1
读取DS18B20温度、测量环境温度信息(单只DS18B20写法)
随着工业自动化和智能家居技术的不断发展,精确测量和监控环境温度变得尤为重要。在许多应用场景中,如仓库管理、温室控制、空调系统以及工业制造过程中,实时准确地获取环境温度信息对于保障设备正常运行、提高能源利用效率以及优化生产流程具有重要意义。
DS小龙哥
2025/05/27
570
读取DS18B20温度、测量环境温度信息(单只DS18B20写法)
基于FPGA的温度传感器(ds18b20)驱动设计
DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。
FPGA技术江湖
2025/01/16
4080
基于FPGA的温度传感器(ds18b20)驱动设计
DS18B20温度传感器的工作原理_基于ds18b20的温度报警仿真
DS18B20是一款常用的高精度的单总线数字温度测量芯片。具有体积小,硬件开销低,抗干扰能力强,精度高的特点。
全栈程序员站长
2022/09/30
2K0
DS18B20温度传感器的工作原理_基于ds18b20的温度报警仿真
树莓派基础实验17:温度传感器实验
   温度传感器是检测温度并将其转换为输出信号的组件。根据材料和部件的特点,温度传感器可分为热电阻和热电偶两种,热敏电阻是前者的一种,他由半导体材料制成。大多数热敏电阻是负温度系数(NTC),其电阻随温度升高而降低,由于它们的电阻随温度变化剧烈变化,所以热敏电阻是最敏感的温度传感器。    模拟温度传感器模块使用NTC热敏电阻,因此可以对温度进行敏感测量。它还有一个内置比较器LM393,它可以使模块同时输出数字和模拟信号。该模块可用于温度报警和温度测量。
张国平
2020/09/27
2.9K0
4.5 51单片机-DS18B20温度传感器
实验板上的DS18B20模块接在单片机的P3.5 IO口上,在插入DS18B20芯片时,圆弧朝上插入,具体效果可以看上面图片。
DS小龙哥
2022/01/12
1.5K0
4.5 51单片机-DS18B20温度传感器
【CC2530开发基础篇】DS18B20温度传感器
在本项目中,我们使用德州仪器(TI)的CC2530单片机搭建一个简单的温度检测系统,通过接入数字温度传感器DS18B20,实现实时环境温度的采集和监测。CC2530是一款高性能、低功耗的无线微控制器,特别适合物联网(IoT)和嵌入式系统的开发,其丰富的外设接口为传感器连接和数据传输提供了便利。
DS小龙哥
2025/05/27
970
【CC2530开发基础篇】DS18B20温度传感器
用AWS、Slack和树莓派构建物联网原型项目
IoT-AWS-Slack-and-a-Raspberry-Pi-1-1068x656-1.jpg
用户4122690
2020/06/08
2.9K0
用AWS、Slack和树莓派构建物联网原型项目
STM32入门开发: 编写DS18B20温度传感器驱动(读取环境温度、支持级联)
DS18B20是一个数字温度传感器,采用的是单总线时序与主机通信,只需要一根线就可以完成温度数据读取;
DS小龙哥
2022/01/12
3.6K0
STM32入门开发:  编写DS18B20温度传感器驱动(读取环境温度、支持级联)
DS18B20温度传感器的特性、原理、驱动(华大半导体HC32L136、ESP32驱动)
新冠疫情、元器件涨价,同一家店铺之前买的DS18B20模组体积有大拇指这么大,最近买体积只有大拇指指甲盖这么大,以前无论买多少都有6元运费,今年哪怕买一块都是包邮,今年生意难做了,祈祷国泰民安、国强民富!
不脱发的程序猿
2021/01/20
3.3K0
基于51单片机的DS18B20数字式温度计开发,论文,仿真,代码等
6.报警温度设定和报警:根据需要可以设置报警温度,并且当达到报警温度时会发出报警提示;
蒋宇智
2024/04/22
3870
基于51单片机的DS18B20数字式温度计开发,论文,仿真,代码等
用树莓派实现室内温度监控
树莓派加上温度传感器实现室内温度监控。可用于家庭,轿车,工业,农业 等许多方面。可做温度预警,自动降温等操作。各位小伙伴可自行脑补发挥。
物流IT圈
2019/07/16
1.8K0
用树莓派实现室内温度监控
单片机驱动多个DS18B20传感器测温度,毕设论文,Proteus仿真,C代码
基于DS18B20的多点温度测量监控系统设计,以AT89C52单片机作为主控制器,不断循环读取4组DS18B20(T1、T2、T3和T4)温度数据,同时使用LCD1602液晶循环显示4组测取的温度值以及每组设定的温度上下限值,通过按键可设置每组温度报警上下限和液晶显示的模式(循环显示模式和手动切换显示模式)。当前组的温度值若不在设定范围内,则蜂鸣器报警,对应的LED灯点亮;具体过程为:温度高于上限值,红色LED灯点亮;温度低于下限值,蓝色LED灯亮。
蒋宇智
2024/04/17
4030
单片机驱动多个DS18B20传感器测温度,毕设论文,Proteus仿真,C代码
pt100温度传感器参数(pt100温度传感器原理)
WZP-P系列贴片式pt100温度传感器主要用于测量物体表面的温度,它通过螺钉或其它固定方式将传感器贴在物体表面,实现较理想的测温效果。贴片式温度传感器和被测物体接触面积大,接触紧密,所以在一些表面温度测量方面具有比较明显的优势:测温准确性高、反应速度快,体积小方便固定安装。
全栈程序员站长
2022/07/25
1.3K0
(十二)51单片机----用DS18B20浅测一下工(江)西的室外温度
目录 DS18B20 DS18B20介绍 引脚及应用电路 内部结构框图 储存器结构 单总线 单总线介绍 电路规范 电源供电​ 寄生供电 时序结构 操作流程 数据帧 温度存储格式 代码 运行效果 ----         今天我们要做的是一个温度计,因为江西这几天的温度太高了,所以就产生了去测一下室外温度的想法,所以我就在下午5点左右带着单片机去了室外,开始了测温。不过呆了一分钟不到就溜了,哈哈哈! DS18B20 DS18B20介绍 DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字
小点点
2022/12/12
6700
(十二)51单片机----用DS18B20浅测一下工(江)西的室外温度
LabVIEW控制Arduino采集多路DS18B20温度数值(进阶篇—3)
DS18B20是美国DALLAS半导体公司的数字化单总线智能温度传感器,与传统的热敏电阻相比,它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。从DS18B20读出信息或写入信息仅需要一根线(单总线)读写,总线本身也可以向所挂接的设备供电,而无需额外电源。
不脱发的程序猿
2022/06/12
1.9K0
LabVIEW控制Arduino采集多路DS18B20温度数值(进阶篇—3)
蓝桥杯单片机必备知识—–(7)温度传感器整数和浮点数
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100139.html原文链接:
全栈程序员站长
2021/04/14
5400
极客DIY:如何利用树莓派提高睡眠质量?
众所周知睡眠是人类生活不可或缺的一部分,如果睡眠不足会引发很多问题(身体、情绪等),那么怎么和树莓派有关系呢?请看看下面文章相信对你会很有帮助。 写在前面 过去如果失眠或者心里烦躁不想休息,想通过数绵羊类似的方式尽快进入梦乡,却忽视了周围环境的影响,而休息之后发现感觉四肢乏力,才意识到没有获得更好的睡眠质量。原文章的作者作为孩子的父母希望孩子能够有一个好的睡眠环境,比如适当的湿度、温度、睡衣、床上用品等。由于作者孩子的房间都在阴面,作者担心房间潮湿不够温暖,尤其在冬天的时候。同时美国国立卫生研究院(th
FB客服
2018/02/07
1.4K0
极客DIY:如何利用树莓派提高睡眠质量?
B蓝桥杯嵌入式之DS18B20、DHT11
蓝桥杯嵌入式开发板的扩展板提供DS18B20温度传感器和DHT11温湿度传感器。虽然两者有共同的功能,但是DS18B20的功能非常强大,不容忽视的。不能只学习DHT11,而忽略DS18B20,下面分别以DS18B20和DHT11来讲解它们的使用方法。
用户5935416
2019/08/01
1.5K0
B蓝桥杯嵌入式之DS18B20、DHT11
STM32F407开发板DS18B20应用案例
DS18B20是一种数字温度传感器,由Maxim Integrated公司生产。它采用单总线接口,能够在广泛的温度范围内测量温度,并通过数字方式输出温度值,具有较高的精度和稳定性。
DS小龙哥
2023/07/08
4661
STM32F407开发板DS18B20应用案例
推荐阅读
相关推荐
树莓派综合项目1:智能温度测量系统实验
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验