विषयसूची:

Arduino और एनालॉग जॉयस्टिक के साथ 28BYJ-48 स्टेपर मोटर का कोणीय स्थितीय नियंत्रण: 3 चरण
Arduino और एनालॉग जॉयस्टिक के साथ 28BYJ-48 स्टेपर मोटर का कोणीय स्थितीय नियंत्रण: 3 चरण

वीडियो: Arduino और एनालॉग जॉयस्टिक के साथ 28BYJ-48 स्टेपर मोटर का कोणीय स्थितीय नियंत्रण: 3 चरण

वीडियो: Arduino और एनालॉग जॉयस्टिक के साथ 28BYJ-48 स्टेपर मोटर का कोणीय स्थितीय नियंत्रण: 3 चरण
वीडियो: 28BYJ-48 Stepper Motor Control with Joystick Using Arduino 2024, जुलाई
Anonim
Arduino और एनालॉग जॉयस्टिक के साथ 28BYJ-48 स्टेपर मोटर का कोणीय स्थितीय नियंत्रण
Arduino और एनालॉग जॉयस्टिक के साथ 28BYJ-48 स्टेपर मोटर का कोणीय स्थितीय नियंत्रण

यह 28BYJ-48 स्टेपर मोटर के लिए एक नियंत्रण योजना है जिसे मैंने अपने अंतिम वर्ष के शोध प्रबंध परियोजना के हिस्से के रूप में उपयोग करने के लिए विकसित किया है। मैंने इसे पहले नहीं देखा है इसलिए सोचा कि मैंने जो खोजा है उसे अपलोड करूंगा। उम्मीद है कि यह वहां किसी और की मदद करेगा!

कोड मूल रूप से एक स्टेपर मोटर को एनालॉग जॉयस्टिक की कोणीय स्थिति को "कॉपी" करने की अनुमति देता है, अर्थात यदि आप जॉयस्टिक को आगे बढ़ाते हैं, तो मोटर "उत्तर" की ओर इशारा करता है। जॉयस्टिक को पश्चिम की ओर धकेलें, मोटर उसी दिशा में इंगित करने के लिए घूमती है।

मेरे कार्यान्वयन के लिए मुझे यह आवश्यक था कि यदि जॉयस्टिक को जाने दिया जाए, अर्थात उसकी कोई कोणीय स्थिति नहीं है, तो मोटर "घर" दिशा में वापस आ जाती है। घर की दिशा पूर्व की ओर है, और मोटर (या पट्टे पर जो भी सूचक / उपकरण आपने आउटपुट शाफ्ट से जोड़ा है!) को भी चालू होने पर इस दिशा का सामना करना पड़ रहा है।

आपूर्ति

Arduino Uno या समान

ब्रेडबोर्ड और जम्पर तारों का चयन (पुरुष से पुरुष, पुरुष से महिला)

5 वी बिजली की आपूर्ति

एनालॉग जॉयस्टिक मॉड्यूल (आदर्श रूप से एक क्षणिक पुश बटन सुविधा के साथ, यह "होम" स्थिति के आसान आराम के लिए बनाता है

28BYJ-48 स्टेपर मोटर और ULN2003 स्टेपर ड्राइवर

पेन, पेपर और ब्लू-टैक (या मोटर से अटैच करने के लिए कोई अन्य पॉइंटर डिवाइस!)

चरण 1: चरण 1: सेट अप करना

स्टेपर मोटर को स्टेपर ड्राइवर से कनेक्ट करें, और पिन को निम्नानुसार कनेक्ट करें:

IN1 - Arduino पिन 8

IN2 - Arduino पिन 9

IN3 - Arduino पिन 10

IN4 - Arduino पिन 11

अपने 5v बिजली की आपूर्ति को अपने ब्रेडबोर्ड पर आपूर्ति रेल से कनेक्ट करें, और ULN2003 5v इनपुट को आपूर्ति रेल से कनेक्ट करें। अपने Arduino पर ग्राउंड रेल को जमीन से कनेक्ट करें।

जॉयस्टिक के लिए, निम्नानुसार कनेक्ट करें:

स्विच पिन - Arduino पिन 2

X अक्ष - Arduino A0 (0 में एनालॉग)

Y अक्ष - Arduino A1

+5वी - अरुडिनो 5वी आउटपुट

जीएनडी - अरुडिनो जीएनडी

अंत में अपने ब्रेडबोर्ड के ग्राउंड को दूसरे Arduino GND पिन से कनेक्ट करें

चरण 2: चरण 2: कोड की व्याख्या करना

मैंने आपके लिए डाउनलोड करने और उपयोग करने के लिए पूर्ण Arduino कोड शामिल किया है। लेकिन मैं यहां प्रासंगिक भागों की व्याख्या करने की पूरी कोशिश करूंगा।

इस कोड के पीछे सिद्धांत यह है कि जॉयस्टिक द्वारा कब्जा किए गए स्थान को केंद्र में 0, 0 के साथ एक ग्राफ में विभाजित किया गया है। हालांकि जॉयस्टिक इनपुट केंद्र में (लगभग) 512 पर आराम करते हैं, इसलिए इन दो कार्यों को दूर करने के लिए एक्स और वाई अक्ष से पढ़े गए मान को "शून्य" करने के लिए उपयोग किया जाता है। आपके द्वारा उपयोग की जाने वाली बिजली आपूर्ति के आधार पर आपको ज़ीरोएक्स और ज़ीरोवाई फ़ंक्शन में मानों को बदलने की आवश्यकता हो सकती है ताकि आपका जॉयस्टिक आराम करते समय 0 की विश्वसनीय रीडिंग दे।

जब X, Y मान पढ़े जाते हैं, तो उन्हें पहले math.h लाइब्रेरी में atan2() फ़ंक्शन का उपयोग करके रेडियन में परिवर्तित किया जाता है। इस फ़ंक्शन को समझाना इस निर्देश के दायरे से बाहर है, लेकिन कृपया इसे देखें - यह ज्यामिति की एक सरल चाल है!

अंत में, हममें से उन लोगों के लिए जीवन को आसान बनाने के लिए जो रेड के बजाय डिग्री में काम करते थे, atan2() द्वारा गणना की गई रेड वैल्यू को डिग्री में बदल दिया जाता है।

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

अब कोड के मुख्य थोक पर! हम जॉयस्टिक X को पढ़कर शुरू करते हैं, Y निर्देशांक 10ms की देरी से दो बार अलग हो जाते हैं और फिर जाँच करते हैं कि क्या वे समान हैं - मैंने पाया कि जॉयस्टिक कभी-कभी छिटपुट रीडिंग का उत्पादन करता है, और यह थोड़ी सी देरी इनके आधार पर मोटर मोड़ को रोकने के लिए पर्याप्त थी।. यह भी काफी कम देरी है कि यह जानबूझकर इनपुट में हस्तक्षेप नहीं करता है।

शेष कोड बल्कि आत्म व्याख्यात्मक है और मैंने इसे दस्तावेज करने के लिए अपनी पूरी कोशिश की है; IF स्टेटमेंट की एक श्रृंखला वर्तमान जॉयस्टिक कोण की तुलना मोटर कोण से करती है, और मोटर को उस कोण पर ले जाती है। २८बीवाईजे-४८ में ५.६८९ कदम प्रति डिग्री है, इसलिए हम आवश्यक गति को इस विषम संख्या से गुणा करते हैं!

कोड का एक हिस्सा जिसके लिए सबसे अधिक व्याख्या की आवश्यकता होती है, वह है जिसे मैंने "रैपअराउंड केस" कहा है। यहां तक कि जॉयस्टिक और मोटर उदा. +175°, और जॉयस्टिक बाद में -175° (जॉयस्टिक पर केवल 10° की गति, पश्चिम के ठीक उत्तर से पश्चिम के दक्षिण तक) में चला गया, मोटर 350° से गलत दिशा में चली जाएगी! इसके लिए विशेष मामला लिखा गया था।

रैपअराउंड केस यह जाँचने से शुरू होता है कि मोटर और जॉयस्टिक में विपरीत संकेत हैं, यानी मोटर सकारात्मक है और जॉयस्टिक नकारात्मक है, या इसके विपरीत। यह यह भी जाँचता है कि जॉयस्टिक और मोटर के निरपेक्ष (अर्थात धनात्मक मान) का योग 180° से ऊपर है।

यदि ये दोनों कथन सत्य हैं, तो फ़ंक्शन यह जांचता है कि क्या मोटर को दक्षिणावर्त (मोटर मान ऋणात्मक है) या वामावर्त (यदि मोटर मान धनात्मक है) घूमने की आवश्यकता है।

मोटर कोण और जॉयस्टिक कोण के निरपेक्ष मान को कुल मिलाकर 360° से घटाया जाता है ताकि चलने की दूरी निर्धारित की जा सके। अंत में, मोटर कोण (जो अब जॉयस्टिक कोण को दर्शाता है) को इस प्रकार अद्यतन किया जाता है।

चरण 3: समाप्त

तो, बस इतना करना बाकी है कि कोड को अपने Arduino पर अपलोड करें और इसे चलाएं! प्रोजेक्ट कैसे काम करता है, इसके बारे में अच्छे विचार के लिए ऊपर दिया गया वीडियो देखें। यह कैमरा जिम्बल, रोबोटिक आर्म्स और कई अन्य अनुप्रयोगों के लिए उपयोगी होगा!

यदि आप कोड का उपयोग करते हैं, तो कृपया मुझे बताएं, और यदि आपको कोई ऐसा स्थान दिखाई देता है जहां कोड में सुधार किया जा सकता है, तो मुझे आपकी प्रतिक्रिया सुनना अच्छा लगेगा।

सिफारिश की: