สารบัญ:
- ขั้นตอนที่ 1: การกำหนดค่า
- ขั้นตอนที่ 2: การกำหนดค่ารีเลย์
- ขั้นตอนที่ 3: Hysteresis Controller
- ขั้นตอนที่ 4: ตัวควบคุม PID
- ขั้นตอนที่ 5: ส่งข้อความถึง Bus
- ขั้นตอนที่ 6: Libs
วีดีโอ: เทอร์โมสตัทจาก Arduino: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
คราวนี้เราจะสร้างเทอร์โมสตัทโดยใช้ Arduino เซ็นเซอร์อุณหภูมิและรีเลย์ คุณสามารถหาได้ใน github
ขั้นตอนที่ 1: การกำหนดค่า
การกำหนดค่าทั้งหมดถูกเก็บไว้ใน Config.h คุณสามารถเปลี่ยน PIN ที่ควบคุมรีเลย์ อุณหภูมิในการอ่าน เกณฑ์หรือเวลาได้
ขั้นตอนที่ 2: การกำหนดค่ารีเลย์
สมมติว่าเราต้องการมี 3 รีเลย์:
- ID:0, PIN: 1, อุณหภูมิที่ตั้งไว้: 20
- ID:1, PIN: 10, อุณหภูมิที่ตั้งไว้: 30
- ID:2, PIN: 11, อุณหภูมิที่ตั้งไว้: 40
ก่อนอื่นคุณต้องตรวจสอบให้แน่ใจว่ายังไม่ได้ใช้ PIN ที่คุณเลือก พินทั้งหมดสามารถพบได้ใน Config.h ซึ่งถูกกำหนดโดยตัวแปรที่ขึ้นต้นด้วย DIG_PIN
คุณต้องแก้ไข Config.h และกำหนดค่า PIN เกณฑ์และจำนวนรีเลย์ เห็นได้ชัดว่ามีบางคุณสมบัติอยู่แล้ว ดังนั้นคุณต้องแก้ไข
const คงที่ uint8_t DIG_PIN_RELAY_0 = 1;const คงที่ uint8_t DIG_PIN_RELAY_1 = 10; const คงที่ uint8_t DIG_PIN_RELAY_2 = 11;
const คงที่ uint8_t RELAYS_AMOUNT = 3;
const คงที่ int16_t RELAY_TEMP_SET_POINT_0 = 20;
const คงที่ int16_t RELAY_TEMP_SET_POINT_1 = 30; const คงที่ int16_t RELAY_TEMP_SET_POINT_2 = 40;
ตอนนี้เราต้องตั้งค่ารีเลย์และคอนโทรลเลอร์ สิ่งนี้เกิดขึ้นใน RelayDriver.cpp
initRelayHysteresisController(0, DIG_PIN_RELAY_0, RELAY_TEMP_SET_POINT_0);initRelayHysteresisController(1, DIG_PIN_RELAY_1, RELAY_TEMP_SET_POINT_1); initRelayHysteresisController (2, DIG_PIN_RELAY_2, RELAY_TEMP_SET_POINT_2);
xxx
ขั้นตอนที่ 3: Hysteresis Controller
เป็นแบบที่เลือกในตัวอย่างข้างต้น มีการกำหนดค่าเพิ่มเติมเล็กน้อย:
const คงที่ uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 นาทีคงที่ uint32_t RHC_RELAY_MIN_SWITCH_MS = 360000;
RELAY_DELAY_AFTER_SWITCH_MS ให้เวลารอสำหรับการสลับรีเลย์ถัดไป ลองนึกภาพว่าการกำหนดค่าจากตัวอย่างของเราจะเริ่มทำงานในสภาพแวดล้อม 40 องศา ซึ่งจะส่งผลให้สามารถเปิดใช้งานรีเลย์ทั้งสามตัวพร้อมกันได้ ซึ่งอาจนำไปสู่การสิ้นเปลืองพลังงานสูง - ขึ้นอยู่กับสิ่งที่คุณควบคุม เช่น เครื่องยนต์ไฟฟ้าจะสิ้นเปลืองพลังงานมากขึ้นในระหว่างการสตาร์ท ในกรณีของเรา การสลับรีเลย์มีโฟลว์ต่อไปนี้: รีเลย์แรกทำงาน รอ 5 นาที วินาทีเดินต่อไป รอ 5 นาที ลำดับที่สามดำเนินต่อไป
RHC_RELAY_MIN_SWITCH_MS กำหนดฮิสเทรีซิส ซึ่งเป็นความถี่ขั้นต่ำสำหรับการถ่ายทอดเฉพาะเพื่อเปลี่ยนสถานะ เมื่อเปิดเครื่องแล้ว จะยังคงเปิดอยู่อย่างน้อยในช่วงเวลานี้ โดยไม่สนใจการเปลี่ยนแปลงของอุณหภูมิ สิ่งนี้มีประโยชน์อย่างเงียบ ๆ เมื่อคุณควบคุมมอเตอร์ไฟฟ้า เนื่องจากสวิตช์แต่ละตัวมีผลกระทบด้านลบต่อเวลาสด
ขั้นตอนที่ 4: ตัวควบคุม PID
นี่เป็นหัวข้อขั้นสูง การใช้ตัวควบคุมดังกล่าวเป็นเรื่องง่าย การค้นหาการตั้งค่าแอมพลิจูดที่เหมาะสมเป็นอีกเรื่องหนึ่ง
เพื่อที่จะใช้ตัวควบคุม PID คุณต้องเปลี่ยน initRelayHysteresisController(…..) เป็น initRelayPiDController(….) และคุณต้องค้นหาการตั้งค่าที่เหมาะสมสำหรับมัน ตามปกติคุณจะพบได้ใน Config.h
ฉันได้ใช้โปรแกรมจำลองอย่างง่ายใน Java เพื่อให้เห็นภาพผลลัพธ์ได้ สามารถพบได้ในโฟลเดอร์: pidsimulator ด้านล่างนี้ คุณสามารถดูการจำลองสำหรับตัวควบคุมสองตัว PID และ PID ไม่เสถียรอย่างสมบูรณ์เพราะฉันไม่ได้ใช้อัลกอริธึมที่ซับซ้อนเพื่อค้นหาค่าที่ถูกต้อง
บนทั้งสองแปลงอุณหภูมิที่ต้องการตั้งไว้ที่ 30 (สีน้ำเงิน) อุณหภูมิปัจจุบันบ่งชี้บรรทัดการอ่าน รีเลย์มีสองสถานะเปิดและปิด เมื่อเปิดใช้งาน อุณหภูมิจะลดลง 1.5 เมื่อปิดใช้งาน อุณหภูมิจะเพิ่มขึ้น 0.5
ขั้นตอนที่ 5: ส่งข้อความถึง Bus
โมดูลซอฟต์แวร์ที่ต่างกันต้องสื่อสารกัน หวังว่าจะไม่ใช่ทั้งสองวิธี;)
ตัวอย่างเช่น:
- โมดูลสถิติต้องรู้เมื่อรีเลย์เปิดและปิด
- การกดปุ่มจะต้องเปลี่ยนเนื้อหาที่แสดง และยังต้องระงับบริการที่อาจใช้ CPU หลายรอบ เช่น การอ่านอุณหภูมิจากเซ็นเซอร์
- หลังจากต้องอ่านอุณหภูมิใหม่เป็นระยะเวลาหนึ่ง
- และอื่นๆ….
ทุกโมดูลเชื่อมต่อกับ Message Bus และสามารถลงทะเบียนสำหรับเหตุการณ์เฉพาะ และสามารถสร้างเหตุการณ์ใดๆ ได้ (แผนภาพแรก)
ในไดอะแกรมที่สอง เราจะเห็นการไหลของเหตุการณ์เมื่อกดปุ่ม
ส่วนประกอบบางอย่างมีงานบางอย่างที่จำเป็นต้องดำเนินการเป็นระยะ เราสามารถเรียกเมธอดที่เกี่ยวข้องจากลูปหลักได้ เนื่องจากเรามี Message Bus จึงจำเป็นต้องเผยแพร่เหตุการณ์ที่ถูกต้องเท่านั้น (แผนภาพที่สาม)
ขั้นตอนที่ 6: Libs
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
Arduino ที่ถูกที่สุด -- Arduino ที่เล็กที่สุด -- Arduino Pro Mini -- การเขียนโปรแกรม -- Arduino Neno: 6 ขั้นตอน (พร้อมรูปภาพ)
Arduino ที่ถูกที่สุด || Arduino ที่เล็กที่สุด || Arduino Pro Mini || การเขียนโปรแกรม || Arduino Neno:…………………………… โปรดสมัครสมาชิกช่อง YouTube ของฉันสำหรับวิดีโอเพิ่มเติม……. โปรเจ็กต์นี้เกี่ยวกับวิธีเชื่อมต่อ Arduino ที่เล็กที่สุดและถูกที่สุดเท่าที่เคยมีมา Arduino ที่เล็กที่สุดและถูกที่สุดคือ arduino pro mini คล้ายกับ Arduino