विषयसूची:

पीआईडी तापमान नियंत्रक: 7 कदम
पीआईडी तापमान नियंत्रक: 7 कदम

वीडियो: पीआईडी तापमान नियंत्रक: 7 कदम

वीडियो: पीआईडी तापमान नियंत्रक: 7 कदम
वीडियो: Digital temperature controller, TAPMAN temperature controller - PID details settings, Connections... 2024, जुलाई
Anonim
पीआईडी तापमान नियंत्रक
पीआईडी तापमान नियंत्रक

मेरा दोस्त प्लास्टिक रीसाइक्लिंग के लिए एक प्लास्टिक एक्सट्रूडर बना रहा है (https://preciousplastic.com)। उसे एक्सट्रूज़न तापमान को नियंत्रित करने की आवश्यकता है। उस उद्देश्य के लिए वह नोजल हीटर बैंड का उपयोग कर रहा है। इस नोजल में, एक थर्मोकपल और एक हीटिंग यूनिट होती है जो हमें तापमान को मापने और अंत में वांछित तापमान तक पहुंचने की अनुमति देती है (एक रेट्रोएक्शन लूप बनाएं)।

जब मैंने सुना कि इन सभी नोजल हीटर बैंड को नियंत्रित करने के लिए उन्हें कई पीआईडी नियंत्रकों की आवश्यकता है, तो इसने तुरंत मुझे अपना बनाने की कोशिश करने की इच्छा दी।

चरण 1: उपकरण और सामग्री

उपकरण

  • सोल्डरिंग आयरन, सोल्डर वायर और फ्लक्स
  • चिमटी से नोचना
  • मिलिंग मशीन (पीसीबी प्रोटोटाइप के लिए रासायनिक नक़्क़ाशी भी संभव है) (आप मेरी ईगल फ़ाइल के साथ पीसीबी को भी ऑर्डर कर सकते हैं)
  • थर्मामीटर (अंशांकन के लिए)
  • arduino (किसी भी प्रकार का) या AVR प्रोग्रामर
  • FTDI सीरियल TTL-232 USB केबल
  • लेजर कटर (वैकल्पिक)
  • मल्टीमीटर (ओममीटर और वोल्टमीटर)

सामग्री

  • बैक्लाइट सिंगल साइड कॉपर प्लेट (60*35 मिमी न्यूनतम)
  • Attiny45 माइक्रोकंट्रोलर
  • LM2940IMP-5 वोल्टेज नियामक
  • AD8605 परिचालन एम्पलीफायर
  • NDS356AP ट्रांजिस्टर
  • प्रतिरोधों और कैपेसिटर का एक गुच्छा (मेरे पास SMT 0603 एडफ्रूट बुक है)
  • 230V-9V एसी-डीसी ट्रांसफार्मर
  • 1N4004 डायोड
  • सॉलिड स्टेट रिले
  • नेल पॉलिश (वैकल्पिक)

चरण 2: पीसीबी को खोदें

पीसीबी खोदो
पीसीबी खोदो
पीसीबी खोदो
पीसीबी खोदो
पीसीबी खोदो
पीसीबी खोदो

मैंने पीसीबी को मिलाने के लिए अपने Proxxon MF70 सीएनसी को रूपांतरित और एक शंक्वाकार अंत बिट का उपयोग किया। मुझे लगता है कि कोई भी उत्कीर्णन अंत बिट काम करेगा। Gcode फ़ाइल सीधे ईगल और पीसीबी-जीकोड प्लगइन द्वारा उत्पन्न की गई थी। केवल तीन पास जहां एक अच्छा मार्ग पृथक्करण सुनिश्चित करने के लिए किया गया था, लेकिन सभी तांबे की मिलिंग में घंटों खर्च किए बिना। जब पीसीबी सीएनसी मशीन से बाहर चला गया, तो मैंने कटर से मार्गों को साफ किया और मल्टीमीटर से उनका परीक्षण किया।

पैरामीटर: फ़ीड दर 150 मिमी / मिनट, गहराई 0.2 मिमी, रोटेशन की गति 20'000 टी / मिनट

चरण 3: घटकों को मिलाएं

घटकों को मिलाएं
घटकों को मिलाएं

ट्वीजर और सोल्डरिंग आयरन के साथ, घटकों को सही जगहों पर रखें और फ्लक्स (यह मदद करता है) का उपयोग करके और सबसे छोटे घटकों से शुरुआत करें। फिर से, एक मल्टीमीटर से जांचें कि आपके पास कोई शॉर्ट सर्किट या असंबद्ध तत्व नहीं हैं।

आप अपने इच्छित अवरोधक (लाभ = (आर 3 + आर 4) / आर 4) को चुनकर एम्पलीफायर लाभ चुन सकते हैं। मैंने 1M और 2.7k लिया, इसलिए मेरे मामले में लाभ लगभग 371 के बराबर है। मैं सटीक मूल्य नहीं जान सकता क्योंकि मैं 5% सहिष्णुता अवरोधक का उपयोग कर रहा हूं।

मेरा थर्मोकपल एक जे टाइप है। इसका मतलब है कि यह प्रत्येक डिग्री के लिए 0.05mV देता है। 371 के लाभ के साथ, मैं एम्पलीफायर आउटपुट (0.05 * 371) से प्रति डिग्री 18.5mV प्राप्त करता हूं। मैं लगभग 200 ° C मापना चाहता हूं, इसलिए एम्पलीफायर आउटपुट लगभग 3.7V (0.0185 * 200) होना चाहिए। परिणाम 5V से अधिक नहीं होना चाहिए क्योंकि मैं 5V संदर्भ वोल्टेज (बाहरी) का उपयोग करता हूं।

छवि मेरे द्वारा बनाए गए पहले (काम नहीं कर रहे) संस्करण के अनुरूप है लेकिन सिद्धांत समान है। इस पहले संस्करण में, मैंने एक रिले का उपयोग किया और इसे बोर्ड के ठीक बीच में रखा। जैसे ही मैं उच्च वोल्टेज के साथ स्विच कर रहा था, मेरे पास स्पाइक्स थे जिन्होंने नियंत्रक को रीबूट किया।

चरण 4: माइक्रोकंट्रोलर प्रोग्राम करें

माइक्रोकंट्रोलर प्रोग्राम करें
माइक्रोकंट्रोलर प्रोग्राम करें

इस निर्देश में एक आर्डिनो का उपयोग करना: https://www.instructables.com/id/How-to-Program-a… आप कोड लोड कर सकते हैं।

मैंने Attiny 45 को प्रोग्राम करने के लिए एक FTDI-USB केबल के साथ एक प्रो ट्रिंकेट का उपयोग किया लेकिन यह विधि समतुल्य है। फिर मैंने सीरियल डेटा प्राप्त करने और डिबग करने में सक्षम होने के लिए पिन PB1 और GDN को सीधे FTDI-USB केबल के RX और GND में प्लग किया।

आपको सभी मापदंडों को arduino स्केच में शून्य (P = 0, I = 0, D = 0, K = 0) पर रखना चाहिए। उन्हें ट्यूनिंग चरण के दौरान सेट किया जाएगा।

यदि आपको धुंआ या गंध जलता हुआ नहीं दिखाई देता है, तो आप अगले चरण पर जा सकते हैं!

चरण 5: असेंबल करना और कैलिब्रेट करना

कोडांतरण और अंशांकन
कोडांतरण और अंशांकन
कोडांतरण और अंशांकन
कोडांतरण और अंशांकन

सावधानी: कभी भी प्रोग्रामर से बिजली की आपूर्ति और 5V को एक ही समय में प्लग न करें! नहीं तो आपको वह धुआँ दिखाई देगा जो मैं पिछले चरण में ले रहा था। यदि आप इसका सम्मान करने में सक्षम होने के बारे में सुनिश्चित नहीं हैं, तो आप प्रोग्रामर के लिए 5v पिन को आसानी से हटा सकते हैं। मैंने इसे जाने दिया क्योंकि मेरे लिए बिजली की आपूर्ति के बिना नियंत्रक को प्रोग्राम करना और मेरे चेहरे के सामने पागलों की तरह हीटर हीटिंग के बिना नियंत्रक का परीक्षण करना मेरे लिए अधिक सुविधाजनक था।

अब आप एम्पलीफायर पर थर्मोकपल को ब्रांच कर सकते हैं और देख सकते हैं कि क्या आप कुछ माप रहे हैं (ध्रुवीयता का सम्मान करें)। यदि आपका हीटिंग सिस्टम कमरे के तापमान पर है, तो आपको शून्य मापना चाहिए। इसे हाथ से गर्म करने से पहले से ही कुछ छोटे मूल्य होने चाहिए।

इन मूल्यों को कैसे पढ़ा जाए? बस पिन PB1 और GDN को सीधे FTDI-USB केबल के RX और GND में प्लग करें और arduino सीरियल मॉनिटर खोलें।

जब नियंत्रक शुरू होता है, तो यह चिप के आंतरिक थर्मामीटर द्वारा लाल मान भेजता है। इस प्रकार मैं तापमान की भरपाई करता हूं (एक समर्पित चिप का उपयोग किए बिना)। इसका मतलब है कि यदि ऑपरेशन के दौरान तापमान में बदलाव होता है, तो इसे ध्यान में नहीं रखा जाएगा। यह मान एक चिप से दूसरे चिप में बहुत भिन्न होता है इसलिए इसे स्केच की शुरुआत में REFTEMPERATURE परिभाषा में मैन्युअल रूप से दर्ज करना होगा।

सॉलिड स्टेट रिले को जोड़ने से पहले, सत्यापित करें कि वोल्टेज आउटपुट आपके रिले द्वारा समर्थित सीमा में है (मेरे मामले में 3V से 25V, सर्किट लगभग 11V उत्पन्न करता है)। (ध्रुवीयता का सम्मान करें)

ये मान डिग्री या फ़ारेनहाइट में तापमान नहीं हैं, लेकिन एनालॉग से डिजिटल रूपांतरण का परिणाम है, इसलिए वे 0 और 1024 के बीच भिन्न होते हैं। मैं 5V संदर्भ वोल्टेज का उपयोग करता हूं, इस प्रकार जब एम्पलीफायर आउटपुट 5V के पास होता है, तो रूपांतरण परिणाम 1024 के करीब होता है।

चरण 6: पीआईडी ट्यूनिंग

पीआईडी ट्यूनिंग
पीआईडी ट्यूनिंग

मुझे यह उल्लेख करने की आवश्यकता है कि मैं नियंत्रण विशेषज्ञ नहीं हूं, इसलिए मुझे कुछ पैरामीटर मिले जो मेरे लिए काम करते हैं लेकिन मैं गारंटी नहीं देता कि यह सभी के लिए काम कर रहा है।

सबसे पहले, मुझे यह बताना होगा कि कार्यक्रम क्या करता है। मैंने एक प्रकार का सॉफ्टवेयर पीडब्लूएम लागू किया: प्रत्येक पुनरावृत्ति पर एक काउंटर बढ़ाया जाता है जब तक कि यह 20'000 तक नहीं पहुंच जाता (जिस स्थिति में 0 पर रीसेट किया जाता है)। विलंब लूप को मिलीसेकंड तक धीमा कर देता है। हम में से सबसे समझदार लोग देखेंगे कि नियंत्रण अवधि लगभग 20 सेकंड है। प्रत्येक लूप काउंटर और थ्रेसहोल्ड के बीच तुलना के साथ शुरू होता है। यदि काउंटर थ्रेशोल्ड से कम है, तो मैं रिले को बंद कर देता हूं। अगर यह बड़ा है, तो मैं इसे चालू करता हूं। इसलिए मैं दहलीज निर्धारित करके शक्ति को नियंत्रित करता हूं। दहलीज गणना हर सेकंड होती है।

पीआईडी नियंत्रक क्या है?

जब आप किसी प्रक्रिया को नियंत्रित करना चाहते हैं, तो आपके पास वह मान होता है जिसे आप मापते हैं (एनालॉगडेटा), वह मान जिसे आप पहुंचना चाहते हैं (tempCommand) और उस प्रक्रिया की स्थिति को संशोधित करने का एक तरीका (seuil)। मेरे मामले में यह थ्रेशोल्ड (फ्रेंच में "सेइल") के साथ किया जाता है, लेकिन लिखना और उच्चारण करना बहुत आसान है (उच्चारण "से")) जो निर्धारित करता है कि स्विच कब तक चालू और बंद होगा (कर्तव्य चक्र) इस प्रकार ऊर्जा की मात्रा प्रणाली में डाल दिया।

हर कोई इस बात से सहमत है कि यदि आप उस बिंदु से दूर हैं जहां आप पहुंचना चाहते हैं, तो आप एक बड़ा सुधार कर सकते हैं और यदि आप करीब हैं, तो एक छोटे से सुधार की आवश्यकता है। इसका अर्थ है कि सुधार त्रुटि का एक कार्य है (त्रुटि=analogData-tempComand)। हाँ लेकिन कितना? मान लीजिए कि हम त्रुटि को एक कारक (P) से गुणा करते हैं। यह एक आनुपातिक नियंत्रक है। यंत्रवत् एक वसंत आनुपातिक सुधार करता है क्योंकि वसंत बल वसंत संपीड़न के समानुपाती होता है।

आप शायद जानते हैं कि आपकी कार के सस्पेंशन में एक स्प्रिंग और एक डैपर (शॉक एब्जॉर्बर) होता है। इस स्पंज की भूमिका आपकी कार को ट्रैम्पोलिन की तरह रिबाउंडिंग से बचाना है। यह ठीक वही है जो व्युत्पन्न शब्द करता है। स्पंज के रूप में, यह एक प्रतिक्रिया उत्पन्न करता है जो त्रुटि भिन्नता के समानुपाती होता है। यदि त्रुटि जल्दी से बदल रही है, तो सुधार कम हो गया है। यह दोलनों और ओवरशूट को कम करता है।

स्थायी त्रुटि से बचने के लिए इंटीग्रेटर शब्द यहां है (यह त्रुटि को एकीकृत करता है)। सीधे तौर पर, यह एक काउंटर है जो त्रुटि सकारात्मक या नकारात्मक होने पर बढ़ा या घटाया जाता है। फिर इस काउंटर के हिसाब से करेक्शन को बढ़ाया या घटाया जाता है। इसकी कोई यांत्रिक समानता नहीं है (या आपके पास कोई विचार है?) हो सकता है कि एक समान प्रभाव हो जब आप अपनी कार को सेवा में लाते हैं और मैकेनिक नोटिस करता है कि झटके व्यवस्थित रूप से बहुत कम हैं और कुछ और प्रीलोड जोड़ने का निर्णय लेते हैं।

इन सभी को सूत्र में संक्षेपित किया गया है: सुधार = पी * ई (टी) + आई * (डी (टी) / डीटी) + डी * इंटीग्रल (ई (टी) डीटी), पी, आई और डी तीन पैरामीटर हैं जिनके पास है ट्यून किया जाना।

अपने संस्करण में मैंने एक चौथा शब्द जोड़ा जो एक निश्चित तापमान बनाए रखने के लिए आवश्यक "एक प्राथमिकता" (फीड फॉरवर्ड) कमांड है। मैंने तापमान के लिए आनुपातिक आदेश चुना (यह हीटिंग नुकसान का एक अच्छा अनुमान है। यह सच है अगर हम विकिरण हानि (टी ^ 4) की उपेक्षा करते हैं)। इस शब्द के साथ, इंटीग्रेटर हल्का होता है।

इन मापदंडों को कैसे खोजें?

मैंने एक पारंपरिक विधि की कोशिश की जिसे आप "पिड ट्यूनिंग तापमान नियंत्रक" को गुगल करके पा सकते हैं, लेकिन मुझे इसे लागू करना मुश्किल लगा और मेरी अपनी विधि के साथ समाप्त हो गया।

मेरी विधि

पहले P, I, D को शून्य पर रखें और "K" और "tempCommand" को छोटे मानों (उदाहरण के लिए K=1 और tempCommand=100) पर रखें। सिस्टम चालू करें और प्रतीक्षा करें, प्रतीक्षा करें, प्रतीक्षा करें … जब तक तापमान स्थिर न हो जाए। इस बिंदु पर आप जानते हैं कि 1*100=100 के "सेइल" के साथ, तापमान X की ओर जाता है। तो आप जानते हैं कि 100/20000=5% के आदेश से आप X तक पहुंच सकते हैं। लेकिन लक्ष्य 100 तक पहुंचना है। क्योंकि यह "tempCommand" है। अनुपात का उपयोग करके आप 100 (tempCommand) तक पहुंचने के लिए K की गणना कर सकते हैं। सावधानी से मैंने गणना की तुलना में एक छोटे मूल्य का उपयोग किया। वास्तव में ठंडा करने से ज्यादा गर्म करना आसान है। तो अंत में

केफ़ाइनल = के * अस्थायी कमांड * 0.9 / एक्स

अब जब आप नियंत्रक शुरू करते हैं, तो यह स्वाभाविक रूप से आपके इच्छित तापमान पर जाता है, लेकिन यह वास्तव में धीमी प्रक्रिया है क्योंकि आप केवल हीटिंग नुकसान की भरपाई करते हैं। यदि आप एक तापमान से दूसरे तापमान पर जाना चाहते हैं, तो सिस्टम में तापीय ऊर्जा की मात्रा को जोड़ना होगा। पी निर्धारित करता है कि आप किस दर पर ऊर्जा को सिस्टम में डालते हैं। P को छोटे मान पर सेट करें (उदाहरण के लिए P=10)। एक (लगभग) ठंडी शुरुआत का प्रयास करें। यदि आपके पास एक बड़ा ओवरशूट नहीं है, तो डबल (पी = 20) के साथ प्रयास करें यदि अब आपके पास बीच में कुछ करने का प्रयास है। यदि आपके पास 5% ओवरशूट है, तो यह अच्छा है।

अब D को तब तक बढ़ाएँ जब तक आपका कोई ओवरशूट न हो जाए। (हमेशा परीक्षण, मुझे पता है कि यह विज्ञान नहीं है) (मैंने डी = 100 लिया)

फिर I=P^2/(4*D) जोड़ें (यह ज़िग्लर-निकोल्ट्स पद्धति पर आधारित है, इसे स्थिरता की गारंटी देनी चाहिए) (मेरे लिए I=1)

ये सारे परीक्षण क्यों, विज्ञान क्यों नहीं?

मैं जानता हूँ मुझे पता है! एक बहुत बड़ा सिद्धांत है और आप ट्रांसफर फंक्शन और जेड ट्रांसफॉर्म और ब्लैब्लाब्ला की गणना कर सकते हैं। मैं एकात्मक कूद उत्पन्न करना चाहता था और फिर 10 मिनट के लिए प्रतिक्रिया रिकॉर्ड करना और स्थानांतरण फ़ंक्शन लिखना चाहता था और फिर क्या? मैं 200 पदों के साथ अंकगणित नहीं बनाना चाहता। तो अगर किसी के पास कोई विचार है, तो मुझे यह जानकर खुशी होगी कि इसे ठीक से कैसे किया जाए।

मैंने अपने सबसे अच्छे दोस्त ज़िग्लर और निकोल्स के बारे में भी सोचा। उन्होंने मुझे एक पी खोजने के लिए कहा जो दोलन उत्पन्न करता है और फिर अपनी विधि लागू करता है। मुझे ये दोलन कभी नहीं मिले। केवल एक चीज जो मुझे मिली, वह थी आकाश के लिए एक ऊओउओवरशूट।

और इस तथ्य को कैसे मॉडल करें कि हीटिंग शीतलन के समान प्रक्रिया नहीं है?

मैं अपना शोध जारी रखूंगा लेकिन अब आपके नियंत्रक को पैकेज करते हैं यदि आप अपने द्वारा प्राप्त प्रदर्शन से खुश हैं।

चरण 7: इसे पैक करें

इसे पैक करो
इसे पैक करो
इसे पैक करो
इसे पैक करो
इसे पैक करो
इसे पैक करो
इसे पैक करो
इसे पैक करो

मेरे पास मास्को फैबलैब (fablab77.ru) और उनके लेजर कटर तक पहुंच थी और मैं आभारी हूं। इस अवसर ने मुझे एक प्लगइन द्वारा एक क्लिक में उत्पन्न एक अच्छा पैकेज बनाने की अनुमति दी जो वांछित आयामों के बक्से बनाता है (एच = 69 एल = 66 डी = 42 मिमी)। एलईडी और स्विच के लिए शीर्ष पर दो छेद (डायम = 5 मिमी) हैं और प्रोग्रामिंग पिन के लिए एक तरफ एक स्लिट है। मैंने ट्रांसफार्मर को लकड़ी के दो टुकड़ों और पीसीबी को दो स्क्रू से सुरक्षित किया। मैंने टर्मिनल ब्लॉक को तारों और पीसीबी में मिलाया, ट्रांसफार्मर और पीसीबी पावर इनपुट के बीच स्विच को जोड़ा, श्रृंखला में एक रोकनेवाला (300 ओम) के साथ पीबीओ से जुड़ा। मैंने बिजली के इन्सुलेशन के लिए नेल पॉलिश का भी इस्तेमाल किया। अंतिम परीक्षण के बाद, मैंने बॉक्स को चिपका दिया। बस, इतना ही।

सिफारिश की: