เทคโนโลยีเซนเซอร์วัดอุณหภูมิ

สร้างเทอร์โมมิเตอร์แบบดิจิตอลด้วยเซ็นเซอร์อุณหภูมิดิจิตอล DS18B20

DS18B20 เซ็นเซอร์อุณหภูมิเครื่องวัดอุณหภูมิแบบดิจิตอล + โมดูลอะแดปเตอร์เทอร์มินัลพร้อมชุดสายไฟ

การแนะนำ: บทความนี้อธิบายรายละเอียดเกี่ยวกับการประยุกต์ใช้เซ็นเซอร์อุณหภูมิดิจิตอล DS18B20 แบบกำหนดเองในการสร้างเทอร์โมมิเตอร์ดิจิตอล. รวมถึงหลักการทำงาน, การเชื่อมต่อฮาร์ดแวร์, การเขียนโปรแกรมซอฟต์แวร์และการใช้งานการจำลอง. จัดเตรียมแผนภาพการจำลองโปรตีตี้ที่สมบูรณ์, C ซอร์สโค้ดและการวิเคราะห์ผลลัพธ์เพื่อช่วยให้ผู้อ่านเข้าใจอย่างลึกซึ้งและฝึกฝนการใช้ DS18B20.

ข้อมูลพารามิเตอร์: แหล่งจ่ายไฟ: 3.0วี – 5.5วี; ปรับความละเอียดได้: 9 – 12 นิดหน่อย; ช่วงอุณหภูมิ: -55 ℃ถึง +125 ℃; เอาท์พุต : สีแดง (วีซีซี), สีเหลือง (ข้อมูล), สีดำ (จีเอ็นดี);
สิ่งที่คุณได้รับ: คุณจะได้รับ 4 เซ็นเซอร์อุณหภูมิ DS18B20, 4 โมดูลอะแดปเตอร์และ 4 สายจัมเปอร์หญิงถึงหญิง; โมดูลอะแดปเตอร์มีตัวต้านทานแบบดึงขึ้น, ซึ่งสามารถใช้งานร่วมกับ Raspberry Pi ได้โดยไม่ต้องมีตัวต้านทานภายนอก;
เซ็นเซอร์อุณหภูมิ DS18B20: ขนาดของตัวเรือนสแตนเลสคือประมาณ. 6 x 50 มม./ 0.2 x 2 นิ้ว, และสายเคเบิลความร้อนอุณหภูมิดิจิตอลมีความยาวรวมประมาณ. 1 ม./ 39.4 นิ้ว, ซึ่งยาวพอที่จะสนองความต้องการของคุณ;
วัสดุคุณภาพ: หัววัดทำจากวัสดุสแตนเลสคุณภาพ, ซึ่งกันน้ำได้, ป้องกันความชื้นและไม่เกิดสนิมง่าย, เพื่อป้องกันการลัดวงจร;
ประยุกต์กว้าง: เซ็นเซอร์อุณหภูมิ DS18B20 นี้เข้ากันได้กับ Raspberry Pi, และมีการใช้กันอย่างแพร่หลายในการตรวจสอบอุณหภูมิของร่องสายเคเบิล, หม้อไอน้ำ, อะไร, เรือนกระจกทางการเกษตร, ห้องสะอาด, ฯลฯ.

DS18B20 เซ็นเซอร์อุณหภูมิ -55 ถึง +125 องศาเซลเซียส, เข้ากันได้กับราสเบอร์รี่ Pi

DS18B20 เซ็นเซอร์อุณหภูมิ -55 ถึง +125 องศาเซลเซียส, เข้ากันได้กับราสเบอร์รี่ Pi

Surface mount DS18B20 เซ็นเซอร์อุณหภูมิดิจิตอลกันน้ำ

Surface mount DS18B20 เซ็นเซอร์อุณหภูมิดิจิตอลกันน้ำ

DS18B20 เซ็นเซอร์อุณหภูมิเครื่องวัดอุณหภูมิแบบดิจิตอล + โมดูลอะแดปเตอร์เทอร์มินัลพร้อมชุดสายไฟ

DS18B20 เซ็นเซอร์อุณหภูมิเครื่องวัดอุณหภูมิแบบดิจิตอล + โมดูลอะแดปเตอร์เทอร์มินัลพร้อมชุดสายไฟ

1. ลักษณะเฉพาะของเซนเซอร์ DS18B20
เซ็นเซอร์ DS18B20 มีบทบาทสำคัญในด้านการตรวจวัดอุณหภูมิสมัยใหม่. สามารถวัดอุณหภูมิได้อย่างแม่นยำสูง, และสามารถปรับความละเอียดได้ตามความต้องการ, เพื่อให้สามารถตรวจวัดอุณหภูมิด้วยระดับความแม่นยำที่แตกต่างกัน. นอกจากนี้, DS18B20 ขนาดเล็กทำให้เหมาะสำหรับใช้ในสภาพแวดล้อมที่มีพื้นที่จำกัด, และคุณลักษณะที่ใช้งานง่ายช่วยลดเกณฑ์ทางเทคนิคตั้งแต่เริ่มต้นจนถึงมืออาชีพ.

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

เพื่อให้ใช้ประโยชน์จากข้อดีของ DS18B20 เหล่านี้ได้อย่างเต็มที่, เราต้องมีความเข้าใจอย่างลึกซึ้งเกี่ยวกับพารามิเตอร์ประสิทธิภาพของมัน. พารามิเตอร์เหล่านี้รวมถึงช่วงการวัดอุณหภูมิ, ความแม่นยำ, ปณิธาน, และแรงดันไฟฟ้า. พารามิเตอร์เหล่านี้ไม่เพียงแต่กำหนดว่า DS18B20 สามารถตอบสนองความต้องการของการใช้งานเฉพาะหรือไม่เท่านั้น, แต่ยังส่งผลต่อประสิทธิภาพและความน่าเชื่อถือของทั้งระบบด้วย.

ในบทนี้, เราจะแนะนำพารามิเตอร์ประสิทธิภาพของ DS18B20 โดยละเอียด, วิเคราะห์หลักการทำงานของมัน, และสำรวจข้อดีในการใช้งานต่างๆ. ผ่านเนื้อหาเหล่านี้, ผู้อ่านจะได้รับความเข้าใจที่ลึกซึ้งยิ่งขึ้นเกี่ยวกับเซ็นเซอร์ DS18B20 และวางรากฐานที่มั่นคงสำหรับการใช้งานและการเขียนโปรแกรมที่ซับซ้อนมากขึ้นในภายหลัง.

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 ไมโครวินาทีในการตอบสนอง.
อ่านจังหวะ: โฮสต์จะแจ้งให้เซ็นเซอร์ส่งข้อมูลโดยการดึงบัสลงแล้วปล่อย, และเซ็นเซอร์จะส่งออกบิตข้อมูลบนบัสหลังจากเกิดความล่าช้าระยะหนึ่ง.

3. วิธีการเชื่อมต่อฮาร์ดแวร์เทอร์โมมิเตอร์
การเชื่อมต่อฮาร์ดแวร์เป็นขั้นตอนแรกและสำคัญที่สุดในการสร้างเทอร์โมมิเตอร์แบบดิจิทัล. การเชื่อมต่อที่ถูกต้องระหว่างเซ็นเซอร์ DS18B20 และไมโครคอนโทรลเลอร์จะช่วยให้มั่นใจในการส่งข้อมูลที่แม่นยำและเป็นรากฐานที่มั่นคงสำหรับการเขียนโปรแกรมซอฟต์แวร์และการประมวลผลข้อมูลเพิ่มเติม. บทนี้จะแนะนำรายละเอียดหลักการออกแบบอินเทอร์เฟซระหว่าง DS18B20 และไมโครคอนโทรลเลอร์ และขั้นตอนเฉพาะของการเชื่อมต่อวงจร, และครอบคลุมเนื้อหาที่เกี่ยวข้องของแหล่งจ่ายไฟและการปรับสภาพสัญญาณ.
3.1 การเชื่อมต่อระหว่าง DS18B20 และไมโครคอนโทรลเลอร์
3.1.1 หลักการออกแบบวงจรอินเทอร์เฟซ
การออกแบบวงจรอินเทอร์เฟซของ DS18B20 จำเป็นต้องปฏิบัติตามหลักการหลักหลายประการเพื่อให้มั่นใจว่าการทำงานของอุปกรณ์มีความเสถียรและมีประสิทธิภาพ:
แหล่งจ่ายไฟที่เสถียร: DS18B20 สามารถรับพลังงานจากสายข้อมูลได้ “ดีคิว” (เรียกว่า “โหมดพลังงานปรสิต”), หรือสามารถขับเคลื่อนโดยแหล่งจ่ายไฟภายนอกได้อย่างอิสระ. ไม่ว่าจะใช้วิธีไหนก็ตาม, แหล่งจ่ายไฟจะต้องมีความเสถียรเพื่อป้องกันข้อผิดพลาดในการส่งข้อมูลที่เกิดจากความผันผวนของแหล่งจ่ายไฟ.
ความสมบูรณ์ของสัญญาณ: เนื่องจาก DS18B20 ส่งข้อมูลผ่านบรรทัดเดียว, ความสมบูรณ์ของสัญญาณมีความสำคัญอย่างยิ่ง. จำเป็นต้องพิจารณาความสามารถในการป้องกันการรบกวนของสัญญาณและการจับคู่ลักษณะทางไฟฟ้าของสัญญาณ.
การป้องกันวงจร: การป้องกันกระแสเกินและการคายประจุไฟฟ้าสถิต (ไฟฟ้าสถิตย์) ควรรวมมาตรการป้องกันไว้ในการออกแบบวงจรเพื่อหลีกเลี่ยงความเสียหายต่อเซ็นเซอร์หรือไมโครคอนโทรลเลอร์.

3.1.2 ขั้นตอนเฉพาะสำหรับการต่อวงจร
การเชื่อมต่อ DS18B20 กับไมโครคอนโทรลเลอร์มักจะทำตามขั้นตอนต่อไปนี้:
การเชื่อมต่อพลังงาน: เชื่อมต่อพิน VDD ของ DS18B20 เข้ากับแหล่งจ่ายไฟ 3.3V หรือ 5V (ขึ้นอยู่กับระดับแรงดันไฟฟ้าของไมโครคอนโทรลเลอร์), และขา GND เข้ากับสายกราวด์.
การเชื่อมต่อสายข้อมูล: พิน DQ เชื่อมต่อกับพิน I/O ดิจิทัลของไมโครคอนโทรลเลอร์. เพื่อให้มั่นใจถึงความเสถียรของการส่งข้อมูล, สามารถเพิ่มตัวต้านทานแบบดึงขึ้นระหว่างสายข้อมูลและแหล่งจ่ายไฟได้, โดยมีค่าปกติอยู่ที่ 4.7kΩ ถึง 10kΩ.
รีเซ็ตและประมวลผลพินพัลส์การแสดงตน: โดยทั่วไป, พินรีเซ็ต (ครั้งแรก) และพินพัลส์แสดงตน (พาร์) ของ DS18B20 ไม่จำเป็นต้องต่อภายนอก, เป็นสัญญาณที่ใช้ภายใน.

ในส่วนนี้, เราได้ออกแบบวงจรพื้นฐานซึ่งสามารถเชื่อมต่อเซ็นเซอร์อุณหภูมิ DS18B20 กับไมโครคอนโทรลเลอร์ได้. ต่อไปนี้เป็นตัวอย่างแผนภาพวงจรที่ใช้ Arduino Uno และคำอธิบายที่เกี่ยวข้อง:

ผังงาน LR
DS18B20 — |วีดีดี| 5วี
DS18B20 — |จีเอ็นดี| จีเอ็นดี
DS18B20 — |ดีคิว| 2
ดีคิว — |ดึงขึ้น| 5วี

ในหมู่พวกเขา, DS18B20 หมายถึงเซ็นเซอร์อุณหภูมิแบบดิจิตอล, 5V คือกำลังขับของไมโครคอนโทรลเลอร์, GND คือสายดิน, และ 2 แสดงถึงหมายเลขพินของ Arduino. 2, ซึ่งใช้สำหรับการส่งข้อมูล. การเชื่อมต่อระหว่าง DQ และ 5V แสดงถึงตัวต้านทานแบบดึงขึ้น.


3.2 แหล่งจ่ายไฟและการปรับสภาพสัญญาณ
3.2.1 ทางเลือกของวิธีการจ่ายไฟ
DS18B20 มีวิธีจ่ายไฟสองวิธี:
โหมดพลังงานปรสิต: ในโหมดนี้, สายข้อมูล (ดีคิว) ไม่เพียงแต่สามารถส่งข้อมูลได้เท่านั้น, แต่ยังจ่ายไฟให้ DS18B20 ด้วย. ในเวลานี้, แรงดันไฟฟ้าระดับสูงบนสายข้อมูลควรมีอย่างน้อย 3.0V เพื่อให้แน่ใจว่ามีกระแสไฟเพียงพอ. โดยปกติโหมดนี้จะใช้เมื่อความยาวของบัสสั้นและการส่งข้อมูลไม่บ่อยเกินไป.

โหมดแหล่งจ่ายไฟภายนอก: ในโหมดนี้, DS18B20 มี VDD อินพุตพลังงานอิสระ. การเปิดเครื่องด้วยแหล่งจ่ายไฟภายนอกสามารถเพิ่มความแรงของสัญญาณของเซ็นเซอร์และปรับปรุงความสามารถในการป้องกันการรบกวนได้, ซึ่งเหมาะสำหรับการส่งข้อมูลทางไกลหรือการรับส่งข้อมูลบ่อยครั้ง.

3.2.2 การกรองสัญญาณและความเสถียร
เพื่อให้มั่นใจถึงความเสถียรของสัญญาณและการอ่านข้อมูลที่แม่นยำ, สัญญาณจะต้องได้รับการกรองและทำให้เสถียรอย่างเหมาะสม:
ตัวต้านทานแบบดึงขึ้น: ตัวต้านทานแบบดึงขึ้นจะถูกเพิ่มระหว่างสายข้อมูลและแหล่งจ่ายไฟเพื่อให้แน่ใจว่าสายข้อมูลอยู่ในสถานะระดับสูงเมื่อไม่ได้ใช้งาน.
วงจรคลายความกระวนกระวายใจ: เพื่อขจัดการอ่านค่าที่ผิดพลาดที่เกิดจากการรบกวนของสายหรือความผันผวนของแรงดันไฟฟ้าที่เกิดขึ้นทันที, สัญญาณสามารถลดความกระวนกระวายใจของซอฟต์แวร์ได้ที่ด้านไมโครคอนโทรลเลอร์.
การป้องกันไฟฟ้าสถิต: ส่วนประกอบป้องกัน ESD (เช่น ไดโอด TVS) ถูกเพิ่มเข้าไปในพอร์ตของเซ็นเซอร์และไมโครคอนโทรลเลอร์เพื่อป้องกันความเสียหายที่เกิดจากการคายประจุไฟฟ้าสถิต.

ส่วนนี้จะอธิบายเพิ่มเติมเกี่ยวกับปัจจัยที่ควรพิจารณาเมื่อเลือกแหล่งจ่ายไฟและการปรับสภาพสัญญาณในรูปแบบตาราง:
| โครงการ | โหมดพลังงานปรสิต | โหมดพลังงานภายนอก | คำอธิบาย | | — | — | — | — | | สถานการณ์ที่เกี่ยวข้อง | เส้นสั้น, ข้อมูลไม่บ่อยนัก | เส้นยาว, ข้อมูลบ่อยครั้ง | เลือกตามสถานการณ์การใช้งานจริง | | เสถียรภาพของแหล่งจ่ายไฟ | ต่ำกว่า | สูงกว่า | แนะนำให้ใช้แหล่งจ่ายไฟภายนอกสำหรับสายยาวหรือความถี่สูง | | ค่าใช้จ่าย | ต่ำกว่า | สูงกว่า | แหล่งจ่ายไฟภายนอกต้องมีส่วนประกอบการจัดการพลังงานเพิ่มเติม | | ป้องกันการรบกวน | อ่อนแอกว่า | แข็งแกร่งขึ้น | แหล่งจ่ายไฟภายนอกเหมาะสำหรับสภาพแวดล้อมที่มีการรบกวนสูงมากกว่า |

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


การฝึกเขียนโปรแกรมเชิงฟังก์ชันของ DS18B20:
4. DS18B20 เครื่องวัดอุณหภูมิแบบดิจิตอลการเขียนโปรแกรมภาษา C
4.1 การเขียนโปรแกรมพื้นฐานและการเตรียมสภาพแวดล้อม
4.1.1 แนวคิดการออกแบบโปรแกรมและการสร้างกรอบงาน
ก่อนเริ่มเขียนโปรแกรมภาษา C ของเทอร์โมมิเตอร์ดิจิตอล DS18B20, คุณต้องสร้างแนวคิดพื้นฐานของการออกแบบโปรแกรมก่อน. เซ็นเซอร์ DS18B20 สื่อสารกับไมโครคอนโทรลเลอร์ผ่านโปรโตคอลการสื่อสารแบบ 1 สาย. ดังนั้น, ภารกิจหลักของโปรแกรมคือการดำเนินการที่เกี่ยวข้องของโปรโตคอลการสื่อสารแบบ 1 สาย, รวมถึงการเริ่มต้น DS18B20, ส่งคำแนะนำ, อ่านข้อมูลอุณหภูมิ, และการแปลงและแสดงข้อมูลที่อ่าน.

Framework ของโปรแกรมแบ่งออกเป็นส่วนๆ คร่าวๆ ดังต่อไปนี้:
การเริ่มต้น: เริ่มต้นไมโครคอนโทรลเลอร์และเซ็นเซอร์ DS18B20.
วงหลัก: ประกอบด้วยลูปที่อ่านข้อมูลเซ็นเซอร์อย่างต่อเนื่อง.
1-ไลบรารีฟังก์ชันการสื่อสารแบบมีสาย: ประกอบด้วยฟังก์ชันสำหรับการนำโปรโตคอลการสื่อสารแบบสายเดียวไปใช้.

การประมวลผลข้อมูล: แปลงข้อมูลดิบที่เซ็นเซอร์ส่งคืนให้เป็นค่าอุณหภูมิที่อ่านได้.
แสดงผลเอาต์พุต: แสดงข้อมูลอุณหภูมิที่ประมวลผลบนหน้าจอ LCD หรือส่งออกไปยังคอมพิวเตอร์ผ่านทางพอร์ตอนุกรม.

หัววัดอุณหภูมิ DS18b20 สแตนเลสกันน้ำ 1 สาย 1, 2, 5 เมตร

หัววัดอุณหภูมิ DS18b20 สแตนเลสกันน้ำ 1 สาย 1, 2, 5 เมตร

DS18B20 เซ็นเซอร์วัดอุณหภูมิแบบดิจิตอล 1 สาย

DS18B20 เซ็นเซอร์วัดอุณหภูมิแบบดิจิตอล 1 สาย

DS18B20 ชุดโมดูลเซ็นเซอร์อุณหภูมิพร้อม 1 m-3.2 Ft โพรบวัดสแตนเลสแบบดิจิตอลกันน้ำ

DS18B20 ชุดโมดูลเซ็นเซอร์อุณหภูมิพร้อม 1 m-3.2 Ft โพรบวัดสแตนเลสแบบดิจิตอลกันน้ำ

4.1.2 การสร้างและการกำหนดค่าสภาพแวดล้อมการพัฒนา
เพื่อตั้งโปรแกรมและพัฒนาเทอร์โมมิเตอร์ดิจิตอล DS18B20, คุณต้องเตรียมสภาพแวดล้อมการพัฒนาและกำหนดค่าอย่างเหมาะสม. ต่อไปนี้เป็นขั้นตอนพื้นฐานสำหรับการพัฒนา:

เลือกสภาพแวดล้อมการพัฒนา: เลือกสภาพแวดล้อมการพัฒนาแบบรวมที่เหมาะสม (ไอดี) ตามประเภทของไมโครคอนโทรลเลอร์, เช่น สำหรับการพัฒนาโดยใช้ไมโครคอนโทรลเลอร์ซีรีส์ ARM Cortex-M. คุณสามารถใช้ Keil MDK หรือ STM32CubeIDE.

กำหนดค่าคอมไพเลอร์: ตาม IDE ที่ใช้, กำหนดค่าคอมไพเลอร์เพื่อให้แน่ใจว่าสามารถคอมไพล์รหัสภาษา C ได้อย่างถูกต้อง.
สร้างบอร์ดพัฒนาฮาร์ดแวร์: เลือกบอร์ดพัฒนาไมโครคอนโทรลเลอร์ที่เหมาะสม, เช่นขึ้นอยู่กับ STM32, อีเอสพี32, ฯลฯ.
เชื่อมต่อบอร์ดพัฒนา: เชื่อมต่อเซ็นเซอร์ DS18B20 เข้ากับพินที่ระบุของไมโครคอนโทรลเลอร์ผ่านโปรโตคอลการสื่อสารแบบ 1 สาย.
เขียนโค้ด: สร้างโครงการภาษา C ใหม่ใน IDE และเริ่มเขียนโค้ดโปรแกรม.
คอมไพล์และดีบัก: ใช้เครื่องมือ IDE เพื่อคอมไพล์โค้ดและรันบนบอร์ดพัฒนาเพื่อการดีบัก.

#รวม <stdio.h>

// DS18B20 การประกาศไลบรารีฟังก์ชันการสื่อสารบรรทัดแรก
เป็นโมฆะ DS18B20_Init();
เป็นโมฆะ DS18B20_รีเซ็ต();
เป็นโมฆะ DS18B20_WriteByte(ถ่านที่ไม่ได้ลงนาม);
ถ่าน DS18B20_ReadByte ที่ไม่ได้ลงนาม();
int DS18B20_อ่านอุณหภูมิ();

int หลัก() {
// เริ่มต้นเซ็นเซอร์ DS18B20
DS18B20_ความร้อน();
// วงหลัก
ในขณะที่(1) {
// อ่านค่าอุณหภูมิ
อุณหภูมิ int = DS18B20_ReadTemperature();
// ค่าอุณหภูมิเอาท์พุตไปยังพอร์ตอนุกรมหรืออุปกรณ์แสดงผลอื่น ๆ
พิมพ์ฉ(“อุณหภูมิปัจจุบัน: %ดีn”, อุณหภูมิ);
}
กลับ 0;
}


4.2 การใช้งานโปรแกรมอ่านอุณหภูมิ DS18B20
4.2.1 การสร้างไลบรารีฟังก์ชันการสื่อสารแบบสายเดียว
เพื่อให้ทราบค่าอุณหภูมิที่อ่านได้ของ DS18B20, คุณต้องสร้างไลบรารีฟังก์ชันการสื่อสารแบบสายเดียวก่อน. ต่อไปนี้เป็นวิธีการปรับใช้ฟังก์ชันสำคัญต่างๆ:

DS18B20_ความร้อน(): เริ่มต้นการกำหนดเวลาการสื่อสารแบบสายเดียว.
DS18B20_รีเซ็ต(): รีเซ็ตเซ็นเซอร์และตรวจจับชีพจร.
DS18B20_เขียนไบต์(ถ่านที่ไม่ได้ลงนาม): เขียนข้อมูลหนึ่งไบต์ไปยังเซ็นเซอร์.
DS18B20_ReadByte(): อ่านข้อมูลหนึ่งไบต์จากเซ็นเซอร์.
DS18B20_อ่านอุณหภูมิ(): อ่านอุณหภูมิแล้วแปลง.

การใช้งานไลบรารีฟังก์ชันการสื่อสารแบบสายเดียวของ DS18B20 ค่อนข้างซับซ้อนเนื่องจากต้องมีการควบคุมการเปลี่ยนแปลงระดับพินอย่างแม่นยำเพื่อให้เป็นไปตามโปรโตคอลการสื่อสารแบบสายเดียว. ต่อไปนี้เป็นตัวอย่างของการใช้งานฟังก์ชัน:
เป็นโมฆะ DS18B20_รีเซ็ต() {
// ลำดับการรีเซ็ตการสื่อสารแบบบรรทัดเดียว, รวมถึงการดึงสายข้อมูลลงมา, ล่าช้า, ปล่อยรถบัส, และตรวจจับชีพจรที่มีอยู่
// …
}

วัตถุประสงค์ของฟังก์ชันนี้คือเพื่อส่งพัลส์รีเซ็ตไปยัง DS18B20. หลังจากรีเซ็ตสำเร็จแล้ว, DS18B20 จะส่งคืนพัลส์การแสดงตน.


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

รีเซ็ตเซ็นเซอร์.
ส่ง “เรือโรม” สั่งการ (0xCC).
ส่ง “แปลงอุณหภูมิ” สั่งการ (0x44).
รอให้การแปลงเสร็จสิ้น.
ส่ง “อ่านลงทะเบียน” สั่งการ (0เอ็กซ์บีอี).
อ่านข้อมูลอุณหภูมิสองไบต์.

รหัสต่อไปนี้แสดงวิธีการอ่านค่าอุณหภูมิของ DS18B20:

int DS18B20_อ่านอุณหภูมิ() {
ถ่าน temp_low ที่ไม่ได้ลงนาม, อุณหภูมิ_สูง;
อุณหภูมิ int ที่ไม่ได้ลงนาม;

// รีเซ็ตเซ็นเซอร์และข้ามคำแนะนำ ROM
DS18B20_รีเซ็ต();
DS18B20_เขียนไบต์(0xCC); // ข้ามคำสั่ง ROM
// ส่งคำสั่งอุณหภูมิการแปลง
DS18B20_เขียนไบต์(0x44);
// รอให้การแปลงเสร็จสิ้น. ที่นี่คุณจะต้องรอตามเวลาการแปลงของ DS18B20
// …

// รีเซ็ตเซ็นเซอร์และอ่านข้อมูลอุณหภูมิ
DS18B20_รีเซ็ต();
DS18B20_เขียนไบต์(0xCC); // ข้ามคำสั่ง ROM
DS18B20_เขียนไบต์(0เอ็กซ์บีอี); // อ่านคำสั่งลงทะเบียน

// อ่านข้อมูลสองไบต์
temp_low = DS18B20_ReadByte();
temp_high = DS18B20_ReadByte();
// รวมข้อมูลสองไบต์ให้เป็นจำนวนเต็ม 16 บิต
อุณหภูมิ = (อุณหภูมิ_สูง << 8) | temp_low;
// ส่งกลับค่าอุณหภูมิ, การแปลงอย่างเหมาะสมตามความละเอียดของ DS18B20
อุณหภูมิขากลับ;
}


4.2.3 การดีบักโปรแกรมและการจัดการข้อยกเว้น

เมื่อเขียนโปรแกรมอ่าน DS18B20, การดีบักโปรแกรมและการจัดการข้อยกเว้นมีความสำคัญมาก. ระหว่างการดีบัก, คุณอาจจำเป็นต้องใช้ตัวช่วยแก้ไขข้อบกพร่องพอร์ตอนุกรมเพื่อตรวจสอบว่าค่าอุณหภูมิเอาต์พุตถูกต้องหรือไม่, หรือใช้เครื่องวิเคราะห์ลอจิกเพื่อตรวจสอบจังหวะสัญญาณของการสื่อสารบรรทัดแรก. การจัดการข้อยกเว้นจำเป็นต้องคำนึงถึงความล้มเหลวของฮาร์ดแวร์ด้วย, ข้อผิดพลาดในการสื่อสาร, และการตอบสนองที่ผิดปกติของ DS18B20.

ต่อไปนี้เป็นกลยุทธ์การจัดการการดีบักและข้อยกเว้นบางประการ:

การตรวจสอบข้อมูล: หลังจากอ่านข้อมูลแต่ละครั้งแล้ว, ใช้เช็คซัมหรือเช็คบิตเพื่อยืนยันความถูกต้องของข้อมูล.
การจับข้อยกเว้น: เพิ่มกลไกการจับข้อยกเว้นให้กับโปรแกรม, เช่นกลไกการลองใหม่หมดเวลา, รีเซ็ตเซ็นเซอร์, ฯลฯ.
ข้อมูลการแก้ไขข้อบกพร่อง: เพิ่มผลลัพธ์ข้อมูลการดีบักที่เพียงพอให้กับโปรแกรมเพื่อช่วยค้นหาปัญหา.
int หลัก() {
// เริ่มต้นเซ็นเซอร์ DS18B20
DS18B20_ความร้อน();
// วงหลัก
ในขณะที่(1) {
อุณหภูมิภายใน;
// อ่านอุณหภูมิและตรวจสอบข้อผิดพลาด
อุณหภูมิ = DS18B20_ReadTemperature();
ถ้า (อุณหภูมิ < 0) {
พิมพ์ฉ(“เกิดข้อผิดพลาดในการอ่านอุณหภูมิ!\n”);
// คุณสามารถเลือกที่จะลองอีกครั้งหรือกลไกการจัดการข้อผิดพลาดอื่นๆ
} อื่น {
พิมพ์ฉ(“อุณหภูมิปัจจุบัน: %ดีn”, อุณหภูมิ);
}
}
กลับ 0;
}

บทนี้จะแนะนำพื้นฐานการเขียนโปรแกรมภาษา C และการเตรียมสภาพแวดล้อมของเทอร์โมมิเตอร์ดิจิตอล DS18B20, ตลอดจนการดำเนินการโปรแกรมอ่านอุณหภูมิ, และเน้นถึงความสำคัญของการดีบักโปรแกรมและการจัดการข้อยกเว้น. โดยการแนะนำบทนี้, ผู้อ่านควรสามารถสร้างสภาพแวดล้อมการพัฒนาได้, เข้าใจถึงความสำคัญของไลบรารีฟังก์ชันการสื่อสารบรรทัดแรก, และเขียนโปรแกรมอ่านอุณหภูมิเบื้องต้น. บทต่อไปนี้จะเจาะลึกเพิ่มเติมเกี่ยวกับการสร้างและการใช้สภาพแวดล้อมการจำลอง Proteus, จัดให้มีวิธีทดสอบการจำลองการประกอบฮาร์ดแวร์จริง.


5. แผนภาพการจำลอง Proteus และการวิเคราะห์ผลการจำลอง
5.1 การสร้างสภาพแวดล้อมการจำลอง Proteus
5.1.1 การทำงานพื้นฐานของซอฟต์แวร์ Proteus
ก่อนเริ่มสร้างแบบจำลองเทอร์โมมิเตอร์ดิจิตอล DS18B20, ก่อนอื่นคุณต้องเข้าใจและเชี่ยวชาญการทำงานพื้นฐานของซอฟต์แวร์ Proteus ก่อน. Proteus เป็นซอฟต์แวร์จำลองวงจรอิเล็กทรอนิกส์ที่ทรงพลังซึ่งไม่เพียงแต่สามารถออกแบบแผนผังวงจรเท่านั้น, แต่ยังออกแบบเค้าโครง PCB วงจรและจัดเตรียมฟังก์ชันการจำลองอีกด้วย. ต่อไปนี้เป็นขั้นตอนสำคัญที่จะช่วยคุณเริ่มต้นใช้งาน Proteus:

เปิดซอฟต์แวร์ Proteus และสร้างโครงการใหม่.
ค้นหาและเลือกส่วนประกอบที่ต้องการในไลบรารีส่วนประกอบ, เช่น เซนเซอร์ DS18B20, ไมโครคอนโทรลเลอร์, แหล่งจ่ายไฟ, สายเชื่อมต่อ, ฯลฯ.
ลากส่วนประกอบที่เลือกไปยังพื้นที่ออกแบบและใช้เมาส์เพื่อวางและจัดวางองค์ประกอบเหล่านั้น.
ใช้เครื่องมือเดินสายไฟเพื่อเชื่อมต่อหมุดของแต่ละส่วนประกอบเพื่อสร้างวงจรที่สมบูรณ์.
คลิกสองครั้งที่ส่วนประกอบหรือสายไฟเพื่อแก้ไขคุณสมบัติ, เช่นค่าความต้านทาน, แรงดันไฟฟ้าของแหล่งจ่ายไฟ, ฯลฯ.

ตรวจสอบให้แน่ใจว่าส่วนประกอบทั้งหมดเชื่อมต่ออย่างถูกต้อง และตรวจสอบข้อผิดพลาดหรือการละเว้น.

5.1.2 สร้างโครงการจำลอง DS18B20
ขั้นตอนในการสร้างโครงการจำลองสำหรับเทอร์โมมิเตอร์ดิจิตอล DS18B20 มีดังต่อไปนี้:

เริ่ม Proteus และเลือก “โครงการใหม่” เพื่อสร้างโครงการใหม่.
หลังจากตั้งชื่อโครงการและที่ตั้งแล้ว, คลิก “ต่อไป”.
เลือกเทมเพลตโครงการ, เช่น “ใช้ไมโครโปรเซสเซอร์”, และคลิก “ต่อไป”.
ใน “รายการโครงการ” แท็บ, ตรวจสอบ “รวมส่วนประกอบเริ่มต้น” และเลือกไมโครคอนโทรลเลอร์ (เช่น PIC, เอวีอาร์, ฯลฯ) และเซ็นเซอร์ DS18B20.
คลิก “เสร็จ” เพื่อสร้างโครงการให้เสร็จสมบูรณ์.

ต่อไป, สร้างแผนผังวงจร:
เลือก “เลือกอุปกรณ์” เครื่องมือ, ค้นหาและเลือกไมโครคอนโทรลเลอร์และเซ็นเซอร์ DS18B20 ในไลบรารีส่วนประกอบ.
ใช้ “วางอุปกรณ์” เครื่องมือเพื่อวางส่วนประกอบที่เลือกไว้ในพื้นที่การออกแบบ.
ใช้ “ลวด” เครื่องมือสำหรับเชื่อมต่อไมโครคอนโทรลเลอร์และพินที่เกี่ยวข้องของเซ็นเซอร์ DS18B20.
หลังจากเชื่อมต่อเสร็จแล้ว, ใช้ “ข้อความ” เครื่องมือสำหรับเพิ่มคำอธิบายประกอบให้กับแผนภาพวงจรเพื่อให้เข้าใจและแก้ไขได้ง่าย.

5.2 การทดสอบการจำลองและการวิเคราะห์ข้อมูล
5.2.1 ตั้งค่าพารามิเตอร์และเงื่อนไขการจำลอง
ก่อนที่จะเริ่มการจำลอง, คุณต้องตั้งค่าพารามิเตอร์และเงื่อนไขสำหรับการจำลอง:
คลิกสองครั้งที่ส่วนประกอบไมโครคอนโทรลเลอร์เพื่อเข้าสู่อินเทอร์เฟซการตั้งค่าคุณสมบัติ.
เลือกเส้นทางไฟล์โปรแกรมที่เขียนไว้ก่อนหน้านี้ที่ “ไฟล์โปรแกรม”.
ตั้งค่าพารามิเตอร์แหล่งจ่ายไฟเพื่อให้แน่ใจว่าทั้งไมโครคอนโทรลเลอร์และเซ็นเซอร์ DS18B20 มีแรงดันไฟฟ้าที่ถูกต้อง.
ต่อไป, ตั้งค่าพารามิเตอร์เวลาสำหรับการจำลอง:
ในแผงควบคุมการจำลอง, เลือก “การตั้งค่าส่วนกลาง”.
ปรับความเร็วการจำลองและเวลาการจำลองสูงสุด.
กำหนดจุดพักที่เหมาะสมเพื่อวิเคราะห์ข้อมูลระหว่างกระบวนการจำลอง.

5.2.2 จำลองและอ่านข้อมูลอุณหภูมิ
รันการจำลองและจำลองข้อมูลอุณหภูมิ:
คลิกที่ “เล่น” ปุ่มในแผงควบคุมการจำลองเพื่อเริ่มการจำลอง.
ใช้ “ดีบัก” เครื่องมือดูสถานะการทำงานของโปรแกรมและค่าตัวแปร.
จำลองเซ็นเซอร์ DS18B20 เพื่ออ่านค่าอุณหภูมิ, ซึ่งโดยปกติจะทำได้โดยการปรับเปลี่ยนเทอร์โมมิเตอร์เสมือนในสภาพแวดล้อมการจำลอง.

เพื่ออ่านข้อมูลอุณหภูมิในการจำลอง, คุณสามารถอ้างอิงถึงขั้นตอนต่อไปนี้:
ค้นหาการตั้งค่าการจำลองอุณหภูมิในคุณสมบัติของส่วนประกอบ DS18B20.
แก้ไขค่าอุณหภูมิเพื่อทดสอบการตอบสนองของระบบภายใต้สภาวะอุณหภูมิที่แตกต่างกัน.
สังเกตว่าโปรแกรมไมโครคอนโทรลเลอร์ประมวลผลข้อมูลอุณหภูมิอย่างไร.

5.2.3 การวิเคราะห์ผลลัพธ์และการแก้ไขปัญหา
วิเคราะห์ผลการจำลองและยืนยันประสิทธิภาพของเทอร์โมมิเตอร์:
ตรวจสอบข้อมูลในหน้าต่างเอาท์พุตเพื่อตรวจสอบว่าการอ่านอุณหภูมิแม่นยำหรือไม่.
ใช้เครื่องมือวิเคราะห์ลอจิกเพื่อตรวจสอบว่ากระบวนการสื่อสารข้อมูลเป็นเรื่องปกติหรือไม่.
ตรวจสอบสัญญาณผิดปกติหรือเอาต์พุตที่ไม่เสถียร.

ทำการวินิจฉัยข้อผิดพลาดและการดีบัก:
หากอ่านค่าอุณหภูมิไม่ถูกต้องหรือมีข้อผิดพลาด, ตรวจสอบวิธีการเชื่อมต่อและการกำหนดค่าของ DS18B20.
วิเคราะห์โค้ดโปรแกรมเพื่อให้แน่ใจว่ามีการใช้อัลกอริธึมการสื่อสารบรรทัดแรกและการแปลงข้อมูลอย่างถูกต้อง.
ใช้ “หยุด” ฟังก์ชั่นของซอฟต์แวร์จำลองเพื่อหยุดการจำลองชั่วคราวและสังเกตสถานะปัจจุบันของระบบ.