विषयसूची:
- आपूर्ति
- चरण 1: पुस्तकालय कार्य
- चरण 2: स्पीडस्टेपरप्लॉट उदाहरण बिना मोटर के चलाना
- चरण 3: बिना मोटर के स्पीडस्टेपरप्रोफाइल उदाहरण चलाना
- चरण 4: बिना मोटर के स्पीडस्टेपरसेटअप उदाहरण चलाना
- चरण 5: विलंबता
- चरण 6: स्टेपर मोटर और स्पार्कफन रेडबोर्ड टर्बो के साथ स्पीडस्टेपरसेटअप चलाना
वीडियो: स्टेपर स्पीड कंट्रोल मेनू Arduino के लिए प्रेरित: 6 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:19
यह स्पीडस्टेपर लाइब्रेरी स्टेपर मोटर की गति नियंत्रण की अनुमति देने के लिए एक्सेलस्टेपर लाइब्रेरी का पुनर्लेखन है। स्पीडस्टेपर लाइब्रेरी आपको सेट मोटर गति को बदलने देती है और फिर एक्सेलस्टेपर लाइब्रेरी के समान एल्गोरिदम का उपयोग करके नई सेट गति को तेज/घटती है। स्पीडस्टेपर लाइब्रेरी आपको प्लस और माइनस लिमिट और 'होम' पोजीशन सेट करने की भी अनुमति देती है। होम पोजीशन पर लौटने के लिए एक गोहोम कमांड है।
सीमाएं: स्पीडस्टेपर लाइब्रेरी केवल दिशा और चरण आउटपुट चलाती है और इसलिए वास्तव में स्टेपर मोटर को चलाने के लिए इसे ईज़ी ड्राइवर जैसे मोटर ड्राइवर से कनेक्ट करने की आवश्यकता होती है। AccelStepper लाइब्रेरी अधिक ड्राइविंग विकल्प प्रदान करती है जिसे आवश्यकता पड़ने पर इस लाइब्रेरी में कॉपी किया जा सकता है।
तीन उदाहरण रेखाचित्र दिए गए हैं, जिनमें से प्रत्येक को बिना मोटर या मोटर चालक के चलाया जा सकता है। speedStepperPlot स्केच उदाहरण गति कमांड और गोहोम कमांड जारी करता है और परिणामी गति और स्थिति का एक प्लॉट बनाता है। स्पीडस्टेपरसेटअप स्केच मोटर के घर और सीमा को सेट करने के लिए एक मेनू संचालित सेटअप प्रदान करता है और फिर मोटर चलाता है और गति को ऊपर और नीचे समायोजित करता है और समाप्त करने के लिए होम जाता है। स्पीडस्टेपरप्रोफाइल स्केच स्पीड प्रोफाइल को स्थापित करने और निष्पादित करने का एक उदाहरण दिखाता है।
जबकि एक्सेलस्टेपर लाइब्रेरी अच्छी स्थिति नियंत्रण प्रदान करती है, यूरोपा पर जैविक नमूने एकत्र करने के लिए प्रोटोटाइप आइस-मेल्टिंग प्रोब के लिए गति नियंत्रण की आवश्यकता थी। यहाँ प्रोटोटाइप के पुराने संस्करण का एक वीडियो है, जिसमें मोटर के बजाय वज़न का उपयोग किया गया था। संशोधन 1.1 ने एक उपयोगकर्ता द्वारा पंप की गति प्रोफ़ाइल को नियंत्रित करने के लिए एक साधन का अनुरोध करने के बाद गति प्रोफाइल जोड़ा।
यह पुस्तकालय Arduino Uno और Mega2560 पर चलता है, लेकिन प्रोटोटाइप के लिए एक बड़ी मेमोरी/तेज प्रोसेसर SparkFun Redboard Turbo का उपयोग किया गया था।
यह निर्देशयोग्य Arduino के लिए स्टेपर स्पीड कंट्रोल लाइब्रेरी में ऑनलाइन भी उपलब्ध है
आपूर्ति
उदाहरण रेखाचित्र चलाने के लिए केवल एक Arduino UNO या Mega2560 और सॉफ़्टवेयर लाइब्रेरी की आवश्यकता होती है
पुस्तकालय के बेंच परीक्षण के लिए एक आसान चालक के साथ एक स्पार्कफन रेडबोर्ड टर्बो का उपयोग किया गया था, एक 200 कदम/रेव, 12 वी 350 एमए स्टेपर मोटर और 12 डीसी आपूर्ति 2 ए या उससे बड़ा, उदा। https://www.sparkfun.com/products/14934। USB A से माइक्रो केबलUSB से TTL सीरियल केबलArduino IDE V1.8.9 और इसे चलाने के लिए एक कंप्यूटर। नॉन-ब्लॉकिंग इनपुट के लिए स्पीडस्टेपर लाइब्रेरीpfodParser लाइब्रेरी और नॉन-ब्लॉकिंग देरी के लिए pfodBufferedStream क्लास मिलिसदेरी लाइब्रेरी
चरण 1: पुस्तकालय कार्य
स्पीडस्टेपर पुस्तकालय पुस्तकालय द्वारा निर्धारित सीमाओं द्वारा सीमित स्टेपर मोटर चलाता है। उपलब्ध विभिन्न पुस्तकालय विधियों के लिए SpeedStepper.h फ़ाइल देखें। यहां उनके पीछे तर्क की रूपरेखा दी गई है।
स्टेपर (दालों) की संख्या गिनकर स्टेपर की स्थिति का पता लगाया जाता है। पुस्तकालय स्थिति को setPlusLimit(int32_t) और setMinusLimit(int32_t) पदों के बीच सीमित करता है। प्लस लिमिट हमेशा>= 0 होती है और माइनस लिमिट हमेशा <= 0 होती है। स्टार्टअप पर मोटर पोजीशन 0 (होम) होती है और लिमिट्स बहुत बड़ी +/- नंबर्स (लगभग +/- 1e9 स्टेप्स) पर सेट होती हैं। setAcceleration(float) सेट करता है कि मोटर कितनी तेजी से गति को ऊपर या नीचे बदलेगी। जैसे-जैसे मोटर प्लस या माइनस सीमा के करीब पहुंचती है, यह इस दर पर तब तक घटती जाएगी जब तक कि सीमा पर रुक न जाए। स्टार्ट अप पर त्वरण 1.0 कदम/सेकंड/सेकंड पर सेट है। त्वरण सेटिंग हमेशा एक + ve संख्या होती है। सेटस्पीड (फ्लोट) सेटिंग का संकेत मोटर की गति की दिशा निर्धारित करता है।
setSpeed(float) मोटर को उसकी वर्तमान गति से गति / गति कम करने के लिए गति निर्धारित करता है। गति जिसे सेटस्पीड (फ्लोट) के माध्यम से सेट किया जा सकता है, निरपेक्ष मान में, सेटिंग्स द्वारा, सेटमैक्सस्पीड (फ्लोट), डिफ़ॉल्ट 1000 स्टेप्स/सेकंड और सेटमिनस्पीड (फ्लोट), डिफ़ॉल्ट 0.003 स्टेप्स/सेकंड तक सीमित है। ये डिफ़ॉल्ट भी पूर्ण हार्ड कोडित गति सीमाएं हैं जो लाइब्रेरी सेटमैक्सस्पीड () और सेटमिनस्पीड () के लिए स्वीकार करेगी। यदि आप अधिकतम गति> १००० कदम/सेकंड सेट करना चाहते हैं, तो आपको अधिकतम गति (१०००) को अपनी इच्छित अधिकतम गति में बदलने के लिए स्पीडस्टेपर.सीपीपी फ़ाइल में पहली पंक्ति को संपादित करने की आवश्यकता होगी। व्यवहार में अधिकतम गति भी पुस्तकालय की रन () विधि में कॉल के बीच के समय तक सीमित होती है। 1000 चरणों/सेकंड के लिए रन () विधि को कम से कम प्रत्येक 1mS पर कॉल किया जाना चाहिए। नीचे विलंबता अनुभाग देखें।
न्यूनतम गति से कम गति सेट करने का प्रयास करने से मोटर रुक जाएगी। इनमें से प्रत्येक बसने वाले के पास एक संबंधित गेटर है, स्पीडस्टेपर.एच फ़ाइल देखें। गति के लिए, getSetSpeed() सेटस्पीड() के माध्यम से आपके द्वारा सेट की गई गति को लौटाता है, जबकि getSpeed() वर्तमान मोटर गति को लौटाता है जो आपके द्वारा निर्धारित गति को तेज/गिरावट करता है। यदि मोटर उस दिशा में नहीं जा रही है जिसके बारे में आप सोचते हैं कि आप +ve गति के लिए मोटर की चाल को स्वैप करने के लिए invertDirectionLogic() को कॉल कर सकते हैं।
getCurrentPosition() 'होम' (0) की तुलना में वर्तमान मोटर स्थिति देता है। आप वर्तमान मोटर स्थिति setCurrentPosition(int32_t) को ओवरराइड कर सकते हैं। नई स्थिति निर्धारित प्लस/माइनस सीमा के भीतर सीमित है।
प्रारंभ में मोटर को स्थिति 0 पर रोक दिया जाता है। कॉलिंग सेटस्पीड (50.0) के कारण यह + ve दिशा में अधिकतम 50 कदम/मिनट की गति से गति करना शुरू कर देगा। हार्डस्टॉप () को कॉल करने से मोटर तुरंत रुक जाएगी जहां वह है। दूसरी ओर, स्टॉप () विधि को कॉल करने से गति शून्य हो जाएगी और मोटर धीमी गति से रुक जाएगी। कॉलिंग स्टॉपएंडसेटहोम () मोटर को तुरंत बंद कर देगा और उसकी स्थिति को 0 पर सेट कर देगा। प्लस/माइनस सीमा मान नहीं बदले गए हैं, लेकिन अब इस नई 0 (होम) स्थिति के लिए संदर्भित हैं। गोहोम () को कॉल करने से स्टेपर इस 0 (होम) स्थिति में वापस आ जाएगा और रुक जाएगा। कॉलिंग सेटस्पीड () घर जाना रद्द कर देगी।
स्पीडस्टेपर लाइब्रेरी सेटप्रोफाइल (स्पीडप्रोफाइलस्ट्रक्चर * प्रोफाइलएरे, साइज_टी एरेलेन), स्टार्टप्रोफाइल (), स्टॉपप्रोफाइल (), रनिंग प्रोफाइल और isProfileRunning () के तरीकों के जरिए स्पीड प्रोफाइल कंट्रोल भी प्रदान करती है। स्पीडस्टेपरप्रोफाइल उदाहरण स्केच देखें।
चरण 2: स्पीडस्टेपरप्लॉट उदाहरण बिना मोटर के चलाना
Arduino IDE V1.8.9 डाउनलोड करें और स्पीडस्टेपर लाइब्रेरी स्थापित करें स्पीडस्टेपर.ज़िप सहेजें और फिर Arduino IDE मेनू आइटम स्केच → लाइब्रेरी शामिल करें → लाइब्रेरी आयात करने के लिए. ZIP लाइब्रेरी जोड़ें का उपयोग करें। मिलिसडेल लाइब्रेरी को भी डाउनलोड और इंस्टॉल करें
उदाहरण खोलें → स्पीडस्टेपर → स्पीडस्टेपरप्लॉट उदाहरण स्केच (यदि आवश्यक हो तो आईडीई को पुनरारंभ करें)। यह स्केच सीरियल के साथ काम करने के लिए कॉन्फ़िगर किया गया है, उदा। यूएनओ और मेगा आदि। स्पार्कफन रेडबोर्ड टर्बो पर चलने के लिए नीचे देखें।
इस उदाहरण को चलाने के लिए किसी ड्राइवर बोर्ड या स्टेपर मोटर की आवश्यकता नहीं है। ये उदाहरण आउटपुट के रूप में D6 और D7 का उपयोग करते हैं। आप स्केच के शीर्ष के पास STEP_PIN और DIR_PIN सेटिंग्स को बदलकर आउटपुट पिन को किसी भी डिजिटल आउटपुट में बदल सकते हैं।
स्केच को बोर्ड पर अपलोड करें और फिर गति (RED) और स्थिति (BLUE) के प्लॉट को दिखाने के लिए 115200 बॉड पर टूल्स → सीरियल प्लॉटर खोलें, प्लस सीमा 360 पर सेट की गई है जिससे गति लगभग 100 बिंदु से शून्य हो जाती है। एक्स-अक्ष पर। माइनस लिमिट -510 है। स्थिति ~-390 पर रुक जाती है क्योंकि गति 0.0 की मांग की गई है। एक्स-अक्ष पर 380 बिंदु पर, गोहोम सीएमडी जारी किया जाता है जो स्टेपर को शून्य स्थिति में लौटाता है।
यह स्पीडस्टेपरप्लॉट स्केच विभिन्न गति और त्वरण के बीच स्विच करने के लिए मिली देरी का उपयोग करता है। कई मामलों में स्पीडस्टेपरप्रोफाइल का उपयोग करना, जैसा कि अगले उदाहरण में है, सरल है।
चरण 3: बिना मोटर के स्पीडस्टेपरप्रोफाइल उदाहरण चलाना
उदाहरण खोलें → स्पीडस्टेपर → स्पीडस्टेपरप्लॉट उदाहरण स्केच, यह स्केच Arduino सीरियल प्लॉटर का उपयोग करके उपरोक्त प्लॉट का निर्माण करता है और एक निर्धारित गति प्रोफ़ाइल चलाने का एक उदाहरण है उदाहरण के लिए यदि एक पंप चल रहा है।
स्टेपर स्पीड प्रोफाइल स्पीडप्रोफाइलस्ट्रक्चर की एक सरणी से बना है, जिसे स्पीडस्टेपर.एच फाइल में परिभाषित किया गया है।
स्ट्रक्चर स्पीडप्रोफाइलस्ट्रक्चर {
तैरने की गति; // इस चरण के अंत में लक्ष्य गति अहस्ताक्षरित लंबी डेल्टा; // वर्तमान गति (इस चरण की शुरुआत में) से लक्ष्य गति तक तेजी लाने का समय};
स्पीडप्रोफाइलस्ट्रक्चर की एक सरणी को परिभाषित करें जिसमें प्रत्येक चरण और समय के लिए लक्ष्य गति हो, डेल्टाटीएमएस, एमएस में, पिछली लक्ष्य गति से उस लक्ष्य गति तक पहुंचने के लिए। यदि डेल्टा टीएमएस शून्य या बहुत छोटा है, तो गति तुरंत नई लक्ष्य गति पर कूद जाएगी। अन्यथा, आवश्यक त्वरण की गणना की जाएगी setAcceleration() को नई लक्ष्य गति के लिए setSpeed() पर कॉल करने के बाद कॉल किया जाएगा। सभी मामलों में प्रोफ़ाइल मौजूदा प्लस और माइनस स्थिति सीमाओं और अधिकतम/न्यूनतम गति सेटिंग्स द्वारा सीमित होगी। यदि आप एक गति पकड़ना चाहते हैं, तो पिछली गति को उस समय के साथ दोहराएं जब तक आप इसे रोकना चाहते हैं। चूंकि नई लक्ष्य गति वर्तमान गति के समान है, इसलिए परिकलित त्वरण शून्य होगा और गति में कोई परिवर्तन नहीं होता है।
इस स्पीडप्रोफाइलस्ट्रक्चर सरणी ने उपरोक्त प्लॉट का उत्पादन किया
कॉन्स्ट स्पीडप्रोफाइलस्ट्रक्चर प्रोफाइल = {{ 0, 0}, // अगर पहले से नहीं रुका है तो तुरंत रोकें {0, 1000}, // 1 सेकंड के लिए शून्य रखें { -50, 0}, // -50 पर जाएं { -200, 2000}, // रैंप टू -200 { -200, 6000}, // 6 सेकेंड के लिए -200 पर होल्ड करें {-50, 2000}, // रैंप डाउन टू -50 {0, 0}, // // तुरंत रुकें {0, 1500}, // 1.5 सेकंड के लिए शून्य रखें {50, 0}, // 50 पर कूदें {200, 2000}, // रैंप से 200 {200, 6000}, // 200 को 6 सेकंड के लिए पकड़ें {50, 2000}, // रैंप से 50 {0, 0}, // // तुरंत रोकें {0, 1000} // आउटपुट प्लॉटिंग के लिए शून्य // होल्ड करें}; const size_t PROFILE_LEN = sizeof (प्रोफाइल) / sizeof (SpeedProfileStruct); // प्रोफ़ाइल सरणी के आकार की गणना करें
प्रोफ़ाइल को कॉल करके सेट किया गया है setProfile(SpeedProfileStruct* profileArray, size_t arrayLen) उदा। stepper.setProfile (प्रोफ़ाइल, PROFILE_LEN);
एक बार प्रोफ़ाइल सेट हो जाने के बाद, स्टार्टप्रोफाइल () को वर्तमान मोटर गति से चलाना शुरू करने के लिए कॉल करें (आमतौर पर आप स्टॉप से शुरू करेंगे)। प्रोफ़ाइल के अंत में, मोटर अंतिम लक्ष्य गति से चलती रहेगी। प्रोफ़ाइल अभी भी चल रही है या नहीं यह देखने के लिए isProfileRunning() विधि को कॉल किया जा सकता है। यदि आप प्रोफ़ाइल को जल्दी रोकना चाहते हैं तो आप स्टॉपप्रोफाइल() को कॉल कर सकते हैं जो प्रोफ़ाइल को छोड़ देगा और मोटर को रोक देगा।
चरण 4: बिना मोटर के स्पीडस्टेपरसेटअप उदाहरण चलाना
उदाहरण स्केच को आपके स्वयं के स्टेपर मोटर एप्लिकेशन के लिए एक आधार के लिए डिज़ाइन किया गया है। यह एक मेनू संचालित इंटरफ़ेस प्रदान करता है जो आपको मोटर को उसके घर की स्थिति में ले जाने की अनुमति देता है, यदि पहले से नहीं है और फिर वैकल्पिक रूप से प्लस और माइनस सीमा को रीसेट करें और फिर उस सीमा के भीतर मोटर चलाएं। 'रन' मेनू आपको गति को बढ़ाने और घटाने, वर्तमान गति पर फ्रीज करने, रुकने और घर लौटने की अनुमति देता है।
यह स्केच कई सॉफ़्टवेयर सुविधाओं का वर्णन करता है जो लूप () को उत्तरदायी रखते हैं ताकि आप स्टेपर को नियंत्रित करने के लिए अपने स्वयं के सेंसर इनपुट जोड़ सकें। गति नियंत्रण में बाधा डालने वाली देरी से बचने के लिए दर्द की आवश्यकता होती है। (देखें देरी बुराई है)
ऊपर, स्पीडस्टेपरप्लॉट चलाने के लिए उपयोग की जाने वाली लाइब्रेरी स्थापित करें, और फिर pfodParser लाइब्रेरी भी स्थापित करें। pfodParser लाइब्रेरी नॉनब्लॉकिंग इनपुट और pfodBufferedStream कक्षाओं की आपूर्ति करती है जिनका उपयोग लूप () को चलने से रोकने के साथ उपयोगकर्ता इनपुट और मेनू आउटपुट को संभालने के लिए किया जाता है।
उदाहरण खोलें → स्पीडस्टेपर → स्पीडस्पीडसेटअप उदाहरण। यह स्केच सीरियल के साथ काम करने के लिए कॉन्फ़िगर किया गया है, उदा। यूएनओ और मेगा आदि। स्पार्कफन रेडबोर्ड टर्बो पर चलने के लिए नीचे देखें।
इस उदाहरण को चलाने के लिए किसी ड्राइवर बोर्ड या स्टेपर मोटर की आवश्यकता नहीं है। ये उदाहरण आउटपुट के रूप में D6 और D7 का उपयोग करते हैं। आप स्केच के शीर्ष के पास STEP_PIN और DIR_PIN सेटिंग्स को बदलकर आउटपुट पिन को किसी भी डिजिटल आउटपुट में बदल सकते हैं। स्केच को बोर्ड पर अपलोड करें और फिर SETUP मेनू देखने के लिए टूल्स → सीरियल मॉनिटर 115200 पर खोलें।
सेटअप पॉज़: 0 एसपी: 0.00 + लिम: 500000 - लिम: -500 लेटेंसी: स्टेपर: 492uS लूप: 0uS पी - सेट होम एल - सेट सीमा एच - गोहोम आर - रन>
जब स्केच चलता है तो स्टेपर की वर्तमान स्थिति को 'होम' (0) स्थिति के रूप में लिया जाता है। यदि आपको स्टेपर को उसकी वास्तविक 'होम' स्थिति में फिर से स्थापित करने की आवश्यकता है, तो सेट होम मेनू प्रदर्शित करने के लिए p कमांड दर्ज करें
सेट होम पॉज़: 0 एसपी: 0.00 + लिम: 1073741808 - लिम: -1073741808 लेटेंसी: स्टेपर: 752uS लूप: 3852uS x - यहां होम सेट करें और बाहर निकलें + - फॉरवर्ड - - रिवर्स एस - स्वैप फॉरवर्ड/रिवर्स - हार्डस्टॉप >
जैसा कि आप देख सकते हैं कि स्केच में कोडित सीमाएं हटा दी गई हैं ताकि आप स्टेपर को कहीं भी फिर से रख सकें। आपको इस बात का ध्यान रखने की आवश्यकता है कि आप इसे भौतिक सीमाओं से आगे न बढ़ाएँ या आप कुछ तोड़ सकते हैं।
स्टेपर को आगे बढ़ाना शुरू करने के लिए + cmd का उपयोग करें, यदि आप इसे गलत दिशा में ले जाते हुए पाते हैं तो इसे रोकने के लिए एक गैर-कमांड या सिर्फ एक खाली लाइन दर्ज करें और फिर फॉरवर्ड की दिशा को स्वैप करने के लिए scommand का उपयोग करें। आपको अगले रन के लिए इसे ठीक करने के लिए सेटअप में invertDirectionLogic() पर कॉल शामिल करने के लिए स्केच को अपडेट करना चाहिए।
स्टेपर को सही शून्य स्थिति में रखने के लिए + / - cmds का उपयोग करें। मोटर धीमी गति से शुरू होती है और फिर आगे बढ़ने पर गति बनाती है, बस इसे रोकने के लिए खाली लाइन का उपयोग करें। इसके लिए अधिकतम गति और सीमा मेनू को setupMenus.cpp के शीर्ष पर MAX_SETUP_SPEED द्वारा निर्धारित किया गया है।
एक बार जब मोटर अपनी 'होम' स्थिति पर स्थित हो जाए, तो वर्तमान स्थिति को 0 के रूप में फिर से सेट करने के लिए x cmd का उपयोग करें और SETUP मेनू पर वापस आएं।
यदि आपको सीमाएं निर्धारित करने की आवश्यकता है, आमतौर पर केवल प्रारंभिक सेटअप पर, SET LIMITS मेनू में प्रवेश करने के लिए l cmd का उपयोग करें
सेट सीमाएं स्थिति: 0 एसपी: 0.00 + लिम: 1073741808 - लिम: -1073741808 विलंबता: स्टेपर: 944uS लूप: 5796uS एल - यहां सेट करें + - आगे - - रिवर्स एच - गोहोम एक्स - बाहर निकलें - हार्डस्टॉप>
+ cmd को धन सीमा तक और आगे ले जाने के लिए उपयोग करें और फिर l cmd को धन सीमा के रूप में सेट करने के लिए उपयोग करें। फिर h कमांड का उपयोग 0 पर लौटने के लिए किया जा सकता है और - cmd को स्थानांतरित करने के लिए उपयोग किया जा सकता है यदि मोटर माइनस सीमा पर स्थिति का सम्मान करता है। ऋण सीमा निर्धारित करने के लिए फिर से l cmd का उपयोग करें। प्लस और माइनस सीमा की स्थिति पर ध्यान दें और इन मानों के साथ सेटअप () विधि के सेटप्लसलिमिट और सेटमिनसलिमिट स्टेटमेंट को अपडेट करें।
जब सीमाएँ सेट की जाती हैं तो x cmd का उपयोग करके SETUP मेनू पर वापस जाएँ और फिर आप RUN मेनू खोलने के लिए r cmd का उपयोग कर सकते हैं।
रन मेनू स्थिति:0 sp:3.31 +Lim:500000 -Lim:-500 LATENCY: stepper:944uS loop:5796uS + -- speed up - -- speed down h -- goHome । - हार्डस्टॉप - फ्रीज स्पीड> + पॉज़: 4 एसपी: 9.49 + लिम: 500000 - लिम: -500 लेटेंसी: स्टेपर: 792uS लूप: 5664uS पॉज़: 42 एसपी: 29.15 + लिम: 500000 -लिम: -500 लेटेंसी: स्टेपर:792uS लूप: 5664uS पॉज़: 120 एसपी: 49.09 + लिम: 500000 - लिम: -500 लेटेंसी: स्टेपर: 792uS लूप: 5664uS पॉज़: 238 एसपी: 69.06 + लिम: 500000 -लिम: -500 लेटेंसी: स्टेपर: 792uS लूप: 5664uS
+ cmd आगे की दिशा में गति करना शुरू कर देता है और हर 2 सेकंड में स्थिति और गति को प्रिंट करता है। जब मोटर आपकी इच्छित गति तक पहुँच जाती है तो आप किसी अन्य कुंजी (या एक खाली इनपुट) के साथ त्वरण को रोक सकते हैं। स्टॉप करने के लिए - cmd डाउन का उपयोग करके आप गति को कम कर सकते हैं। यदि रोक दिया जाए - cmd रिवर्स में गति करेगा।
यह रन मेनू आपके प्रोजेक्ट का मैन्युअल नियंत्रण प्रदान करता है। ऑटो नियंत्रण के लिए आपको कुछ अन्य सेंसर जोड़ने होंगे।
चरण 5: विलंबता
स्टेपर मोटर नियंत्रण हर कदम पर कमांडिंग सॉफ्टवेयर पर निर्भर करता है। निर्धारित गति को बनाए रखने के लिए, आपके स्केच को वर्तमान गति के लिए सही समय पर अगले चरण को सक्रिय करने के लिए अक्सर पर्याप्त stepper.run() विधि को कॉल करने की आवश्यकता होती है। सेंसर के माध्यम से नियंत्रण के लिए आपको नए मापों को तुरंत संसाधित करने में सक्षम होना चाहिए। स्थिति/गति प्रिंट आउट में दो LATENCY माप शामिल हैं, जिससे आप यह जांच सकते हैं कि आपका स्केच पर्याप्त तेज़ है।
स्टेपर लेटेंसी (pfodBufferedStream)
स्टेपर लेटेंसी, स्टेपर.रन () विधि में लगातार कॉल के बीच अधिकतम देरी को मापता है। स्टेपर मोटर को 1000 कदम प्रति सेकंड पर चलाने के लिए, स्टेपर विलंबता 1000uS (1mS) से कम होनी चाहिए। इस स्केच के पहले संस्करण में कई मिलीसेकंड की विलंबता थी। रनस्टेपर () विधि (जो stepper.run () को कॉल करता है) में इस अतिरिक्त कॉल को दूर करने के लिए जहां कोड के माध्यम से जोड़ा गया है। इससे समस्या पूरी तरह से हल नहीं हुई क्योंकि छोटे सीरियल टीएक्स बफर के भर जाने के बाद मेनू और आउटपुट प्रिंट स्टेटमेंट ने स्केच को ब्लॉक कर दिया। इस अवरोध से बचने के लिए, pfodParser लाइब्रेरी से pfodBufferedStream का उपयोग 360 बाइट आउटपुट प्रिंट बफर जोड़ने के लिए किया गया था, जिसे प्रिंट स्टेटमेंट जल्दी से लिख सकता था। फिर pfodBufferedStream इस मामले में 115200 निर्दिष्ट बॉड दर पर बाइट्स जारी करता है। pfodBufferedStream को बफर भर जाने पर या तो ब्लॉक करने का विकल्प होता है या ओवरफ्लो वर्णों को छोड़ देता है। जब बफर भर जाता है तो यह किसी भी अतिरिक्त वर्ण को छोड़ने के लिए सेट होता है ताकि सीरियल को वर्ण भेजने के लिए स्केच को अवरुद्ध नहीं किया जा सके।
लूप विलंबता (नॉनब्लॉकिंग इनपुट)
लूप विलंबता लूप () विधि में लगातार कॉल के बीच अधिकतम विलंब को मापता है। यह सेट करता है कि आप कितनी तेजी से नए सेंसर माप को संसाधित कर सकते हैं और मोटर सेट गति को समायोजित कर सकते हैं। फिर कितनी तेजी से होने की जरूरत है यह इस बात पर निर्भर करता है कि आप क्या नियंत्रित करने की कोशिश कर रहे हैं।
ऊपर दिए गए pfodBufferedStream का उपयोग करके प्रिंट स्टेटमेंट के कारण होने वाली देरी को हटा दिया गया था, लेकिन उपयोगकर्ता के इनपुट को संसाधित करने के लिए आपको इनपुट का सिर्फ पहला चार लेना होगा और बाकी लाइन को अनदेखा करना होगा। pfodParer लाइब्रेरी में नॉनब्लॉकिंग इनपुट क्लास का उपयोग रीडइनपुट () का उपयोग करके इनपुट होने पर एक गैर-शून्य चार को वापस करने के लिए किया जाता है, और स्पष्ट इनपुट () का उपयोग करके निम्नलिखित वर्णों को साफ़ और त्यागने के लिए उपयोग किया जाता है, जब तक कि लूप को अवरुद्ध किए बिना 10mS के लिए कोई वर्ण प्राप्त नहीं होता है। ()
बेशक लूप विलंबता आपके द्वारा सेंसर को पढ़ने और नई सेट गति की गणना करने के लिए जोड़े गए अतिरिक्त कोड से बढ़ जाएगी। कई सेंसर लाइब्रेरी माप शुरू करने और परिणाम पुनर्प्राप्त करने के बीच बस देरी (..) का उपयोग करने का सॉर्ट कट लेते हैं। उपयुक्त गैर-अवरुद्ध विलंब के बाद माप लेने के लिए आपको इसके बजाय मिलिसडेल का उपयोग करने के लिए इन पुस्तकालयों को फिर से लिखना होगा।
चरण 6: स्टेपर मोटर और स्पार्कफन रेडबोर्ड टर्बो के साथ स्पीडस्टेपरसेटअप चलाना
स्पीडस्टेपरसेटअप स्केच को वास्तविक रूप से चलाने के लिए आपको स्टेपर मोटर, ड्राइवर और बिजली की आपूर्ति की आवश्यकता होगी और इस उदाहरण में स्पार्कफन रेडबोर्ड टर्बो।
उपरोक्त वायरिंग आरेख (पीडीएफ संस्करण) कनेक्शन दिखाता है। स्पीडस्टेपरसेटअप स्केच में सीरियल की परिभाषा को #define SERIAL Serial1. में बदलें
स्टेपर मोटर, बिजली की आपूर्ति, चालक और सुरक्षा
स्टेपर मोटर्स के कई प्रकार और आकार हैं। यहां परीक्षण के लिए दो कॉइल 12V 350mA स्टेपर मोटर का उपयोग किया जाता है। इस स्टेपर को पावर देने के लिए आपको 12V या उससे अधिक और 350mA से अधिक की बिजली आपूर्ति की आवश्यकता होती है।
यह पुस्तकालय केवल एक दिशा और चरण आउटपुट प्रदान करता है, इसलिए आपको स्टेपर मोटर के साथ इंटरफेस करने के लिए ड्राइवर की आवश्यकता होती है। ईज़ी ड्राइवर और बिग इज़ी ड्राइवर मोटर के कॉइल में करंट को नियंत्रित करते हैं ताकि आप सुरक्षित रूप से उच्च वोल्टेज की बिजली आपूर्ति का उपयोग कर सकें, उदाहरण के लिए 3.3V मोटर के लिए 6V आपूर्ति का उपयोग करना। ईज़ी ड्राइवर 150mA/कॉइल और 700mA/कॉइल के बीच आपूर्ति कर सकता है। उच्च धाराओं के लिए, बिग ईज़ी ड्राइवर प्रति कॉइल 2A तक की आपूर्ति कर सकता है। Easy Drive पेज के नीचे अक्सर पूछे जाने वाले सवाल पढ़ें।
ये उदाहरण चरण और दिशा आउटपुट के रूप में D6 और D7 का उपयोग करते हैं। आप स्केच के शीर्ष के पास STEP_PIN और DIR_PIN सेटिंग्स को बदलकर आउटपुट पिन को किसी भी डिजिटल आउटपुट में बदल सकते हैं।
स्पार्कफुन रेडबोर्ड टर्बो प्रोग्रामिंग
रेडबोर्ड टर्बो प्रोग्रामिंग समस्याग्रस्त है।यदि यह प्रोग्राम करने में विफल रहता है, तो पहले रीसेट पुशबटन को एक बार दबाएं और Arduino टूल्स मेनू में COM पोर्ट को फिर से चुनें और पुनः प्रयास करें। यदि वह काम नहीं करता है, तो रीसेट पुश बटन को दो बार दबाएं और पुनः प्रयास करें।
आसान चालक को तार-तार करना
दो कॉइल स्टेपर मोटर्स में 4 तार होते हैं। प्रत्येक कॉइल से जुड़ने वाले जोड़े को खोजने के लिए एक मल्टीमीटर का उपयोग करें और फिर एक कॉइल को ईज़ी ड्राइवर ए टर्मिनल और दूसरे कॉइल को बी टर्मिनल से तार दें। इससे कोई फर्क नहीं पड़ता कि आप उन्हें किस तरह से तार करते हैं क्योंकि आप आंदोलन की दिशा बदलने के लिए सेटअप मेनू में s cmd का उपयोग कर सकते हैं।
मोटर बिजली की आपूर्ति एम + और जीएनडीसेट को बोर्ड के तर्क स्तर को 3/5 वी लिंक के साथ तारित किया जाता है। 3.3V माइक्रोप्रोसेसर आउटपुट के लिए एक साथ लिंक को छोटा करें, जैसे कि SparkFun Redboard Turbo (यदि आप इसे खुला छोड़ते हैं तो यह 5V डिजिटल सिग्नल के लिए उपयुक्त है, जैसे UNO, मेगा) GND, STEP, DIR पिन को माइक्रोप्रोसेसर GND से कनेक्ट करें और चरण और डीआईआर आउटपुट पिन। मोटर चलाने के लिए कोई अन्य कनेक्शन आवश्यक नहीं है।
यूएसबी से टीटीएल सीरियल केबल
जब आप स्पीडस्टेपरसेटअप स्केच को यूनो/मेगा से रेडबोर्ड टर्बो में ले जाते हैं तो आप भोलेपन से #define SERIAL Serial को #define SERIAL SerialUSB के साथ Redboard Turbo usb सीरियल कनेक्शन के अनुरूप बदल सकते हैं, हालांकि आप पाएंगे कि परिणामी स्टेपर विलंबता लगभग 10mS है। यूएनओ के लिए यह 10 गुना धीमा है। यह इस कारण से है कि रेडबोर्ड सीपीयू यूएसबी कनेक्शन को कैसे संभालता है। इसे खत्म करने के लिए, USB को TTL सीरियल केबल से D0/D1 से कनेक्ट करें और स्टेपर मोटर को नियंत्रित करने के लिए हार्डवेयर सीरियल कनेक्शन का उपयोग करने के लिए # SERIAL Serial1 को परिभाषित करें। Serial1 का उपयोग करने से LATENCY: स्टेपर: 345uS लूप: 2016uS मिलता है जो स्टेपर और लूप लेटेंसी के लिए UNO से 3 गुना तेज है
टर्मिनल कार्यक्रम
स्टेपर मोटर को नियंत्रित करने के लिए Arduino सीरियल मॉनिटर का उपयोग करना थोड़ा कठिन है क्योंकि आपको cmd लाइन में चार दर्ज करना होगा और फिर इसे भेजने के लिए एंटर दबाएं। एक तेज़ और अधिक प्रतिक्रियाशील साधन एक टर्मिनल विंडो खोलना है, पीसी के लिए टेराटर्म (या कूलटर्म मैक), यूएसबी से टीटीएल केबल COM पोर्ट से जुड़ा हुआ है। फिर उस विंडो में एक cmd key दबाने पर वह तुरंत भेज देता है। एंटर दबाकर बस एक खाली लाइन भेजें।
मोटर गति सीमा निर्धारित करना
जैसा कि ऊपर वायर्ड किया गया है, ईज़ी ड्राइव को 1/8 वें चरणों के लिए कॉन्फ़िगर किया गया है, इसलिए 1000 कदम/सेकंड मोटर को 1000/8/200 चरण/क्रांति = 0.625 रेव्स प्रति सेकंड या अधिकतम 37.5 आरपीएम पर चालू करेगा। इनपुट को MS1/MS2 में बदलकर आप 1/8,, ½ और पूर्ण चरणों के बीच स्विच कर सकते हैं। पूर्ण चरणों के लिए MS1 और MS2 दोनों को GND से कनेक्ट करें। इससे 300 आरपीएम तक की स्पीड मिलेगी। उपयुक्त MS1/MS2 सेटिंग्स चुनने से आप मोटर और चालित भाग के बीच स्थापित गियर अनुपात के लिए समायोजित कर सकते हैं।
हार्डवेयर सुरक्षा
जबकि स्पीडस्टेपर लाइब्रेरी आपको मोटर की गति पर स्थिति सीमा निर्धारित करने की अनुमति देती है, स्थिति का निर्धारण सॉफ्टवेयर द्वारा चरण आउटपुट की गणना करके किया जाता है। यदि मोटर रुक जाती है, यानी अगले चरण में मोटर चलाने के लिए टॉर्क अपर्याप्त है तो सॉफ्टवेयर की स्थिति मोटर की स्थिति के साथ सिंक से बाहर हो जाएगी। फिर जब आप 'goHome' कमांड का उपयोग करते हैं तो मोटर घर की स्थिति को ओवरशूट कर देगी। हार्डवेयर को नुकसान से बचाने के लिए आपको मोटर बिजली की आपूर्ति को डिस्कनेक्ट करने के लिए कठोर सीमा पर सीमा स्विच फिट करना चाहिए
मोटर वर्तमान सीमा निर्धारित करना
सबसे पहले, इसे पोटेंशियोमीटर की सबसे निचली सेटिंग पर सेट करें। यानी टीपी1 पर वोल्टेज न्यूनतम है। पोटेंशियोमीटर नाज़ुक होता है, इसलिए पोटेंशियोमीटर को यांत्रिक स्टॉप से आगे न जाने दें। मोटर ड्राइविंग को धीमी स्थिर गति से धीमी गति से सेट करें, फिर धीरे-धीरे पोटेंशियोमीटर को तब तक घुमाएं जब तक कि मोटर कदमों के बीच स्किप या झटका न दे।
निष्कर्ष
यह प्रोजेक्ट दिखाता है कि व्यावहारिक अनुप्रयोग में स्पीडस्टेपर लाइब्रेरी का उपयोग कैसे करें। जबकि एक्सेलस्टेपर लाइब्रेरी अच्छी स्थिति नियंत्रण प्रदान करती है, यूरोपा पर जैविक नमूने एकत्र करने के लिए प्रोटोटाइप आइस-मेल्टिंग जांच के लिए गति नियंत्रण की आवश्यकता थी, इसलिए एक्सेलस्टेपर लाइब्रेरी को अंतिम सीमा और एक गोहोम फ़ंक्शन के साथ गति नियंत्रण प्रदान करने के लिए फिर से लिखा गया था।
सिफारिश की:
स्टेपर मोटर नियंत्रित स्टेपर मोटर बिना माइक्रोकंट्रोलर !: 6 कदम
माइक्रोकंट्रोलर के बिना स्टेपर मोटर नियंत्रित स्टेपर मोटर !: इस त्वरित निर्देश में, हम स्टेपर मोटर का उपयोग करके एक साधारण स्टेपर मोटर नियंत्रक बनाएंगे। इस परियोजना के लिए किसी जटिल सर्किटरी या माइक्रोकंट्रोलर की आवश्यकता नहीं है। तो बिना किसी देरी के, चलिए शुरू करते हैं
स्टेपर मोटर नियंत्रित स्टेपर मोटर बिना माइक्रोकंट्रोलर (V2): 9 कदम (चित्रों के साथ)
स्टेपर मोटर नियंत्रित स्टेपर मोटर बिना माइक्रोकंट्रोलर (V2): मेरे पिछले निर्देशों में से एक में, मैंने आपको दिखाया था कि बिना माइक्रोकंट्रोलर के स्टेपर मोटर का उपयोग करके स्टेपर मोटर को कैसे नियंत्रित किया जाता है। यह एक त्वरित और मजेदार परियोजना थी, लेकिन यह दो समस्याओं के साथ आई, जो इस निर्देश में हल हो रही हैं। तो, बुद्धि
स्टेपर मोटर नियंत्रित मॉडल लोकोमोटिव - स्टेपर मोटर एक रोटरी एनकोडर के रूप में: 11 कदम (चित्रों के साथ)
स्टेपर मोटर नियंत्रित मॉडल लोकोमोटिव | रोटरी एनकोडर के रूप में स्टेपर मोटर: पिछले निर्देशों में से एक में, हमने सीखा कि स्टेपर मोटर को रोटरी एन्कोडर के रूप में कैसे उपयोग किया जाए। इस परियोजना में, अब हम एक Arduino माइक्रोकंट्रोलर का उपयोग करके एक मॉडल लोकोमोटिव को नियंत्रित करने के लिए स्टेपर मोटर से बने रोटरी एन्कोडर का उपयोग करेंगे। तो, फू के बिना
स्टेपर मोटर नियंत्रित स्टेपर मोटर - स्टेपर मोटर एक रोटरी एनकोडर के रूप में: 11 कदम (चित्रों के साथ)
स्टेपर मोटर नियंत्रित स्टेपर मोटर | स्टेपर मोटर एक रोटरी एनकोडर के रूप में: क्या कुछ स्टेपर मोटर्स चारों ओर पड़ी हैं और कुछ करना चाहते हैं? इस निर्देशयोग्य में, एक Arduino माइक्रोकंट्रोलर का उपयोग करके एक अन्य स्टेपर मोटर की स्थिति को नियंत्रित करने के लिए एक स्टेपर मोटर को रोटरी एन्कोडर के रूप में उपयोग करें। तो बिना ज्यादा देर किए, आइए जानते हैं
मल्टी-स्पीड एसी मोटर कंट्रोल के लिए आईआर डिकोडर कैसे प्रोग्राम करें: 7 कदम
मल्टी-स्पीड एसी मोटर कंट्रोल के लिए आईआर डिकोडर कैसे प्रोग्राम करें: सिंगल-फेज अल्टरनेटिंग करंट मोटर्स आमतौर पर घरेलू सामानों जैसे कि पंखे में पाए जाते हैं, और सेट स्पीड के लिए कई असतत वाइंडिंग का उपयोग करते समय उनकी गति को आसानी से नियंत्रित किया जा सकता है। इस निर्देशयोग्य में हम एक डिजिटल नियंत्रक का निर्माण करते हैं जो एक