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/zh-tw/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

發表回復

登錄後才能評論