विषयसूची:

पैन-टिल्ट मल्टी सर्वो नियंत्रण: 11 चरण (चित्रों के साथ)
पैन-टिल्ट मल्टी सर्वो नियंत्रण: 11 चरण (चित्रों के साथ)

वीडियो: पैन-टिल्ट मल्टी सर्वो नियंत्रण: 11 चरण (चित्रों के साथ)

वीडियो: पैन-टिल्ट मल्टी सर्वो नियंत्रण: 11 चरण (चित्रों के साथ)
वीडियो: एक ही स्प्रे से भिंडी के सभी कीट और रोग खत्म | Bhindi ki kheti kaise kare | Lady finger farming | 2024, नवंबर
Anonim
पैन-टिल्ट मल्टी सर्वो कंट्रोल
पैन-टिल्ट मल्टी सर्वो कंट्रोल

इस ट्यूटोरियल में, हम यह पता लगाएंगे कि रास्पबेरी पाई पर पायथन का उपयोग करके कई सर्वो को कैसे नियंत्रित किया जाए। हमारा लक्ष्य एक कैमरा (एक PiCam) की स्थिति के लिए एक PAN/TILT तंत्र होगा।

यहां आप देख सकते हैं कि हमारी अंतिम परियोजना कैसे काम करेगी:

कंट्रोल सर्वो कंट्रोल लूप टेस्ट:

छवि
छवि

चरण 1: BoM - सामग्री का बिल

मुख्य भाग:

  1. रास्पबेरी पाई V3 - यूएस$ 32.00
  2. 5 मेगापिक्सेल 1080p सेंसर OV5647 मिनी कैमरा वीडियो मॉड्यूल - US$ 13.00
  3. TowerPro SG90 9G 180 डिग्री माइक्रो सर्वो (2 X) - US$ 4.00
  4. मिनी पैन/टिल्ट कैमरा प्लेटफॉर्म एंटी-वाइब्रेशन कैमरा माउंट w/2 सर्वो (*) - US$ 8.00
  5. रोकनेवाला 1K ओम (2X) - वैकल्पिक
  6. विविध: धातु के पुर्जे, बैंड, आदि (यदि आप अपना पैन/झुकाव तंत्र का निर्माण करेंगे)

(*) आप सर्वो के साथ एक पूर्ण पैन/टिल्ट प्लेटफॉर्म खरीद सकते हैं या अपना खुद का निर्माण कर सकते हैं।

चरण 2: पीडब्लूएम कैसे काम करता है

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

छवि
छवि

उदाहरण के लिए हम एलईडी चमक को नियंत्रित करने के लिए इस "औसत" वोल्टेज स्तर का उपयोग कर सकते हैं:

छवि
छवि

ध्यान दें कि यहां जो मायने रखता है वह आवृत्ति ही नहीं है, बल्कि "ड्यूटी साइकिल" है, जो उस समय के बीच का संबंध है जब पल्स "उच्च" तरंग अवधि से विभाजित होता है। उदाहरण के लिए, मान लीजिए कि हम अपने रास्पबेरी पाई GPIO में से एक पर 50Hz पल्स फ़्रीक्वेंसी उत्पन्न करेंगे। अवधि (पी) आवृत्ति के विपरीत या 20ms (1/f) होगी। यदि हम चाहते हैं कि हमारी एलईडी "आधा" उज्ज्वल हो, तो हमारे पास 50% का कर्तव्य चक्र होना चाहिए, जिसका अर्थ है "पल्स" जो 10ms के लिए "उच्च" होगा।

यह सिद्धांत हमारे लिए बहुत महत्वपूर्ण होगा, हमारी सर्वो स्थिति को नियंत्रित करने के लिए, एक बार "ड्यूटी साइकिल" सर्वो स्थिति को नीचे दिखाए अनुसार परिभाषित करेगा:

इमदादी

चरण 3: Hw. को स्थापित करना

Hw को स्थापित करना
Hw को स्थापित करना
Hw को स्थापित करना
Hw को स्थापित करना

सर्वो को बाहरी 5V आपूर्ति से जोड़ा जाएगा, उनका डेटा पिन (मेरे मामले में, उनकी पीली वायरिंग) नीचे रास्पबेरी पाई GPIO से कनेक्ट होगा:

  • GPIO 17 ==> सर्वो झुकाएँ
  • GPIO 27 ==> पैन सर्वो

जीएनडी को एक साथ जोड़ना न भूलें ==> रास्पबेरी पाई - सर्वो - बाहरी बिजली की आपूर्ति)

आपके पास एक विकल्प के रूप में, रास्पबेरी पाई GPIO और सर्वर डेटा इनपुट पिन के बीच 1K ओम का एक रोकनेवाला हो सकता है। यह सर्वो समस्या के मामले में आपके आरपीआई की रक्षा करेगा।

चरण 4: सर्वो अंशांकन

सर्वो अंशांकन
सर्वो अंशांकन
सर्वो अंशांकन
सर्वो अंशांकन
सर्वो अंशांकन
सर्वो अंशांकन

ऐसा करने वाली पहली बात यह है कि आपके सर्वो की मुख्य विशेषताओं की पुष्टि करना है। मेरे मामले में, मैं एक Power Pro SG90 का उपयोग कर रहा हूँ।

इसकी डेटाशीट से, हम इस पर विचार कर सकते हैं:

  • रेंज: 180o
  • बिजली की आपूर्ति: 4.8V (USB बिजली की आपूर्ति के रूप में बाहरी 5VDC ठीक काम करता है)
  • कार्य आवृत्ति: 50 हर्ट्ज (अवधि: 20 एमएस)
  • पल्स चौड़ाई: 1ms से 2ms. तक

सिद्धांत रूप में, सर्वो अपने पर होगा

  • प्रारंभिक स्थिति (0 डिग्री) जब इसके डेटा टर्मिनल पर 1ms का पल्स लगाया जाता है
  • तटस्थ स्थिति (९० डिग्री) जब उसके डेटा टर्मिनल पर १.५ ms का पल्स लगाया जाता है
  • अंतिम स्थिति (180 डिग्री) जब उसके डेटा टर्मिनल पर 2 ms का पल्स लगाया जाता है

पायथन का उपयोग करके एक सर्वो स्थिति को प्रोग्राम करने के लिए उपरोक्त पदों के लिए संवाददाता "ड्यूटी साइकिल" को जानना बहुत महत्वपूर्ण होगा, आइए कुछ गणना करें:

  • प्रारंभिक स्थिति ==> (0 डिग्री) पल्स चौड़ाई ==> 1ms ==> ड्यूटी साइकिल = 1ms/20ms ==> 2.0%
  • तटस्थ स्थिति (९० डिग्री) पल्स चौड़ाई १.५ ms ==> ड्यूटी साइकिल = १.५ms/20ms ==> ७.५%
  • अंतिम स्थिति (180 डिग्री) पल्स चौड़ाई 2 एमएस ==> ड्यूटी साइकिल = 2ms/20ms ==> 10%

तो कर्तव्य चक्र २ से १०% की सीमा पर भिन्न होना चाहिए।

आइए व्यक्तिगत रूप से सर्वो का परीक्षण करें। उसके लिए, अपना रास्पबेरी टर्मिनल खोलें और अपने पायथन 3 शेल संपादक को "सुडो" के रूप में लॉन्च करें (क्योंकि आपको जीपीआईओ से निपटने के लिए "सुपर उपयोगकर्ता" होना चाहिए):

सुडो पायथन3

पायथन शेल पर

>>

RPI. GPIO मॉड्यूल आयात करें और इसे GPIO कहें:

RPI. GPIO को GPIO के रूप में आयात करें

परिभाषित करें कि आप किन पिन-नंबरिंग योजनाओं का उपयोग करना चाहते हैं (बीसीएम या बोर्ड)। मैंने यह परीक्षण BOARD के साथ किया था, इसलिए मैंने जिन पिनों का उपयोग किया वे भौतिक पिन थे (GPIO १७ = पिन ११ और GPIO २७ पिन १३)। मेरे लिए उन्हें पहचानना और परीक्षण के दौरान गलती नहीं करना आसान था (अंतिम कार्यक्रम में मैं बीसीएम का उपयोग करूंगा)। अपनी पसंद में से एक चुनें:

GPIO.सेटमोड (GPIO. BOARD)

आप जिस सर्वो पिन का उपयोग कर रहे हैं उसे परिभाषित करें:

टिल्टपिन = 11

यदि इसके बजाय, आपने BCM योजना का उपयोग किया है, तो अंतिम 2 आदेशों को इसके द्वारा प्रतिस्थापित किया जाना चाहिए:

GPIO.सेटमोड (GPIO. BCM)

टिल्टपिन = 17

अब, हमें यह निर्दिष्ट करना होगा कि यह पिन एक "आउटपुट" होगा

GPIO.setup (टिल्टपिन, GPIO. OUT)

और, इस पिन पर उत्पन्न आवृत्ति क्या होगी, कि हमारे सर्वो के लिए 50Hz होगा:

झुकाव = GPIO. PWM (टिल्टपिन, 50)

अब, प्रारंभिक कर्तव्य चक्र के साथ पिन पर PWM सिग्नल उत्पन्न करना शुरू करते हैं (हम इसे "0" रखेंगे):

झुकाव = प्रारंभ (0)

अब, आप अपने सर्वो की गति को देखते हुए विभिन्न कर्तव्य चक्र मान दर्ज कर सकते हैं। आइए 2% से शुरू करें और देखें कि क्या होता है (हम देखते हैं कि सर्वो "शून्य स्थिति" पर जाता है):

झुकाव। चेंज ड्यूटी साइकिल (2)

मेरे मामले में, सर्वो शून्य स्थिति में चला गया, लेकिन जब मैंने कर्तव्य चक्र को 3% में बदल दिया तो मैंने देखा कि सर्वो उसी स्थिति में रहा, 3% से अधिक कर्तव्य चक्र के साथ चलना शुरू कर दिया। तो, 3% मेरी प्रारंभिक स्थिति (ओ डिग्री) है। 10% के साथ भी ऐसा ही हुआ, मेरा सर्वो इस मान से ऊपर चला गया, 13% पर इसका अंत शीर्ष पर रहा। तो इस विशेष सर्वो के लिए, परिणाम था:

  • 0 डिग्री ==> 3% का कर्तव्य चक्र
  • 90 डिग्री ==> 8% का कर्तव्य चक्र
  • १८० डिग्री ==> १३% का कर्तव्य चक्र

अपने परीक्षण समाप्त करने के बाद, आपको पीडब्लूएम को रोकना होगा और जीपीआईओ को साफ करना होगा:

झुकाव = रुको ()

जीपीआईओ.क्लीनअप ()

उपरोक्त टर्मिनल प्रिंट स्क्रीन मेरे दोनों सर्वो के लिए परिणाम दिखाती है (जिसके समान परिणाम हैं)। आपका दायरा अलग हो सकता है।

चरण 5: एक पायथन स्क्रिप्ट बनाना

एक पायथन स्क्रिप्ट बनाना
एक पायथन स्क्रिप्ट बनाना

हमारे सर्वो को भेजे जाने वाले PWM कमांड "ड्यूटी साइकल" में हैं जैसा कि हमने अंतिम चरण में देखा था। लेकिन आमतौर पर, हमें सर्वो को नियंत्रित करने के लिए एक पैरामीटर के रूप में डिग्री में "कोण" का उपयोग करना चाहिए। इसलिए, हमें "कोण" को परिवर्तित करना चाहिए जो कि हमारे पीआई द्वारा समझा जा सकने वाले कर्तव्य चक्र में हमारे लिए एक अधिक प्राकृतिक माप है।

यह कैसे करना है? बहुत सरल! हम जानते हैं कि कर्तव्य चक्र सीमा 3% से 13% तक जाती है और यह कोणों के बराबर है जो 0 से 180 डिग्री तक होगी। साथ ही, हम जानते हैं कि वे विविधताएं रैखिक हैं, इसलिए हम ऊपर दिखाए गए अनुसार आनुपातिक स्कीमा बना सकते हैं। इसलिए, एक कोण दिया गया है, हमारे पास एक संवाददाता कर्तव्य चक्र हो सकता है:

कर्तव्यचक्र = कोण/18 + 3

यह सूत्र रखें। हम इसे अगले कोड में इस्तेमाल करेंगे।

आइए परीक्षणों को निष्पादित करने के लिए एक पायथन स्क्रिप्ट बनाएं। मूल रूप से, हम वही दोहराएंगे जो हमने पहले पायथन शेल पर किया था:

समय से आयात नींद

RPIO. GPIO को GPIO GPIO.setmode(GPIO. BCM) के रूप में आयात करें। + 3. pwm. ChangeDutyCycle(ड्यूटीसाइकल) स्लीप (0.3) pwm.stop() अगर _name_ == '_main_': इंपोर्ट sys सर्वो = int(sys.argv[1]) GPIO.setup(servo, GPIO. OUT) setServoAngle (सर्वो, int(sys.argv[2])) GPIO.cleanup()

उपरोक्त कोड का मूल फ़ंक्शन setServoAngle (सर्वो, कोण) है। यह फ़ंक्शन तर्कों के रूप में प्राप्त करता है, एक सर्वो GPIO संख्या, और एक कोण मान जहाँ सर्वो को तैनात किया जाना चाहिए। एक बार जब इस फ़ंक्शन का इनपुट "कोण" होता है, तो हमें इसे पहले विकसित किए गए सूत्र का उपयोग करके प्रतिशत में कर्तव्य चक्र में परिवर्तित करना होगा।

जब स्क्रिप्ट निष्पादित की जाती है, तो आपको पैरामीटर, सर्वो GPIO और कोण के रूप में दर्ज करना होगा।

उदाहरण के लिए:

sudo python3 angleServoCtrl.py 17 45

उपरोक्त आदेश GPIO 17 से जुड़े सर्वो को "ऊंचाई" में 45 डिग्री के साथ स्थिति देगा। पैन सर्वो नियंत्रण ("अज़ीमुथ" में 45 डिग्री की स्थिति) के लिए एक समान कमांड का उपयोग किया जा सकता है:

sudo python angleServoCtrl.py 27 45

फ़ाइल angleServoCtrl.py मेरे GitHub से डाउनलोड की जा सकती है

चरण 6: पैन-टिल्ट मैकेनिज्म

पैन-टिल्ट मैकेनिज्म
पैन-टिल्ट मैकेनिज्म

"पैन" सर्वो हमारे कैमरे ("अज़ीमुथ कोण") को "क्षैतिज रूप से" स्थानांतरित करेगा और हमारा "झुकाव" सर्वो इसे "लंबवत" (ऊंचाई कोण) ले जाएगा।

नीचे दी गई तस्वीर दिखाती है कि पैन/झुकाव तंत्र कैसे काम करता है:

छवि
छवि

हमारे विकास के दौरान हम "चरम" पर नहीं जाएंगे और हम अपने पैन/झुकाव तंत्र का उपयोग केवल 30 से 150 डिग्री तक करेंगे। यह रेंज कैमरे के साथ इस्तेमाल करने के लिए काफी होगी।

चरण 7: पैन-टिल्ट मैकेनिज्म - मैकेनिकल कंस्ट्रक्शन

पैन-टिल्ट मैकेनिज्म - मैकेनिकल कंस्ट्रक्शन
पैन-टिल्ट मैकेनिज्म - मैकेनिकल कंस्ट्रक्शन
पैन-टिल्ट मैकेनिज्म - मैकेनिकल कंस्ट्रक्शन
पैन-टिल्ट मैकेनिज्म - मैकेनिकल कंस्ट्रक्शन
पैन-टिल्ट मैकेनिज्म - मैकेनिकल कंस्ट्रक्शन
पैन-टिल्ट मैकेनिज्म - मैकेनिकल कंस्ट्रक्शन

आइए अब, हमारे 2 सर्वो को पैन/टिल्ट मैकेनिज्म के रूप में असेंबली करें। आप यहां 2 काम कर सकते हैं। एक पैन-टिल्ट प्लेटफ़ॉर्म तंत्र खरीदें जैसा कि अंतिम चरण में दिखाया गया है या अपनी आवश्यकताओं के अनुसार अपना स्वयं का निर्माण करें।

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

चरण 8: विद्युत पैन/झुकाव विधानसभा

विद्युत पैन/झुकाव विधानसभा
विद्युत पैन/झुकाव विधानसभा
विद्युत पैन/झुकाव विधानसभा
विद्युत पैन/झुकाव विधानसभा
विद्युत पैन / झुकाव विधानसभा
विद्युत पैन / झुकाव विधानसभा
विद्युत पैन / झुकाव विधानसभा
विद्युत पैन / झुकाव विधानसभा

एक बार जब आप अपना पैन/झुकाव तंत्र इकट्ठा कर लेते हैं, तो पूर्ण विद्युत कनेक्शन के लिए तस्वीरों का पालन करें।

  1. अपना पीआई बंद करें।
  2. सभी विद्युत कनेक्शन करें।
  3. इसे डबल चेक करें।
  4. पहले अपने पाई को चालू करें।
  5. यदि सब कुछ ठीक है, तो अपने सर्वो को शक्ति दें।

हम इस ट्यूटोरियल में यह नहीं जानेंगे कि कैमरा कैसे सेट-अप किया जाता है, यह अगले ट्यूटोरियल में समझाया जाएगा।

चरण 9: पायथन लिपि

आइए एक साथ दोनों सर्वो को नियंत्रित करने के लिए एक पायथन स्क्रिप्ट बनाएं:

समय से आयात नींद

RPIO. GPIO को GPIO के रूप में आयात करें।) # धूसर ==> PAN def setServoAngle(servo, angle): मुखर कोण>=30 और कोण 90 (मध्य बिंदु) ==> 150 setServoAngle(झुकाव, int(sys.argv[2])) # 30 ==> ९० (मध्य बिंदु) ==> १५० जीपीआईओ.क्लीनअप ()

जब स्क्रिप्ट निष्पादित की जाती है, तो आपको पैरामीटर, पैन कोण और झुकाव कोण के रूप में दर्ज करना होगा। उदाहरण के लिए:

sudo python3 सर्वोCtrl.py 45 120

उपरोक्त आदेश पैन/झुकाव तंत्र को "अज़ीमुथ" (पैन कोण) में 45 डिग्री और "ऊंचाई" (झुकाव कोण) के 120 डिग्री के साथ स्थिति देगा। ध्यान दें कि यदि कोई पैरामीटर दर्ज नहीं किया गया है, तो डिफ़ॉल्ट 90 डिग्री तक पैन और टिल्ट एंगल दोनों होंगे।

नीचे आप कुछ परीक्षण देख सकते हैं:

छवि
छवि

SeroCtrl.py फ़ाइल मेरे GitHub से डाउनलोड की जा सकती है।

चरण 10: सर्वर का लूप टेस्ट

आइए अब सर्वो की पूरी श्रृंखला का स्वचालित रूप से परीक्षण करने के लिए एक पायथन स्क्रिप्ट बनाएं:

समय से आयात नींद

RPIO. GPIO को GPIO के रूप में आयात करें।) # धूसर ==> PAN def setServoAngle(servo, angle): मुखर कोण>=30 और कोण <= 150 pwm = GPIO. PWM (सर्वो, 50) pwm.start(8) कर्तव्य साइकिल = कोण / 18. + 3. pwm. ChangeDutyCycle(ड्यूटीसाइकल) स्लीप (0.3) pwm.stop() अगर _name_ == '_main_': i रेंज में (30, 160, 15): setServoAngle(pan, i) setServoAngle(tilt, i) for i in in रेंज (150, 30, -15): setServoAngle(pan, i) setServoAngle(tilt, i) setServoAngle(pan, 100) setServoAngle(tilt, 90) GPIO.cleanup()

कार्यक्रम दोनों कोणों में स्वचालित रूप से 30 से 150 डिग्री के लूप को निष्पादित करेगा।

परिणाम के नीचे:

जैसा कि पहले बताया गया है, मैंने केवल पीडब्लूएम सिद्धांत को स्पष्ट करने के लिए एक आस्टसीलस्कप को जोड़ा।

छवि
छवि

उपरोक्त कोड, SeroTest.py को मेरे GitHub से डाउनलोड किया जा सकता है।

चरण 11: निष्कर्ष

निष्कर्ष
निष्कर्ष

हमेशा की तरह, मुझे आशा है कि यह परियोजना दूसरों को इलेक्ट्रॉनिक्स की रोमांचक दुनिया में अपना रास्ता खोजने में मदद कर सकती है!

विवरण और अंतिम कोड के लिए, कृपया मेरे गिटहब डिपॉजिटरी पर जाएं: आरपीआई-पैन-टिल्ट-सर्वो-कंट्रोल

अधिक परियोजनाओं के लिए, कृपया मेरे ब्लॉग पर जाएँ: MJRoBot.org

मेरे अगले ट्यूटोरियल की एक झलक के नीचे:

छवि
छवि

दुनिया के दक्षिण से Saludos!

मेरे अगले निर्देश में मिलते हैं!

शुक्रिया, मार्सेलो

सिफारिश की: