क्या मैं GPIO का उपयोग पल्स-चौड़ाई मॉड्यूलेशन आउटपुट के रूप में कर सकता हूं ?
यदि हां, तो मैं इसे करने के बारे में कैसे जाऊंगा और कितने समवर्ती, अलग PWM आउटपुट हो सकते हैं?
क्या मैं GPIO का उपयोग पल्स-चौड़ाई मॉड्यूलेशन आउटपुट के रूप में कर सकता हूं ?
यदि हां, तो मैं इसे करने के बारे में कैसे जाऊंगा और कितने समवर्ती, अलग PWM आउटपुट हो सकते हैं?
जवाबों:
जैसा कि एलेक्स चेम्बरलेन ने सुझाव दिया था , WiringPi लाइब्रेरी मॉडल के आधार पर एक या दो GPIO पिन पर हार्डवेयर PWM आउटपुट और अन्य GPIO पिन में से किसी पर सॉफ्टवेयर PWM दोनों का समर्थन करती है । इस बीच RPIO.PWM लाइब्रेरी किसी GPIO पिन पर DMA द्वारा PWM करती है । प्रभावी रूप से यह हार्डवेयर और सॉफ्टवेयर पीडब्लूएम के बीच का एक आधा घर है, जो कि वायरिंगपाइ के सॉफ्टवेयर पीडब्लूएम [1] के साथ 100 half की तुलना में 1 compared का समय संकल्प प्रदान करता है ।
इनमें से कौन सा आपके अनुप्रयोगों के लिए उपयुक्त है यह इस बात पर निर्भर करता है कि आपको कितने PWM आउटपुट की आवश्यकता है और आप उन आउटपुटों में से कौन सा प्रदर्शन चाहते हैं।
यदि आपका आवेदन कम-समय के समाधान और उच्च घबराहट के लिए सहनशील है तो आप एक सॉफ्टवेयर या डीएमए असिस्टेड टाइमिंग लूप का उपयोग कर सकते हैं। यदि आप उच्च परिशुद्धता / कम घबराना PWM चाहते हैं तो आपको हार्डवेयर सहायता की आवश्यकता हो सकती है।
यदि आप अलग-अलग मानव दिखने वाले ताल (10 के हर्ट्ज) के साथ एल ई डी का एक गुच्छा चमकाना चाहते हैं, तो सॉफ्ट-टाइम रिस्पांस आवश्यकताओं के साथ सॉफ्टवेयर लूप कई पीडब्लूएम को संभाल सकता है, जैसे कि आपके पास जीपीओ पिन है।
यदि आप कठिन वास्तविक समय प्रतिक्रिया आवश्यकताओं के साथ एक सर्वो मोटर को नियंत्रित करना चाहते हैं तो आपको हार्डवेयर पीडब्लूएम का उपयोग करना होगा। तब भी आपको इमदादी लूप के लिए वास्तविक समय की प्रतिक्रिया सुनिश्चित करने में समस्या हो सकती है जो पीडब्लूएम आउटपुट में एनकोडर इनपुट को जोड़ता है।
एक स्थिर सर्वो लूप को नियमित दर (कम घबराना) पर एनकोडर को पढ़ने की जरूरत है, एक नियमित दर पर संशोधित पीडब्लूएम आउटपुट मान लिखें और इन दोनों के बीच विलंबता तय की जानी चाहिए (कम घबराना समग्र)। यदि आप ऐसा नहीं कर सकते हैं, तो आपको इसे लोड के तहत अस्थिर होने से बचाने के लिए अपनी मोटर को (नरम धुन) करना होगा। यह निम्न-स्तरीय समर्थन के बिना मल्टी-टास्किंग ऑपरेटिंग सिस्टम के साथ करना मुश्किल है।
यदि आपको हार्डवेयर पीडब्लूएम आउटपुट की तुलना में अधिक सर्वो लूप चलाने की आवश्यकता है, तो आपको शायद हार्ड-रीयल-टाइम प्रदर्शन सुनिश्चित करने के लिए उन्हें किसी अन्य डिवाइस पर लोड करने की आवश्यकता है, जो आपके रास्पबेरी पाई को सॉफ्ट रीयल-टाइम सुपरवाइज़र होने के लिए आरोपित करता है ।
एक विकल्प, Adafruit 16-Channel 12-bit PWM / सर्वो चालक - I²C इंटरफ़ेस - PCA9685 जैसा कुछ होगा जो आपको I²IN बस के लिए GPIO के कुछ पिनों के साथ 16 PWM आउटपुट को नियंत्रित करने की अनुमति देगा। इसके उपयोग के एक उदाहरण के लिए, रास्पबेरी पाई मंचों पर I exampleC 16 चैनल PWM / सर्वो ब्रेकआउट - वर्किंग पोस्ट देखें।
1. सुझाव के लिए dm76 के लिए धन्यवाद , हालांकि हीदर का कहना है कि RPIO.PWM अब नए पीआई मॉडल के लिए काम नहीं कर सकता है।
हां, रास्पबेरी पाई पर एक हार्डवेयर पीडब्लूएम आउटपुट है, जो P1-12 (GPIO18) से जुड़ा है। इसके अलावा, PWM आउटपुट को I PWC या SPI इंटरफ़ेस का उपयोग करके जोड़ा जा सकता है; कुछ लोगों को इसमें ( फोरम पोस्ट ) सफलता मिली है ।
आप PWM पिन को नियंत्रित करने के लिए WiringPi लाइब्रेरी का उपयोग कर सकते हैं ; आप पूरे पुस्तकालय को शामिल करने से बचने के लिए कोड को देख सकते हैं।
रास्पबेरी पाई किसी भी गंभीर सॉफ्टवेयर पीडब्लूएम के लिए उपयुक्त नहीं है क्योंकि लिनक्स एक वास्तविक समय ऑपरेटिंग सिस्टम नहीं है।
हाल के पीएस में दो हार्डवेयर पीडब्लूएम चैनल हैं। इसके अलावा हार्डवेयर पीडब्लूएम दालों को 40 पिन विस्तार हेडर से जुड़े सभी GPIO पर स्वतंत्र रूप से उत्पन्न किया जा सकता है।
व्यवहार में इसका मतलब है कि दो बेहद सटीक PWM चैनल हैं और अन्य सभी GPIO में Arduino style PWM (800 Hz, 0 off - 255 पूरी तरह से) हो सकते हैं।
जैसे इमोबलास्टर और मेरी पिगियो , आदि।
काफी वास्तविक समय में ओएस नहीं है, लेकिन रास्पबेरी पाई के लिए आरआईएससी ओएस सहकारी मल्टीटास्किंग है, इसलिए आप आसानी से एक एप्लिकेशन चला सकते हैं जिसमें 100% सीपीयू है ताकि आप अपने समय का बेहतर प्रबंधन कर सकें। बस कुछ और करने की उम्मीद न करें लेकिन आपका अपना कोड।
मुझे यह लाइब्रेरी ( पी-ब्लास्टर ) मिली है, जो दावा करती है कि "बेहद कुशल है: सीपीयू का उपयोग नहीं करता है और बहुत स्थिर परिणाम देता है।"
मैंने अभी तक इसका परीक्षण नहीं किया है, लेकिन जैसे ही मैं (शायद आज) अपडेट करूंगा