मैं एक RC सर्वो को कैसे नियंत्रित कर सकता हूं?


26

मैं एक छोटे RC सर्वो (5 V, 500 mA) को GPIO पिन से पायथन के माध्यम से नियंत्रित करना चाहता हूं ।

हार्डवेयर

  • आवश्यक विद्युत कनेक्शन क्या हैं?
  • क्या मैं रास्पबेरी पाई के लिए कई सर्वो कनेक्ट कर सकता हूं?
  • क्या कोई वर्तमान सीमाएं हैं? क्या मुझे ट्रांजिस्टर के साथ आउटपुट पिन को बफर करने की आवश्यकता है?
  • क्या मैं रास्पबेरी पाई से सीधे सर्वो को पावर कर सकता हूं, या मुझे बाहरी बिजली की आपूर्ति का उपयोग करना चाहिए? क्या मुझे सर्वो की झटकेदार शक्ति आकर्षित करने के लिए संधारित्र की आवश्यकता है?

सॉफ्टवेयर

  • मुझे किस सॉफ्टवेयर / पायथन कोड की आवश्यकता है? मुझे पता है कि मुझे 20 एमएस दाल की आवश्यकता है, मैं इसे कैसे प्राप्त कर सकता हूं?
  • इस तरह से रास्पबेरी पाई का उपयोग करने से मैं किस तरह का सीपीयू लोड कर सकता हूं?

यह एक ऐसा ही सवाल है जो आपको आरंभ करने में मदद कर सकता है: raspberrypi.stackexchange.com/questions/27/…
एंड्रयू लार्सन

जवाबों:


9

आवश्यक विद्युत कनेक्शन आपके पास मौजूद सर्वो पर निर्भर करता है। GPIO 3.3 वी प्रदान करता है और 16 एमए करने के लिए है, जो अपने इमदादी के लिए अपर्याप्त है, तो आप एक ट्रांजिस्टर के साथ ऐसा करने से बफ़र की आवश्यकता होगी।

कर रहे हैं विस्तार हैडर पर 8 GPIO पिंस , हालांकि अन्य पिंस में कुल 17 GPIO पिन करने के लिए देने के लिए पुन: कॉन्फ़िगर किया जा सकता है। यदि आपको अधिक आवश्यकता है, तो आपको किसी प्रकार का मल्टीप्लेक्स जोड़ना होगा।

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

एंड्रयू ने आपको कुछ सॉफ्टवेयर की ओर इशारा किया है। सीपीयू लोड इस बात पर निर्भर करेगा कि आप क्या कर रहे हैं, लेकिन GPIO खुद कोई लोड नहीं जोड़ता है।


2
दूसरी तरफ - 20 एमएस एक लंबा समय है, यहां तक ​​कि रास्पबेरी पाई के सीपीयू शर्तों के लिए भी। मैं आरसी सर्वो के लिए समय की शुद्धता के बारे में बहुत अधिक चिंतित नहीं होगा।

2
@ टिबोर: 20ms सर्वो दालों की अवधि है, न कि चौड़ाई en.wikipedia.org/wiki/Servo_control#Pulse_duration । और रिज़ॉल्यूशन की आवश्यकता इससे बहुत खराब है - रिज़ॉल्यूशन के 8 बिट प्राप्त करने के लिए, आपको 2 मिलीसेकंड पर 256 चरणों की आवश्यकता है , इसलिए ~ 8us।
मार्टिन थॉम्पसन

8

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

यदि आप एक्सनोमई (लिनक्स के लिए रियलटाइम पैच) चला रहे हैं, तो आप पूरी तरह से परिचित लिनक्स सिस्टम चला सकते हैं, लेकिन अतिरिक्त रियलटाइम क्षमताओं के साथ।

मैंने रास्पबेरी पाई से सर्वो को नियंत्रित करने के उद्देश्य से एक छोटी सी लाइब्रेरी लिखी है। मैंने इसके साथ एक ही समय में 3 सर्वोस को नियंत्रित करने की कोशिश की है, लेकिन वास्तव में कोई कारण नहीं है कि इसे अधिक के साथ काम नहीं करना चाहिए।

आप यहाँ मेरी छोटी लाइब्रेरी पा सकते हैं: https://github.com/simonfi/pi-servo एक पायथन रैपर जोड़ना इसके लिए तुच्छ होना चाहिए। रास्पबेरी पाई के लिए एक्सनोमई यहां पाया जा सकता है: http://powet.eu/2012/07/25/raspberry-pi-xenomai/

तीन सर्वो के लिए आवश्यक संकेतों को उत्पन्न करना मूल रूप से सीपीयू की एक नगण्य मात्रा का उपभोग करना है। मैंने अभी तक तीन से अधिक के साथ परीक्षण नहीं किया है।


5

यदि आपको लिनक्स कर्नेल ड्राइवर का उपयोग करने में कोई आपत्ति नहीं है, तो वहाँ सर्विसबस्टर है जो एक चर उपकरण के रूप में सर्वो को उजागर करता है।

https://github.com/richardghirst/PiBits

मैंने एक नए संस्करण को कांटा है जो सर्वप्रयोग के लिए सभी gpio पिनों का उपभोग नहीं करता है। मैं वर्तमान में एक छोटे इमदादी चालित रोबोट का उपयोग कर रहा हूं, जिसे मैंने अपने रोबोट क्लब के लिए बनाया और इसे नियंत्रित करने के लिए IPGamePad का उपयोग करके डेमो किया है।

https://github.com/jronald/PiBits

इसके अलावा, आप वास्तव में RPI के माध्यम से उस सर्वो की शक्ति नहीं चाहते हैं, बल्कि एक अलग विद्युत आपूर्ति का उपयोग करते हैं। बेशक आपको उस मैदान को एक साथ जोड़ने की जरूरत है। चूंकि आरपीआई आउटपुट इमदादी के लिए कोई वोल्टेज शिफ्टिंग की आवश्यकता नहीं है, लेकिन आप चीजों को गलत तरीके से तार नहीं करने के लिए बहुत सावधान रहना चाहेंगे।


fyi - रिकार्टघ्रिस्ट रेपो का रख-रखाव किया गया है जबकि क्रॉनिकल कांटा पुराना और टूटा हुआ लगता है। इसके अलावा, मैं पढ़ने की सलाह देता हूं कि कैसे सभी को अनदेखा करें, लेकिन पहले दो इमदादी नियंत्रण और इंस्टॉलेशन सर्वोबलास्टर
cwd

3

सर्वो, आम तौर पर पीडब्लूएम संकेतों का उपयोग करके नियंत्रित किया जाता है; आपको GPM को PWM आउटपुट के रूप में संदर्भित करना चाहिए ।

चिप पर PWM समर्थन है, इसलिए हमें भविष्य में इसका उपयोग करने में सक्षम होना चाहिए। असल में, सभी सॉफ्टवेयर हार्डवेयर को एक निश्चित आवृत्ति पर दालों का उत्पादन करने के लिए कहते हैं। I2C पर बाहरी पीडब्लूएम नियंत्रकों का उपयोग करके कुछ लोगों को सफलता मिली है।


3

रास्पबेरी पाई के लिए उपलब्ध एक विस्तार बोर्ड है जिसे गर्टबोर्ड कहा जाता है जिसका उपयोग सर्वो और अन्य भारों को नियंत्रित करने के लिए किया जाता है जो कि पीआई स्वयं ड्राइव नहीं कर सकते हैं।


मुझे यह भी जोड़ना चाहिए कि इस उत्पाद की लोकप्रियता के कारण मेरा मानना ​​है कि यह ज्यादातर साइटों पर बेचा जाता है जो रास्पबेरी पाई और सहायक उपकरण प्रदान करते हैं।
ब्रैंडन बैली

3

इस सवाल के पूछे जाने के बाद से पाई पर चीजों को कैसे करना है, इसका ज्ञान काफी सुधार हुआ है।

बाहरी हार्डवेयर का उपयोग किए बिना पाई के gpios पर हार्डवेयर टाइम पीडब्लूएम / सर्वो दालें उत्पन्न करने के कम से कम चार तरीके हैं।

ऐसा करने के लिए कर्नेल मॉड्यूल का उपयोग बहुत अधिक किया गया है, निम्न उपयोगकर्ता समाधान उपलब्ध हैं।

  • मेरा अपना पिगियो किसी भी gpios 0-31 (सी, पायथन, सॉकेट, पाइप) पर स्वतंत्र रूप से सर्वो और सामान्य पीडब्लूएम दालों का उत्पादन करेगा।
  • Servoblaster 21 gpios (पाइप) पर स्वतंत्र रूप से सर्वो और सामान्य PWM दालों का उत्पादन करेगा।
  • RPIO किसी भी gpios 0-31 (पायथन) पर स्वतंत्र रूप से सर्वो और सामान्य पीडब्लूएम दालों का उत्पादन करेगा।
  • सर्विस ब्लास्टर (पाइप) से प्राप्त पाई-ब्लास्टर

2

यदि आप एक इमदादी को सही ढंग से नियंत्रित करने के लिए लिनक्स को चलाने के लिए पर्याप्त रूप से अच्छी तरह से आउटपुट दे सकते हैं तो मुझे आश्चर्य होगा।

नाड़ी को 2 मिलीसेकेंड की सीमा पर नियंत्रित किया जाना है। यहां तक ​​कि अगर शेड्यूलर टिक का रिज़ॉल्यूशन 100us है (जो इसे आगे बढ़ा रहा है - यह आमतौर पर 10ms है), तो यह केवल 20 कदम है जो आप हल कर सकते हैं। और यह कार्य स्विचिंग द्वारा पेश किए गए घबराहट पर विचार किए बिना है।

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


2

मुझे लगता है कि GPIO पोर्ट से सीधे सर्वो चलाने की कोशिश करना मुश्किल होगा और यदि संभव हो तो बहुत अधिक सीपीयू ओवरहेड का कारण बन सकता है। मैं एक यूएसबी सर्वो नियंत्रक का उपयोग करता हूं और यह बहुत अच्छा काम करता है और लगभग कोई सीपीयू का उपयोग नहीं करता है, हालांकि यह स्थापित करने के लिए थोड़ा मुश्किल है। मेरे पास 24 चैनल हैं, लेकिन वे 6 चैनल संस्करण बनाते हैं। मैंने अन्य विक्रेताओं के 2 और 4 चैनल नियंत्रकों को भी देखा है जो धारावाहिक का उपयोग करते हैं जो यूएसबी की तुलना में आसान और सस्ता होगा यदि आपको इतने सारे सर्वो को नियंत्रित करने की आवश्यकता नहीं है।


0

एक पूर्ण कार्यशील GPIO वेब सेवा है जिसके लिए आप अपने स्वयं के प्लगइन्स लिख सकते हैं। यह किसी भी संख्या में सर्वो को नियंत्रित करने के लिए पहले से ही समर्थन प्रतीत होता है। छवियों के एक समूह के साथ-साथ बोर्ड लेआउट के लिए उनकी "सामग्री" निर्देशिका देखें।

https://bitbucket.org/PaulTechGuy/raspberrypi.dotnet.gpioweb

सी में # मोनो चल रहा है लगता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.