สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
นี่คือคำแนะนำโดยย่อเกี่ยวกับวิธีการรับหมายเลขประจำเครื่องของเซ็นเซอร์อุณหภูมิ 1 สาย DS18B20 ของคุณ
ซึ่งสะดวกสำหรับโครงการที่ต้องใช้เซ็นเซอร์หลายตัว
สิ่งที่คุณต้องการ:
- Arduino 5v (UNO, Mega, Pro Mini ฯลฯ) - Arduino UNO R3 - AliExpress
- เซ็นเซอร์อุณหภูมิ DS18B20 - AliExpress
- 4.7k - 1/4w ตัวต้านทาน THT - AliExpress
- เขียงหั่นขนม - AliExpress - eBay
- สายจัมเปอร์ - ชายกับชาย - AliExpress
- คอมพิวเตอร์ที่ติดตั้ง Arduino IDE
ขั้นตอนที่ 1: เพิ่มไลบรารีที่จำเป็นลงใน Arduino IDE
- เปิด Arduino IDE (ฉันใช้ 1.8.1)
- คลิก "ร่าง" -> "รวมไลบรารี" -> "จัดการไลบรารี…"
- เลือกแถบค้นหาและพิมพ์ "dallas"
- คลิก "DallasTemperature" และคลิก "ติดตั้ง"
หรือคุณสามารถดาวน์โหลด Library ได้จากที่นี่:
ห้องสมุดนี้มีห้องสมุด OnWire
ขั้นตอนที่ 2: ต่อสาย DS18B20
ใช้ breadboard เชื่อมต่อ +5V, GND และ Digital Pin 2 (พิน 2 ถูกตั้งค่าไว้ในภาพร่างตัวอย่างแล้ว) จาก Arduino โดยใช้จัมเปอร์เขียงหั่นขนม Male to Male
เชื่อมต่อ DS18B20 ขนานกับแถบขั้วต่อ 3x บนเขียงหั่นขนม
- พิน 1 (GND) -> GND (กราวด์ 0V)
- พิน 2 (ข้อมูล) -> พินดิจิตอล 2
- พิน 3 (Vdd) -> +5V
สำหรับโหมดพลังงานปกติให้เชื่อมต่อตัวต้านทาน 4.7K จาก +5V กับสาย Digital Pin 2 บนเขียงหั่นขนม
ลิงก์ต่อไปนี้เป็นแหล่งข้อมูลที่ยอดเยี่ยมสำหรับเซ็นเซอร์อุณหภูมิ 1 สาย DS18B20
www.tweaking4all.com/hardware/arduino/ardu…
ขั้นตอนที่ 3: โหลดภาพร่างตัวอย่าง "เดี่ยว"
เมื่อคุณมีสายแล้วคุณก็พร้อมที่จะโหลด SketchOpen Arduino IDE ของ Dallas Temperature "เดี่ยว" (ฉันใช้ 1.8.1) คลิก "ไฟล์" -> "ตัวอย่าง" -> "Dallas Temperature" -> "โสด" ฉันเพิ่ม ล่าช้า (5000); ในบรรทัดที่ 103 เพื่อให้เวลาฉันคัดลอกหมายเลขซีเรียลเลือกแบบฟอร์มบอร์ดที่เหมาะสมของคุณ "เครื่องมือ" -> "บอร์ด" เลือกพอร์ตที่เหมาะสมของคุณ "เครื่องมือ" -> "พอร์ต" ตอนนี้ "อัปโหลด" ร่าง "ร่าง" -> "อัปโหลด" คลิก "เครื่องมือ" -> "การตรวจสอบแบบอนุกรม" ตรวจสอบให้แน่ใจว่าอัตราบอดที่ตรงกับของฉันคือ 9600 หากคุณไม่ได้อัปโหลดสเก็ตช์ ให้ตรวจสอบบอร์ด พอร์ต ไดรเวอร์ USB ฯลฯ
ขั้นตอนที่ 4: คัดลอกหมายเลขซีเรียล
จาก "Serial Monitor" คุณจะเห็นบรรทัดที่ 4 คือ "Device 0 Address: xxxxxxxxxxxxxxxx"
นี่คือหมายเลขซีเรียลของ DS18B20
หากเป็น "0000000000000000" แสดงว่ามีปัญหาในการอ่าน DS18B20 ของคุณ
ไฮไลต์ด้วยเมาส์ของคุณแล้วกด CTRL+C บนแป้นพิมพ์ของคุณ จากนั้นวางใน Notepad
สำหรับโครงการอื่นๆ ของฉัน รหัสของฉันใช้อาร์เรย์ของตัวเลขเหล่านี้ ฉันฟอร์แมตสตริง HEX ใหม่ให้อยู่ในรูปแบบต่อไปนี้
DeviceAddress tempSensorSerial[9]= {
{0x28, 0xFF, 0x07, 0xA6, 0x70, 0x17, 0x04, 0xB5}, {0x28, 0xFF, 0xB2, 0xA6, 0x70, 0x17, 0x04, 0x28}, {0x28, 0xFF, 0x42, 0x98, 0x70, 0x17,, 0xD3}, {0x28, 0xFF, 0x86, 0xA8, 0x70, 0x17, 0x04, 0xA6}, {0x28, 0xFF, 0x2B, 0x65, 0x71, 0x17, 0x04, 0x76}, {0x28, 0xFF, 0x6671, 0x62, 0, 0x17, 0x04, 0xF5}, {0x28, 0xFF, 0xD9, 0x9B, 0x70, 0x17, 0x04, 0x9C}, {0x28, 0xFF, 0x98, 0x6A, 0x71, 0x17, 0x04, 0xED}, {0x28, 0xFF, 0xFF, 0xFF, 0x42, 0x71, 0x17, 0x04, 0x4C} };
ขั้นตอนที่ 5: เสร็จสิ้น
ตอนนี้คุณสามารถระบุเซ็นเซอร์อุณหภูมิ 1 สาย DS18B20 แต่ละตัวในรหัสของคุณ และใช้ฟังก์ชันดังนี้:
float getTemperature (ไบต์ j) {
sensors.requestTemperaturesByAddress(tempSensorSerial[j]); เซ็นเซอร์
float tempC = เซ็นเซอร์.getTempC(tempSensorSerial[j]);
ส่งคืน tempC;
}