विषयसूची:
- आपूर्ति
- चरण 1: मूल नियंत्रण सिद्धांत
- चरण 2: पीआईडी कोड लिखना
- चरण 3: अपने सिस्टम के लिए कैसे संशोधित करें
- चरण 4: बेसिस 3 पर I/O का लाभ उठाना
- चरण 5: आईआर सेंसर आउटपुट पर शोर
- चरण 6: समग्र कोड लेआउट
- चरण 7: परीक्षण
- चरण 8: परियोजना में सुधार के लिए संशोधन
- चरण 9: अतिरिक्त कार्य
- चरण 10: निष्कर्ष
वीडियो: पीआईडी नियंत्रक वीएचडीएल: 10 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:21
कॉर्क इंस्टीट्यूट ऑफ टेक्नोलॉजी से ऑनर्स बैचलर डिग्री पूरी करने के लिए यह परियोजना मेरी अंतिम परियोजना थी। इस ट्यूटोरियल को दो खंडों में विभाजित किया गया है, पहला पीआईडी कोड के मुख्य भाग को कवर करेगा जो कि परियोजना का मुख्य उद्देश्य है और दूसरा खंड उस कोड को शामिल करता है जिसे बेसिस 3 विकास बोर्ड पर लागू किया गया था और फिर एक पिंग पोंग बॉल में इंटरफेस किया गया था। उत्तोलन रिग। सैद्धांतिक और निर्मित रिग संलग्न छवियों में दिखाए गए हैं।
आपूर्ति
सिमुलेशन
विवाडो डिजाइन सूट
कार्यान्वयन (कोष्ठक में वह है जो मेरी परियोजना के लिए उपयोग किया गया था)
- एफपीजीए बोर्ड जो डिजिटल/एनालॉग सिग्नलों को इनपुट और आउटपुट कर सकता है (बेसिस 3)
- एक प्रणाली जो एक प्रतिक्रिया स्रोत (पिंग पोंग बॉल लेविटेशन रिग) के साथ नियंत्रित है
सामान
- पॉली कार्बोनेट ट्यूब
- 5वी फैन
- आईआर सेंसर
- 3डी प्रिंटेड बेस (यह ट्यूटोरियल रिग के निर्माण का दस्तावेज है, सेंसर को फीडबैक प्रदान करने के लिए जोड़ा गया था लेकिन रिग आम तौर पर समान था)
- 1k प्रतिरोधी
- 5V और GND रेल के साथ ब्रेडबोर्ड
चरण 1: मूल नियंत्रण सिद्धांत
मैंने सोचा था कि कुछ बुनियादी नियंत्रण सिद्धांत जोड़ने से कोई भी व्यक्ति जो इस कोड को आजमाने और कार्यान्वित करना चाहता है, उसे शुरू करने के लिए एक अच्छा आधार मिलेगा।
संलग्न आरेख एकल लूप नियंत्रक का लेआउट है।
r- संदर्भ है। यह निर्धारित करता है कि नियंत्रक कहाँ जाना चाहता है।
ई-त्रुटि है। यह आपके सेंसर और आपके संदर्भ के मान के बीच का अंतर है। जैसे ई = आर- (डी + सेंसर का आउटपुट)।
K-यह नियंत्रक है। एक नियंत्रक में तीन शब्द शामिल हो सकते हैं। ये पद P, I और D हैं। तीनों पदों के गुणक हैं जिन्हें Kp, Ki और Kd कहा जाता है। ये मान नियंत्रक की प्रतिक्रिया निर्धारित करते हैं।
- पी-आनुपातिक। एक सख्ती से पी नियंत्रक के पास वर्तमान त्रुटि के लिए आनुपातिक आउटपुट होगा। एपी नियंत्रक लागू करने और तेजी से काम करने के लिए सरल है लेकिन आपके द्वारा निर्धारित मूल्य (संदर्भ) तक कभी नहीं पहुंचेगा।
- मैं-अभिन्न। एक सख्ती से अभिन्न नियंत्रक पिछली त्रुटि को जोड़ देगा जो अंततः वांछित संदर्भ तक पहुंच जाएगा। यह नियंत्रक आमतौर पर लागू करने के लिए बहुत धीमा है। P शब्द जोड़ने से संदर्भ तक पहुँचने में लगने वाला समय कम हो जाएगा। जिस समय इनपुट का नमूना लिया जा रहा है उसे ध्यान में रखा जाना चाहिए अभिन्न शब्द समय के संबंध में एकीकृत है।
- डी-व्युत्पन्न। व्युत्पन्न शब्द में एक आउटपुट होगा जो त्रुटि के परिवर्तन की दर पर निर्भर है। यह शब्द आम तौर पर पी टर्म या पीआई टर्म के साथ प्रयोग किया जाता है। चूंकि यह आनुपातिक रूप से त्रुटि के परिवर्तन की दर के लिए है, तो एक शोर एकल का शोर बढ़ जाएगा जो एक प्रणाली को अस्थिर कर सकता है। समय को भी ध्यान में रखा जाना चाहिए क्योंकि व्युत्पन्न शब्द भी समय के संबंध में है।
उ०- यह नियंत्रण संकेत है । यह संकेत रिग के लिए एक इनपुट है। इस परियोजना के मामले में यू गति को बदलने के लिए पंखे के लिए एक पीडब्लूएम सिग्नल इनपुट है।
जी- यह वह व्यवस्था है जिसे नियंत्रित किया जा रहा है। इस प्रणाली को एस या जेड डोमेन में गणितीय रूप से तैयार किया जा सकता है। सिस्टम nth ऑर्डर के लिए हो सकते हैं लेकिन किसी के लिए नियंत्रण के साथ शुरुआत करने के लिए पहले ऑर्डर सिस्टम को संभवतः माना जाना चाहिए क्योंकि यह गणना करना बहुत आसान है। मॉडलिंग प्रणाली के बारे में जानकारी का ढेर ऑनलाइन पाया जा सकता है। सेंसर के नमूने के समय के आधार पर सिस्टम का मॉडल या तो असतत या निरंतर होता है। नियंत्रक पर इसका बहुत बड़ा प्रभाव पड़ता है इसलिए दोनों में शोध की सलाह दी जाती है।
d- यह गड़बड़ी है जिसे सिस्टम में जोड़ा जाता है। अशांति बाहरी ताकतें हैं जिनके लिए सिस्टम का मॉडल जिम्मेदार नहीं है। इसका एक आसान उदाहरण एक ड्रोन होगा जिसे आप 5 मीटर पर मंडराना चाहेंगे, हवा का एक झोंका आता है और ड्रोन को 1 मीटर गिरा देता है, गड़बड़ी होने के बाद नियंत्रक ड्रोन को बदल देगा। इसे विक्षोभ के रूप में जाना जाता है क्योंकि हवा गैर-दोहराने योग्य है इसलिए इसे मॉडलिंग नहीं किया जा सकता है।
नियंत्रक को ट्यून करने के लिए नाम देने के लिए बहुत सारे नियम हैं लेकिन कुछ अच्छे नियम जिन्हें मैंने शुरू किया था वे हैं कोहेन कून और ज़ीगर निकोल्स।
एक प्रणाली की मॉडलिंग आम तौर पर एक सटीक मॉडल के बिना सबसे महत्वपूर्ण हिस्सा है जिसे डिजाइन किया गया नियंत्रक वांछित के रूप में प्रतिक्रिया नहीं देगा।
कुछ व्यक्तिगत शोध के साथ नियंत्रक कैसे काम करता है और तीन शब्दों के किसी भी संयोजन के साथ नियंत्रक के नीचे कोड लागू किया जा सकता है, यह समझने के लिए यहां पर्याप्त जानकारी होनी चाहिए।
चरण 2: पीआईडी कोड लिखना
निम्नलिखित लिंक पर पाए गए कोड के मूल सिद्धांत को लिया गया और संशोधित किया गया क्योंकि यह कोड काम नहीं करता था लेकिन इसमें कई सिद्धांत सही थे जो एक अच्छा प्रारंभिक बिंदु देते थे। मूल पीआईडी कोड में कई त्रुटियां थीं जैसे कि
- निरंतर संचालन - नियंत्रक विरासत में असतत है इसलिए नियंत्रक को केवल सभी 3 शब्दों की गणना करने के लिए स्थापित किया जाना था जब एक नया इनपुट उपलब्ध था। इस सिमुलेशन के लिए काम यह जांचना था कि इनपुट पिछली बार से बदल गया है या नहीं। यह केवल सही ढंग से काम कर रहे कोड को अनुकरण करने के लिए काम करता है।
- नमूना समय का अभिन्न और व्युत्पन्न शब्द पर कोई प्रभाव नहीं पड़ा - नियंत्रक ने उस समय पर भी विचार नहीं किया जिसमें नमूना लिया जा रहा था, इसलिए समय के लिए विभक्त नामक एक मूल्य जोड़ा गया ताकि यह सुनिश्चित हो सके कि अभिन्न और व्युत्पन्न शब्द सही पर काम कर रहे हैं। मध्यान्तर।
- त्रुटि केवल पोस्टिव हो सकती है - त्रुटि की गणना करते समय एक समस्या भी थी क्योंकि त्रुटि कभी भी नकारात्मक अर्थ नहीं हो सकती थी जब फीडबैक सिग्नल ने संदर्भ मान को पार कर लिया था कि नियंत्रक आउटपुट को बढ़ाना जारी रखेगा जब इसे कम किया जाना चाहिए।
- 3 पदों के लिए लाभ मान पूर्णांक थे - मेरे अनुभव में मैंने हमेशा पाया कि नियंत्रक में 3 शब्दों के लिए मान हमेशा फ़्लोटिंग पॉइंट नंबर होते हैं क्योंकि बेसिस 3 में फ़्लोटिंग पॉइंट नंबर नहीं होता है, मानों को एक अंश मान दिया जाना था और ए भाजक मूल्य जो इस समस्या को पार करने के लिए एक कार्य के रूप में कार्य करेगा।
कोड नीचे संलग्न है कोड का मुख्य निकाय और कोड का अनुकरण करने के लिए एक टेस्टबेंच है। ज़िप फ़ोल्डर में कोड और टेस्टबेंच पहले से ही विवाडो में है ताकि समय बचाने के लिए इसे खोला जा सके। कोड का एक सिम्युलेटेड परीक्षण भी है जो आउटपुट को संदर्भ पर नज़र रखने को दिखाता है यह साबित करता है कि कोड इरादे के अनुसार काम कर रहा है।
चरण 3: अपने सिस्टम के लिए कैसे संशोधित करें
सबसे पहले सभी सिस्टम एक जैसे नहीं होते हैं, सिस्टम के इनपुट और आउटपुट का विश्लेषण करना चाहिए। मेरे मामले में मेरे रिग का आउटपुट जिसने मुझे स्थिति के लिए एक मूल्य दिया था वह एक एनालॉग सिग्नल था और सिस्टम से इनपुट एक पीडब्लूएम सिग्नल था। मतलब कि एडीसी रूपांतरण की जरूरत थी। सौभाग्य से बेसिस 3 में एडीसी बनाया गया है, इसलिए यह कोई समस्या नहीं थी कि आईआर सेंसर के आउटपुट को 0V-1V तक बढ़ाया जाना था क्योंकि यह ऑनबोर्ड एडीसी की अधिकतम सीमा है। यह एक वोल्टेज विभक्त सर्किट का उपयोग करके किया गया था जो 1k रोकनेवाला के साथ श्रृंखला में 3k रोकनेवाला के रूप में स्थापित 1k प्रतिरोधों से बनाया गया था। एनालॉग सिग्नल अब एडीसी की सीमा के भीतर था। प्रशंसक के लिए पीडब्लूएम इनपुट बेसिस 3 पर पीएमओडी पोर्ट के आउटपुट द्वारा सीधे संचालित करने में सक्षम है।
चरण 4: बेसिस 3 पर I/O का लाभ उठाना
बेसिस 3 पर कई I/O हैं जो कोड के चलने पर आसान डिबगिंग की अनुमति देते हैं। I/O को निम्न के रूप में स्थापित किया गया था।
- सेवन सेगमेंट डिस्प्ले - इसका उपयोग वोल्ट में एडीसी पर संदर्भ के मूल्य और मूल्य को दिखाने के लिए किया जाता था। सात खंड डिस्प्ले के पहले दो अंक एडीसी मान के दशमलव स्थान के बाद दो अंक दिखाते हैं क्योंकि मान 0-1V के बीच है। सात खंड डिस्प्ले पर अंक तीन और चार वोल्ट में संदर्भ मान दिखाते हैं यह दशमलव स्थान के बाद पहले दो अंक भी दिखाता है क्योंकि सीमा भी 0-1V के बीच है।
- 16 एल ई डी - एल ई डी का उपयोग आउटपुट के मूल्य को दिखाने के लिए किया गया था ताकि यह सुनिश्चित हो सके कि आउटपुट संतृप्त था और आउटपुट सही ढंग से बदल रहा था।
चरण 5: आईआर सेंसर आउटपुट पर शोर
इस समस्या को ठीक करने के लिए सेंसर आउटपुट पर शोर था एक औसत ब्लॉक लगाया गया था क्योंकि यह पर्याप्त था और इसे पूरा करने के लिए बहुत कम काम की आवश्यकता थी।
चरण 6: समग्र कोड लेआउट
कोड का एक टुकड़ा है जिसके बारे में अभी तक बात नहीं की गई है। यह कोड एक घड़ी विभक्त है जिसे ट्रिगर कहा जाता है। कोड का यह बिट नमूना के लिए एडीसी कोड को ट्रिगर करता है। ADC कोड को पूरा करने में अधिकतम 2us लगते हैं, इसलिए वर्तमान इनपुट और पिछले इनपुट का औसत निकाला जाता है। 1us इस औसत के बाद नियंत्रक पी, आई और डी शर्तों की गणना करता है। कोड और इंटरफेसिंग का संपूर्ण लेआउट अस्थायी कनेक्शन आरेख में दिखाया गया है।
चरण 7: परीक्षण
कोड को बेसिस 3 पर तैनात किया गया था और निम्नलिखित प्रतिक्रिया दर्ज की गई थी। संदर्भ 2 मानों के बीच बदल गया। जो कि संलग्न पूर्ण परियोजना कोड में मामला है। संलग्न वीडियो वास्तविक समय में इस प्रतिक्रिया को दिखाता है। दोलन ट्यूब के ऊपरी भाग में तेजी से क्षय होते हैं क्योंकि नियंत्रक को इस क्षेत्र के लिए डिज़ाइन किया गया था लेकिन नियंत्रक ट्यूब के नीचे और अधिक काम नहीं करता है क्योंकि सिस्टम गैर-रैखिक है।
चरण 8: परियोजना में सुधार के लिए संशोधन
परियोजना ने इरादा के अनुसार काम किया लेकिन कुछ संशोधन हैं जो मैंने किया होगा यदि परियोजना को बढ़ाया जा सकता है।
- शोर को पूरी तरह से कम करने के लिए डिजिटल फ़िल्टर लागू करें
- क्रमिक रूप से ट्रिगर करने के लिए एडीसी कोड, औसत कोड और एकीकरण कोड सेट करें।
- प्रतिक्रिया के लिए एक अलग सेंसर का उपयोग करें क्योंकि इस सेंसर की गैर-रैखिक प्रतिक्रिया ने इस परियोजना के साथ कई तरह की समस्याएं पैदा की हैं लेकिन यह कोडिंग पक्ष पर नियंत्रण पक्ष पर अधिक है।
चरण 9: अतिरिक्त कार्य
गर्मियों के दौरान मैंने कैस्केड नियंत्रक के लिए कोड लिखा और एकल लूप पीआईडी नियंत्रक के लिए अनुशंसित संशोधनों को लागू किया।
नियमित पीआईडी नियंत्रक में किए गए संशोधन
· एफआईआर फिल्टर टेम्प्लेट लागू किया गया गुणांक वांछित कट-ऑफ आवृत्ति प्राप्त करने के लिए बदला जाना चाहिए। वर्तमान कार्यान्वयन 5-टैप प्राथमिकी फ़िल्टर है।
· कोड का समय निर्धारित किया गया है ताकि फ़िल्टर नए नमूने के माध्यम से प्रचार करे और जब आउटपुट तैयार हो जाए तो इंटीग्रल टर्म ट्रिगर हो जाएगा जिसका मतलब होगा कि कोड को अलग-अलग समय अंतराल पर काम करने के लिए कम प्रयास के साथ संशोधित किया जा सकता है। कोड।
· प्रोग्राम को चलाने वाले लूप के लिए मुख्य को भी कम कर दिया गया है क्योंकि इसके लिए लूप ने पहले 7 चक्र लिए थे, इससे पहले नियंत्रक की अधिकतम परिचालन गति धीमी हो गई थी लेकिन लूप टी 4 राज्यों के लिए कम करके इसका मतलब है कि कोड का मुख्य ब्लॉक संचालित हो सकता है 4 घड़ी चक्रों के भीतर।
परिक्षण
इस नियंत्रक का परीक्षण और प्रदर्शन किया गया था जैसा कि मैंने इस सबूत की तस्वीरें नहीं लीं क्योंकि परियोजना का यह हिस्सा सिर्फ दिमाग को सक्रिय रखने के लिए था। परीक्षण के साथ-साथ टेस्टबेंच के लिए कोड यहां उपलब्ध होगा ताकि आप कार्यान्वयन से पहले कार्यक्रम का परीक्षण कर सकें।
कैस्केड नियंत्रक का उपयोग क्यों करें
एक कैस्केड नियंत्रक प्रणाली के दो भागों को नियंत्रित करता है। इस मामले में एक कैस्केड नियंत्रक के पास एक बाहरी लूप होगा जो एक नियंत्रक है जिसे आईआर सेंसर से प्रतिक्रिया मिलती है। आंतरिक लूप में टैकोमीटर से दालों के बीच समय के रूप में प्रतिक्रिया होती है जो पंखे की घूर्णी गति को निर्धारित करती है। नियंत्रण को लागू करके, सिस्टम से बेहतर प्रतिक्रिया प्राप्त की जा सकती है।
कैस्केड नियंत्रक कैसे काम करता है?
नियंत्रक बाहरी लूप, इनर लूप कंट्रोलर को पल्स के बीच के समय के लिए एक मान फीड करेगा। यह नियंत्रक दालों के बीच वांछित समय को प्राप्त करने के लिए कर्तव्य चक्र को बढ़ाएगा या घटाएगा।
रिग पर संशोधनों का कार्यान्वयन।
दुर्भाग्य से, मैं इन संशोधनों को रिग पर लागू करने में असमर्थ था क्योंकि मेरे पास इसकी पहुंच नहीं थी। मैंने संशोधित सिंगल लूप कंट्रोलर का परीक्षण किया जो कि इरादा के अनुसार काम करता है। मैंने अभी तक कैस्केड नियंत्रक का परीक्षण नहीं किया है। मुझे विश्वास है कि नियंत्रक काम करेगा लेकिन इरादे के अनुसार काम करने के लिए कुछ मामूली संशोधनों की आवश्यकता हो सकती है।
परिक्षण
मैं नियंत्रक का परीक्षण करने में असमर्थ था क्योंकि दो इनपुट स्रोतों का अनुकरण करना मुश्किल था। कैस्केड कंट्रोलर के साथ मैं एकमात्र समस्या यह देख सकता हूं कि बाहरी लूप आंतरिक-लूप को आपूर्ति किए गए सेटपॉइंट को बढ़ाने की कोशिश करता है कि एक बड़ा सेट पॉइंट वास्तव में प्रशंसक के लिए कम आरपीएस है लेकिन इसे आसानी से ठीक किया जा सकता है। सेट पॉइंट सिग्नल के अधिकतम मान से सेट पॉइंट लें (4095 - सेटपॉइंट - tacho_result)।
चरण 10: निष्कर्ष
कुल मिलाकर परियोजना कार्य करती है जैसा कि मेरा इरादा था जब परियोजना शुरू हुई थी इसलिए मैं परिणाम से खुश हूं। वीएचडीएल में पीआईडी नियंत्रक विकसित करने के मेरे प्रयास को पढ़ने के लिए समय निकालने के लिए धन्यवाद। अगर कोई सिस्टम पर इसके कुछ बदलाव को लागू करने का प्रयास कर रहा है और कोड को समझने के लिए कुछ सहायता की आवश्यकता है तो मुझसे संपर्क करें मैं ASAP का जवाब दूंगा। जो कोई भी अतिरिक्त काम करने की कोशिश करता है जिसे पूरा किया गया था लेकिन लागू नहीं किया गया था, कृपया किसी भी तरह से मुझसे संपर्क करें। मैं इसकी बहुत सराहना करूंगा यदि कोई इसे लागू करता है तो मुझे बताएं कि यह कैसा चल रहा है।
सिफारिश की:
सेल्फ बैलेंसिंग रोबोट - पीआईडी कंट्रोल एल्गोरिथम: 3 कदम
सेल्फ बैलेंसिंग रोबोट - पीआईडी कंट्रोल एल्गोरिथम: इस परियोजना की कल्पना इसलिए की गई थी क्योंकि मुझे कंट्रोल एल्गोरिदम के बारे में अधिक जानने और कार्यात्मक पीआईडी लूप को प्रभावी ढंग से लागू करने के तरीके के बारे में जानने में दिलचस्पी थी। यह परियोजना अभी भी विकास के चरण में है क्योंकि एक ब्लूटूथ मॉड्यूल को जोड़ा जाना बाकी है जो सभी
पीआईडी लाइन फॉलोअर एटमेगा३२८पी: ४ कदम
PID लाइन फॉलोअर Atmega328P: परिचय यह निर्देशयोग्य PID (आनुपातिक-अभिन्न-व्युत्पन्न) नियंत्रण (गणितीय) के साथ अपने मस्तिष्क (Atmega328P) के साथ एक कुशल और विश्वसनीय लाइन फॉलोअर बनाने के बारे में है। लाइन फॉलोअर एक स्वायत्त रोबोट है जो या तो बी का अनुसरण करता है
वीएचडीएल और वेरिलोग में एक साधारण वीजीए नियंत्रक का डिजाइन: 5 कदम
VHDL और Verilog में एक साधारण VGA नियंत्रक का डिज़ाइन: इस निर्देश में, हम RTL में एक साधारण VGA नियंत्रक डिज़ाइन करने जा रहे हैं। वीजीए कंट्रोलर डिजिटल सर्किट है जिसे वीजीए डिस्प्ले को चलाने के लिए डिज़ाइन किया गया है। यह फ्रेम बफर (वीजीए मेमोरी) से पढ़ता है जो प्रदर्शित किए जाने वाले फ्रेम का प्रतिनिधित्व करता है, और आवश्यक
पीआईडी नियंत्रक के साथ टॉवर कॉप्टर: 4 कदम
पीआईडी नियंत्रक के साथ टॉवर कॉप्टर: नमस्कार दोस्तों, मेरा नाम वाचिद कुर्नियावान पुत्र है, आज मैं अपनी टीम के साथ अपना माइक्रोकंट्रोलर प्रोजेक्ट साझा करूंगा मेरी टीम में मेरे सहित 4 लोग शामिल हैं, वे हैं: 1। जुआन एंड्रयू (१५/३८६४६२ / एसवी / ०९८४८)२। वाचिद कुर्नियावान पुत्र (१७/४१६८२१/एसवी/१४५५९)३
पीआईडी तापमान नियंत्रक: 7 कदम
पीआईडी तापमान नियंत्रक: मेरा दोस्त प्लास्टिक रीसाइक्लिंग के लिए एक प्लास्टिक एक्सट्रूडर बना रहा है (https://preciousplastic.com)। उसे एक्सट्रूज़न तापमान को नियंत्रित करने की आवश्यकता है। उस उद्देश्य के लिए वह नोजल हीटर बैंड का उपयोग कर रहा है। इस नोजल में एक थर्मोकपल और एक हीटिंग यूनि