मैं सर्वो-नियंत्रित वाल्वों का उपयोग करके गर्म और ठंडे नल के पानी को मिलाने के लिए एक Arduino Leonardo पर एक बुनियादी PID एल्गोरिदम को लागू करने की कोशिश कर रहा हूं। लक्ष्य तापमान को यथासंभव एक सेटपॉइंट के करीब रखना है। विशेष रूप से महत्वपूर्ण उपयोगकर्ता को बर्न्स से बचाने के लिए सेटपॉइंट को ओवरशूट करने से आउटपुट तापमान को रोक रहा है। दूसरी बात यह है कि सेटपॉइंट के पास तापमान जितना जल्दी हो सके उतना महत्वपूर्ण है।
तापमान में छोटे बदलाव के लिए, PID एल्गोरिदम का एक मानक कार्यान्वयन ठीक काम करने लगता है। लेकिन मुझे नहीं पता कि वाल्व तक पहुंचने के लिए गर्म पानी की प्रतीक्षा करते समय होने वाली लंबी देरी का कैसे पता लगाया जा सकता है, क्योंकि वाल्व की स्थिति बदलने के बाद ये देरी मानक देरी से बहुत अधिक समय तक होती है।
स्पष्ट रूप से गर्म पानी की लंबाई और गर्म पानी के अंतिम उपयोग के समय के आधार पर, गर्म पानी को वाल्व तक पहुंचने में कई सेकंड लग सकते हैं, इसलिए इस दौरान पानी का तापमान कम तापमान पर काफी स्थिर रहता है और गर्म पानी का वाल्व जल्द ही 100% खुल जाता है। अभिन्न घटक एक बड़ी त्रुटि मान जमा करना शुरू करता है।
जब गर्म पानी अंत में वाल्व तक पहुंचता है, तो पाया गया तापमान अधिकतम गर्म पानी के तापमान पर बहुत तेजी से बढ़ता है। बड़ी इंटीग्रल एरर के कारण, गर्म पानी का वाल्व तापमान के सेटपॉइंट से अधिक होने के बाद लंबे समय तक 100% पर आयोजित किया जाता है, क्योंकि इंटीग्रल वैल्यू पर प्रतीक्षा करने के कारण यह सामान्य स्तर तक कम हो जाता है। इस प्रकार परिणाम सेकंड के कई (दसियों) के लिए अधिकतम तापमान वाला पानी है।
मुझे यकीन नहीं है कि इस संभावित लंबे विलंब के लिए कैसे खाता है । ऐसे मामले में, क्या अधिकतम प्रतिक्रिया समय को सीमित करने के लिए अभिन्न त्रुटि मूल्य पर बंधे ऊपरी (और निचले) को सेट करना बुद्धिमान होगा? यह अभिन्न घटक के उद्देश्य को हराने के लिए लगता है, और सेटपॉइंट तक पहुंचने के बाद भी कुछ अंतराल लगाएगा ।
या लंबे समय की देरी के बाद तेजी से इनपुट परिवर्तन को संभालने का एक बेहतर तरीका है?
किसी भी सलाह के लिए धन्यवाद!