ควบคุมอุณหภูมิของน้ำได้อย่างแม่นยำ


9

ฉันมีการตั้งค่าต่อไปนี้:

  • Arduino Duemilanove
  • เครื่องทำน้ำอุ่นขนาดเล็กเชื่อมต่อกับรีเลย์ออปติคอล (PWM ก็โอเค)
  • เซ็นเซอร์อุณหภูมิ DS18B20 กันน้ำ
  • ปริมาณน้ำที่ไม่ทราบ (แต่เซ็นเซอร์อุณหภูมิและเครื่องทำความร้อนอยู่ใต้น้ำเสมอ)

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

ฉันได้ลองใช้ PID แล้ว แต่ดูเหมือนว่าจะยากจริงๆ

  1. หลีกเลี่ยงการแก้ไขปัญหามากเกินไป - ไปที่อุณหภูมิเป้าหมายไม่ว่าในขั้นต้นหรือเมื่อมีการเพิ่มน้ำ (เย็น)
  2. รักษาเสถียรภาพให้เหมาะสมหลังจากเติมน้ำเย็น

คุณปรับแต่ง PID ของคุณหรือคุณเพิ่งใช้ค่ามาตรฐานหรือไม่
Peter Bloomfield

ฉันพยายามปรับพารามิเตอร์ PID ด้วยคำแนะนำ 'วิธีปรับแต่ง PID' ที่หลากหลายโดยไม่มีโชค ฉันลองPIDAutotuneด้วย แต่ก็ไม่สามารถทำให้ดีขึ้นได้ ฉันไม่ได้บอกว่า PID ไม่เหมาะกับเรื่องนี้
Olli

ด้วยการให้ความร้อนด้วยน้ำคุณจะมีความไม่แน่นอนมากมาย เครื่องทำความร้อนในถังของคุณอยู่ที่ไหนเมื่อเทียบกับหัววัดอุณหภูมิ?
Matt Clark

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

ไม่ใช่ส่วนหนึ่งของปัญหา ATM ของคุณ แต่ควรระวัง: อย่าสับสนระหว่างความแม่นยำความแม่นยำและความสามารถในการทำซ้ำ ความแม่นยำหมายถึงอุณหภูมิที่รายงานที่ใกล้เคียงกับอุณหภูมิจริง ความแม่นยำเป็นความแตกต่างที่เล็กที่สุดที่อุปกรณ์สามารถแยกได้ (.0625 degC สำหรับ DS18b20) ความสามารถในการทำซ้ำคือการวัดอุณหภูมิเท่ากันที่รายงานว่าแตกต่างกัน สองคนสุดท้ายมีความกังวลมากกว่าคนแรก แม้จะมีเซ็นเซอร์ที่แม่นยำ +/- 0.5degC คุณยังสามารถรักษาอุณหภูมิให้อยู่ภายใน (หรืออย่างน้อยก็แยกแยะความแตกต่างซึ่งเป็นเงื่อนไขที่จำเป็น) ไม่กี่ 1 / 16ths degC ....
JRobert

คำตอบ:


2

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

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

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


0

BrettAM, dE (อัตราการเปลี่ยนแปลงข้อผิดพลาด) จะเปลี่ยนเป็นพารามิเตอร์ควบคุมในกรณีนี้ความกว้างพัลส์ของสัญญาณองค์ประกอบตัวทำความร้อนจะถูกปรับเปลี่ยนโดย PID ถ้อยคำของฉันในการบอกว่าอัตราการเปลี่ยนแปลงข้อผิดพลาดของอุณหภูมิเป็นตัวเลือกที่ไม่ดี เทอมอนุพันธ์จะทำงานเพื่อดูแลการเปลี่ยนแปลงเล็กน้อยในความร้อนเฉพาะของน้ำที่มีอุณหภูมิ (4.186 kJ / (kg K) ที่ 20C ถึง 4.219 kJ / (kg K) @ 100C)

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

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

TO OP: ในการออกแบบที่คล้ายกันของฉันฉันจะพยายามใช้ชุดคำสั่งผสมหม้อน้ำ / พัดลมขนาดเล็กและปั๊ม 12V DC เพื่อให้น้ำไหลผ่านเป็นวิธีการระบายความร้อนของน้ำกลับลงมา ฉันรู้สึกว่านี่อาจทำงานได้ดีขึ้น หากประสบความสำเร็จฉันจะแจ้งให้คุณทราบ


ยินดีต้อนรับสู่ Arduino SE! สิ่งนี้ไม่ได้ตอบคำถามโดยตรง (ดูเหมือนจะเป็นการตอบกลับความคิดเห็นเพิ่มเติม) คุณช่วยกรุณาใช้ปุ่มแก้ไขเพื่อชี้แจงว่าข้อมูลนี้ตอบคำถามได้อย่างไร? ขอบคุณ!
Penguin Penguin ไม่ระบุชื่อ

-2

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

ดูความร้อนจำเพาะของน้ำส่วนใหญ่เป็นสมการ Q = c m dT Q คือการเพิ่มความร้อนซึ่งฉันคิดว่าคงที่ในการตั้งค่าของคุณ m คือมวลของสารที่ถูกทำให้ร้อน (ต้องคงที่!) c คือความร้อนเฉพาะของน้ำซึ่งเป็น 4.186 จูล / กรัม * องศาเซลเซียส ถ้า Q, m และ c เป็นค่าคงที่จากนั้น dT, อัตราที่อุณหภูมิน้ำของคุณจะเพิ่มขึ้นจะคงที่ (ในความเป็นจริง c แตกต่างกันเล็กน้อยกับอุณหภูมิ 100C) ลองปรับ PID ด้วยปริมาณน้ำคงที่และคุณอาจได้ผลลัพธ์ที่ดีกว่า

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

-Matt


PID ไม่คิดว่าอัตราการเปลี่ยนแปลงคงที่ หาก dE (อัตราการเปลี่ยนแปลงข้อผิดพลาด) คงที่คำว่า "D" จะไม่อยู่ที่นั่น นอกจากนี้น้ำจะให้ความร้อนช้าลงที่อุณหภูมิสูงเนื่องจากความร้อนจำนวนมากจะหายไปกับไอน้ำที่มีอยู่ในน้ำ PID อาจได้รับการปรับให้เหมาะกับมวลความร้อนที่เฉพาะเจาะจง แต่ก็ควรจะทำงานได้กับระดับน้ำที่หลากหลายและอุณหภูมิ / แรงกดดันภายนอก
BrettAM
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.