ข้ามไปที่เนื้อหา

DS18B20 - เซ็นเซอร์วัดอุณหภูมิแบบกันน้ำ

DS18B20 Sensor

📋 ภาพรวม

DS18B20 เป็นเซ็นเซอร์วัดอุณหภูมิระบบดิจิทัลที่ใช้การสื่อสารแบบ 1-Wire จุดเด่นคือสามารถต่อเซ็นเซอร์หลายตัวขนานกันในสายไฟเพียง ชุดเดียวได้ และมีรูปแบบที่เป็นโพรบสแตนเลสกันน้ำ (Waterproof)

ข้อมูลทางเทคนิค

  • ช่วงการวัด: -55°C ถึง +125°C
  • ความแม่นยำ: ±0.5°C (ในช่วง -10°C ถึง +85°C)
  • แรงดันไฟ: 3.0V ถึง 5.5V
  • ความละเอียด: ปรับได้ตั้งแต่ 9 ถึง 12 bit

🔌 การต่อสาย

DS18B20 มี 3 สาย (สำหรับแบบกันน้ำ): - สายสีแดง: VCC - สายสีดำ: GND - สายสีเหลือง/น้ำเงิน: DATA

ต้องใช้ Pull-up Resistor

จำเป็นต้องต่อ Resistor 4.7kΩ ระหว่างสาย DATA และสาย VCC เสมอ เพื่อให้การสื่อสาร 1-Wire ทำงานได้

DS18B20          Arduino
───────          ───────
VCC (Red)   →    5V (หรือ 3.3V)
GND (Black) →    GND
DATA (Yel)  →    Digital Pin 2

* ต่อ Resistor 4.7kΩ ระหว่าง VCC และ DATA
DS18B20          ESP32
───────          ─────
VCC (Red)   →    3.3V
GND (Black) →    GND
DATA (Yel)  →    GPIO 4

* ต่อ Resistor 4.7kΩ ระหว่าง VCC และ DATA

💻 โค้ดตัวอย่าง

ต้องติดตั้ง Library: OneWire และ DallasTemperature

Arduino / ESP32

#include <OneWire.h>
#include <DallasTemperature.h>

// ขาที่ต่อสาย DATA
const int oneWireBus = 4;     

OneWire oneWire(oneWireBus);
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(115200);
  sensors.begin();
}

void loop() {
  sensors.requestTemperatures(); 
  float temperatureC = sensors.getTempCByIndex(0);

  Serial.print("Temperature: ");
  Serial.print(temperatureC);
  Serial.println("°C");

  delay(1000);
}

🛠️ โปรเจค DIY

1. ระบบควบคุมอุณหภูมิตู้ปลา

ใช้ DS18B20 วัดอุณหภูมิน้ำในตู้ปลา และสั่งงานฮีตเตอร์หรือพัดลมผ่านรีเลย์เมื่ออุณหภูมิไม่ได้ตามเกณฑ์

2. เครื่องทำน้ำอุ่นอัจฉริยะ

ฝังโพรบไว้ที่ท่อทางออกเพื่อตรวจวัดอุณหภูมิน้ำที่ใช้งานจริง

3. ตรวจสอบอุณหภูมิหลายจุด (Multiple Sensors)

ต่อเซ็นเซอร์ DS18B20 หลายตัวในสายเส้นเดียวเพื่อวัดอุณหภูมิตามห้องต่างๆ ในบ้าน

⚠️ ข้อควรระวัง

สายไฟสีสลับกัน

ในบางผู้ผลิต สาย DATA อาจเป็นสีน้ำเงินแทนสีเหลือง และสาย GND อาจเปนสีขาวแทนสีดำ ควรตรวจสอบจากคู่มือของผู้ขายหรือทดสอบด้วยมัลติมิเตอร์

การหาที่อยู่ (Address)

เซ็นเซอร์แต่ละตัวมี Unique ID 64-bit หากต้องการใช้หลายตัวในสายเดียว ควรใช้โค้ดตัวอย่าง "Tester" ใน Library DallasTemperature เพื่ออ่าน Address ของแต่ละตัวเก็บไว้ก่อน