ความรู้เบื้องต้นเกี่ยวกับเซ็นเซอร์อุณหภูมิ DS18B20
DS18B20 เป็นเซ็นเซอร์อุณหภูมิดิจิตอลที่ใช้กันทั่วไป. มันส่งสัญญาณดิจิตอลออกมา, มีลักษณะมีขนาดเล็ก, ค่าใช้จ่ายฮาร์ดแวร์ต่ำ, ความสามารถในการต่อต้านการแทรกแซงที่แข็งแกร่ง, ความแม่นยำสูง, และใช้กันอย่างแพร่หลาย.
รู้เบื้องต้นเกี่ยวกับเซ็นเซอร์อุณหภูมิ DS18B20
คุณสมบัติทางเทคนิค:
1. โหมดอินเตอร์เฟสสายเดียวที่ไม่ซ้ำกัน. เมื่อ DS18B20 เชื่อมต่อกับไมโครโปรเซสเซอร์, เท่านั้น 1 จำเป็นต้องใช้สายเพื่อให้เกิดการสื่อสารสองทางระหว่างไมโครโปรเซสเซอร์และ DS18B20.
②. ช่วงการวัดอุณหภูมิ -55°C~+125°C, ข้อผิดพลาดในการวัดอุณหภูมิโดยธรรมชาติ 1 ℃.
③. รองรับฟังก์ชั่นเครือข่ายหลายจุด. สามารถเชื่อมต่อ DS18B20 หลายตัวแบบขนานกับสายไฟเพียงสามสายเท่านั้น, และสูงสุดที่ 8 สามารถเชื่อมต่อแบบขนานเพื่อตระหนักถึงการวัดอุณหภูมิแบบหลายจุด. หากตัวเลขมีขนาดใหญ่เกินไป, แรงดันไฟฟ้าของแหล่งจ่ายไฟจะต่ำเกินไป, ส่งผลให้ส่งสัญญาณที่ไม่เสถียร.
④. แหล่งจ่ายไฟทำงาน: 3.0~ 5.5V/DC (สามารถใช้แหล่งจ่ายไฟปรสิตของสายข้อมูล).
⑤. ไม่จำเป็นต้องใช้ส่วนประกอบอุปกรณ์ต่อพ่วงในระหว่างการใช้งาน.
⑥. ผลการวัดจะถูกส่งแบบอนุกรมในรูปแบบดิจิทัล 9~12 บิต.
⑦. เส้นผ่านศูนย์กลางของท่อป้องกันสแตนเลสคือφ6.
⑧. เหมาะสำหรับการวัดอุณหภูมิของท่ออุตสาหกรรมขนาดกลางต่างๆ DN15~25, DN40~DN250 และอุปกรณ์ในพื้นที่แคบ.
⑨. เกลียวติดตั้งมาตรฐาน M10X1, m12x1.5, G1/2” เป็นทางเลือก.
⑩. เชื่อมต่อสาย PVC โดยตรงหรือเชื่อมต่อกล่องรวมสัญญาณแบบบอลเยอรมัน, ซึ่งสะดวกต่อการเชื่อมต่อกับอุปกรณ์ไฟฟ้าอื่นๆ.
DS18B20 อ่านและเขียนหลักการจับเวลาและการวัดอุณหภูมิ:
หลักการวัดอุณหภูมิ DS18B20 แสดงดังรูป 1. ความถี่การสั่นของออสซิลเลเตอร์คริสตัลสัมประสิทธิ์อุณหภูมิต่ำในรูปได้รับผลกระทบจากอุณหภูมิเพียงเล็กน้อย, และใช้เพื่อสร้างสัญญาณชีพจรความถี่คงที่ที่จะส่งไปยังเคาน์เตอร์ 1. ความถี่การสั่นของออสซิลเลเตอร์คริสตัลสัมประสิทธิ์อุณหภูมิสูงเปลี่ยนแปลงอย่างมีนัยสำคัญตามอุณหภูมิ, และสัญญาณที่สร้างขึ้นจะใช้เป็นอินพุตพัลส์ของตัวนับ 2. เคาน์เตอร์ 1 และบันทึกอุณหภูมิจะถูกตั้งค่าไว้ล่วงหน้าเป็นค่าฐานที่สอดคล้องกับ -55 ℃. เคาน์เตอร์ 1 ลบสัญญาณพัลส์ที่สร้างโดยออสซิลเลเตอร์คริสตัลสัมประสิทธิ์อุณหภูมิต่ำ. เมื่อค่าที่ตั้งไว้ของตัวนับ 1 จะลดลงเหลือ 0, ค่าทะเบียนอุณหภูมิจะเพิ่มขึ้นด้วย 1, และค่าที่ตั้งล่วงหน้าของตัวนับ 1 จะถูกโหลดซ้ำ. เคาน์เตอร์ 1 รีสตาร์ทเพื่อนับสัญญาณพัลส์ที่สร้างโดยออสซิลเลเตอร์คริสตัลสัมประสิทธิ์อุณหภูมิต่ำ, และวงจรจะดำเนินต่อไปจนกระทั่งตอบโต้ 2 นับถึง 0, หยุดการสะสมของค่าบันทึกอุณหภูมิ. ในเวลานี้, ค่าในทะเบียนอุณหภูมิคืออุณหภูมิที่วัดได้. ตัวสะสมความชันใช้เพื่อชดเชยและแก้ไขความไม่เชิงเส้นในกระบวนการวัดอุณหภูมิ, และเอาต์พุตใช้เพื่อแก้ไขค่าที่ตั้งไว้ล่วงหน้าของตัวนับ 1.
รูป 1 เป็นดังนี้:
2. แผนภาพการเชื่อมต่อ DS18B20 และ MCU
3. คำจำกัดความของพิน DS18B20:
ดีคิว: ข้อมูลเข้า/ออก. เปิดอินเตอร์เฟซท่อระบายน้ำ 1 สาย. นอกจากนี้ยังสามารถจ่ายไฟให้กับอุปกรณ์ได้เมื่อใช้ในโหมดพลังงานปรสิต VDD: แหล่งจ่ายไฟบวก GND: กราวด์ไฟฟ้า 4. บทนำการวิเคราะห์ภายใน DS18B20:
รูปด้านบนแสดงแผนภาพบล็อกของ DS18B20, และ ROM 64 บิตจะจัดเก็บรหัสซีเรียลเฉพาะของอุปกรณ์. หน่วยความจำบัฟเฟอร์ประกอบด้วย 2 ไบต์ของการลงทะเบียนอุณหภูมิที่เก็บเอาต์พุตดิจิทัลของเซ็นเซอร์อุณหภูมิ. นอกจากนี้, หน่วยความจำบัฟเฟอร์ช่วยให้สามารถเข้าถึงรีจิสเตอร์ทริกเกอร์สัญญาณเตือนบนและล่างขนาด 1 ไบต์ (TH และ TL) และรีจิสเตอร์การกำหนดค่า 1 ไบต์. การลงทะเบียนการกำหนดค่าช่วยให้ผู้ใช้สามารถตั้งค่าความละเอียดของอุณหภูมิเป็นการแปลงดิจิทัลได้ 9, 10, 11, หรือ 12 บิต. ไทย, TL, และการลงทะเบียนการกำหนดค่าจะไม่ลบเลือน (อีพรอม), ดังนั้นจึงจะเก็บข้อมูลไว้เมื่อปิดอุปกรณ์. DS18B20 ใช้โปรโตคอลบัส 1 สายอันเป็นเอกลักษณ์ของ Maxim, ซึ่งใช้สัญญาณควบคุม. สายควบคุมต้องใช้ตัวต้านทานแบบดึงขึ้นที่อ่อนแอ เนื่องจากอุปกรณ์ทั้งหมดเชื่อมต่อกับบัสผ่านพอร์ต 3 สถานะหรือแบบเปิดเดรน (พิน DQ ในกรณีของ DS18B20). ในระบบบัสนี้ไมโครโปรเซสเซอร์ (ผู้เชี่ยวชาญ) ใช้รหัส 64 บิตที่ไม่ซ้ำกันสำหรับแต่ละอุปกรณ์. เพราะแต่ละอุปกรณ์มีรหัสเฉพาะตัว, จำนวนอุปกรณ์ที่สามารถแก้ไขได้บนบัสเดียวนั้นแทบจะไม่จำกัด.
รูปแบบการลงทะเบียนอุณหภูมิ
ความสัมพันธ์ระหว่างอุณหภูมิ/ข้อมูล
สัญญาณเตือนการทำงาน
หลังจากที่ DS18B20 ทำการแปลงอุณหภูมิแล้ว, จะเปรียบเทียบค่าอุณหภูมิกับค่าทริกเกอร์สัญญาณเตือนเสริมสองตัวที่ผู้ใช้กำหนดซึ่งจัดเก็บไว้ในรีจิสเตอร์ TH และ TL ขนาด 1 ไบต์. บิตเครื่องหมายบ่งชี้ว่าค่าเป็นบวกหรือลบ: บวก S=0, ลบ S=1. การลงทะเบียน TH และ TL นั้นไม่ลบเลือน (อีพรอม) จึงไม่ระเหยเมื่อปิดเครื่อง. TH และ TL สามารถเข้าถึงได้ผ่านไบต์ 2 และ 3 ของความทรงจำ.
รูปแบบการลงทะเบียน TH และ TL:
แผนผังของการจ่ายไฟให้กับ DS18B20 โดยใช้แหล่งจ่ายไฟภายนอก
64-รหัสหน่วยความจำแบบอ่านอย่างเดียวของบิตเลเซอร์:
DS18B20 แต่ละตัวมีรหัส 64 บิตที่ไม่ซ้ำกันจัดเก็บไว้ใน ROM. สำคัญน้อยที่สุด 8 บิตของรหัส ROM ประกอบด้วยรหัสตระกูลสายเดี่ยวของ DS18B20: 28ชม.. ต่อไป 48 บิตมีหมายเลขซีเรียลเฉพาะ. ที่สำคัญที่สุด 8 บิตมีการตรวจสอบความซ้ำซ้อนแบบวนรอบ (ซีอาร์ซี) ไบต์, ซึ่งคำนวณตั้งแต่แรก 56 บิตของรหัส ROM.
แผนที่หน่วยความจำ DS18B20
การลงทะเบียนการกำหนดค่า:
รูป 2
ไบต์ 4 ของหน่วยความจำมีการลงทะเบียนการกำหนดค่า, ซึ่งจัดไว้ดังรูป 2. ผู้ใช้สามารถตั้งค่าความละเอียดการแปลงของ DS18B20 โดยใช้บิต R0 และ R1 ได้ที่นี่ ดังแสดงในตาราง 2. ค่าเริ่มต้นในการเปิดเครื่องสำหรับบิตเหล่านี้คือ R0 = 1 และ R1 = 1 (12-ความละเอียดบิต). โปรดทราบว่ามีความสัมพันธ์โดยตรงระหว่างการแก้ไขและเวลาที่เกิด Conversion. นิดหน่อย 7 และบิต 0 ถึง 4 ในการลงทะเบียนการกำหนดค่าสงวนไว้สำหรับการใช้งานภายในของอุปกรณ์และไม่สามารถเขียนทับได้.
โต๊ะ 2 การกำหนดค่าความละเอียดของเทอร์โมมิเตอร์
ซีอาร์ซี เจเนอเรชั่น
ไบต์ CRC เป็นส่วนหนึ่งของรหัส DS18B20 ROM 64 บิต และมีให้ในไบต์ที่ 9 ของ scratchpad. รหัส ROM CRC จะคำนวณจากอันแรก 56 บิตของโค้ด ROM และบรรจุอยู่ในไบต์ที่สำคัญที่สุดของ ROM. CRC ของ scratchpad จะคำนวณตามข้อมูลที่จัดเก็บไว้ใน scratchpad, ดังนั้นจึงเปลี่ยนแปลงเมื่อข้อมูลใน Scratchpad เปลี่ยนแปลง. CRC จัดเตรียมวิธีการตรวจสอบข้อมูลให้กับโฮสต์บัสเมื่ออ่านข้อมูลจาก DS18B20. หลังจากตรวจสอบว่าได้อ่านข้อมูลอย่างถูกต้องแล้ว, บัสมาสเตอร์ต้องคำนวณ CRC ใหม่จากข้อมูลที่ได้รับ จากนั้นเปรียบเทียบค่านั้นกับโค้ด ROM CRC (สำหรับการอ่าน ROM) หรือแผ่นขูด CRC (สำหรับการอ่านแผ่นรอยขีดข่วน). หาก CRC ที่คำนวณได้ตรงกับการอ่าน CRC, ได้รับข้อมูลอย่างถูกต้อง. การตัดสินใจเปรียบเทียบค่า CRC และดำเนินการทั้งหมดขึ้นอยู่กับดุลยพินิจของหัวหน้ารถบัส. ไม่มีวงจรภายใน DS18B20 ที่จะป้องกันการดำเนินการตามลำดับคำสั่งหาก:
DS18B20 ซีอาร์ซี (ROM หรือสแครชแพด) ไม่ตรงกับค่าที่สร้างโดยบัสมาสเตอร์.
ฟังก์ชันพหุนามที่เทียบเท่าสำหรับ CRC คือ:
ซีอาร์ซี = X8 + X5 + X4 + 1
บัสมาสเตอร์สามารถคำนวณ CRC ใหม่และเปรียบเทียบกับค่า CRC ของ DS18B20 ได้โดย:
เครื่องกำเนิดพหุนามจะแสดงในรูป 3. วงจรนี้ประกอบด้วยชิฟต์รีจิสเตอร์และเกต yihuo, และบิตของ shift register จะถูกเตรียมใช้งานเป็น 0. บิตที่มีนัยสำคัญน้อยที่สุดของโค้ด ROM หรือบิตที่มีนัยสำคัญน้อยที่สุดของไบต์ 0 ใน scratchpad ควรถูกเลื่อนไปที่ shift register ทีละครั้ง. หลังจากขยับไปทีละน้อย 56 จาก ROM หรือบิตที่สำคัญที่สุด 7 จากแผ่นรอยขีดข่วน, ตัวสร้างพหุนามจะมี CRC ที่คำนวณใหม่. ต่อไป, ต้องเลื่อนรหัส ROM 8 บิตหรือสัญญาณ CRC ใน scratchpad DS18B20 เข้าไปในวงจร. ณ จุดนี้, ถ้า CRC ที่คำนวณใหม่ถูกต้อง, shift register จะเป็น 0 ทั้งหมด.
รูป 3: เครื่องกำเนิดไฟฟ้าซีอาร์ซี
วี. การเข้าถึง DS18B20:
ลำดับการเข้าถึง DS18B20 มีดังต่อไปนี้:
ขั้นตอน 1. การเริ่มต้น;
ขั้นตอน 2. คำสั่งรอม (ตามด้วยการแลกเปลี่ยนข้อมูลที่จำเป็น);
ขั้นตอน 3. คำสั่งฟังก์ชัน DS18B20 (ตามด้วยการแลกเปลี่ยนข้อมูลที่จำเป็น);
บันทึก: ลำดับนี้จะถูกปฏิบัติตามทุกครั้งที่มีการเข้าถึง DS18B20, เนื่องจาก DS18B20 จะไม่ตอบสนองหากขั้นตอนใดในลำดับหายไปหรือไม่เป็นระเบียบ. ข้อยกเว้นสำหรับกฎนี้คือ Search ROM [F0h] และการค้นหาสัญญาณเตือน [เอ็ค] คำสั่ง. หลังจากออกคำสั่ง ROM ทั้งสองนี้แล้ว, เจ้าบ้านจะต้องกลับไปสู่ขั้นตอน 1 ตามลำดับ.
(บทนำข้างต้นแปลจากคู่มืออย่างเป็นทางการ)
คำสั่งรอม
1, อ่านรอม [33ชม.]
2, จับคู่รอม [55ชม.]
3, ข้ามรอม [ซีซีเอช]
4, ค้นหาสัญญาณเตือน [เอ็ค]
คำสั่งฟังก์ชัน DS18B20
1, แปลงอุณหภูมิ [44ชม.]
2, เขียน Scratchpad (หน่วยความจำ) [4เอ๊ะ]
3, อ่านสแครชแพด (หน่วยความจำ) [พ.ศ]
4, คัดลอก Scratchpad (หน่วยความจำ [48ชม.]
5, ปลุก E2 อีกครั้ง [B8ชม]
6, อ่านพลัง [B4ชม]
(สำหรับคำอธิบายโดยละเอียดของคำสั่งข้างต้น, ดูคู่มืออย่างเป็นทางการ)
VI. เข้าถึงไทม์มิ่ง DS18B20
ในระหว่างกระบวนการเริ่มต้น, บัสมาสเตอร์จะส่งพัลส์รีเซ็ต (เท็กซัส) ระดับต่ำอย่างน้อย 480µs โดยการดึงบัส 1-Wire. แล้ว, ต้นแบบบัสจะปล่อยบัสและเข้าสู่โหมดการรับ (รับ). หลังจากปล่อยรถบัสแล้ว, ตัวต้านทานแบบดึงขึ้น5kΩจะดึงบัส 1-Wire ให้สูง. เมื่อ DS18B20 ตรวจพบขอบที่เพิ่มขึ้นนี้, รอ 15µs ถึง 60µs จากนั้นส่งพัลส์การแสดงตนโดยการดึงบัส 1-Wire ต่ำเป็นเวลา 60µs ถึง 240µs.
กำหนดเวลาการเริ่มต้น:
ช่วงเวลาในการเขียนมีสองประเภท: “เขียน 1” ช่วงเวลาและ “เขียน 0” ช่วงเวลา. รถบัสใช้การเขียน 1 ช่วงเวลาในการเขียนตรรกะ 1 ไปยัง DS18B20 และเขียน 0 ช่วงเวลาในการเขียนตรรกะ 0 ไปยัง DS18B20. ช่วงเวลาการเขียนทั้งหมดต้องมีระยะเวลาอย่างน้อย 60µs โดยมีเวลาในการกู้คืนอย่างน้อย 1µs ระหว่างช่วงเวลาการเขียนแต่ละรายการ. ช่วงเวลาการเขียนทั้งสองประเภทเริ่มต้นโดยมาสเตอร์ดึงบัส 1-Wire ให้ต่ำ (ดูรูป 14). เพื่อสร้างการเขียน 1 ช่วงเวลา, หลังจากดึงบัส 1-Wire ลงต่ำแล้ว, ต้นแบบบัสจะต้องปล่อยบัส 1 สายภายใน 15µs. หลังจากปล่อยรถบัสแล้ว, ตัวต้านทานแบบดึงขึ้น5kΩจะดึงบัสให้สูง. สร้างก
เขียน 0 ช่วงเวลา, หลังจากดึงสาย 1-Wire ลงต่ำแล้ว, นายรถโดยสารจะต้องให้รถบัสอยู่ในระดับต่ำต่อไปตลอดระยะเวลาที่กำหนด (อย่างน้อย 60µs). DS18B20 สุ่มตัวอย่างบัส 1-Wire ภายในหน้าต่าง 15µs ถึง 60µs หลังจากที่ต้นแบบเริ่มช่วงเวลาการเขียน. หากบัสสูงระหว่างหน้าต่างสุ่มตัวอย่าง, อัน 1 เขียนไปที่ DS18B20. ถ้าสายต่ำ, อัน 0 เขียนไปที่ DS18B20.
บันทึก: Timeslot เป็นส่วนหนึ่งของการทำมัลติเพล็กซ์ด้วยตนเองแบบอนุกรมของข้อมูลช่วงเวลาสำหรับช่องสัญญาณเดียว.
รูป 14 เป็นดังนี้:
อ่านช่วงเวลา:
DS18B20 สามารถส่งข้อมูลไปยังโฮสต์ได้ก็ต่อเมื่อโฮสต์ออกช่วงเวลาการอ่านเท่านั้น. ดังนั้น, โฮสต์จะต้องสร้างช่วงเวลาการอ่านทันทีหลังจากออกคำสั่งอ่านหน่วยความจำ [พ.ศ] หรืออ่านพาวเวอร์ซัพพลาย [B4ชม] คำสั่งเพื่อให้ DS18B20 ให้ข้อมูลที่ต้องการ. อีกทางหนึ่ง, โฮสต์สามารถสร้างช่วงเวลาการอ่านได้หลังจากออก Convert T [44ชม.] หรือเรียกคืน E2 [B8ชม] คำสั่งให้ทราบสถานะ. ช่วงเวลาการอ่านทั้งหมดต้องมีระยะเวลาอย่างน้อย 60µs โดยมีเวลาฟื้นตัวขั้นต่ำ 1µs ระหว่างช่วงเวลาต่างๆ. ช่วงเวลาการอ่านเริ่มต้นโดยมาสเตอร์ดึงบัส 1-Wire ต่ำเพื่อให้อยู่ในระดับต่ำอย่างน้อย 1µs จากนั้นจึงปล่อยบัส (ดูรูป 14). หลังจากที่ต้นแบบเริ่มช่วงเวลาการอ่าน, DS18B20 จะเริ่มส่งสัญญาณ 1 หรือ 0 บนบัส. DS18B20 จะส่ง 1 โดยถือรถบัสให้สูงแล้วส่ง 0 โดยการดึงรถบัสให้ต่ำ. เมื่อก 0 ถูกส่งไปแล้ว, DS18B20 ปล่อยบัสโดยยกบัสให้สูง. ช่วงเวลาสิ้นสุดลงและบัสถูกดึงกลับไปยังสถานะไม่ได้ใช้งานสูงโดยตัวต้านทานแบบดึงขึ้น.
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
















