इस ट्यूटोरियल में, हम कुछ कार्डबोर्ड और सर्वो मोटर्स से एक Arduino Uno आधारित रोबोट आर्म डिजाइन करने जा रहे हैं । निर्माण की पूरी प्रक्रिया को नीचे विस्तार से बताया गया है। यहाँ इस परियोजना में Arduino Uno को सर्वो मोटर्स को नियंत्रित करने के लिए क्रमादेशित किया गया है जो रोबोटिक भुजा के जोड़ों के रूप में कार्य कर रहे हैं। यह सेटअप एक रोबोट क्रेन के रूप में भी दिखता है या हम इसे कुछ आसान मोड़ के द्वारा क्रेन में परिवर्तित कर सकते हैं। यह प्रोजेक्ट उन शुरुआती लोगों के लिए मददगार होगा जो कम लागत में एक सिंपल रोबोट विकसित करना सीखना चाहते हैं या सिर्फ Arduino और सर्वो मोटर्स के साथ काम करना सीखना चाहते हैं।
इस Arduino Robotic Arm को इससे जुड़े चार Potentiometer द्वारा नियंत्रित किया जा सकता है, प्रत्येक Potentiometer का उपयोग प्रत्येक सर्वो को नियंत्रित करने के लिए किया जाता है। आप किसी भी वस्तु को लेने के लिए बर्तनों को घुमाकर इन सर्वो को स्थानांतरित कर सकते हैं, कुछ अभ्यास के साथ आप आसानी से वस्तु को एक स्थान से दूसरे स्थान पर ले जा सकते हैं। हमने यहां कम टॉर्क सर्वो का उपयोग किया है लेकिन आप भारी वस्तुओं को लेने के लिए अधिक शक्तिशाली सर्वो का उपयोग कर सकते हैं। पूरी प्रक्रिया को वीडियो में अंत में अच्छी तरह से प्रदर्शित किया गया है । हमारे अन्य रोबोटिक्स प्रोजेक्ट्स को भी यहां देखें।
अवयव आवश्यक
- अरुडिनो उनो
- 1000uF संधारित्र (4 टुकड़े)
- 100nF संधारित्र (4 टुकड़े)
- सर्वो मोटर (SG 90- चार टुकड़े)
- 10K पॉट- वेरिएबल रिसिस्टर (4 टुकड़े)
- बिजली की आपूर्ति (5v- अधिमानतः दो)
सर्वो मोटर
पहले हम सर्वो मोटर्स के बारे में थोड़ी बात करते हैं। सर्वो मोटर्स का उपयोग मुख्य रूप से तब किया जाता है जब सटीक शाफ्ट आंदोलन या स्थिति की आवश्यकता होती है। ये उच्च गति अनुप्रयोगों के लिए प्रस्तावित नहीं हैं। इमदादी मोटर्स कम गति, मध्यम टोक़ और सटीक स्थिति आवेदन के लिए प्रस्तावित हैं। इसलिए ये मोटरें रोबोटिक आर्म डिजाइन करने के लिए सबसे अच्छी हैं ।
सर्वो मोटर्स विभिन्न आकारों और आकारों में उपलब्ध हैं। हम छोटे सर्वो मोटर्स का उपयोग करने जा रहे हैं, यहाँ हम चार SG90 सर्वो का उपयोग करते हैं । एक सर्वो मोटर में मुख्य रूप से तार होते हैं, एक सकारात्मक वोल्टेज के लिए होता है दूसरा जमीन के लिए होता है और अंतिम स्थिति के लिए होता है। RED तार बिजली से जुड़ा होता है, काला तार जमीन से जुड़ा होता है और YELLOW तार सिग्नल से जुड़ा होता है। इसके बारे में अधिक जानने के लिए Arduino का उपयोग करके सर्वो मोटर को नियंत्रित करने के इस ट्यूटोरियल के माध्यम से जाएं। Arduino में हमने सर्वो को नियंत्रित करने के लिए पुस्तकालयों को पूर्वनिर्धारित किया है, इसलिए सर्वो को नियंत्रित करना बहुत आसान है, जिसे आप इस ट्यूटोरियल के साथ सीखेंगे।
रोबोट आर्म का निर्माण
एक सपाट और स्थिर सतह, जैसे टेबल या हार्ड कार्ड बोर्ड लें। इसके बाद बीच में एक इमदादी मोटर रखें और जगह में इसे गोंद दें। सुनिश्चित करें कि आकृति में प्रस्तुत क्षेत्र में रोटेशन की डिग्री है। यह सर्वो भुजा के आधार के रूप में कार्य करता है।
पहले सर्वो के ऊपर कार्डबोर्ड का एक छोटा टुकड़ा रखें और फिर बोर्ड के इस टुकड़े पर दूसरा सर्वो रखें और इसे जगह में गोंद दें। सर्वो रोटेशन को आरेख से मेल खाना चाहिए।
कुछ कार्डबोर्ड लें और उन्हें 3 सेमी x 11 सेमी टुकड़ों में काट लें। सुनिश्चित करें कि टुकड़ा नरम नहीं हुआ है। एक आयताकार छेद को एक छोर पर काटें (नीचे से 0.8 सेमी छोड़ दें) बस एक और सर्वो फिट करने के लिए पर्याप्त है और दूसरे छोर पर सर्वो गियर को शिकंजा या गोंद द्वारा कसकर फिट करें। फिर पहले छेद में तीसरे सर्वो को फिट करें ।
अब नीचे दिखाए गए लंबाई के साथ एक और कार्डबोर्ड का टुकड़ा काटें और इस टुकड़े के नीचे एक और गियर गोंद करें।
अब चौथे और अंतिम सर्वो को दूसरे टुकड़े के किनारे पर गोंद करें जैसा कि चित्र में दिखाया गया है।
इसके साथ, दो टुकड़े एक साथ दिखते हैं।
जब हम इस सेटअप को आधार से जोड़ते हैं, तो इसे जैसा दिखना चाहिए,
ये बस होने वाला है। हमें बस एक रोबोटिक हाथ की तरह ऑब्जेक्ट को हथियाने और लेने की जरूरत है । हुक के लिए, 1cmx7cm और 4cmx5cm लंबाई के कार्ड बोर्ड के एक और दो टुकड़े काट लें। उन्हें एक साथ गोंद करें जैसा कि आंकड़े में दिखाया गया है और बहुत किनारे पर अंतिम गियर छड़ी।
इस टुकड़े को शीर्ष पर माउंट करें और इसके साथ हमने अपने रोबोट आर्म का निर्माण किया है ।
इसके साथ, हमारी बुनियादी रोबोटिक बांह की डिजाइन पूरी हो गई और इसी तरह हमने अपनी कम लागत वाली रोबोटिक शाखा का निर्माण किया। अब सर्किट आरेख के अनुसार ब्रेडबोर्ड में सर्किट को कनेक्ट करें।
सर्किट आरेख और कार्य विवरण:
Arduino Uno Robotic Arm के लिए सर्किट कनेक्शन नीचे दिखाया गया है।
चर प्रतिरोधों में वोल्टेज पूरी तरह से रैखिक नहीं है; यह एक शोर होगा। तो इस शोर को छानने के लिए, कैपेसिटर को प्रत्येक प्रतिरोधक पर रखा जाता है, जैसा कि चित्र में दिखाया गया है।
अब हम Arduino के ADC चैनल में इन वैरिएबल रेसिस्टर (वोल्टेज जो स्थिति नियंत्रण का प्रतिनिधित्व करते हैं) द्वारा प्रदान की गई वोल्टेज को फीड करेंगे। हम इसके लिए A0 से A3 तक UNO के चार ADC चैनलों का उपयोग करने जा रहे हैं। एडीसी के आरंभ के बाद, हमारे पास उपयोगकर्ता द्वारा आवश्यक स्थिति का प्रतिनिधित्व करने वाले बर्तनों का डिजिटल मूल्य होगा। हम यह मान लेंगे और इसे सर्वो स्थिति के साथ मिलाएंगे।
Arduino में छह ADC चैनल हैं। हमने अपने रोबोट आर्म के लिए चार का इस्तेमाल किया है । यूएनओ एडीसी 10 बिट रिज़ॉल्यूशन का है, इसलिए पूर्णांक मान 0-1023 (2 ^ 10 = 1024 मान) से लेकर हैं। इसका मतलब है कि यह 0 और 10 वोल्ट के बीच 0 और 1023 के बीच पूर्णांक मानों में इनपुट वोल्टेज को मैप करेगा। इसलिए प्रति यूनिट (5/1024 = 4.9mV) प्रति यूनिट। यहाँ Arduino में ADC चैनलों का उपयोग करके वोल्टेज स्तरों की मैपिंग के बारे में और जानें।
अब UNO के लिए एनालॉग सिग्नल को डिजिटल सिग्नल में बदलने के लिए, हमें नीचे दिए गए कार्यों की मदद से Arduino Uno के ADC चैनल का उपयोग करने की आवश्यकता है:
1. एनालॉगरेड (पिन); 2. अनुरूपता (); 3. analogReadResolution (बिट्स);
Arduino ADC चैनलों का डिफ़ॉल्ट संदर्भ मान 5V है । इसका मतलब है कि हम किसी भी इनपुट चैनल पर ADC रूपांतरण के लिए अधिकतम 5V का इनपुट वोल्टेज दे सकते हैं। चूंकि कुछ सेंसर 0-2.5V से वोल्टेज प्रदान करते हैं, इसलिए 5V संदर्भ के साथ, हमें कम सटीकता मिलती है, इसलिए हमारे पास एक निर्देश है जो हमें इस संदर्भ मूल्य को बदलने में सक्षम बनाता है। तो संदर्भ मूल्य बदलने के लिए हमारे पास "analogReference ();"
डिफ़ॉल्ट रूप से हमें अधिकतम बोर्ड एडीसी रिज़ॉल्यूशन मिलता है जो 10 बिट्स है, इस रिज़ॉल्यूशन को निर्देश ("analogReadResolution (बिट्स);") का उपयोग करके बदला जा सकता है।
हमारे रोबोट हाथ सर्किट में, हम डिफ़ॉल्ट करने के लिए इस संदर्भ वोल्टेज छोड़ दिया है, तो हम सीधे कॉल समारोह द्वारा एडीसी चैनल से मूल्य पढ़ सकते हैं "analogRead (पिन),", यहाँ "पिन" जहाँ हम अनुरूप संकेत जुड़े पिन का प्रतिनिधित्व करता है, कहते हैं हम "A0" पढ़ना चाहते हैं। ADC से मान को एक पूर्णांक में SENSORVALUE0 = analogRead (A0) के रूप में संग्रहीत किया जा सकता है ; ।
अब बात करते हैं सर्वो के बारे में, Arduino Uno में एक विशेषता है जो हमें केवल डिग्री मान देकर सर्वो स्थिति को नियंत्रित करने में सक्षम बनाता है। यदि हम चाहते हैं कि सर्वो 30 पर हो, तो हम सीधे कार्यक्रम में मूल्य का प्रतिनिधित्व कर सकते हैं। सर्वो हेडर ( Servo.h ) फ़ाइल आंतरिक रूप से सभी ड्यूटी अनुपात गणनाओं का ध्यान रखती है।
#शामिल
यहाँ पहले बयान सर्वो मोटर को नियंत्रित करने के लिए हेडर फ़ाइल का प्रतिनिधित्व करता है। दूसरा बयान सर्वो का नामकरण कर रहा है; हम इसे सर्व के रूप में छोड़ते हैं क्योंकि हम चार का उपयोग करने जा रहे हैं। तीसरा कथन बताता है कि सर्वो सिग्नल पिन कहां से जुड़ा है; यह एक PWM पिन होना चाहिए। यहां हम पहले सर्वो के लिए PIN3 का उपयोग कर रहे हैं। चौथा कथन डिग्री में सर्वो मोटर की स्थिति के लिए आदेश देता है। यदि इसे 30 दिया जाता है, तो सर्वो मोटर 30 डिग्री घूमती है।
अब, हमारे पास 0 से 180 तक SG90 सर्वो स्थिति है और ADC मान 0-1023 से हैं। हम एक विशेष फ़ंक्शन का उपयोग करेंगे जो स्वचालित रूप से दोनों मूल्यों से मेल खाता है।
Sensvalue0 = map (Sensvalue0, 0, 1023, 0, 180);
यह कथन दोनों मानों को स्वचालित रूप से मैप करता है और परिणाम को पूर्णांक 'servovalue0' में संग्रहीत करता है ।
इसी तरह से हमने Arduino का उपयोग करके अपने Robotic Arm प्रोजेक्ट में Servos को नियंत्रित किया है । नीचे पूर्ण कोड की जाँच करें।
रोबोट शाखा का संचालन कैसे करें:
उपयोगकर्ता को चार बर्तन दिए गए हैं। और इन चार बर्तनों को घुमाकर, हम संयुक्त राष्ट्र संघ के एडीसी चैनलों पर चर वोल्टेज प्रदान करते हैं। इसलिए Arduino के डिजिटल मूल्य उपयोगकर्ता के नियंत्रण में हैं। इन डिजिटल मूल्यों को सर्वो मोटर स्थिति को समायोजित करने के लिए मैप किया जाता है, इसलिए सर्वो स्थिति उपयोगकर्ता के नियंत्रण में होती है और इन बर्तनों को घुमाकर उपयोगकर्ता रोबोट के हाथ के जोड़ों को स्थानांतरित कर सकता है और किसी भी वस्तु को उठा या पकड़ सकता है ।