HS-S24-L 數位溫度傳感器

HS-S24-L 數位溫度傳感器

1、介紹

18b20數字溫度感測器是常用的數字溫度感測器,其輸出的是數字信號,具有體積小,抗干擾能力強,精度高的小特點。數字溫度傳感器接線方便,封裝後可用於電纜溝測溫,高爐水循環測溫,爐灶測溫,機房測溫,農業大棚測溫,潔淨室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用於各種狭小空間設備數字測温和控制領域。

2、原理圖

3、模組參數

引腳名稱

描述

G

GND(電源輸入負極)

V

VCC(電源輸入正極)

S

數字信號引腳

  • 供電電壓:3.3V / 5V

  • 連接方式:PH2.0端子線

  • 安裝方式:雙螺絲固定

4、電路板尺寸

5、Arduino IDE示範程序

Arduino UNO 示例(適用於Mixly IDE、Arduino IDE):點擊下載

/***********************************************************
 文件名:06_DS18B20Temperature sensor.ino
  描述:获取温度值,串口打印数据。
  作者:陈志强
  日期:2022.11.2
***********************************************************/
#include <OneWire.h>
#include <DallasTemperature.h>

OneWire oneWire_9(9);//18B20数字温度传感器接 Arduino 上的数字引脚9口
DallasTemperature sensors_9(&oneWire_9);//将 oneWire 引用传递给DallasTemperature库
DeviceAddress insideThermometer;

float ds18b20_9_getTemp(int w) {
  sensors_9.requestTemperatures();//发送命令以获取温度
  if(w==0) {
    return sensors_9.getTempC(insideThermometer);
  }
  else {
    return sensors_9.getTempF(insideThermometer);
  }
}

void setup(){
  Serial.begin(9600);
  sensors_9.getAddress(insideThermometer, 0);
  sensors_9.setResolution(insideThermometer, 9);
}

void loop(){
  
  Serial.println(String("温度:") + String(ds18b20_9_getTemp(0)) + String("℃"));//以摄氏度为单位打印温度
  Serial.println(String("温度:") + String(ds18b20_9_getTemp(1)) + String("℉"));//以华氏度为单位打印温度
  Serial.println("");
  delay(1000);

}

示例程序(ESP32開發板—基於Python語言,不能用Arduino IDE上傳代碼):

from machine import Pin
import time
class OneWire:
    def __init__(self, pin):
        self.pin = pin
        self.pin.init(Pin.OPEN_DRAIN, Pin.PULL_UP)
        self.pin.value(1)
    def reset(self):
        self.pin.value(0)
        time.sleep_us(480)
        self.pin.value(1)
        time.sleep_us(60)
        present = not self.pin.value()
        time.sleep_us(420)
        return present
    def writebit(self, value):
        self.pin.value(0)
        if value:
            time.sleep_us(10)
            self.pin.value(1)
            time.sleep_us(55)
        else:
            time.sleep_us(65)
            self.pin.value(1)
            time.sleep_us(5)
    def readbit(self):
        self.pin.value(0)
        time.sleep_us(2)
        self.pin.value(1)
        time.sleep_us(15)
        value = self.pin.value()
        time.sleep_us(45)
        return value
    def writebyte(self, value):
        for i in range(8):
            self.writebit((value >> i) & 1)
    def readbyte(self):
        value = 0
        for i in range(8):
            value |= self.readbit() << i
        return value
    def readinto(self, buf):
        for i in range(len(buf)):
            buf[i] = self.readbyte()
class DS18B20:
    def __init__(self, onewire):
        self.ow = onewire
        self.buf = bytearray(9)
    def convert_temp(self):
        self.ow.reset()
        self.ow.writebyte(0xCC)
        self.ow.writebyte(0x44)
        time.sleep_ms(750)
    def read_temp(self):
        self.ow.reset()
        self.ow.writebyte(0xCC)
        self.ow.writebyte(0xBE)
        self.ow.readinto(self.buf)
        temp = self.buf[0] | (self.buf[1] << 8)
        if temp & 0x8000:
            temp = -((temp ^ 0xffff) + 1)
        return temp / 16

def ds18b20_get_temp(w=0):
    sensor.convert_temp()
    t = sensor.read_temp()
    if w == 1:
        t = t * 9 / 5 + 32
    return t

ds_pin = Pin(12)
ow = OneWire(ds_pin)
sensor = DS18B20(ow)


while True:
    print(ds18b20_get_temp(1))

6、米思齊Mixly示例程式(圖形化語言)

ArduinoUNO圖形化示例程式:點擊下載

ESP32 Python圖形化示例程式:點擊下載

7、測試環境搭建

Arduino UNO 測試環境搭建

準備配件:

  • HELLO STEM UNO R3 開發板 *1

  • HELLO STEM UNO R3 P 扩展板 *1

  • USB type-c 資料線 *1

  • 數字溫度感應器(HS-S24P)*1

  • PH2.0 3P雙頭端子線 *1

電路接線圖:

ESP32 Python 測試環境搭建

8、視頻教學

Arduino UNO視頻教學:點擊查看

ESP32 Python視頻教學:

9、測試結論

Arduino UNO測試結論:

器件連接好線之後,將上述程序燒錄到 開發板之後,打開串口監視器,波特率設定為9600,可以看到串口印出當前環境溫度。

ESP32 Python測試結論: