การแนะนำ: บทความนี้อธิบายรายละเอียดเกี่ยวกับการประยุกต์ใช้เซ็นเซอร์อุณหภูมิดิจิตอล 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, และมีการใช้กันอย่างแพร่หลายในการตรวจสอบอุณหภูมิของร่องสายเคเบิล, หม้อไอน้ำ, อะไร, เรือนกระจกทางการเกษตร, ห้องสะอาด, ฯลฯ.
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 หรือส่งออกไปยังคอมพิวเตอร์ผ่านทางพอร์ตอนุกรม.
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.
วิเคราะห์โค้ดโปรแกรมเพื่อให้แน่ใจว่ามีการใช้อัลกอริธึมการสื่อสารบรรทัดแรกและการแปลงข้อมูลอย่างถูกต้อง.
ใช้ “หยุด” ฟังก์ชั่นของซอฟต์แวร์จำลองเพื่อหยุดการจำลองชั่วคราวและสังเกตสถานะปัจจุบันของระบบ.
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





