สารบัญ:
- ขั้นตอนที่ 1: เรื่องราวเบื้องหลัง…
- ขั้นตอนที่ 2: มันทำงานอย่างไร
- ขั้นตอนที่ 3: วัสดุและเครื่องมือ
- ขั้นตอนที่ 4: แก้ไขสิ่งต่าง ๆ ด้วยกัน
- ขั้นตอนที่ 5: เชื่อมต่อสิ่งต่าง ๆ เข้าด้วยกัน
- ขั้นตอนที่ 6: การเชื่อมต่อเซ็นเซอร์
- ขั้นตอนที่ 7: ซอฟต์แวร์คอนโทรลเลอร์
- ขั้นตอนที่ 8: สรุป
วีดีโอ: Fault-Tolerant Temperature Sensor Network Controller: 8 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
คำแนะนำนี้แสดงวิธีการแปลงบอร์ด Arduino Uno เป็นตัวควบคุมวัตถุประสงค์เดียวสำหรับชุดเซ็นเซอร์อุณหภูมิ DS18B20 ที่สามารถแยกเซ็นเซอร์ที่ผิดพลาดได้โดยอัตโนมัติ
คอนโทรลเลอร์สามารถจัดการเซ็นเซอร์ได้สูงสุด 8 ตัวด้วย Arduino Uno (และอีกมากมายด้วย Arduino Mega หรือด้วยการดัดแปลงซอฟต์แวร์เล็กน้อย)
ขั้นตอนที่ 1: เรื่องราวเบื้องหลัง…
สองสามปีที่แล้ว ฉันตั้งค่าเครือข่ายเซ็นเซอร์อุณหภูมิ DS18B20 ในเรือนกระจกของพ่อเพื่อใช้ตัวควบคุมความร้อนแบบ pi ของฉัน น่าเสียดาย ความน่าเชื่อถือของคอนโทรลเลอร์นั้นไม่ดีเนื่องจากเซ็นเซอร์หยุดทำงานบ่อยครั้ง ฉันลองตั้งค่าหลาย ๆ ตัว - พลังปรสิต, พลังงานโดยตรง, การเชื่อมต่อเครือข่ายกับ pi เช่นเดียวกับการเชื่อมต่อกับบอร์ดแบบกำหนดเองที่ใช้ Atmega (ซึ่งจุดประสงค์หลักคือการขับเคลื่อนมอเตอร์วาล์ว)
สิ่งที่แย่กว่านั้นคือ ความน่าเชื่อถือของเครือข่ายเซ็นเซอร์ลดลงส่วนใหญ่ในคืนฤดูหนาว ในขณะที่ฤดูร้อนแทบไม่มีปัญหา! เกิดอะไรขึ้นที่นี่?
ในการตรวจสอบว่าเซ็นเซอร์ตัวใดเป็นสาเหตุของปัญหา จำเป็นต้องเปิด/ปิดทีละตัวหรือเปิดใช้งานร่วมกัน
ขั้นตอนที่ 2: มันทำงานอย่างไร
DS18B20 (เซ็นเซอร์อุณหภูมิ) ใช้โปรโตคอล 1 สายที่เป็นกรรมสิทธิ์ซึ่งอนุญาตให้เซ็นเซอร์หลายตัวแชร์ดาต้าลิงค์ทั่วไป (สายเดียว) ดาต้าลิงค์ทั่วไปนี้เชื่อมต่อกับพิน GPIO ของ Arduino และถึง + 5 V ผ่านตัวต้านทานแบบดึงขึ้น – ไม่มีอะไรแปลก มีคำแนะนำมากมายที่ครอบคลุมการตั้งค่านี้
เคล็ดลับคือสายไฟของเซ็นเซอร์แต่ละตัวเชื่อมต่อกับพิน GPIO ของตัวเอง (เฉพาะ) เพื่อให้สามารถเปิดและปิดแยกกันได้ ตัวอย่างเช่น หากเซ็นเซอร์มีสาย Vcc เชื่อมต่อกับพิน #3 และ GND กับพิน #2 การตั้งค่าพิน #3 เป็น HIGH จะให้พลังงานแก่เซ็นเซอร์ (ไม่ต้องแปลกใจ) ในขณะที่การตั้งค่าพิน #2 เป็น LOW จะทำให้กราวด์ (แปลกใจเล็กน้อยสำหรับ ฉัน). การตั้งค่าพินทั้งสองให้เข้าสู่โหมดอินพุตจะ (เกือบ) แยกเซ็นเซอร์และการเดินสายออกจากกันโดยสมบูรณ์ ไม่ว่าภายในจะเกิดข้อผิดพลาด (เช่น ทางลัด) อย่างไร จะไม่รบกวนการทำงานของเซ็นเซอร์อื่นๆ
(พูดได้เลยว่าการเชื่อมต่อสายข้อมูลกับอย่างอื่นที่เชื่อมต่อกับ Arduino จะทำให้เกิดสัญญาณรบกวนได้จริง แต่การตั้งค่าของฉันแทบจะเป็นไปไม่ได้)
โปรดสังเกตว่า DS18B20 กินไฟสูงสุด 1, 5 mA ในขณะที่พิน Arduino หนึ่งพินสามารถจ่ายไฟ / จมสูงสุด 40 mA ดังนั้นจึงปลอดภัยอย่างสมบูรณ์ที่จะจ่ายไฟให้กับเซ็นเซอร์ด้วยพิน GPIO โดยตรง
ขั้นตอนที่ 3: วัสดุและเครื่องมือ
วัสดุ
- 1 บอร์ด Arduino UNO
- ส่วนหัวของหมุดตัวเมีย 3 ชิ้น: 1×4, 1×6 และ 1×6 (หรือนานกว่านั้น – ฉันตัดมันออกจากส่วนหัว 1×40 อันเดียว)
- กาว
- ลวดเปลือยเปล่า (อย่างน้อย 10 ซม.)
- เทปฉนวน
- วัสดุสิ้นเปลืองในการบัดกรี (ลวด, ฟลักซ์…)
เครื่องมือ
- อุปกรณ์บัดกรี (เหล็ก, ที่ยึด, …)
- คีมตัดขนาดเล็ก
ขั้นตอนที่ 4: แก้ไขสิ่งต่าง ๆ ด้วยกัน
กาวส่วนหัวพินตัวเมียกับส่วนหัวของบอร์ด Arduino:
- ส่วนหัว 1×4 ถัดจากส่วนหัวของหมุด "แอนะล็อก" ด้านข้างพร้อมหมุด A0–A4
- ส่วนหัว 1×6 ถัดจากส่วนหัวของพินดิจิทัลตัวแรก ด้านข้างพร้อมหมุด 2–7
- ส่วนหัว 1×6 ถัดจากส่วนหัวของพินดิจิทัลตัวที่สอง ด้านข้างพร้อมหมุด 8–13
สังเกตว่าส่วนหัวของฉันยาวกว่าเล็กน้อย… ฉันคิดว่าไม่มีข้อเสียและไม่มีข้อดี
ขั้นตอนที่ 5: เชื่อมต่อสิ่งต่าง ๆ เข้าด้วยกัน
เดินสายรถเมล์สาย 1:
- เชื่อมต่อสายนำทั้งหมดของส่วนหัวติดกาวที่ด้าน "ดิจิทัล" (ติดกับหมุด 2–13) โดยการบัดกรีลวดเปล่าเข้ากับมัน
- ประสานปลายสายนี้กับขา SCL (เชื่อมต่อภายในกับ A5)
- เชื่อมต่อสายนำทั้งหมดของส่วนหัวติดกาวที่ด้าน "แอนะล็อก" (หมุด A0–A3) โดยการบัดกรีลวดเปล่าเข้ากับมัน
- บัดกรีปลายสายนี้กับสาย A4 และ A5 (ฉันใช้ A5 และ A6 เพราะฉันมีบอร์ดที่มี A6 & A7)
- ประสานตัวต้านทาน 4k7 ระหว่างปลายอีกด้านของสายนี้กับสายพิน +5 V
หมายเหตุ:
- พิน A0–A5 แม้ว่าจะทำเครื่องหมายเป็น "แอนะล็อก" แต่ก็สามารถใช้เป็นพินดิจิตอล GPIO ได้เช่นกัน
- พิน SCL ที่ด้าน "ดิจิทัล" เชื่อมต่อภายในกับ A5 ที่ด้าน "แอนะล็อก" ต่อกับเฮดเดอร์ เป็นบัส 1 สาย
- A4 (ใช้เป็นอินพุตแบบอะนาล็อก) วัดแรงดันไฟฟ้าของบัสเพื่อการวินิจฉัย นั่นเป็นเหตุผลว่าทำไมมันถึงเชื่อมต่อโดยตรงกับรถบัส
- ฉันใช้ A6 แทน A4 เพราะฉันมีบอร์ดที่มี A6 & A7; เดิมทีฉันต้องการใช้ A7 เป็นบัสมาสเตอร์ 1 สาย แต่พินทั้งสองนี้ไม่สามารถกำหนดค่าให้เป็น GPIO ดิจิทัลได้
- เพื่อป้องกันการเชื่อมต่อที่ไม่ถูกต้องของขั้วต่อเซ็นเซอร์ คุณสามารถละเว้น / ตัดหน้าสัมผัสที่ไม่ได้ใช้ (ไม่ได้เชื่อมต่อกับสายใด ๆ) จากขั้วต่อตัวผู้แต่ละตัวและเสียบเข้าไปในรูที่เกี่ยวข้องในส่วนหัวของหมุดที่ติดกาว
ขั้นตอนที่ 6: การเชื่อมต่อเซ็นเซอร์
คุณเพิ่งสร้างอาร์เรย์ขนาด 2×2 แปดซ็อกเก็ต คุณสามารถบัดกรีและประกอบคอนเน็กเตอร์ดูปองท์ 2×2 เข้ากับสายเซ็นเซอร์และต่อเข้ากับซ็อกเก็ตเหล่านี้ได้ ซอฟต์แวร์กำหนดค่าพินเพื่อให้แม้แต่พินเป็นพิน GND และพินคี่คือพิน Vcc สำหรับเซ็นเซอร์แต่ละตัว พิน Vcc เป็นเพียงพิน GND + 1 อีกสองพินของซ็อกเก็ต 2 × 2 (หนึ่งในสองพินนั้นในส่วนหัวที่ติดกาวและบัดกรี) ใช้สำหรับสายข้อมูลของเซ็นเซอร์ ไม่สำคัญว่าคุณใช้อะไร
ขั้นตอนที่ 7: ซอฟต์แวร์คอนโทรลเลอร์
ร่าง SerialThermometer เรียกใช้คอนโทรลเลอร์ คุณสามารถค้นหาได้ใน github เปิดและอัปโหลดโดยใช้ Arduino IDE
เป็นขั้นเป็นตอน:
- เปิด Arduino IDE ของคุณและติดตั้งไลบรารี DallasTemperature และการพึ่งพาทั้งหมดผ่าน Sketch | รวมห้องสมุด | จัดการห้องสมุด
- โคลนที่เก็บ git หากไม่คุ้นเคยกับ git ให้ดาวน์โหลดและแตกไฟล์ zip นี้ไว้ที่ใดก็ได้บนคอมพิวเตอร์ของคุณ
- เปิดแบบร่าง SerialThermometer ใน Arduino IDE ของคุณ
- เชื่อมต่อบอร์ด Arduino ที่ดัดแปลงเข้ากับคอมพิวเตอร์ด้วยสาย USB (วิธีมาตรฐาน)
- อัปโหลดภาพร่างโดยใช้ Arduino IDE. ของคุณ
- เปิด Serial Monitor ผ่านเครื่องมือ | จอภาพแบบอนุกรม
- คุณควรเห็นเอาต์พุตการวินิจฉัยที่มีการตรวจวัดทางกายภาพหลายอย่างตามด้วยการอ่านอุณหภูมิ – แต่ละซ็อกเก็ตเซ็นเซอร์ในบรรทัดเดียว หากจำนวนเซ็นเซอร์แตกต่างกันเมื่อเปิดแยกกันและเมื่อเปิดพร้อมกันทั้งหมด) ให้วินิจฉัยซ้ำจนกว่าจะได้รับการแก้ไข แต่ไม่ต้องกังวล การวินิจฉัยยังมีการวัดอุณหภูมิอีกด้วย!
ดูภาพที่มีคำอธิบายประกอบสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับเอาต์พุตการวินิจฉัย
ขั้นตอนที่ 8: สรุป
ฉันมีความรู้สึกอย่างแรงกล้าว่าเครือข่ายเซ็นเซอร์ขัดข้องเกิดจากสายไฟที่มีความจุสูง - สายเคเบิล LIYY 314 ประมาณ 10 ม. (3 × 0, 14 มม.²) สำหรับแต่ละเซ็นเซอร์ การทดลองของฉันแสดงให้เห็นว่าการสื่อสารหยุดชะงักหากมีความจุประมาณหรือสูงกว่า 0.01 μF ระหว่างบัส 1 สายและกราวด์ ฉันคิดว่าเพราะตัวต้านทานแบบดึงขึ้น 4k7 ไม่สามารถดึงบัสไปที่ + 5 V ได้เร็วพอที่จะปฏิบัติตามข้อจำกัดของโปรโตคอล.
ในการตั้งค่าของฉัน มันเกิดขึ้นเมื่อเชื่อมต่อเซ็นเซอร์มากกว่า 3 ตัวเข้าด้วยกัน จากนั้นตัวควบคุมจะวนซ้ำในวงจรการวินิจฉัย วัดอุณหภูมิโดยเซ็นเซอร์ด้วยเซ็นเซอร์ (สิ่งที่เจ๋งเกินไป…)
แต่เซ็นเซอร์ตัวที่ 5 (28:ff:f2:41:51:17:04:31) ก็ดูไม่ค่อยสบาย (อาจจะบัดกรีผิด) ดังนั้นฉันจึงสามารถตรวจสอบเพิ่มเติมได้!
แนะนำ:
Raspberry Pi SHT25 Humidity & Temperature Sensor Python Tutorial: 4 ขั้นตอน
Raspberry Pi SHT25 Humidity & Temperature Sensor Python Tutorial: SHT25 I2C Humidity and Temperature Sensor ±1.8%RH ±0.2°C I2C Mini Module. เซ็นเซอร์ความชื้นและอุณหภูมิความแม่นยำสูง SHT25 ได้กลายเป็นมาตรฐานอุตสาหกรรมในแง่ของฟอร์มแฟกเตอร์และความชาญฉลาด โดยให้สัญญาณเซ็นเซอร์แบบลิเนียร์ที่ปรับเทียบแล้ว
Arduino Solar Powered Temperature and Humidity Sensor As 433mhz Oregon Sensor: 6 ขั้นตอน
Arduino Solar Powered Temperature and Humidity Sensor As 433mhz Oregon Sensor: นี่คือการสร้างเซ็นเซอร์อุณหภูมิและความชื้นที่ใช้พลังงานแสงอาทิตย์ เซ็นเซอร์จำลองเซ็นเซอร์ Oregon 433mhz และมองเห็นได้ในเกตเวย์ Telldus Net สิ่งที่คุณต้องการ: 1x "10-LED พลังงานแสงอาทิตย์ Motion Sensor" จากอีเบย์ ตรวจสอบให้แน่ใจว่ามันบอกว่าแป้ง 3.7v
Arduino เชื่อมต่อกับ Ultrasonic Sensor และ Contactless Temperature Sensor: 8 ขั้นตอน
การเชื่อมต่อกับ Arduino กับ Ultrasonic Sensor และ Contactless Temperature Sensor: ปัจจุบัน ผู้ผลิต นักพัฒนาต่างเลือกใช้ Arduino สำหรับการพัฒนาอย่างรวดเร็วของการสร้างต้นแบบของโครงการ Arduino เป็นแพลตฟอร์มอิเล็กทรอนิกส์แบบโอเพ่นซอร์สที่ใช้ฮาร์ดแวร์และซอฟต์แวร์ที่ใช้งานง่าย Arduino มีชุมชนผู้ใช้ที่ดีมาก ในโครงการนี้
YABC - ตัวควบคุม Blynk อีกตัวหนึ่ง - IoT Cloud Temperature and Humidity Controller, ESP8266: 4 ขั้นตอน
YABC - ตัวควบคุม Blynk อีกตัวหนึ่ง - IoT Cloud Temperature and Humidity Controller, ESP8266: สวัสดีผู้ผลิต ฉันเพิ่งเริ่มปลูกเห็ดที่บ้าน เห็ดนางรม แต่ฉันมีตัวควบคุมนี้อยู่แล้ว 3 เท่าที่บ้านสำหรับการควบคุมอุณหภูมิของ Fermenter สำหรับผู้ผลิตเบียร์ที่บ้านของฉัน ภรรยา กำลังทำสิ่งนี้อยู่ด้วยคอมบูชา และในฐานะเทอร์โมสตัทสำหรับความร้อน
IR Temperature Controller สำหรับ SMD Skillet Reflow: 4 ขั้นตอน
IR Temperature Controller สำหรับ SMD Skillet Reflow: คำแนะนำนี้จะช่วยคุณได้หากคุณพยายามสร้างแผงวงจรของคุณเองโดยใช้ SMD (อุปกรณ์ยึดพื้นผิว) re-flow หลังจากการบัดกรีบอร์ดหลายๆ อันด้วยมือ ฉันก็เริ่มสนใจตัวเองมากขึ้น ในคำแนะนำนี้ ฉันจะพูดถึงเรื่องส่วนใหญ่เกี่ยวกับ