ds18b20温度传感器工作原理解析

一、ds18b20概述

DS18B20是一款数字温度传感器,由美国独立半导体公司研制生产。其特点是一线式结构、数字化输出、精度高、抗干扰能力强等。DS18B20提供的数字输出,能够节省传感器到微控制器之间的CAN控制资源,并具有传输距离远、干扰小、成本低等优点。

二、ds18b20工作原理

DS18B20数字温度传感器是基于热电阻元件(PTC)的数字温度传感器。在DS18B20的核心部件中,有一块名为“温度传感器”(Temperature Sensor)的芯片。其内部结构如下图所示:

             	 _______
            	|       |
 GND------|______ |-|         |
                          |          |
 DQ--------|——CHIP——|-|         |
                          |_____|
 VCC--------|

其中,“温度传感器”由一根金属导线(镍、铬合金)构成,即作为Pt电阻元件,同时还起到振动元件的作用。当外界温度变化时,它的电阻值也随之变化。具体地,当温度升高时,它的电阻值也增大。

当程序启动时,微控制器将引脚DQ输出初始化为输出高电平,然后再将其设置为输入模式,在这种模式下,DS18B20将输出其唯一的ROM代码,这个代码被用来在单个脚上识别和区别多个DS18B20。

三、ds18b20连接方式

DS18B20与微处理器或其他数字IC的连接方式如下图所示,其中VCC、GND、DQ为三根线,这是一根单线(总线)连接器。

                  __________
                 |          |
         VCC----|1         3|----DQ
         GND----|2         4|----NC(Not Connected)
                 |__________|

其中VCC为芯片正极,GND为芯片负极,DQ为芯片数据线,NC用于测试,暂时没有使用。

四、ds18b20程序设计

下面的代码是利用Python语言写的,可以实现读取DS18B20模块输出的温度值。其中DS18B20的数据线连接到了GPIO4引脚处,使用的是W1协议库文件,代码如下:

   import os
   import glob
   import time
 
# 单总线接口路径
   os.system('modprobe w1-gpio')
# 一个总线下的多个DS18B20的通信串口
   os.system('modprobe w1-therm')
 
# 定义传感器的数据文件路径
   base_dir = '/sys/bus/w1/devices/'
# 获取所有的DS18B20的路径信息
   device_folder = glob.glob(base_dir + '28*')[0]
# 获取DS18B20数据文件所对应的文件路径
   device_file = device_folder + '/w1_slave'
 
   def read_temp_raw():
       f = open(device_file, 'r')
       lines = f.readlines()
       f.close()
       return lines
 
   def read_temp():
       lines = read_temp_raw()
       while lines[0].strip()[-3:] != 'YES':
           time.sleep(0.2)
           lines = read_temp_raw()
       equals_pos = lines[1].find('t=')
       if equals_pos != -1:
           temp_string = lines[1][equals_pos+2:]
           temp_c = float(temp_string) / 1000.0
           return temp_c
 
   while True:
       print(read_temp())
       time.sleep(1)

五、ds18b20传感器的应用

DS18B20数字温度传感器最常见的应用场合是在家庭和办公室中进行温度和湿度测量,以及在工业设备上进行温度监测等领域内,如下使用DS18B20测量温度的代码:

#include  <OneWire.h>
#include  <DallasTemperature.h>
// 定义总线变量Pin为2号针脚
#define ONE_WIRE_BUS 2        
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
  Serial.begin(9600);
  sensors.begin();
}
void loop(void)
{
  sensors.requestTemperatures();
  Serial.println(sensors.getTempCByIndex(0));
  delay(1000);
}

原创文章,作者:AJJH,如若转载,请注明出处:https://www.506064.com/n/148654.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
AJJH的头像AJJH
上一篇 2024-11-03 15:17
下一篇 2024-11-03 15:17

相关推荐

  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • 详解STM32 DS18B20温度传感器

    一、DS18B20简介 DS18B20是一款数字温度传感器,能够直接将温度信息转换成数字信号,并通过单总线接口传输。DS18B20的优点在于最大传输距离可达100米,唯一需要外接的…

    编程 2025-04-23
  • SU03T语音模块工作原理

    一、硬件设计 SU03T语音模块是一个集成了语音控制的声音识别模块。它采用专用的音频处理芯片VAG6810和一颗STM32F103芯片配合使用。 这个模块主要由麦克风、按键外设、几…

    编程 2025-04-23
  • BH1750光照传感器工作原理

    一、什么是BH1750光照传感器 BH1750是一种数字式光照度传感器,可以测量环境中的光照强度。它可以输出数字信号,使得它的使用变得更加方便。它主要是由光敏晶体管和运放电路构成,…

    编程 2025-04-23
  • 深入了解Servlet工作原理

    一、Servlet是什么 Servlet是Java Web技术中重要的一环,它是Java Web应用程序的基础,负责处理客户端发送的请求并向客户端返回响应。它本质上是一组接口,必须…

    编程 2025-04-13
  • 解密轮式里程计的工作原理,提高车辆运行精度

    轮式里程计是现代汽车中一个非常重要的部件,其作用是能够记录车辆行驶的里程数,以及车辆在行驶过程中的速度、加速度等运动状态。而在我们平时使用汽车的时候,我们也常常会遇到汽车里程计不准…

    编程 2025-02-25
  • 继电器工作原理通俗易懂

    一、继电器工作原理 继电器是一种电器控制器件,其工作原理基于电磁感应现象。它由铁心、线圈、触点和外壳等部分组成。 在正常情况下,继电器线圈中不流电流,铁心上的触点与另一固定触点没有…

    编程 2025-02-25
  • 矩阵按键的工作原理

    一、矩阵按键的基本概念 矩阵按键是指多个按键组成的矩阵状结构,通过按键与行线和列线的交叉点来判断按键的输入状态。在单片机、键盘、电子手表等电子设备中广泛应用。 矩阵按键通常由多个行…

    编程 2025-02-24
  • PCS储能变流器工作原理

    一、PCS储能变流器介绍 PCS是Power Conditioning System的缩写,直译为电力调节系统。PCS常用于太阳能、风能、水能等清洁能源发电系统,因为这些发电方式都…

    编程 2025-01-27
  • MQ-2烟雾传感器工作原理

    一、MQ2烟雾传感器工作原理讲解 MQ-2烟雾传感器是一种可燃气体传感器,可以检测多种可燃性气体,如天然气、甲烷、丙烷、烟、酒精、氢气等。其工作原理基于半导体敏感元件,当检测到可燃…

    编程 2025-01-14

发表回复

登录后才能评论