विषयसूची:

टू व्हील सेल्फ-बैलेंसिंग रोबोट: 7 कदम
टू व्हील सेल्फ-बैलेंसिंग रोबोट: 7 कदम

वीडियो: टू व्हील सेल्फ-बैलेंसिंग रोबोट: 7 कदम

वीडियो: टू व्हील सेल्फ-बैलेंसिंग रोबोट: 7 कदम
वीडियो: This is Ascento Pro 2024, जुलाई
Anonim
टू व्हील सेल्फ-बैलेंसिंग रोबोट
टू व्हील सेल्फ-बैलेंसिंग रोबोट

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

सेल्फ-बैलेंसिंग रोबोट क्या है?

सेल्फ-बैलेंसिंग रोबोट एक ऐसी प्रणाली है जो सीधा रखने के लिए अपनी स्थिति को लगातार समायोजित करने के लिए ऑनबोर्ड सेंसर से एकत्रित जड़त्वीय माप डेटा का उपयोग करता है।

यह कैसे काम करता है?

विचार करने के लिए एक सरल सादृश्य एक उल्टा पेंडुलम है। जहां द्रव्यमान का केंद्र धुरी बिंदु से ऊपर होता है। हालांकि, हमारे मामले में, हम पेंडुलम को रोटेशन की एक धुरी, हमारे मामले में दो पहियों के रोटेशन की धुरी के द्वारा स्वतंत्रता के 1 डिग्री तक सीमित कर रहे हैं। चूंकि किसी भी प्रकार की गड़बड़ी से रोबोट गिर जाएगा, इसलिए हमें रोबोट को सक्रिय रूप से संतुलित रखने की एक विधि की आवश्यकता है। यहीं पर हमारा क्लोज्ड-लूप एल्गोरिथम (PID कंट्रोलर) चलन में आता है, यह जानकर कि हमारा रोबोट किस दिशा में गिर रहा है, हम सिस्टम को संतुलित रखने के लिए अपने मोटर्स के रोटेशन की दिशा को समायोजित कर सकते हैं।

क्लोज्ड-लूप एल्गोरिथम कैसे काम करता है?

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

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

हम झुकाव के कोण को कैसे मापेंगे?

झुकाव के कोण को मापने के लिए हम एक जड़त्वीय मापन इकाई का उपयोग करेंगे। इन मॉड्यूल में एक्सेलेरोमीटर और जायरोस्कोप शामिल हैं।

  • एक्सेलेरोमीटर एक विद्युत चुम्बकीय उपकरण है जो उचित त्वरण को मापता है, यह तात्कालिक विश्राम फ्रेम में शरीर का त्वरण है।
  • जाइरोस्कोप एक इलेक्ट्रोमैकेनिकल डिवाइस है जो कोणीय वेग को मापता है और इसका उपयोग डिवाइस के उन्मुखीकरण को निर्धारित करने के लिए किया जाता है।

हालाँकि, ऐसे सेंसर का उपयोग करने में समस्या यह है कि:

  • एक्सेलेरोमीटर बहुत शोर है लेकिन समय के साथ संगत है, कोण अचानक क्षैतिज आंदोलनों के साथ बदलता रहता है
  • दूसरी ओर, जाइरोस्कोप का मूल्य समय के साथ घटता जाएगा, लेकिन शुरू में, यह काफी सटीक है

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

आपूर्ति

भाग:

  1. 8 मेगाहर्ट्ज ATMEGA328. के साथ Arduino Pro Mini 3.3V 8
  2. FT232RL 3.3V 5.5V FTDI USB से TTL सीरियल एडेप्टर मॉड्यूल
  3. MPU-6050. के साथ GY-521 मॉड्यूल
  4. N20 माइक्रो गियर मोटर 6V - 300rpm. की एक जोड़ी
  5. L298N मोटर चालक
  6. LM2596S DC से DC हिरन कनवर्टर
  7. बैटरी (रिचार्जेबल 9.7V ली-आयन बैटरी पैक)
  8. बैटरी का पट्टा
  9. दो प्रोटोटाइप पीसीबी सर्किट बोर्ड
  10. नर और मादा हेडर पिन जम्पर वायर

उपकरण:

  1. सोल्डरिंग आयरन और सोल्डर
  2. नायलॉन हेक्स स्पेसर गतिरोध
  3. प्रेसिजन पेचकश सेट
  4. थ्री डी प्रिण्टर

चरण 1: निर्माण

चूंकि मेरे पास एक 3D प्रिंटर तक पहुंच थी, इसलिए मैंने चेसिस को 3D प्रिंट करने और सब कुछ एक साथ जोड़ने के लिए गतिरोध का उपयोग करने का निर्णय लिया।

रोबोट में 4 परतें होती हैं

  1. निचली परत मोटर्स को जोड़ती है और इसमें L298N मोटर ड्राइवर मॉड्यूल के लिए बढ़ते बिंदु होते हैं
  2. अगली परत में Arduino pro mini के साथ प्रोटोटाइप बोर्ड है और हेडर इसमें मिलाए गए हैं
  3. तीसरी परत IMU को माउंट करती है
  4. शीर्ष परत, जिसे मैं "बम्पर परत" कहता हूं, बैटरी, हिरन कनवर्टर और एक मौद्रिक स्विच को छेदती है

मेरा मुख्य डिजाइन सिद्धांत सब कुछ मॉड्यूलर रखना था। इसका कारण यह था कि अगर किसी एक घटक के साथ कुछ गलत हो जाता है तो मैं इसे आसानी से बदल सकता हूं या अगर मुझे किसी अन्य परियोजना के लिए एक घटक की आवश्यकता होती है तो मैं इसे आसानी से ले सकता हूं बिना इस चिंता के कि मैं फिर से सिस्टम का उपयोग नहीं कर पाऊंगा।

चरण 2: वायरिंग

तारों
तारों

मैंने Arduino प्रो मिनी हेडर पिन के साथ मिलान करने के लिए कुछ महिला हेडर पिंट्स को एक परफेक्ट-बोर्ड में मिलाया। इसके बाद, मैंने I/O तक पहुंच की अनुमति देने के लिए पुरुष हेडर पिन को बोर्ड में मिलाया। बाकी घटकों को 3डी प्रिंटेड फ्रेम पर लगाया गया था और जम्पर तारों का उपयोग करके जोड़ा गया था।

चरण 3: नियंत्रण सिद्धांत

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

  • आनुपातिक शब्द सीधे आउटपुट देने के लिए त्रुटि को गुणा करता है, इसलिए जितनी बड़ी त्रुटि उतनी बड़ी प्रतिक्रिया
  • इंटीग्रल टर्म स्थिर-अवस्था त्रुटि को कम करने के लिए त्रुटि के संचय के आधार पर प्रतिक्रिया उत्पन्न करता है। सिस्टम जितना अधिक समय तक असंतुलित रहेगा, मोटर उतनी ही तेजी से प्रतिक्रिया देगी
  • व्युत्पन्न शब्द उस त्रुटि का व्युत्पन्न है जिसका उपयोग भविष्य की प्रतिक्रिया की भविष्यवाणी करने के लिए किया जाता है और ऐसा करने में यह स्थिर-अवस्था की अधिकता के कारण दोलन को कम करता है।

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

चरण 4: एमपीयू 6050. का उपयोग करना

MPU6050 लाइब्रेरी

github.com/jrowberg/i2cdevlib/tree/master/…

ऑफसेट को कैलिब्रेट करनासभी सेंसर एक दूसरे की सटीक प्रतिकृति नहीं हैं। नतीजतन, यदि आप दो एमपीयू 6050 का परीक्षण करते हैं, तो आपको एक ही सतह पर स्थिर रखने पर एक्सेलेरोमीटर और जाइरोस्कोप के लिए अलग-अलग मान मिल सकते हैं। इस निरंतर कोण ऑफसेट को दूर करने के लिए हमें अपने द्वारा उपयोग किए जाने वाले प्रत्येक सेंसर का जश्न मनाने की आवश्यकता है। इस स्क्रिप्ट को चलाना:

www.i2cdevlib.com/forums/topic/96-arduino-…

लुइस रोडेनस द्वारा लिखित, हमें ऑफसेट मिलेगा। ऑफ़सेट त्रुटियों को सेटअप () रूटीन में ऑफ़सेट मानों को परिभाषित करके समाप्त किया जा सकता है।

डिजिटल मोशन प्रोसेसर का उपयोग करना

MPU6050 में एक DMP (डिजिटल मोशन प्रोसेसर) होता है।

डीएमपी क्या है? आप डीएमपी को एक ऑनबोर्ड माइक्रोकंट्रोलर के रूप में सोच सकते हैं जो अपने स्वयं के गति संलयन एल्गोरिदम का उपयोग करके एमपीयू 6050 बोर्ड पर 3-अक्ष जीरोस्कोप और 3-अक्ष एक्सेलेरोमीटर से जटिल गति को संसाधित करता है। प्रसंस्करण को उतारना जो अन्यथा Arduino द्वारा किया जाएगा।

इसे कैसे उपयोग करे? यह पता लगाने के लिए कि DMP का उपयोग कैसे किया जाता है, उदाहरण के लिए स्केच MPU6050_DMP6 देखें जो MPU6050 लाइब्रेरी के साथ आता है (Arduino IDE में: फ़ाइल-> उदाहरण-> MPU6050-> MPU6050_DMP6)। यह जांचने का भी एक अच्छा अवसर है कि आपका सेंसर वास्तव में काम करता है और वायरिंग सही है।

चरण 5: कोडिंग

मैंने Arduino प्रो मिनी को प्रोग्राम करने के लिए Arduino IDE और एक FTDI इंटरफ़ेस का उपयोग किया।

उदाहरण के स्केच (MPU6050_DMP6) का उपयोग करना जो MPU6050 लाइब्रेरी के साथ मेरे बेस कोड के रूप में आता है, मैंने एक PID () और MotorDriver () फ़ंक्शन जोड़े।

पुस्तकालय जोड़ें

  • MPU6050: MPU6050 सेंसर का उपयोग करने के लिए हमें जेफ रोबर्ग से I2C डेवलपर लाइब्रेरी डाउनलोड करनी होगी और इसे आपके कंप्यूटर पर प्रोग्राम फाइलों में पाए जाने वाले Arduino "लाइब्रेरीज़" फ़ोल्डर में जोड़ना होगा।
  • वायर: हमें I2C उपकरणों के साथ संचार करने की अनुमति देने के लिए वायर लाइब्रेरी की भी आवश्यकता है।

छद्म कोड

पुस्तकालय शामिल करें:

  • वायर.एच
  • एमपीयू6050
  • I2Cdev.h

चर, स्थिरांक और वस्तुओं को प्रारंभ करें

सेट अप ()

  • मोटर्स को नियंत्रित करने के लिए पिन मोड सेट करें
  • एलईडी स्थिति के लिए पिन मोड सेट करें
  • MPU6050 को इनिशियलाइज़ करें और ऑफ़सेट मान सेट करें

पीआईडी ()

पीआईडी मान की गणना करें

मोटर चालक (पीआईडी प्रतिक्रिया)

मोटरों की गति और दिशा को नियंत्रित करने के लिए PID मान का उपयोग करें

कुंडली ()

  • डीएमपी से डेटा प्राप्त करें
  • कॉल पीआईडी () एक मोटरड्राइवर () फ़ंक्शन

चरण 6: पीआईडी ट्यूनिंग प्रक्रिया

यह परियोजना का सबसे कठिन हिस्सा है और जब तक आप बहुत भाग्यशाली नहीं हो जाते, तब तक थोड़ा धैर्य की आवश्यकता होती है। यहाँ कदम हैं:

  1. I और D पद को 0. पर सेट करें
  2. रोबोट को पकड़े हुए, P को समायोजित करें ताकि रोबोट संतुलन की स्थिति के बारे में दोलन करना शुरू कर दे
  3. P सेट के साथ, I बढ़ाएँ ताकि संतुलन से बाहर होने पर रोबोट तेज़ी से गति करे। पी और आई के साथ ठीक से ट्यून किया गया है, रोबोट कुछ दोलनों के साथ, कम से कम कुछ सेकंड के लिए आत्म-संतुलन करने में सक्षम होना चाहिए
  4. अंत में, डी बढ़ाएँ दोलन को कम करें

यदि पहला प्रयास संतोषजनक परिणाम नहीं देता है, तो P के भिन्न मान के साथ चरणों को दोहराएं। यह भी ध्यान रखें कि आप प्रदर्शन को और बढ़ाने के लिए बाद में PID मानों को ठीक कर सकते हैं। यहां मान हार्डवेयर पर निर्भर हैं, यदि आप बहुत बड़े या बहुत छोटे पीआईडी मान प्राप्त करते हैं तो आश्चर्यचकित न हों।

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

उपयोग किए गए माइक्रो गियर मोटर्स बड़ी गड़बड़ी पर प्रतिक्रिया करने के लिए धीमी गति से थे और सिस्टम बहुत हल्का था, वांछित पेंडुलम प्रभाव प्राप्त करने के लिए पर्याप्त जड़ता नहीं थी, इसलिए यदि रोबोट आगे झुकता है तो यह केवल एक कोण पर झुकता है और आगे की ओर दौड़ता है। अंत में, 3 डी प्रिंटेड व्हील एक खराब विकल्प थे क्योंकि वे फिसलते रहते हैं।

सुधार हेतु सुझाव:

  • उच्च टोक़ के साथ तेज़ मोटर, यानी डीसी मोटर्स के लिए उच्च वोल्टेज रेटिंग उच्च टोक़
  • एक भारी बैटरी प्राप्त करें या बस द्रव्यमान को थोड़ा ऊपर ले जाएँ
  • अधिक कर्षण प्राप्त करने के लिए 3D मुद्रित पहियों को रबर वाले से बदलें

सिफारिश की: