เงื่อนไข: เซ็นเซอร์วัดอุณหภูมิความต้านทาน 4 สาย

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

ประเภทหลักของเซ็นเซอร์

โดยทั่วไปมีสองวิธีในการรับข้อมูล:

1. ติดต่อ... เซ็นเซอร์อุณหภูมิแบบสัมผัสสัมผัสกับวัตถุหรือสาร สามารถใช้วัดอุณหภูมิของของแข็งของเหลวหรือก๊าซ

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

กฎการเลือกเซนเซอร์

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

อำนาจ

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

ชุดคุณลักษณะ

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

สะดวกในการใช้

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

ง่ายต่อการเชื่อมต่อ

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

ลักษณะ

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

ประเภทของเซ็นเซอร์อุณหภูมิ

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

  • เทอร์มิสเตอร์
  • เทอร์โมคัปเปิลต้านทาน
  • เทอร์โมคัปเปิล

เซ็นเซอร์อุณหภูมิเหล่านี้แตกต่างกันในแง่ของประสิทธิภาพ

อุปกรณ์

นี่คือเทอร์โมคัปเปิล (แผ่นหรือแกน) ประกอบด้วยสายไฟที่เชื่อมต่อกับขั้วขององค์ประกอบการตรวจจับ

ขึ้นอยู่กับข้อมูลอุณหภูมิความต้านทานของส่วนที่บอบบางจะเปลี่ยนไปตามลำดับสัญญาณไฟฟ้าที่จ่ายให้กับเทอร์โมสตัทจะเปลี่ยนไป ดังนั้นจึงกำหนดค่าสัมบูรณ์ของอุณหภูมิปานกลาง

แผนผังการเชื่อมต่อเซ็นเซอร์อุณหภูมิ

ภายนอก (เซ็นเซอร์อุณหภูมิภายนอกสำหรับการทำความร้อนใต้พื้น) ตามกฎแล้วจะอยู่ใต้พื้นผิวตกแต่งและวัดตัวบ่งชี้อุณหภูมิ ภายใน (ในตัว) อยู่ภายในตัวควบคุมและกำหนดระดับความร้อนของอากาศ

การออกแบบเซ็นเซอร์อุณหภูมิจะถูกเลือกขึ้นอยู่กับคุณสมบัติของระบบ:

เทอร์มิสเตอร์

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

เนื่องจากคุณสมบัติเซมิคอนดักเตอร์ของวัสดุเทอร์มิสเตอร์จึงมีค่าสัมประสิทธิ์อุณหภูมิติดลบ (NTC) นั่นคือ ความต้านทานจะลดลงตามอุณหภูมิที่เพิ่มขึ้น อย่างไรก็ตามยังมีเทอร์มิสเตอร์ PTC ที่ความต้านทานเพิ่มขึ้นตามอุณหภูมิที่เพิ่มขึ้น

กำหนดการเทอร์มิสเตอร์

ข้อดีของเทอร์มิสเตอร์

  • ความเร็วสูงในการตอบสนองต่อการเปลี่ยนแปลงอุณหภูมิความแม่นยำ
  • ราคาถูก.
  • ความต้านทานสูงขึ้นในช่วง 2,000 ถึง 10,000 โอห์ม
  • ความไวสูงขึ้นมาก (~ 200 โอห์ม / ° C) ภายในช่วงอุณหภูมิที่ จำกัด สูงถึง 300 ° C

ขึ้นอยู่กับอุณหภูมิของความต้านทาน

การพึ่งพาความต้านทานต่ออุณหภูมิแสดงโดยสมการต่อไปนี้:

ที่ไหน A, B, C - นี่คือค่าคงที่ (กำหนดโดยเงื่อนไขการคำนวณ) - ความต้านทานเป็นโอห์ม ที - อุณหภูมิในเคลวิน คุณสามารถคำนวณการเปลี่ยนแปลงของอุณหภูมิได้อย่างง่ายดายจากการเปลี่ยนแปลงความต้านทานหรือในทางกลับกัน

ใช้เทอร์มิสเตอร์อย่างไร?

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

ตัวอย่าง: พิจารณาเทอร์มิสเตอร์ที่มีค่าความต้านทาน 2.2K ที่ 25 ° C และ 50 โอห์มที่ 80 ° C เทอร์มิสเตอร์เชื่อมต่อแบบอนุกรมโดยมีตัวต้านทาน 1 kΩผ่านแหล่งจ่ายไฟ 5 V

ดังนั้นจึงสามารถคำนวณแรงดันไฟฟ้าขาออกได้ดังนี้:

ที่ 25 ° C, RNTC = 2200 โอห์ม;

ที่ 80 ° C, RNTC = 50 โอห์ม;

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

คุณสมบัติของอินเทอร์เฟซกระแสสองสายในเซ็นเซอร์อุณหภูมิ LMT01

รูปที่. 4. การจัดระเบียบอินเทอร์เฟซปัจจุบันด้วย LMT01

ดังที่ได้กล่าวไว้ข้างต้นเพื่อส่งผลการวัด LMT01 จะสร้างลำดับบิตในรูปแบบของพัลส์การนับกระแส สำหรับสิ่งนี้เซ็นเซอร์ต้องใช้เพียงสองสายนำ (รูปที่ 4) ในการแปลงพัลส์ปัจจุบันให้อยู่ในรูปแบบที่คุ้นเคยกับไมโครวงจรดิจิทัลในบางกรณีคุณสามารถใช้ตัวต้านทานตัวเดียว (แต่ไม่เสมอไป - เพิ่มเติมจากด้านล่างนี้)

หลังจากเปิดเครื่อง LMT01 จะเริ่มรอบการวัดที่ใช้เวลาถึง 54 มิลลิวินาที (รูปที่ 5) ในช่วงเวลานี้กระแสไฟฟ้าระดับต่ำ 28 ... 39 μAจะเกิดขึ้นที่เอาต์พุตเซ็นเซอร์ ตามด้วยวัฏจักรของการถ่ายโอนผลการวัดในรูปแบบของพัลส์ปัจจุบันที่มีแอมพลิจูด 112 ... 143 μA ไมโครคอนโทรลเลอร์ที่รับสัญญาณจะต้องนับพัลส์เหล่านี้เช่นใช้ตัวนับ / ตัวจับเวลาในตัว เนื่องจากความถี่ของสัญญาณอยู่ที่ประมาณ 82 ... 94 kHz ดังนั้นด้วยจำนวนพัลส์สูงสุด (4095) ระยะเวลาในการส่งข้อมูลจึงสูงถึง 50 ms

รูปที่. 5. แผนภาพเวลาของการทำงานของเซ็นเซอร์ LMT01

ตามจำนวนพัลส์ที่นับ (PC) ค่าอุณหภูมิสามารถกำหนดได้ตามสูตร 1:

, (1)

ดังนั้นที่ 0 ° C เซ็นเซอร์จะสร้างพัลส์ประมาณ 800

น่าเสียดายที่การใช้ตัวต้านทานภายนอกตัวเดียวไม่สามารถทำได้เสมอไปเนื่องจากข้อ จำกัด ของแรงดันไฟฟ้าต่ำสุดที่ตกคร่อมเซ็นเซอร์ LMT01 ในระหว่างรอบการวัดค่าการลดลงของเซ็นเซอร์จะต้องมีค่าอย่างน้อย 2.15 V. ในระหว่างรอบการส่งข้อมูลแรงดันไฟฟ้าจะลดลงเหลือ 2 V จึงไม่ยากที่จะทำการคำนวณคร่าวๆ

พิจารณาอุปกรณ์ที่มีแรงดันไฟฟ้า Vdd = 3.3 V หากเราใช้ค่าต่ำสุดที่อนุญาตให้ตกคร่อมเซ็นเซอร์เท่ากับ 2.15 V ในระหว่างรอบการวัดจะสังเกตเห็นสัญญาณไม่เกิน 1.15 V ทั่วทั้งตัวต้านทานสำหรับดิจิตอลส่วนใหญ่ ตัวควบคุมหน่วยตรรกะคือ 0, 7 ∙ Vdd ซึ่งสำหรับกรณีของเราคือ 2.31 V. ดังนั้นการใช้ตัวต้านทานแบบธรรมดาจึงเป็นไปไม่ได้เนื่องจากไมโครคอนโทรลเลอร์จะไม่ "เห็น" สัญญาณของ a หน่วยตรรกะ ทางออกจากสถานการณ์นี้อาจเป็นการใช้ไมโครคอนโทรลเลอร์ที่มีวงจรเปรียบเทียบในตัวหรือวงจรแปลงระดับ

เซ็นเซอร์อุณหภูมิแบบต้านทาน

เซ็นเซอร์ต้านทานอุณหภูมิ (RTD) ทำจากโลหะหายากเช่นทองคำขาวซึ่งความต้านทานไฟฟ้าจะแปรผันตามอุณหภูมิ

เครื่องตรวจจับอุณหภูมิแบบต้านทานมีค่าสัมประสิทธิ์อุณหภูมิเป็นบวกและต่างจากเทอร์มิสเตอร์คือให้ความแม่นยำในการวัดอุณหภูมิสูง อย่างไรก็ตามพวกเขามีความอ่อนไหวไม่ดี Pt100 เป็นเซ็นเซอร์ที่มีจำหน่ายอย่างแพร่หลายโดยมีค่าความต้านทานมาตรฐาน 100 โอห์มที่ 0 ° C ข้อเสียเปรียบหลักคือค่าใช้จ่ายสูง

ข้อดีของเซ็นเซอร์ดังกล่าว

  • ช่วงอุณหภูมิกว้างตั้งแต่ -200 ถึง 650 ° C
  • ให้กระแสไฟตกสูง
  • เชิงเส้นมากขึ้นเมื่อเทียบกับเทอร์โมคัปเปิลและ RTD

ส่วนประกอบเพิ่มเติมและวงจรเซ็นเซอร์

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

วงจรเซ็นเซอร์อุณหภูมิ

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

เทอร์โมคัปเปิล

เซนเซอร์วัดอุณหภูมิเทอร์โมคัปเปิลมักใช้กันมากที่สุดเนื่องจากมีความแม่นยำทำงานในช่วงอุณหภูมิกว้างตั้งแต่ -200 ° C ถึง 2000 ° C และมีราคาไม่แพงนัก เทอร์โมคัปเปิลพร้อมสายไฟและปลั๊กในภาพด้านล่าง:

การทำงานของเทอร์โมคัปเปิล

เทอร์โมคัปเปิลทำจากโลหะที่แตกต่างกันสองชิ้นเชื่อมเข้าด้วยกันเพื่อสร้างความต่างศักย์เหนืออุณหภูมิ จากความแตกต่างของอุณหภูมิระหว่างทางแยกทั้งสองจะมีการสร้างแรงดันไฟฟ้าขึ้นเพื่อใช้ในการวัดอุณหภูมิ ความแตกต่างของแรงดันไฟฟ้าระหว่างทางแยกทั้งสองเรียกว่าเอฟเฟกต์ Seebeck

ถ้าสารประกอบทั้งสองอยู่ที่อุณหภูมิเดียวกันศักย์ของความแตกต่างของสารประกอบต่างกันจะเป็นศูนย์นั่นคือ V1 = V2 อย่างไรก็ตามหากจุดเชื่อมต่ออยู่ที่อุณหภูมิต่างกันแรงดันเอาต์พุตที่สัมพันธ์กับความแตกต่างของอุณหภูมิระหว่างจุดเชื่อมทั้งสองจะเท่ากับความแตกต่าง V1 - V2

ประเภทของเซ็นเซอร์อุณหภูมิ

อิเล็กทรอนิกส์ - เครื่องกล

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

อิเล็กทรอนิกส์

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

ตั้งโปรแกรมได้

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

หลายรุ่นมีการออกแบบที่สดใสและมีสไตล์และหน้าจอ LCD ที่แสดงข้อมูลและอำนวยความสะดวกในการปรับแต่ง

การทำงานกับไลบรารีสำเร็จรูป

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

ไลบรารี OneWire.h

ก่อนอื่นเรามาพิจารณาการทำงานกับไลบรารี OneWire.h ด้านล่างนี้เป็นรายการฟังก์ชันพร้อมคำอธิบายสั้น ๆ

  • OneWire temperatureSensor (uint8_t pinNumber)

ฟังก์ชันนี้เป็นตัวสร้างของคลาส OneWire และสร้างวัตถุ temperatureSensor นั่นคือ เปิดช่องทางการสื่อสารด้วยเซ็นเซอร์หรือกลุ่มเซ็นเซอร์บนพินพิน Number ในตัวอย่างของเรา (รูปที่ 3-5) นี่คือพิน“ D2” ของ Arduino Nano มันคือการที่เราเชื่อมต่อบัสข้อมูล DQ DS18B20

ตัวอย่าง:

OneWire temperatureSensor
(
D2
);
// เซ็นเซอร์หรือกลุ่มของเซ็นเซอร์เชื่อมต่อกับพิน D2

  • uint8_t ค้นหา (addrArray)

ฟังก์ชันจะค้นหาอุปกรณ์ถัดไปบนบัส 1-Wire และเมื่อพบแล้วให้ป้อนค่าแอดเดรสลงในอาร์เรย์ addrArray โดยส่งคืนค่าจริง เนื่องจากแอดเดรสเฉพาะของเซ็นเซอร์แต่ละตัวคือ 64 บิต addrArray จึงต้องมีขนาด 8 ไบต์ หากการค้นหาล้มเหลวฟังก์ชันจะคืนค่าเป็นเท็จ ควรสังเกตว่าเมื่อเซ็นเซอร์อุณหภูมิหลายตัวเชื่อมต่อกับบัสหนึ่งตัวการเรียกใช้ฟังก์ชันการค้นหาแต่ละครั้งจะถูกส่งไปยังเซ็นเซอร์ถัดไปจากนั้นถัดไปเป็นต้นจนกว่าจะมีการระบุอุปกรณ์ทั้งหมดบนบัส ความไม่ชอบมาพากลของฟังก์ชันนี้คือการจดจำที่อยู่ที่ประมวลผลแล้ว ในการรีเซ็ตคิวคุณต้องเรียกใช้ฟังก์ชัน reset_search () ซึ่งจะกล่าวถึงด้านล่าง

ตัวอย่าง:

ไบต์ addrArray
[
8
];
// อาร์เรย์สำหรับจัดเก็บแอดเดรส 64 บิต // หากไม่มีอุปกรณ์อยู่บนบัสเลยหรือระบุอุปกรณ์ทั้งหมด // แสดงข้อมูลที่เกี่ยวข้องในมอนิเตอร์พอร์ต
ถ้า(!
เซ็นเซอร์อุณหภูมิ
.
ค้นหา
(
addrArray
))
อนุกรม
.
println
(
"ไม่มีที่อยู่อีกต่อไป"
);
// มิฉะนั้นหากอุปกรณ์ถัดไปตอบสนองต่อการร้องขอการแสดงตน // แสดงที่อยู่ 64 บิตในจอภาพพอร์ต
อื่น{สำหรับ(
ผม
=
0
;
ผม
<
8
;
ผม
++)
อนุกรม
.
พิมพ์
(
addrArray
[
ผม
],
HEX
);
}

  • เป็นโมฆะreset_search ()

ดังที่ได้กล่าวไว้ข้างต้นฟังก์ชันนี้จะรีเซ็ตคิวการสำรวจของอุปกรณ์บนบัส 1-Wire ไปที่จุดเริ่มต้น ควรใช้ร่วมกับฟังก์ชันการค้นหาเสมอเมื่อส่วนหลังส่งกลับเท็จ ตัวอย่างเช่นในกรณีของเราที่มีเซ็นเซอร์ 5 ตัวบนรถบัสโดยการเรียกใช้ฟังก์ชันการค้นหา 5 ครั้งเราจะได้รับที่อยู่ 5 รายการ เป็นครั้งที่หกฟังก์ชันการค้นหาจะส่งคืนเท็จให้เราและจะดำเนินการนี้กับการสำรวจความคิดเห็นครั้งต่อไปจนกว่าคิวจะถูกล้าง คุณควรใส่ใจกับเรื่องนี้เพื่อหลีกเลี่ยงสถานการณ์ที่ไม่สามารถเข้าใจได้

ตัวอย่าง:

ไบต์ addrArray
[
8
];
// อาร์เรย์สำหรับจัดเก็บที่อยู่ 64 บิต // หากอุปกรณ์ไม่อยู่เลยบนบัสหรือระบุอุปกรณ์ทั้งหมด // รีเซ็ตคิวการสำรวจเพื่อทำซ้ำรอบการค้นหา
ถ้า(!
เซ็นเซอร์อุณหภูมิ
.
ค้นหา
(
addrArray
))
เซ็นเซอร์อุณหภูมิ
.
reset_search
();

  • uint8_tรีเซ็ต ()

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

ตัวอย่าง:
ถ้า(!
เซ็นเซอร์อุณหภูมิ
.
รีเซ็ต
())
อนุกรม
.
println
(
"ไม่มีเซ็นเซอร์บนรถบัส"
);อื่น
อนุกรม
.
println
(
"ตรวจพบเซ็นเซอร์"
);

  • เป็นโมฆะเลือก (addrArray)

ฟังก์ชันนี้ช่วยให้คุณสามารถเลือกอุปกรณ์เฉพาะที่เราต้องการใช้งานได้ในขณะนี้ ตัวเลือกนี้ทำได้โดยการระบุแอดเดรส 64 บิตที่ป้อนในอาร์เรย์ addrArray อย่างชัดเจน ที่อยู่สามารถกำหนดอย่างชัดเจนโดยการเขียนในอาร์เรย์หรือใช้ที่อ่านก่อนหน้านี้โดยฟังก์ชันการค้นหา ควรสังเกตว่าต้องเรียกใช้ฟังก์ชันรีเซ็ตก่อนที่จะเรียกใช้ฟังก์ชันเลือก ในการรีเซ็ตครั้งต่อไปการเชื่อมต่อกับเซ็นเซอร์ที่เลือกจะเสียจนกว่าจะมีการโทรครั้งต่อไปเพื่อเลือก
ตัวอย่าง:
ไบต์ addrArray
[
8
];
// อาร์เรย์สำหรับจัดเก็บที่อยู่ 64 บิต // หากไม่มีอุปกรณ์ใด ๆ บนบัสหรืออุปกรณ์ทั้งหมดจะถูกระบุ // ส่งออกข้อมูลที่เกี่ยวข้องไปยังจอภาพพอร์ต
ถ้า(!
เซ็นเซอร์อุณหภูมิ
.
ค้นหา
(
addrArray
))
อนุกรม
.
println
(
"ไม่มีที่อยู่อีกต่อไป"
);
// มิฉะนั้นหากอุปกรณ์ถัดไปตอบสนองต่อการร้องขอการแสดงตน // เลือกสำหรับการทำงานในภายหลัง
อื่น{
เซ็นเซอร์อุณหภูมิ
.
รีเซ็ต ()
;
// อย่าลืมออกคำสั่ง temperatureSensor reset
.
เลือก (addrArray)
;
// ระบุอาร์เรย์ด้วยที่อยู่สำหรับอ่าน
}

  • เป็นโมฆะข้าม ()

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

ตัวอย่าง:
เซ็นเซอร์อุณหภูมิ.
รีเซ็ต
();
// รีเซ็ตยาง TemperatureSensor
.
ข้าม
();
// เลือกเซ็นเซอร์เดียวเพื่อใช้งานต่อไป

  • เป็นโมฆะเขียน (uint8_tไบต์, uint8_t powerType = 0)

ฟังก์ชั่นจะส่งข้อมูลแบบไบต์ไปยังอุปกรณ์ที่เลือกบนบัส อาร์กิวเมนต์ powerType ระบุประเภทของแหล่งจ่ายไฟสำหรับเซ็นเซอร์ (0 - เซ็นเซอร์ถูกขับเคลื่อนโดยตรงจากแหล่งภายนอก 1 - ใช้การเชื่อมต่อแบบกาฝาก) พารามิเตอร์ที่สองสามารถละเว้นได้หากใช้พลังงานภายนอกเนื่องจากเป็น 0 โดยค่าเริ่มต้น

ตัวอย่าง:

เซ็นเซอร์อุณหภูมิ
.
รีเซ็ต
();
// รีเซ็ตยาง TemperatureSensor
.
ข้าม
();
// เลือกเซ็นเซอร์เดียวสำหรับการทำงานในภายหลัง // ส่งคำสั่งเพื่อแปลงอุณหภูมิ // โดยใช้การเชื่อมต่อกับพลังงานปรสิตจากบัสข้อมูลเซ็นเซอร์อุณหภูมิ
.
เขียน
(
0x44
,
1
);

  • uint8_tอ่าน ()

ฟังก์ชั่นนี้อ่านข้อมูลหนึ่งไบต์ที่ส่งโดยอุปกรณ์สเลฟ (เซ็นเซอร์) ไปยังบัส 1-Wire

ตัวอย่าง:

// อ่านข้อมูล 9 ไบต์จากบัส 1-Wire และใส่ผลลัพธ์ลงในอาร์เรย์ไบต์อาร์เรย์
[
9
];สำหรับ(
uint8_t i
=
0
;
ผม
<
9
;
ผม
++){
อาร์เรย์
[
ผม
]=
เซ็นเซอร์อุณหภูมิ
.
อ่าน
();}

  • uint8_t คงที่ crc8 (const uint8_t * addr, uint8_t len);

ฟังก์ชันนี้ออกแบบมาเพื่อคำนวณการตรวจสอบ ออกแบบมาเพื่อตรวจสอบการสื่อสารที่ถูกต้องกับเซ็นเซอร์อุณหภูมิ ที่นี่ addr คือตัวชี้ไปยังอาร์เรย์ข้อมูลและ len คือจำนวนไบต์

ตัวอย่าง:

ไบต์ addrArray
[
8
];
// อาร์เรย์สำหรับจัดเก็บที่อยู่ 64 บิต // หากไม่มีอุปกรณ์ใด ๆ บนบัสหรืออุปกรณ์ทั้งหมดจะถูกระบุ // ส่งออกข้อมูลที่เกี่ยวข้องไปยังจอภาพพอร์ต
ถ้า(!
เซ็นเซอร์อุณหภูมิ
.
ค้นหา
(
addrArray
))
อนุกรม
.
println
(
"ไม่มีที่อยู่อีกต่อไป"
);
// มิฉะนั้นหากอุปกรณ์เครื่องถัดไปตอบสนองต่อการร้องขอการแสดงตน // ตรวจสอบการตรวจสอบที่อยู่
อื่น{
// หากการตรวจสอบไม่ตรงกันให้แสดงข้อความแสดงข้อผิดพลาด
ถ้า(
OneWire
::
crc8
(
addrArray
,
7
)!=
addrArray
[
7
]){
อนุกรม
.
println
(
"CRC ไม่ถูกต้อง!"
);}}
เราตรวจสอบแต่ละฟังก์ชันของไลบรารี OneWire.h แยกกันและเพื่อแก้ไขวัสดุด้านล่างฉันจะให้ภาพร่างสำหรับการอ่านอุณหภูมิจากกลุ่มเซ็นเซอร์อุณหภูมิ DS18B20 ซึ่งจะเชื่อมต่อกับพิน D2 โดยใช้วงจรกาฝาก ร่างจะมีความคิดเห็นโดยละเอียดเกี่ยวกับประเด็นที่จำเป็น

#include // เราเชื่อมต่อไลบรารีเพื่อทำงานกับเซ็นเซอร์ความร้อน DS18B20OneWire ds
(
2
);
// เซ็นเซอร์หรือกลุ่มเซ็นเซอร์เชื่อมต่อกับขา D2 ของ Arduino // การตั้งค่าฟังก์ชัน PRESET เป็นโมฆะ
(
เป็นโมฆะ
){
อนุกรม
.
เริ่ม
(
9600
);
// การเริ่มต้นการทำงานกับ Serial-port} // MAIN CYCLE void loop
(
เป็นโมฆะ
){
ไบต์ i
;
// ตัวแปรเสริมสำหรับไบต์ปัจจุบันลูป
=
0
;
// ตัวแปรสำหรับกำหนดความพร้อมของเซ็นเซอร์สำหรับการสื่อสาร byte type_s
;
// ตัวแปรสำหรับกำหนดประเภทของเซ็นเซอร์ความร้อนบนบัสข้อมูลไบต์
[
12
];
// อาร์เรย์สำหรับจัดเก็บข้อมูลที่ได้รับจากที่เพิ่มไบต์ของเซ็นเซอร์
[
8
];
// อาร์เรย์สำหรับจัดเก็บที่อยู่ 64 บิตของเซ็นเซอร์เซลเซียสแบบลอย
,
ฟาเรนไฮต์
;
// ตัวแปรในการคำนวณอุณหภูมิ // หากไม่พบอุปกรณ์บนบัสหรือระบุอุปกรณ์ทั้งหมดบนบัส // แสดงข้อมูลที่เกี่ยวข้องในพอร์ตมอนิเตอร์รีเซ็ตคิว // และทำการค้นหาอีกครั้งรอ 250ms
ถ้า(!
ds
.
ค้นหา
(
addr
)){
อนุกรม
.
println
(
"ไม่มีที่อยู่อีกต่อไป"
);
อนุกรม
.
println
();
ds
.
reset_search
();
ล่าช้า
(
250
);กลับ;}
// หากพบอุปกรณ์ถัดไปบนบัสให้แสดงแอดเดรสเฉพาะของอุปกรณ์นั้น // ในพอร์ตมอนิเตอร์ใน hex Serial
.
พิมพ์
(
"ROM ="
);สำหรับ(
ผม
=
0
;
ผม
<
8
;
ผม
++){
อนุกรม
.
เขียน
(
‘ ‘
);
อนุกรม
.
พิมพ์
(
addr
[
ผม
],
HEX
);}
// ตรวจสอบการตรวจสอบที่อยู่ของอุปกรณ์ที่พบ // และหากไม่ตรงกันให้แสดงข้อมูลที่เกี่ยวข้อง
ถ้า(
OneWire
::
crc8
(
addr
,
7
)!=
addr
[
7
]){
อนุกรม
.
println
(
"CRC ไม่ถูกต้อง!"
);กลับ;}
อนุกรม
.
println
();
// ตรวจสอบค่าศูนย์ไบต์ของแอดเดรสซึ่งมีข้อมูล // เกี่ยวกับเซ็นเซอร์อุณหภูมิบางประเภท ขึ้นอยู่กับค่าของศูนย์ // ไบต์เราจะแสดงชุดของชิปในจอภาพพอร์ต หากศูนย์ไบต์มีค่า // ที่ไม่รู้จักเราจะแสดงข้อความเกี่ยวกับตระกูลที่ไม่รู้จักของเซ็นเซอร์อุณหภูมิ
สวิตซ์(
addr
[
0
]){กรณี
0x10
:
อนุกรม
.
println
(
"ชิป = DS18S20"
);
type_s
=
1
;หยุดพัก;กรณี
0x28
:
อนุกรม
.
println
(
"ชิป = DS18B20"
);
type_s
=
0
;หยุดพัก;กรณี
0x22
:
อนุกรม
.
println
(
"ชิป = DS1822"
);
type_s
=
0
;หยุดพัก;ค่าเริ่มต้น:
อนุกรม
.
println
(
"อุปกรณ์ไม่ใช่อุปกรณ์ตระกูล DS18x20"
);กลับ;}
ds
.
รีเซ็ต
();
// รีเซ็ตบัสเพื่อเริ่มต้นการแลกเปลี่ยนข้อมูล ds
.
เลือก
(
addr
);
// เลือกเซ็นเซอร์ที่มีที่อยู่ปัจจุบันเพื่อใช้งาน // ส่งคำสั่งเพื่อแปลงอุณหภูมิ (ตามเอกสาร 0x44) // อย่าลืมเกี่ยวกับพารามิเตอร์ที่สอง "1" เนื่องจากเรากำลังส่งข้อมูลผ่านทาง / / สายกับแหล่งจ่ายไฟปรสิต. ds
.
เขียน
(
0x44
,
1
);
// เซ็นเซอร์เริ่มการแปลงซึ่งตามเอกสารประกอบใช้เวลาสูงสุด 750ms // เพื่อความปลอดภัยเราจะจัดระเบียบการหยุดการหน่วงเวลา delay วินาทีไว้ชั่วคราว
(
1000
);
// รีเซ็ตบัสอีกครั้งเพื่ออ่านข้อมูลจากเซ็นเซอร์ // บันทึกการตอบสนองของฟังก์ชั่นรีเซ็ต () ไปยังตัวแปรปัจจุบันเพื่อทำงานต่อไปกับปัจจุบัน
=
ds
.
รีเซ็ต
();
ds
.
เลือก
(
addr
);
// เลือกเซ็นเซอร์อีกครั้งตามที่อยู่เนื่องจากมีพัลส์รีเซ็ต // คำสั่ง 0xBE ตามเอกสารทางเทคนิคอนุญาตให้อ่านหน่วยความจำภายใน // ของเซ็นเซอร์อุณหภูมิ (Scratchpad) ซึ่งประกอบด้วย 9 ไบต์ ds
.
เขียน
(
0xBE
);
// อ่านและแสดง 9 ไบต์จากหน่วยความจำภายในของเซ็นเซอร์อุณหภูมิ Serial ไปยังจอภาพพอร์ต
.
พิมพ์
(
"ข้อมูล ="
);
อนุกรม
.
พิมพ์
(
นำเสนอ
,
HEX
);
อนุกรม
.
พิมพ์
(
» «
);สำหรับ(
ผม
=
0
;
ผม
<
9
;
ผม
++){
ข้อมูล
[
ผม
]=
ds
.
อ่าน
();
อนุกรม
.
พิมพ์
(
ข้อมูล
[
ผม
],
HEX
);
อนุกรม
.
พิมพ์
(
» «
);}
// ตรวจสอบและส่งออกไปยังพอร์ตตรวจสอบการตรวจสอบข้อมูลที่ได้รับ Serial
.
พิมพ์
(
"CRC ="
);
อนุกรม
.
พิมพ์
(
OneWire
::
crc8
(
ข้อมูล
,
8
),
HEX
);
อนุกรม
.
println
();
// เริ่มกระบวนการแปลงข้อมูลที่ได้รับเป็นอุณหภูมิจริง // ซึ่งเก็บไว้ในหน่วยความจำการอ่าน 0 และ 1 ไบต์ ในการทำเช่นนี้เรารวมสอง // ไบต์เป็นตัวเลข 16 บิต int16_t ดิบ
=(
ข้อมูล
[
1
]<<
8
)|
ข้อมูล
[
0
];
// ก่อนการแปลงเพิ่มเติมคุณไม่จำเป็นต้องกำหนดตระกูลที่ // เซ็นเซอร์นี้เป็นสมาชิก (ก่อนหน้านี้เราบันทึกผลลัพธ์ไว้ในตัวแปร type_s) // ขึ้นอยู่กับตระกูลอุณหภูมิจะคำนวณแตกต่างกัน // เนื่องจาก DS18B20 และ DS1822 ส่งคืนค่า 12 บิตในขณะที่ DS18S20 ส่งกลับค่า 9 บิต
ถ้า(
type_s
){
// หากเซ็นเซอร์เป็นของตระกูลดิบ DS18S20
=
ดิบ
<<
3
;
// ความละเอียดเริ่มต้นคือ 9 บิต
ถ้า(
ข้อมูล
[
7
]==
0x10
){
ดิบ
=(
ดิบ
&
0xFFF0
)+
12

ข้อมูล
[
6
];}}อื่น{
// กำหนดความแม่นยำในการวัดว่าเซ็นเซอร์นี้กำหนดค่าเป็นไบต์ cfg
=(
ข้อมูล
[
4
]&
0x60
);
// ที่ความละเอียดต่ำคุณสามารถเป็นศูนย์บิตที่มีนัยสำคัญน้อยที่สุดได้ // เนื่องจากไม่ได้กำหนดไว้ก่อน
ถ้า(
cfg
==
0x00
)
ดิบ
=
ดิบ
&~
7
;
// 9 บิต (การแปลงใช้เวลา 93.75 มิลลิวินาที)
อื่นถ้า(
cfg
==
0x20
)
ดิบ
=
ดิบ
&~
3
;
// 10 บิต (การแปลงใช้เวลา 187.5 มิลลิวินาที)
อื่นถ้า(
cfg
==
0x40
)
ดิบ
=
ดิบ
&~
1
;
// 11 บิต (การแปลงใช้เวลา 375 มิลลิวินาที) // ความแม่นยำเริ่มต้นคือ 12 บิต (การแปลงใช้เวลา 750 มิลลิวินาที)
}
// คำนวณและส่งออกค่าอุณหภูมิไปยังจอภาพพอร์ตเซลเซียส
=(
ลอย
)
ดิบ
/
16.0
;
ฟาเรนไฮต์
=
เซลเซียส
*
1.8
+
32.0
;
อนุกรม
.
พิมพ์
(
"อุณหภูมิ ="
);
อนุกรม
.
พิมพ์
(
เซลเซียส
);
อนุกรม
.
พิมพ์
(
"เซลเซียส,"
);
อนุกรม
.
พิมพ์
(
ฟาเรนไฮต์
);
อนุกรม
.
println
(
"ฟาเรนไฮต์"
);}
หากทุกอย่างทำอย่างถูกต้องจากนั้นในหน้าต่างการตรวจสอบพอร์ตเราจะเห็นสิ่งต่อไปนี้ (รูปที่ 6):

รูปที่ 6 - ผลลัพธ์ของการทำงานกับไลบรารี OneWire.h

ห้องสมุด DallasTemperature.h

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

ผลลัพธ์ของโปรแกรมแสดงในรูปที่ 7

รูปที่№7 - ผลลัพธ์ของการอ่านอุณหภูมิโดยใช้ไลบรารี DallasTemperature.h

// เราเชื่อมต่อไลบรารีที่จำเป็น # รวม #include // เราเชื่อมต่อบัสข้อมูลกับพิน # 2 ของ Arduino # กำหนด ONE_WIRE_BUS 2 // สร้างอินสแตนซ์ของคลาสสำหรับบัสของเราและลิงก์ไปยัง OneWire oneWire
(
ONE_WIRE_BUS
);
ดัลลัสเซ็นเซอร์อุณหภูมิ
(&
oneWire
);
// ฟังก์ชั่นการตั้งค่าล่วงหน้าทำให้การตั้งค่าเป็นโมฆะ
(
เป็นโมฆะ
){
อนุกรม
.
เริ่ม
(
9600
);
// เริ่มต้นเซ็นเซอร์พอร์ตอนุกรม
.
เริ่ม
();
// เริ่มต้นบัส
}
// รอบหลัก
(
เป็นโมฆะ
){
อนุกรม
.
พิมพ์
(
"อุณหภูมิในการอ่าน ... "
);
// ส่งคำสั่งเพื่ออ่านเซ็นเซอร์
.
ร้องขออุณหภูมิ
();
อนุกรม
.
println
(
"อ่าน"
);
อนุกรม
.
พิมพ์
(
"อุณหภูมิเซ็นเซอร์ 1:"
);
// แสดงค่าอุณหภูมิ Serial
.
พิมพ์
(
เซ็นเซอร์
.
getTempCByIndex
(
0
));}

เซ็นเซอร์อุณหภูมิ KY-001 พร้อมอินเทอร์เฟซ 1 สาย

เซ็นเซอร์นี้ใช้สำหรับการวัดอุณหภูมิที่แม่นยำ การสื่อสารกับเซ็นเซอร์จะดำเนินการผ่านอินเทอร์เฟซ 1-Wire [1-2] ซึ่งช่วยให้คุณสามารถเชื่อมต่ออุปกรณ์ที่คล้ายกันหลายตัวเข้ากับบอร์ด Arduino โดยใช้ขาไมโครคอนโทรลเลอร์หนึ่งอัน [3-4] โมดูลนี้ขึ้นอยู่กับ microcircuit ds18b20 [5]

ขนาดโมดูล 24 x 15 x 10 มม. น้ำหนัก 1.3 กรัมใช้ขั้วต่อแบบสามขาสำหรับการเชื่อมต่อ ติดต่อส่วนกลาง - แหล่งจ่ายไฟ + 5V ติดต่อ "-" - ทั่วไปติดต่อ "S" - ข้อมูล

บอร์ดมีไฟ LED สีแดงที่สว่างขึ้นเมื่อมีการแลกเปลี่ยนข้อมูล

การใช้กระแส 0.6 mA ระหว่างการแลกเปลี่ยนข้อมูลและ 20 μAในโหมดสแตนด์บาย

การเชื่อมต่อเซ็นเซอร์ประเภทนี้กับ Arduino มีการอธิบายไว้อย่างดีในหลายแหล่ง [6-8] ในกรณีนี้ข้อได้เปรียบหลักของ Arduino จะปรากฏขึ้นอีกครั้ง - ความเก่งกาจและการมีข้อมูลอ้างอิงจำนวนมาก ในการทำงานกับเซ็นเซอร์คุณจะต้องมี OneWire Library [9] หลังจากโหลดโปรแกรมจาก [8] (มีข้อผิดพลาดในโปรแกรมเวอร์ชันแรก - ไม่มีการเชื่อมต่อไลบรารี #include ในส่วนหัวของโค้ด) ข้อมูลต่อไปนี้สามารถสังเกตได้ในมอนิเตอร์พอร์ตอนุกรม

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

โดยทั่วไปเซ็นเซอร์ที่มีประโยชน์มากที่ทำให้สามารถทำความคุ้นเคยกับอินเทอร์เฟซ 1-Wire ในทางปฏิบัติ เซ็นเซอร์จะให้ข้อมูลอุณหภูมิที่ถูกต้องทันทีโดยผู้ใช้ไม่จำเป็นต้องปรับเทียบ

คะแนน
( 1 ประมาณการเฉลี่ย 4 ของ 5 )

เครื่องทำความร้อน

เตาอบ