DS18B20 เป็นเซ็นเซอร์วัดอุณหภูมิแบบดิจิตอลที่ได้รับความนิยมอย่างมาก เนื่องจากมีขนาดเล็ก ราคาประหยัด และใช้งานง่าย สามารถวัดอุณหภูมิได้อย่างแม่นยำในช่วงกว้าง ทำให้เหมาะสำหรับนำไปประยุกต์ใช้ในโครงงานอิเล็กทรอนิกส์ต่างๆ เช่น ระบบควบคุมอุณหภูมิ, สถานีตรวจอากาศ, และระบบสมาร์ทโฮม
ข้อมูลจำเพาะ
- ช่วงการวัดอุณหภูมิ: -55°C ถึง +125°C (ช่วงกว้างมาก สามารถวัดอุณหภูมิได้ทั้งในสภาพแวดล้อมที่เย็นจัดและร้อนจัด)
- ความละเอียด: 9 บิตถึง 12 บิต (ปรับความละเอียดได้ตามต้องการ)
- ความแม่นยำ: ±0.5°C ที่อุณหภูมิ 15°C ถึง 35°C (ความแม่นยำสูงในช่วงอุณหภูมิปกติ)
- อินเทอร์เฟซ: 1-Wire (สามารถต่อเชื่อมกับไมโครคอนโทรลเลอร์ได้ง่าย โดยใช้สายสัญญาณเพียงเส้นเดียว)
- แรงดันไฟฟ้า: 3.0V ถึง 5.5V (สามารถทำงานได้กับแหล่งจ่ายไฟทั่วไป)
- การสิ้นเปลืองพลังงาน: ต่ำมาก (เหมาะสำหรับใช้งานกับแบตเตอรี่)
- ขนาด: แพ็คเกจ TO-92 หรือ 8-pin SOIC (ขนาดเล็กกระทัดรัด)
โครงสร้างภายใน
DS18B20 internal structure

ขาต่อ
DS18B20 pins
- VCC: แรงดันไฟฟ้าจ่าย
- GND: กราวด์
- DQ: ข้อมูล (1-Wire)
การใช้งาน
- ต่อวงจร: ต่อเซ็นเซอร์เข้ากับไมโครคอนโทรลเลอร์ (เช่น Arduino, Raspberry Pi) ผ่านสายสัญญาณเพียงเส้นเดียว
- เขียนโปรแกรม: ใช้ไลบารี OneWire และ DallasTemperature เพื่ออ่านค่าอุณหภูมิจากเซ็นเซอร์
- ประยุกต์ใช้: นำข้อมูลอุณหภูมิที่ได้ไปแสดงผลบนจอ LCD, ควบคุมมอเตอร์, หรือส่งข้อมูลไปยังระบบคลาวด์
ข้อดีของ DS18B20
- ราคาถูก: สามารถหาซื้อได้ง่ายในราคาประหยัด
- ใช้งานง่าย: มีไลบารีสำเร็จรูปให้ใช้งาน
- เชื่อมต่อได้หลายตัว: สามารถต่อเซ็นเซอร์ได้หลายตัวบนสายสัญญาณเส้นเดียว
- ทนทาน: สามารถทำงานได้ในสภาพแวดล้อมที่หลากหลาย
ข้อควรระวัง
- ความไวต่อสัญญาณรบกวน: ควรต่อสายสัญญาณให้สั้นที่สุด และหลีกเลี่ยงการเดินสายใกล้กับแหล่งกำเนิดสัญญาณรบกวน
- อัตราการส่งข้อมูล: มีอัตราการส่งข้อมูลจำกัด ควรเลือกใช้ความละเอียดในการวัดอุณหภูมิที่เหมาะสม
DS18B20 เป็นเซ็นเซอร์วัดอุณหภูมิที่น่าสนใจสำหรับผู้ที่ต้องการเริ่มต้นโครงงานอิเล็กทรอนิกส์ หรือสร้างระบบควบคุมอุณหภูมิในบ้าน ด้วยราคาที่ประหยัดและความสามารถที่หลากหลาย ทำให้ DS18B20 เป็นตัวเลือกที่ยอดเยี่ยมสำหรับการใช้งานในหลากหลายรูปแบบ
ต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับ DS18B20 หรือมีคำถามอื่นๆ สามารถสอบถามได้เลยค่ะ
คำถามที่พบบ่อย:
- DS18B20 ต่างจากเซ็นเซอร์อุณหภูมิแบบอะนาล็อกอย่างไร?
- DS18B20 เป็นเซ็นเซอร์แบบดิจิตอล ให้ค่าออกมาเป็นเลขฐานสอง ทำให้ประมวลผลได้ง่ายกว่าเซ็นเซอร์แบบอะนาล็อก
- จะเลือกความละเอียดในการวัดอุณหภูมิอย่างไร?
- ขึ้นอยู่กับความต้องการในการใช้งาน ถ้าต้องการความแม่นยำสูง ก็ควรเลือกความละเอียดที่สูงขึ้น แต่จะส่งผลต่ออัตราการส่งข้อมูล
- สามารถต่อ DS18B20 เข้ากับไมโครคอนโทรลเลอร์ชนิดใดได้บ้าง?
- สามารถต่อเข้ากับไมโครคอนโทรลเลอร์ได้ทุกรุ่นที่รองรับการสื่อสารแบบ 1-Wire เช่น Arduino, Raspberry Pi, PIC, AVR
- มีวิธีการสอบเทียบเซ็นเซอร์ DS18B20 หรือไม่?
- สามารถสอบเทียบเซ็นเซอร์ได้โดยการนำไปเทียบกับเทอร์โมมิเตอร์มาตรฐาน

โคดตัวอย่าง
/*
This Arduino code snippet reads temperature data from a DS18B20 temperature
sensor module and displays it on the Serial Monitor. The temperature readings
are provided in both Celsius and Fahrenheit units, using the DallasTemperature
library to interface with the sensor.
Board: Arduino Uno R3 (or R4)
Component: Temperature Sensor Module (DS18B20)
Library: https://github.com/milesburton/Arduino-Temperature-Control-Library
(DallasTemperature by Miles Burton)
*/
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into digital pin 2 on the Arduino
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire device
OneWire oneWire(ONE_WIRE_BUS);
// Pass oneWire reference to DallasTemperature library
DallasTemperature sensors(&oneWire);
void setup(void)
{
sensors.begin(); // Start up the library
Serial.begin(9600);
}
void loop(void)
{
// Send the command to get temperatures
sensors.requestTemperatures();
//print the temperature in Celsius
Serial.print("Temperature: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.print("℃ | ");
//print the temperature in Fahrenheit
Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0);
Serial.println("℉");
delay(500);
}