การอ่านค่าจากเซ็นเซอร์ DS18B20 ด้วย Arduino UNO



การอ่านค่าจากเซ็นเซอร์ DS18B20 ด้วย Arduino UNO

Arduino Uno R3: เป็นบอร์ดไมโครคอนโทรลเลอร์ที่นิยมใช้สำหรับงานอิเล็กทรอนิกส์พื้นฐาน

DS18B20: เซ็นเซอร์วัดอุณหภูมิแบบดิจิทัล ที่มีความแม่นยำสูง สามารถวัดอุณหภูมิได้ในช่วงกว้าง และสามารถต่อเชื่อมกันได้หลายตัวบนสายเดียว

อุปกรณ์ที่จำเป็น

บอร์ด Arduino Uno R3

เซ็นเซอร์ DS18B20

ตัวต้านทาน 4.7kΩ

สาย jumper

บอร์ดขนมปัง (ถ้ามี)



ขั้นตอนการต่อสาย:

เชื่อมต่อ VDD (ขา 1) ของ DS18B20 กับ +5V บน Arduino

เชื่อมต่อ GND (ขา 3) ของ DS18B20 กับ GND บน Arduino

เชื่อมต่อ DQ (ขา 2) ของ DS18B20 กับ ขาสัญญาณดิจิทัล ของ Arduino (เช่นขา D2)

ต่อ ต้านทาน 4.7kΩ ระหว่าง DQ และ +5V เพื่อใช้เป็น pull-up


ต้านทาน 4.7kΩ ระหว่าง DQ และ +5V เพื่อใช้เป็น pull-up คืออะไร

คำอธิบายง่ายๆ:

คิดว่าวงจรดิจิทัลเป็นเหมือนถนนที่มีสัญญาณไฟจราจร สัญญาณไฟเหล่านี้จะบอกให้ข้อมูลวิ่งไปตามเส้นทางที่ถูกต้อง ต้านทาน 4.7kΩ ที่เชื่อมระหว่าง DQ และ +5V 

นี้ก็เหมือนกับสัญญาณไฟจราจรเล็ก ๆ ที่คอยบอกให้สัญญาณข้อมูล (ที่วิ่งอยู่ในสาย DQ) มีทิศทางที่ชัดเจน


ทำไมต้องใช้ pull-up resistor:


ป้องกันสัญญาณลอย: ถ้าไม่มีต้านทานตัวนี้ สัญญาณในสาย DQ อาจจะ "ลอย" ไม่รู้ว่าจะไปทางไหน ซึ่งอาจทำให้เกิดปัญหาในการทำงานของวงจร

กำหนดระดับแรงดันเริ่มต้น: ต้านทานตัวนี้จะดึงแรงดันในสาย DQ ให้ไปที่ +5V เมื่อไม่มีสัญญาณใดๆ มาสั่งให้เปลี่ยนแปลง ทำให้เราสามารถกำหนดค่าเริ่มต้นของสัญญาณได้

ค่า 4.7kΩ หมายถึงอะไร:


ค่าต้านทาน: 4.7kΩ คือค่าความต้านทานไฟฟ้าของตัวต้านทานตัวนี้ ยิ่งค่าสูง แรงดันที่ดึงขึ้นไปก็จะช้าลง แต่จะช่วยลดการกินกระแสไฟฟ้า

ทำไมต้อง 4.7kΩ: ค่านี้เป็นค่าที่นิยมใช้กันทั่วไปในวงจรดิจิทัล เพราะมันเป็นค่าที่เหมาะสมกับการใช้งานส่วนใหญ่ 

แต่ค่าที่ใช้จริงอาจแตกต่างกันไป ขึ้นอยู่กับลักษณะของวงจรและอุปกรณ์ที่ใช้

สรุป:


ต้านทาน 4.7kΩ ที่เชื่อมระหว่าง DQ และ +5V ทำหน้าที่เหมือนสัญญาณไฟจราจรเล็กๆ ที่คอยควบคุมทิศทางของสัญญาณข้อมูล ช่วยให้วงจรทำงานได้อย่างถูกต้องและมีเสถียรภาพ



การติดตั้งไลบรารี ติดตั้งไลบรารีที่จำเป็น:


เปิด Arduino IDE

ไปที่เมนู Sketch > Include Library > Manage Libraries...

ค้นหา "OneWire" และ "DallasTemperature" ใน Library Manager



ติดตั้งทั้งสองไลบรารี

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

#include <OneWire.h>  

#include <DallasTemperature.h>  


// ตั้งค่าขาเชื่อมต่อ  

#define ONE_WIRE_BUS 2  


// เริ่มต้น OneWire และ DallasTemperature  

OneWire oneWire(ONE_WIRE_BUS);  

DallasTemperature sensors(&oneWire);  


void setup() {  

  Serial.begin(9600); // เริ่มต้น Serial Monitor  

  sensors.begin(); // เริ่มต้นเซ็นเซอร์  

}  


void loop() {  

  sensors.requestTemperatures(); // ขอค่าอุณหภูมิจากเซ็นเซอร์  

  float temperature = sensors.getTempCByIndex(0); // อ่านค่าที่ได้ (Celsius)  

  

  Serial.print("Temperature: ");  

  Serial.print(temperature);  

  Serial.println(" °C");  

  

  delay(1000); // รอ 1 วินาทีก่อนที่จะอ่านค่าใหม่  

}  

อธิบายโค้ด:

include: นำเข้าไลบรารีที่จำเป็น

define: กำหนดขาที่เชื่อมต่อเซ็นเซอร์

setup(): เริ่มต้น Serial Monitor และเซ็นเซอร์

loop(): ขออ่านค่าอุณหภูมิทุก ๆ 1 วินาที และแสดงผลใน Serial Monitor

วิธีการทดสอบ:

เชื่อมต่อ Arduino UNO กับคอมพิวเตอร์

โหลดโค้ดลงไปในบอร์ด Arduino

เปิด Serial Monitor (Ctrl + Shift + M) เพื่อดูค่าที่แสดงอุณหภูมิ

นี่คือขั้นตอนและโค้ดพื้นฐานสำหรับการอ่านค่าจากเซ็นเซอร์ DS18B20 ด้วย Arduino UNO 

หากคุณมีคำถามเพิ่มเติมหรือต้องการข้อมูลเพิ่มเติม


References:

This page -> 

DS18B20 ->https://github.com/matmunk/DS18B20

DS18B20 ภาษาไทย  ->http://fitrox.lnwshop.com/article/53/tutorial-%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-ds18b20-digital-temperature

DS18B20 ภาษาไทย  ->https://www.allnewstep.com/article/363/111-%E0%B8%AA%E0%B8%AD%E0%B8%99-arduino-%E0%B8%A7%E0%B8%B4%E0%B8%98%E0%B8%B5%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-%E0%B9%80%E0%B8%8B%E0%B9%87%E0%B8%99%E0%B9%80%E0%B8%8B%E0%B8%AD%E0%B8%A3%E0%B9%8C%E0%B8%A7%E0%B8%B1%E0%B8%94%E0%B8%AD%E0%B8%B8%E0%B8%93%E0%B8%AB%E0%B8%A0%E0%B8%B9%E0%B8%A1%E0%B8%B4%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B8%99%E0%B9%89%E0%B8%B3-ds18b20-waterproof-temperature-sensor


ความคิดเห็น