- PWM सिग्नल क्या है?
- PWM सिग्नल को एनालॉग वोल्टेज में कैसे बदलें?
- सर्किट आरेख:
- PWM सिग्नल के लिए MSP प्रोग्रामिंग:
- PWM के साथ एलईडी की चमक को नियंत्रित करना:
यह ट्यूटोरियल MSP430G2 लॉन्चपैड ट्यूटोरियल की श्रृंखला का एक हिस्सा है जिसमें हम टेक्सास इंस्ट्रूमेंट्स से MSP430G2 लॉन्चपैड का उपयोग करना सीख रहे हैं । अब तक हमने बोर्ड की मूल बातें सीख ली हैं और एनालॉग वोल्टेज, MSP430G2 के साथ इंटरफेस एलसीडी आदि को पढ़ने के लिए कवर किया है। अब हम MSP430G2 में PWM के बारे में सीखने के अगले चरण पर आगे बढ़ते हैं । हम ऐसा करेंगे कि पोटेंशियोमीटर को अलग करके एक एलईडी की चमक को नियंत्रित करेंगे । तो पोटेंटियोमीटर को इसके एनालॉग वोल्टेज को पढ़ने के लिए MSP430 के एनालॉग पिन से जोड़ा जाएगा, इसलिए आगे बढ़ने से पहले ADC ट्यूटोरियल के माध्यम से जाने की सलाह दी जाती है।
PWM सिग्नल क्या है?
पल्स चौड़ाई मॉड्यूलेशन (पीडब्लूएम) एक डिजिटल सिग्नल है जो नियंत्रण सर्किटरी में सबसे अधिक उपयोग किया जाता है। यह संकेत पूर्वनिर्धारित समय और गति में उच्च (3.3v) और निम्न (0v) सेट है। जिस समय के दौरान सिग्नल अधिक रहता है उसे "समय पर" कहा जाता है और जिस समय सिग्नल कम रहता है उसे "समय" कहा जाता है। नीचे दिए गए चर्चा के अनुसार PWM के लिए दो महत्वपूर्ण पैरामीटर हैं:
PWM का कर्तव्य चक्र:
समय का प्रतिशत जिसमें PWM सिग्नल उच्च रहता है (समय पर) को कर्तव्य चक्र कहा जाता है। यदि सिग्नल हमेशा चालू रहता है तो यह 100% शुल्क चक्र में होता है और यदि यह हमेशा बंद रहता है तो यह 0% शुल्क चक्र है।
ड्यूटी साइकिल = समय चालू करें / (समय चालू करें + बंद समय चालू करें)
एक PWM की आवृत्ति:
पीडब्लूएम सिग्नल की आवृत्ति निर्धारित करती है कि पीडब्लूएम कितनी तेजी से एक अवधि पूरी करता है। उपरोक्त अवधि में दिखाए गए अनुसार PWM सिग्नल की एक अवधि पूर्ण और बंद है। हमारे ट्यूटोरियल में फ्रिक्वेंसी 500Hz होनी चाहिए क्योंकि यह एनर्जिया आईडीई द्वारा निर्धारित डिफ़ॉल्ट मान है।
पीडब्लूएम सिग्नलों के लिए वास्तविक समय में आवेदनों की अधिकता है, लेकिन आपको एक विचार देने के लिए पीडब्लूएम सिग्नल का उपयोग सर्वो मोटर्स को नियंत्रित करने के लिए किया जा सकता है और इसे एनालॉग वोल्टेज में भी परिवर्तित किया जा सकता है जो एक एलईडी की चमक को नियंत्रित कर सकता है। आइए थोड़ा सा जानें कि यह कैसे किया जा सकता है।
यहाँ अन्य माइक्रोकंट्रोलर के साथ कुछ PWM उदाहरण दिए गए हैं:
- MPLAB और XC8 के साथ PIC माइक्रोकंट्रोलर का उपयोग करके PWM उत्पन्न करना
- रास्पबेरी पाई के साथ सर्वो मोटर नियंत्रण
- पीडब्लूएम का उपयोग करके अरुडिनो आधारित एलईडी डिमर
यहां सभी पीडब्लूएम संबंधित परियोजनाओं की जांच करें।
PWM सिग्नल को एनालॉग वोल्टेज में कैसे बदलें?
एनालॉग वोल्टेज को PWM सिग्नल के लिए हम RC फ़िल्टर नामक सर्किट का उपयोग कर सकते हैं। यह इस उद्देश्य के लिए एक सरल और सबसे अधिक इस्तेमाल किया जाने वाला सर्किट है। सर्किट में सिर्फ़ एक Resistor और एक संधारित्र शामिल होता है जैसा कि नीचे के सर्किट में दिखाया गया है।
तो मूल रूप से यहां क्या होता है कि जब पीडब्लूएम सिग्नल अधिक होता है तो संधारित्र चार्ज होता है, हालांकि प्रतिरोधक और जब पीडब्लूएम सिग्नल कम हो जाता है तो संधारित्र चार्ज के माध्यम से निर्वहन करता है। इस तरह हमारे पास आउटपुट पर हमेशा एक स्थिर वोल्टेज होगा जो PWM ड्यूटी चक्र के समानुपाती होगा।
ऊपर दिखाए गए ग्राफ़ में, पीले रंग का एक पीडब्लूएम सिग्नल है और नीला रंग एक आउटपुट एनालॉग वोल्टेज है । जैसा कि आप देख सकते हैं आउटपुट तरंग शुद्ध डीसी तरंग नहीं होगी, लेकिन यह हमारे आवेदन के लिए बहुत अच्छी तरह से काम करना चाहिए। यदि आपको अन्य प्रकार के एप्लिकेशन के लिए शुद्ध डीसी तरंग की आवश्यकता है तो आपको स्विचिंग सर्किट डिजाइन करना चाहिए।
सर्किट आरेख:
सर्किट आरेख बहुत सरल है; यह सिर्फ एक शक्तिशाली नापने का यंत्र है और एक आरसी सर्किट और एलईडी खुद बनाने के लिए एक रोकनेवाला और संधारित्र है। पोटेंशियोमीटर का उपयोग एनालॉग वोल्टेज प्रदान करने के लिए किया जाता है जिसके आधार पर पीडब्लूएम सिग्नल ड्यूटी चक्र को नियंत्रित किया जा सकता है। पॉट का आउटपुट पिन P1.0 से जुड़ा हुआ है जो एनालॉग वोल्टेज को पढ़ सकता है । फिर हमें पीडब्लूएम सिग्नल का उत्पादन करना है, जिसे पिन P1.2 का उपयोग करके किया जा सकता है, इस पीडब्लूएम सिग्नल को फिर आरसी फिल्टर सर्किट में पीडब्लूएम सिग्नल को एनालॉग वोल्टेज में परिवर्तित करने के लिए भेजा जाता है जो बाद में एलईडी को दिया जाता है।
यह समझना बहुत महत्वपूर्ण है कि एमएसपी बोर्ड पर सभी पिन एनालॉग वोल्टेज नहीं पढ़ सकते हैं या पीडब्लूएम पिन उत्पन्न कर सकते हैं। विशिष्ट पिन जो विशिष्ट कार्य कर सकते हैं, उन्हें नीचे दिए गए आंकड़े में दिखाया गया है। प्रोग्रामिंग के लिए अपने पिन का चयन करने के लिए हमेशा एक मार्गदर्शन के रूप में इसका उपयोग करें।
ऊपर दिखाए गए अनुसार पूरा सर्किट इकट्ठा करें, आप ब्रेडबोर्ड और कुछ जम्पर तारों का उपयोग कर सकते हैं और आसानी से कनेक्शन बना सकते हैं। एक बार कनेक्शन हो जाने के बाद मेरे बोर्ड को नीचे दिखाए गए अनुसार देखा गया।
PWM सिग्नल के लिए MSP प्रोग्रामिंग:
एक बार हार्डवेयर तैयार हो जाने के बाद हम अपनी प्रोग्रामिंग से शुरू कर सकते हैं। एक कार्यक्रम में पहली बात यह है कि हम जिन पिनों का उपयोग करने जा रहे हैं, उन्हें घोषित करें। यहां हम अपने आउटपुट पिन के रूप में पिन नंबर 4 (P1.2) का उपयोग करने जा रहे हैं क्योंकि इसमें PWM उत्पन्न करने की क्षमता है। इसलिए हम एक चर बनाते हैं और पिन नाम निर्दिष्ट करते हैं ताकि बाद में कार्यक्रम में इसे संदर्भित करना आसान हो। पूरा कार्यक्रम अंत में दिया गया है।
int PWMpin = 4; // हम MSP मॉड्यूल पर PWM पिन के रूप में 4 वें पिन का उपयोग कर रहे हैं
अगला हम सेटअप फंक्शन में आते हैं । यहां जो भी कोड लिखा गया है उसे केवल एक बार निष्पादित किया जाएगा, यहां हम घोषणा करते हैं कि हम इस 4 वें पिन का उपयोग आउटपुट पिन के रूप में कर रहे हैं क्योंकि PWM आउटपुट कार्यक्षमता है। ध्यान दें कि हमने संख्या 4 के बजाय यहाँ चर PWMpin का उपयोग किया है ताकि कोड अधिक सार्थक लगे
शून्य सेटअप () { pinMode (PWMpin, OUTPUT); // पेमपिन को आउटपेट के रूप में सेट किया गया है }
अंत में हम में मिल पाश समारोह । हम यहाँ जो कुछ भी लिखते हैं वह बार-बार निष्पादित होता है। इस कार्यक्रम में हमें एनालॉग वोल्टेज को पढ़ना है और तदनुसार PWM सिग्नल उत्पन्न करना है और यह बार-बार होना है। तो पहले हम A0 से एनालॉग वोल्टेज को पढ़कर शुरू करें क्योंकि हमने इसे पोटेंशियोमीटर से जोड़ा है।
यहां हम AanalogRead फ़ंक्शन का उपयोग करके मान पढ़ रहे हैं, यह फ़ंक्शन पिन पर लागू वोल्टेज के मूल्य के आधार पर 0-1024 से मान लौटाएगा। फिर हम इस वैल्यू को "वैली" नामक वैरिएबल में स्टोर करते हैं जैसा कि नीचे दिखाया गया है
int val = analogRead (A0); // पिन A0 से ADC मान पढ़ें
हमें PWM फ़ंक्शन को देने के लिए 0 से 255 के मानों को ADC से 0 से 1024 के मान में बदलना है । हमें इसे क्यों बदलना चाहिए? मैं बताऊंगा कि शीघ्र ही, लेकिन अभी के लिए हमें याद रखना है कि हमें रूपांतरित होना है। मूल्यों के एक सेट को दूसरे सेट में बदलने के लिए एनर्जिया में Arduino के समान एक मानचित्र फ़ंक्शन होता है। इसलिए हम 0-1204 के मूल्यों को 0-255 में परिवर्तित करते हैं और इसे वापस "वैल" चर में सहेजते हैं ।
वैल = नक्शा (वैल , 0, 1023, 0, 255); // ADC 0-1023 का मान देगा, इसे 0-255 में बदलें
अब हमारे पास पोटेंशियोमीटर की स्थिति के आधार पर 0-255 का एक चर मूल्य है। हमें बस इतना करना है कि पीडब्लूएम पिन पर इस मान का उपयोग करें यह निम्नलिखित पंक्ति का उपयोग करके किया जा सकता है।
analogWrite (PWMpin, वैल); // उस मान को PWM पिन पर लिखें।
आइए इस प्रश्न पर वापस जाएं कि PWM पिन पर 0-255 क्यों लिखा गया है । यह मान 0-255 PWM सिग्नल के कर्तव्य चक्र को तय करता है। उदाहरण के लिए यदि संकेत का मान 0 है, तो इसका मतलब है कि शुल्क चक्र 127 के लिए 0% है, यह 50% है और 255 के लिए यह 100% है जैसा कि इस लेख के शीर्ष पर दिखाया गया है और समझाया गया है।
PWM के साथ एलईडी की चमक को नियंत्रित करना:
एक बार जब आप हार्डवेयर और कोड को समझ जाते हैं, तो सर्किट के काम में कुछ मजा आता है। MSP430G2 बोर्ड में कोड अपलोड करें और पोटेंशियोमीटर नॉब को चालू करें। जैसा कि आप नॉब को चालू करते हैं पिन 2 पर वोल्टेज अलग-अलग होगा जो माइक्रोकंट्रोलर द्वारा पढ़ा जाएगा और वोल्टेज के अनुसार पीडब्लूएम सिग्नल पिन 4 पर उत्पन्न होगा। अधिक से अधिक वोल्टेज, अधिक से अधिक कर्तव्य चक्र और इसके विपरीत होगा।
यह PWM सिग्नल तब एलइडी को चमकाने के लिए एनालॉग वोल्टेज में परिवर्तित हो जाता है। एलईडी की चमक PWM सिग्नल ड्यूटी चक्र के सीधे आनुपातिक है । ब्रेडबोर्ड पर एलईडी के अलावा आप smd LED (लाल रंग) को नोटिस भी कर सकते हैं जिससे ब्रेडबोर्ड के समान इसकी चमक अलग-अलग हो। यह LED भी उसी पिन से जुड़ा हुआ है, लेकिन इसमें RC नेटवर्क नहीं है इसलिए यह वास्तव में बहुत तेजी से टिमटिमा रहा है। इसकी चंचल प्रकृति की जांच करने के लिए आप एक अंधेरे कमरे में बोर्ड को हिला सकते हैं। पूरा काम नीचे दिए गए वीडियो में भी देखा जा सकता है ।
यह सब अब लोगों के लिए है, हमने MSP430G2 बोर्ड पर PWM संकेतों का उपयोग करना सीखा है, अपने अगले ट्यूटोरियल में हम सीखेंगे कि समान PWM संकेतों का उपयोग करके सर्वो मोटर को नियंत्रित करना कितना आसान है। यदि आपको कोई संदेह है, तो उन्हें तकनीकी सहायता के लिए नीचे दिए गए टिप्पणी अनुभाग पर या मंचों पर पोस्ट करें।