DS18B20 Temperature Sensor with Arduino UNO

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

DS18B20 Temperature Sensor with Arduino UNO
รูปที่ 1 เซนเซอร์สำหรับใช้ในการทดลอง

รูปที่ 1 ลักษณะของตัวเซนเซอร์ที่เป็นไอซี DS18B20 ที่ใช้ในการทดลอง ซึ่งจะมาพร้อมกับบอร์ดอินเตอร์เฟสขนาดเล็ก สามารถเชื่อมต่อกับบอร์ดควบคุม Arduino UNO ได้ทันที

Datasheet for DS18B20 (1-Wire Digital Thermometer)

DS18B20 Temperature Sensor with Arduino UNO
รูปที่ 2 เตรียมบอร์ด Arduino UNO สำหรับการประมวลผล
DS18B20 Temperature Sensor with Arduino UNO
รูปที่ 3 การเชื่อมต่อบอร์ดอินเตอร์เฟสเข้ากับบอร์ดควบคุม Arduino UNO

รูปที่ 2 และรูปที่ 3 แสดงการเตรียมบอร์ดควบคุม Arduino UNO และสายแพรเชื่อมต่อกับตัวเซนเซอร์ ลักษณะของการเชื่อมต่อกับบอร์ดอินเตอร์เฟสเพื่อสื่อสารระหว่างกัน โดยตัวเซนเซอร์จะใช้สายไฟเพียง 3 เส้นเท่านั้น (VCC, GND, DQ)

DS18B20 Temperature Sensor with Arduino UNO
รูปที่ 4 ลักษณะการเชื่อมต่ออุปกรณ์ต่างๆ เข้าด้วยกันเรียบร้อย
DS18B20 Temperature Sensor with Arduino UNO
รูปที่ 5 การเชื่อมต่อบอร์ด Arduino UNO เข้ากับคอมพิวเตอร์

รูปที่ 4 รูปที่ 5 แสดงการเชื่อมต่อระหว่างตัวบอร์ดควบคุม Arduino UNO และเซนเซอร์ DS18B20 สำหรับการวัดค่าอุณหภูมิและแสดงผลบนจอคอมพวเตอร์เพื่อตรวจสอบการทำงานที่เกิดขึ้น

DS18B20 Temperature Sensor with Arduino UNO
รูปที่ 6 การแสดงผลค่าอุณหภูมิในขณะทดลอง

รูปที่ 6 แสดงผลการทดลองที่ 1 โดยการทดลองจะเป็นการวัดอุณหภูมิทั่วไป (ในกรอบสีแดง) ซึ่งผลที่ได้จะมีค่าประมาณ 31 องศาเซลเซียส

/*
 Arduino Code Ref by 
1. https://github.com/milesburton/Arduino-Temperature-Control-Library 
2. https://lastminuteengineers.com/ds18b20-arduino-tutorial/
*/

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

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

void setup(void)
{
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");

  // Start up the library
  sensors.begin();
}

void loop(void)
{ 
  // call sensors.requestTemperatures() to issue a global temperature 
  // request to all devices on the bus
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println("DONE");
  
  Serial.print("Temperature for the device 1 (index 0) is: ");
  Serial.println(sensors.getTempCByIndex(0));  
}

Arduino Library for DS18B20 Temperature Sensor

DS18B20 Temperature Sensor with Arduino UNO
รูปที่ 7 การทดลองใช้ความร้อนจากหัวแร้งบัดกรี
DS18B20 Temperature Sensor with Arduino UNO
รูปที่ 8 ระยะการวางหัวแร้งใกล้กับเซนเซอร์ DS18B20

ในรูปที่ 7 และรูป 8 แสดงการทดลองที่ 2 ด้วยการวางหัวแร้งใกล้กับเซนเซอร์ DS18B20 (ระยะห่างประมาณ 3 มิลลิเมตร) จากนั้นสังเกตค่าอุณหภูมิที่เปลี่ยนแปลงอีกครั้ง

DS18B20 Temperature Sensor with Arduino UNO
รูปที่ 9 การแสดงผลความร้อนที่เซนเซอร์ DS18B20 วัดค่าได้

รูปที่ 9 แสดงผลการทดลองที่ 2 และผลที่ได้จะมีค่าประมาณ 78 องศาเซลเซียส (ในกรอบสีแดง) โดยจากการทดลองค่าที่วัดได้ที่น่าพอใจเมื่อเทียบกับอุณหภูมิที่เป็นจริง

DS18B20 Temperature Sensor with Arduino UNO
รูปที่ 10 วงจรที่ใช้ในการทดลองโครงงาน

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

Reference

  1. https://lastminuteengineers.com/ds18b20-arduino-tutorial/
  2. https://github.com/milesburton/Arduino-Temperature-Control-Library
  3. https://randomnerdtutorials.com/guide-for-ds18b20-temperature-sensor-with-arduino/
  4. https://create.arduino.cc/projecthub/TheGadgetBoy/ds18b20-digital-temperature-sensor-and-arduino-9cc806
  5. https://www.makerguides.com/ds18b20-arduino-tutorial/
  6. https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
  7. https://cdn.sparkfun.com/datasheets/Sensors/Temp/DS18B20.pdf