การอ่านค่าจากเซ็นเซอร์ 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

ความคิดเห็น
แสดงความคิดเห็น