เรามีขั้วต่อเซนเซอร์ DS18B20 1 สายที่ดีที่สุดให้เลือกมากมาย, รวมถึงนาโนเฟล็กซ์, ดิสเพลย์พอร์ต, ยูเอสบี, พลังงานแสงอาทิตย์, ซาต้า, HDMI, นั่นคือความคิด, เอสเอเอส & อื่น ๆ อีกมากมาย. สายเคเบิลทั้งหมดผลิตขึ้นตามมาตรฐานอุตสาหกรรมสูงสุด. การใช้ชุดวงจรเซ็นเซอร์สำหรับการสร้างกล่องช่วยให้คุณมุ่งเน้นไปที่การออกแบบและการตลาดของคุณได้, ลดต้นทุน, และเก็บเกี่ยวผลประโยชน์จากสายการผลิตของเรา, กระบวนการประกันคุณภาพ, และความเชี่ยวชาญด้านการผลิต.
เซ็นเซอร์ DS18B20 สื่อสารโดยใช้ไฟล์ “1-ลวด” โปรโตคอล, ซึ่งหมายความว่าใช้สายข้อมูลเดียวสำหรับการสื่อสารทั้งหมดกับไมโครคอนโทรลเลอร์, การอนุญาตให้เซ็นเซอร์หลายตัวเชื่อมต่อในบรรทัดเดียวกันและระบุด้วยรหัสอนุกรม 64 บิตที่ไม่ซ้ำกันของพวกเขา; สายข้อมูลเดียวนี้ถูกดึงสูงด้วยตัวต้านทานและเซ็นเซอร์ส่งข้อมูลโดยการดึงบรรทัดต่ำในช่วงเวลาที่กำหนดเพื่อส่งบิตข้อมูล.
DS18B20 เซ็นเซอร์อุณหภูมิ: โพรบกันน้ำ DS18B20 ได้รับการออกแบบมาเพื่อการใช้งานใต้น้ำ, สามารถทำงานได้ในสภาพแวดล้อมที่เปียกหรือชื้นโดยไม่ได้รับความเสียหายจากน้ำหรือความชื้น.
แรงดันไฟฟ้าของเซ็นเซอร์อุณหภูมิ: 3.0วี ~ 5.25V;
ช่วงอุณหภูมิในการทำงาน:-55 ℃ถึง +125 ℃ (-67 ¨ ถึง +257 ฟา);
ให้การวัดอุณหภูมิเซลเซียสตั้งแต่ 9 บิตถึง 12 บิต;
โมดูลอะแดปเตอร์มีตัวต้านทานแบบดึงขึ้น, และเชื่อมต่อโดยตรงกับ GPIO ของ Raspberry Pi โดยไม่ต้องใช้ตัวต้านทานภายนอก;
ใช้ชุดโมดูลอะแดปเตอร์นี้เพื่อทำให้การเชื่อมต่อเซ็นเซอร์อุณหภูมิกันน้ำเข้ากับโครงการของคุณง่ายขึ้น.
1. ประเด็นสำคัญเกี่ยวกับโปรโตคอล 1-Wire:
สายข้อมูลเดี่ยว:
จำเป็นต้องใช้สายเพียงเส้นเดียวในการสื่อสารระหว่างเซ็นเซอร์และไมโครคอนโทรลเลอร์.
การสื่อสารแบบฮาล์ฟดูเพล็กซ์:
ข้อมูลสามารถส่งข้อมูลได้ทั้งสองทิศทาง, แต่จะมีทิศทางเดียวเท่านั้น.
พลังปรสิต:
DS18B20 สามารถจ่ายไฟได้โดยตรงจากสายข้อมูลระหว่างการสื่อสาร, ทำให้ไม่จำเป็นต้องใช้แหล่งจ่ายไฟแยกต่างหากในบางกรณี.
ที่อยู่อุปกรณ์ที่ไม่ซ้ำ:
เซ็นเซอร์ DS18B20 แต่ละตัวมีรหัสซีเรียล 64 บิตที่ไม่ซ้ำกันซึ่งช่วยให้ไมโครคอนโทรลเลอร์สามารถระบุและระบุเซ็นเซอร์แต่ละตัวบนบัสได้.
ขั้นตอนการสื่อสารกับ DS18B20:
1.1 รีเซ็ตชีพจร:
ไมโครคอนโทรลเลอร์เริ่มต้นการสื่อสารโดยการดึงสายข้อมูลต่ำตามระยะเวลาที่กำหนด (รีเซ็ตชีพจร).
1.2 ชีพจรแสดงตน:
หากมี DS18B20 อยู่บนรถบัส, มันจะตอบสนองด้วยชีพจรสั้นๆ, บ่งบอกถึงการมีอยู่ของมัน.
1.3 คำสั่งรอม:
ไมโครคอนโทรลเลอร์ส่งคำสั่ง ROM เพื่ออ่านโค้ด 64 บิตเฉพาะของเซ็นเซอร์เฉพาะ (“จับคู่รอม”) หรือเพื่อระบุเซ็นเซอร์ทั้งหมดบนรถบัส (“ข้ามรอม”).
1.4 คำสั่งฟังก์ชัน:
ขึ้นอยู่กับการดำเนินการที่ต้องการ (เช่นการอ่านอุณหภูมิ), ไมโครคอนโทรลเลอร์จะส่งคำสั่งฟังก์ชันเฉพาะไปยังเซ็นเซอร์.
1.5 การถ่ายโอนข้อมูล:
ข้อมูลจะถูกส่งทีละบิต, โดยมีเซ็นเซอร์ดึงสายข้อมูลต่ำเพื่อส่ง ‘0’ และปล่อยให้สายขึ้นสูงเพื่อส่ง '1'.
2. คำอธิบายโดยละเอียดเกี่ยวกับโปรโตคอลการสื่อสาร 1-Wire ของ DS18B20
เหตุผลที่มีการใช้เซ็นเซอร์ DS18B20 อย่างแพร่หลายส่วนใหญ่เนื่องมาจากโปรโตคอลการสื่อสารที่เป็นเอกลักษณ์ – 1-โปรโตคอลการสื่อสารแบบใช้สาย. โปรโตคอลนี้ทำให้ข้อกำหนดสำหรับการเชื่อมต่อฮาร์ดแวร์ง่ายขึ้น และเป็นวิธีที่มีประสิทธิภาพในการส่งข้อมูล. บทนี้จะวิเคราะห์กลไกการทำงานและกระบวนการแลกเปลี่ยนข้อมูลเชิงลึกของโปรโตคอลการสื่อสาร 1 บรรทัด เพื่อเป็นการวางรากฐานที่มั่นคงสำหรับการฝึกเขียนโปรแกรมในภายหลัง.
2.1 พื้นฐานของโปรโตคอลการสื่อสารแบบ 1 สาย
2.1.1 คุณสมบัติของโปรโตคอลการสื่อสาร 1 สาย:
DS18B20 1-Wire Communication Protocol เรียกอีกอย่างว่า “รถบัสเดี่ยว” เทคโนโลยี. มันมีคุณสมบัติดังต่อไปนี้: – การสื่อสารแบบบัสเดี่ยว: ใช้สายข้อมูลเพียงเส้นเดียวในการส่งข้อมูลแบบสองทิศทาง, ซึ่งช่วยลดความซับซ้อนของการเดินสายได้อย่างมากเมื่อเทียบกับวิธีการสื่อสารด้วยเซนเซอร์แบบหลายสายแบบดั้งเดิม. – การเชื่อมต่อหลายอุปกรณ์: รองรับการเชื่อมต่ออุปกรณ์หลายเครื่องบนบัสข้อมูลเดียว, และระบุและสื่อสารผ่านรหัสประจำตัวอุปกรณ์. – การใช้พลังงานต่ำ: ในระหว่างการสื่อสาร, อุปกรณ์อาจอยู่ในสถานะสแตนด์บายพลังงานต่ำเมื่อไม่ได้มีส่วนร่วมในการสื่อสาร. – ความแม่นยำสูง: ด้วยระยะเวลาการส่งข้อมูลที่สั้นลง, สามารถลดการรบกวนจากภายนอกและปรับปรุงความแม่นยำของข้อมูลได้.
2.1.2 รูปแบบข้อมูลและการวิเคราะห์เวลาของการสื่อสารแบบสายเดียว
รูปแบบข้อมูลของโปรโตคอลการสื่อสารแบบ 1 สายเป็นไปตามกฎเวลาที่กำหนด. รวมถึงระยะเวลาในการเริ่มต้น, เขียนจังหวะและอ่านจังหวะ:
ระยะเวลาในการเริ่มต้น: โฮสต์จะเริ่มกำหนดเวลาการตรวจจับการแสดงตนก่อน (การแสดงตนชีพจร) โดยการดึงรถบัสลงในช่วงเวลาหนึ่ง, จากนั้นเซ็นเซอร์จะส่งพัลส์การแสดงตนเพื่อตอบสนอง.
เขียนจังหวะ: เมื่อโฮสต์ส่งกำหนดเวลาการเขียน, ขั้นแรกมันจะดึงรถบัสลงมาประมาณ 1-15 ไมโครวินาที, แล้วปล่อยรถบัส, และเซ็นเซอร์จะดึงบัสลงมา 60-120 ไมโครวินาทีในการตอบสนอง.
อ่านจังหวะ: โฮสต์จะแจ้งให้เซ็นเซอร์ส่งข้อมูลโดยการดึงบัสลงแล้วปล่อย, และเซ็นเซอร์จะส่งออกบิตข้อมูลบนบัสหลังจากเกิดความล่าช้าระยะหนึ่ง.
2.2 การใช้ซอฟต์แวร์ในการสื่อสารข้อมูล
2.2.1 การเริ่มต้นและรีเซ็ตการสื่อสาร 1 บรรทัด
ในระดับซอฟต์แวร์, การเริ่มต้นและการรีเซ็ตการสื่อสารแบบ 1-Wire เป็นขั้นตอนแรกของการสื่อสาร. ต่อไปนี้เป็นรหัสเทียมเพื่อใช้กระบวนการนี้:
// ฟังก์ชันการเริ่มต้นการสื่อสาร OneWire
ทำให้ OneWire_Init เป็นโมฆะ() {
// ตั้งค่าบัสเป็นโหมดอินพุตและเปิดใช้งานตัวต้านทานแบบดึงขึ้น
ตั้งค่า PinMode(DS18B20_PIN, INPUT_PULLUP);
// รอให้รถบัสว่าง
ดีเลย์ไมโครวินาที(1);
// ส่งพัลส์รีเซ็ต
OneWire_รีเซ็ต();
}
// ฟังก์ชั่นรีเซ็ตการสื่อสาร OneWire
โมฆะ OneWire_Reset() {
// ดึงรถบัสลง
ตั้งค่า PinMode(DS18B20_PIN, เอาท์พุต_ต่ำ);
ดีเลย์ไมโครวินาที(480);
// ปล่อยรถบัส
ตั้งค่า PinMode(DS18B20_PIN, INPUT_PULLUP);
ดีเลย์ไมโครวินาที(70);
// รอการปรากฏตัวของชีพจร
ถ้า (!รอ OneWirePresence())
// ตรวจไม่พบชีพจร, อาจไม่ได้เชื่อมต่อเซ็นเซอร์หรือการเริ่มต้นล้มเหลว
ข้อผิดพลาดในการจัดการ();
ดีเลย์ไมโครวินาที(410);
}
// รอการปรากฏตัวของชีพจร
บูล WaitForOneWirePresence() {
กลับ ReadPin(DS18B20_PIN) == 0; // สมมติว่าระดับต่ำคือการมีสัญญาณ
}
2.2.2 การดำเนินการอ่านและเขียนข้อมูล
การดำเนินการอ่านและเขียนข้อมูลเป็นส่วนสำคัญของการสื่อสารด้วยเซ็นเซอร์. รหัสต่อไปนี้แสดงวิธีการเขียนไบต์ไปยังบัสแบบสายเดียว:
// เขียนไบต์ไปยังบัสแบบสายเดียว
โมฆะ OneWire_WriteByte(ข้อมูลไบต์) {
สำหรับ (อินท์ ไอ = 0; ฉัน < 8; ฉัน++) {
OneWire_WriteBit(ข้อมูล & 0x01);
ข้อมูล >>- 1;
}
}
// เขียนเล็กน้อยถึงบัสสายเดียว
ทำให้ OneWire_WriteBit เป็นโมฆะ(ข้อมูลบิต) {
ตั้งค่า PinMode(DS18B20_PIN, เอาท์พุต_ต่ำ);
ถ้า (ข้อมูล) {
// ปล่อยรถบัสเมื่อเขียน 1
ตั้งค่า PinMode(DS18B20_PIN, INPUT_PULLUP);
ดีเลย์ไมโครวินาที(1);
} อื่น {
// ดึงรถบัสให้ต่ำต่อไปในขณะที่เขียน 0
ดีเลย์ไมโครวินาที(60);
}
ตั้งค่า PinMode(DS18B20_PIN, INPUT_PULLUP);
ดีเลย์ไมโครวินาที(1);
}
ถัดมาคือฟังก์ชันอ่านไบต์:
// อ่านไบต์จากบัสสายเดียว
ไบต์ OneWire_ReadByte() {
ข้อมูลไบต์ = 0;
สำหรับ (อินท์ ไอ = 0; ฉัน < 8; ฉัน++) {
ข้อมูล >>- 1;
ถ้า (OneWire_ReadBit())
ข้อมูล |= 0x80;
}
ส่งคืนข้อมูล;
}
// อ่านสักนิดจากบัสสายเดียว
บิต OneWire_ReadBit() {
ตั้งค่า PinMode(DS18B20_PIN, เอาท์พุต_ต่ำ);
ตั้งค่า PinMode(DS18B20_PIN, INPUT_PULLUP);
ดีเลย์ไมโครวินาที(3);
ผลลัพธ์บูล = ReadPin(DS18B20_PIN);
ดีเลย์ไมโครวินาที(57);
ส่งคืนผลลัพธ์;
}
2.2.3 กลไกการตรวจสอบการสื่อสาร OneWire
โปรโตคอลการสื่อสาร OneWire ใช้กลไกการตรวจสอบอย่างง่ายในกระบวนการแลกเปลี่ยนข้อมูล, โดยปกติโดยการอ่านข้อมูลที่เขียนกลับเพื่อตรวจสอบความถูกต้องของข้อมูล. ต่อไปนี้เป็นโค้ดตัวอย่างสำหรับตรวจสอบข้อมูลที่เขียน:
ข้อมูลไบต์ = 0x55; // สมมติว่าข้อมูลที่จะส่ง
OneWire_WriteByte(ข้อมูล); // เขียนข้อมูลไปยังบัส OneWire
ไบต์ readData = OneWire_ReadByte(); // อ่านข้อมูลกลับจากบัส OneWire
ถ้า (อ่านข้อมูล != ข้อมูล) {
ข้อผิดพลาดในการจัดการ(); // หากข้อมูลที่อ่านกลับไม่ตรงกับข้อมูลที่เขียน, จัดการกับข้อผิดพลาด
English
Afrikaans
العربية
বাংলা
bosanski jezik
Български
Català
粤语
中文(简体)
中文(漢字)
Hrvatski
Čeština
Nederlands
Eesti keel
Suomi
Français
Deutsch
Ελληνικά
हिन्दी; हिंदी
Magyar
Bahasa Indonesia
Italiano
日本語
한국어
Latviešu valoda
Lietuvių kalba
македонски јазик
Bahasa Melayu
Norsk
پارسی
Polski
Português
Română
Русский
Cрпски језик
Slovenčina
Slovenščina
Español
Svenska
ภาษาไทย
Türkçe
Українська
اردو
Tiếng Việt





