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

3、模組參數
引腳名稱 | 描述 |
|---|---|
G | GND(電源輸入負極) |
V | VCC(電源輸入正極) |
S | 數字信號引腳 |
供電電壓:3.3V / 5V
連接方式:2.54mm排釘
安裝方式:雙螺絲固定
4、電路板尺寸

5、Arduino IDE示範程序
注意:程式上傳時如果提示庫文件報錯,請先導入庫文件!
Arduino IDE 庁件文件下載及導入教範:點擊查看
示範程序(UNO開發板):
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire_13(13);
DallasTemperature sensors_13(&oneWire_13);
DeviceAddress insideThermometer;
float ds18b20_13_getTemp(int w) {
sensors_13.requestTemperatures();
if(w==0) {
return sensors_13.getTempC(insideThermometer);
}
else {
return sensors_13.getTempF(insideThermometer);
}
}
void setup(){
Serial.begin(9600);
sensors_13.getAddress(insideThermometer, 0);
sensors_13.setResolution(insideThermometer, 9);
}
void loop(){
//DS18B20读取温度\nDS18B20连接在D6管脚,串口打印出温度值\n注:如果使用的DS18B20是散件,则需要在电源线和信号线之间并联一个5K左右的电阻
Serial.println(String("温度:") + String(ds18b20_13_getTemp(0)) + String("℃"));
Serial.println(String("温度:") + String(ds18b20_13_getTemp(1)) + String("℉"));
Serial.println("");
delay(1000);
}6、ESP32 Python 示例(適用於Mixly IDE /米思齊)
開發板選擇 Python ESP32 【ESP32 Generic(4MB)】切換為代碼模式上傳
注意:程式上傳時如果提示庫文件報錯,請先導入庫文件!
米思齊(Mixly)IDE ESP32庫檔案下載及匯入教學:點擊查看
示例程式(ESP32-Python):
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))
7、米思齊 Mixly 示例程式(圖形化語言)
示範程序(UNO開發板):點擊下載
注意:程式上傳時如果提示庫文件報錯,請先導入庫文件!
米思齊(Mixly)IDE Arduino 圖庫檔案下載及匯入教學:點擊查看

示範程序(ESP32開發板):點擊下載
注意:程式上傳時如果提示庫文件報錯,請先導入庫文件!
米思齊(Mixly)IDE ESP32庫檔案下載及匯入教學:點擊查看

8、測試環境搭建
Arduino UNO 測試環境搭建
準備配件:
HELLO STEM UNO R3 PRO 開發板 *1
USB type-c 資料線 *1
數位溫度傳感器(HS-S24A)*1
1P母對母杜邦線 *3條 或 3P母對母杜邦線 *1條
電路接線圖:

ESP32 測試環境搭建
準備配件:等更新...
電路接線圖:等更新...
9、視頻教學
視頻教學:點擊查看
10、測試結果
Arduino UNO 混试结果:
器件連接好線之後,將上述程序燒錄到 U+程序卡之後,打開串口監視器,波特率設置為9600,可以看到串口打印當前環境溫度。
