- अवयव आवश्यक
- 3 डी मुद्रित रोबोट एआरएम तैयार हो रहा है
- सर्किट आरेख
- रोबोट आर्म के लिए प्रोग्रामिंग LPC2148 में शामिल कदम
- कोडिंग स्पष्टीकरण
- पुश बटन का उपयोग करके घुमाने के लिए सर्वो मोटर का चयन करना
- पिक एंड प्लेस रोबोटिक आर्म का कार्य
रोबोटिक आर्म्स, आकर्षक इंजीनियरिंग क्रिएशन में से एक हैं और इन चीजों को झुकाव और पैन को देखने के लिए हमेशा आकर्षक होता है, जैसे कि इंसान की बांह पर जटिल चीजें होती हैं। इन रोबोटिक हथियारों को आमतौर पर वेल्डिंग, ड्रिलिंग, पेंटिंग आदि जैसे गहन यांत्रिक काम करने वाले असेंबली लाइन में उद्योगों में पाया जा सकता है, हाल ही में उच्च परिशुद्धता के साथ उन्नत रोबोटिक हथियार भी जटिल सर्जिकल ऑपरेशन करने के लिए विकसित किए जा रहे हैं। तो इस ट्यूटोरियल में आइए ARM7-LPC2148 माइक्रोकंट्रोलर का उपयोग करके एक सरल रोबोट आर्म का निर्माण करें और कुछ पोटेंशियोमीटर को नियंत्रित करके मैन्युअल रूप से ऑब्जेक्ट को उठाएं।
इस ट्यूटोरियल में हम 3 डी प्रिंटेड रोबोटिक एआरएम का उपयोग करेंगे जो कि राइटवर्स में प्रक्रिया का पालन करके बनाया गया था । एआरएम रोबोट एआरएम आंदोलन के लिए 4 सर्वो मोटर का उपयोग करता है। यदि आपके पास प्रिंटर नहीं है, तो आप अपने कार्ड को साधारण कार्डबोर्ड से भी बना सकते हैं, जैसे कि हमने अपने Arduino Robotic Arm Project के लिए बनाया है। प्रेरणा के लिए आप रिकॉर्ड और प्ले रोबोट आर्म का भी उल्लेख कर सकते हैं जो हमने पहले Arduino का उपयोग करके बनाया था।
तो चलिए अब अपने प्रोजेक्ट के लिए तैयार हो जाएँ
अवयव आवश्यक
- 3 डी प्रिंटर रोबोट एआरएम
- ARM7-LPC2148
- SG-90 सर्वो मोटर (4)
- 10k पोटेंशियोमीटर (4)
- पुश बटन (4)
- एलईडी (4)
- 5 वी (1 ए) डीसी पावर एडाप्टर
- प्रतिरोधों (10k (4), 2.2k (4))
- ब्रेड बोर्ड
- तारों को जोड़ना
3 डी मुद्रित रोबोट एआरएम तैयार हो रहा है
इस ट्यूटोरियल में उपयोग किए गए 3 डी प्रिंटेड रोबोटिक आर्म को EEZYbotARM द्वारा दिए गए डिज़ाइन का अनुसरण करके बनाया गया था जो कि थाइरिवर्स में उपलब्ध है। 3 डी प्रिंटेड रोबोटिक आर्म बनाने की पूरी प्रक्रिया और वीडियो के साथ असेंबलिंग डिटेल लिंक लिंक में मौजूद हैं, जो ऊपर साझा किया गया है।
यह 4 इमदादी मोटर्स के साथ संयोजन के बाद मेरी 3 डी मुद्रित रोबोटिक आर्म की छवि है।
सर्किट आरेख
निम्न छवि एआरएम आधारित रोबोट आर्म के सर्किट कनेक्शन दिखाती है ।
परियोजना के लिए सर्किट कनेक्शन सरल है। एक अलग 5V डीसी पावर एडाप्टर के साथ सर्वो मोटर्स को पावर करना सुनिश्चित करें। पोटेंशियोमीटर और पुश बटन के लिए हम LPC2148 माइक्रोकंट्रोलर से उपलब्ध 3.3V का उपयोग कर सकते हैं।
यहां हम एलपीसी 2148 के 4 एडीसी पिन का उपयोग 4 पोटेंशियोमीटर के साथ कर रहे हैं। और यह भी LPC2148 के 4 PWM पिन सर्वो मोटर के PWM पिन के साथ जुड़ा हुआ है। किस मोटर को ऑपरेट करना है, इसे चुनने के लिए हमने 4 पुश बटन भी कनेक्ट किए हैं। तो, बटन दबाने के बाद इज्जतदार नापने का यंत्र इमदादी मोटर की स्थिति को बदलने के लिए विविध है।
पुश बटन एक छोर जो LPC2148 के GPIO के साथ जुड़ा हुआ है, 10k के अवरोधक के माध्यम से पुल-डाउन है और दूसरा छोर 3.3V के साथ जुड़ा हुआ है। इसके अलावा 4 एल ई डी यह इंगित करने के लिए जुड़े हुए हैं कि किस इमदादी मोटर को स्थिति बदलने के लिए चुना गया है।
4 सर्वो मोटर और LPC2148 के बीच सर्किट कनेक्शन:
LPC2148 | सर्वो मोटर |
P0.1 | SERVO1 (PWM-Orange) |
P0.7 | SERVO2 (PWM-Orange) |
P0.8 | SERVO3 (PWM-Orange) |
P0.21 | SERVO4 (PWM-Orange) |
4 पोटेंशियोमीटर और LPC2148 के बीच सर्किट कनेक्शन:
LPC2148 | पोटेंशियोमीटर सेंटर पिन लेफ्ट पिन - LPC2148 का 0V GND राइट पिन - LPC2148 का 3.3V |
P0.25 | पोटेंटियोमीटर 1 |
P0.28 | पोटेंशियोमीटर 2 |
P0.29 | पोटेंशियोमीटर 3 |
P0.30 | पोटेंशियोमीटर ४ |
LPC2148 के साथ 4 LED के सर्किट कनेक्शन:
LPC2148 | एलईडी एनोड (सभी एलईडी का कैथोड GND है) |
P1.28 | LED1 (एनोड) |
P1.29 | LED2 (एनोड) |
P1.30 | LED3 (एनोड) |
P1.31 | LED4 (एनोड) |
LPC2148 के साथ 4 पुश बटन के सर्किट कनेक्शन:
LPC2148 | पुश बटन (पुल-डाउन रेसिस्टर 10k के साथ) |
P1.17 | Pushbutton1 |
P1.18 | Pushbutton2 |
P1.19 | पुशबटन ३ |
P1.20 | Pushbutton4 |
रोबोट आर्म के लिए प्रोग्रामिंग LPC2148 में शामिल कदम
इस रोबोटिक आर्म के लिए प्रोग्रामिंग करने से पहले, हमें LPC2148 में PWM उत्पन्न करने और ARM7-LPC2148 में ADC का उपयोग करने के बारे में जानना होगा। उसके लिए, LPC2148 के साथ Interfacing सर्वो मोटर पर हमारी पिछली परियोजनाओं को देखें और LPC2148 में ADC का उपयोग कैसे करें।
LPC2148 का उपयोग करके ADC रूपांतरण
जैसा कि हमें इमदादी मोटर स्थिति को नियंत्रित करने के लिए पीडब्लूएम आउटपुट उत्पन्न करने के लिए शुल्क चक्र मूल्य निर्धारित करने के लिए एडीसी मान प्रदान करने की आवश्यकता है। हमें पोटेंशियोमीटर के एडीसी मूल्यों को खोजने की आवश्यकता है। जैसा कि हमारे पास चार सर्वो मोटर को नियंत्रित करने के लिए चार पोटेंशियोमीटर हैं, हमें LPC2148 के 4 एडीसी चैनल की आवश्यकता है । यहाँ इस ट्यूटोरियल में हम ADC चैनल के ADC पिन (P0.25, P0.28, P0.29, P0.30) का उपयोग कर रहे हैं, जो क्रमशः LPC2148 में मौजूद हैं।
LPC2148 का उपयोग करके सर्वो मोटर के लिए PWM सिग्नल उत्पन्न करना
जैसा कि हमें सर्वो मोटर की स्थिति को नियंत्रित करने के लिए पीडब्लूएम सिग्नल उत्पन्न करने की आवश्यकता है। हमें पीडब्लूएम का कर्तव्य चक्र निर्धारित करने की आवश्यकता है। हमारे पास रोबोट से जुड़ी चार सर्वो मोटरें हैं, इसलिए हमें LPC2148 के 4 PWM चैनल की आवश्यकता है। यहाँ इस ट्यूटोरियल में हम PW2 चैनल के PWM पिन (P0.1, P0.7, P0.8, P0.21) का उपयोग कर रहे हैं, क्रमशः LPC2148 में मौजूद हैं।
प्रोग्रामिंग और फ्लैशिंग हेक्स फ़ाइल LPC2148 के लिए
ARM7-LPC2148 प्रोग्राम करने के लिए हमें keil uVision की जरूरत है और HEX कोड को LPC2148 फ्लैश मैजिक टूल की जरूरत है। माइक्रो यूएसबी पोर्ट के माध्यम से एआरएम 7 स्टिक को प्रोग्राम करने के लिए यहां एक यूएसबी केबल का उपयोग किया जाता है । हम Keil का उपयोग करते हुए कोड लिखते हैं और एक हेक्स फ़ाइल बनाते हैं और फिर HEX फाइल को फ्लैश मैजिक का उपयोग करते हुए ARM7 स्टिक में लाते हैं । काइल uVision और फ्लैश मैजिक को स्थापित करने के बारे में अधिक जानने के लिए और उनका उपयोग कैसे करें लिंक का पालन करें ARM7 LPC2148 माइक्रोकंट्रोलर के साथ शुरुआत करें और इसे Keil uVision का उपयोग करके प्रोग्राम करें।
कोडिंग स्पष्टीकरण
इस रोबोटिक आर्म प्रोजेक्ट का पूरा कार्यक्रम ट्यूटोरियल के अंत में दिया गया है। अब आइए प्रोग्रामिंग को विस्तार से देखें।
GPIO, PWM और ADC का उपयोग करने के लिए LPC2148 के पोर्ट को कॉन्फ़िगर करना:
ADC चैनल- ADC0.4, ADC0.1, ADC0.3 को पिन P0.25, P0.28, P0.29, P0.30 के लिए सक्षम करने के लिए PINSEL1 रजिस्टर का उपयोग करना। और पिन P0.21 (1 << 10) के लिए PWM5 के लिए भी।
#define AD04 (1 << 18) // P0.25 के लिए AD0.4 फ़ंक्शन का चयन करें #define AD01 (1 << 24) // P0.28 #define AD02 (1 << 26) के लिए AD0.1 फ़ंक्शन का चयन करें / P0.29 #define AD03 के लिए AD0.2 फ़ंक्शन का चयन करें (1 << 28) // P0.30 PINSEL1 के लिए AD0.3 फ़ंक्शन का चयन करें - = AD04 - AD01 - AD02 - AD03 - (1 << 10);
PWM चैनल को PWM3, PWM2, PWM4 को पिन P0.1, P0.7, LPC2148 के P0.8 के लिए सक्षम करने के लिए PINSEL0 रजिस्टर का उपयोग करना।
PINSEL0 = 0x000A800A;
LED और पुशबटन के कनेक्शन के लिए उपयोग किए जाने वाले PORT1 में सभी पिनों के लिए GPIO पिन फ़ंक्शन को सक्षम करने के लिए PINSEL2 रजिस्टर का उपयोग करना।
PINSEL2 = 0x00000000;
इनपुट के रूप में एलईडी पिन बनाने के लिए और इनपुट IODIR1 रजिस्टर के रूप में पुशबटन पिन का उपयोग किया जाता है। (INPUT के लिए 0 और OUTPUT के लिए 1)
IODIR1 = ((0 << 17) - (0 << 18) - (0 << 19) - (0 << 20) - (1 << 28) - (1 << 29) - (1 << 30)) - (1 << 31));
जबकि पिन नंबर को परिभाषित किया गया है
#define SwitchPinNumber1 17 // (P1.17 से जुड़ा) #define SwitchPinNumber2 18 // (P1.18 के साथ जुड़ा) #define स्विचपिनंबर 3 (// P1.19 के साथ जुड़ा हुआ) #define स्विचपिनNumber4 20 // (P1 के साथ जुड़ा हुआ)। 20) #define LedPinNumber1 28 // (P1.28 से जुड़ा हुआ) #define LedPinNumber2 29 // (P1.29 से जुड़ा) #define LedPinNumber3 30 // (P1.30 से जुड़ा हुआ) #define LedPinNumber4 31 // (जुड़ा हुआ) P1.31)
ADC रूपांतरण सेटिंग कॉन्फ़िगर करना
ADC रूपांतरण मोड और ADC के लिए घड़ी AD0CR_setup रजिस्टर का उपयोग करके सेट की गई है।
अहस्ताक्षरित लंबे AD0CR_setup = (CLKDIV << 8) - BURST_MODE_OFF - पॉवरअप; // एडीसी मोड की स्थापना
जबकि CLCKDIV, बर्स्ट मोड और पावरअप को परिभाषित किया गया है
#define CLKDIV (15-1) #define BURST_MODE_OFF (0 << 16) // 1 ऑन और 0 फॉर ऑफ #define पॉवरअप (1 << 21)
ADC रूपांतरण (CLKDIV) के लिए घड़ी सेट करना
इसका उपयोग ADC के लिए घड़ी का उत्पादन करने के लिए किया जाता है। 4Mhz ADC घड़ी (ADC_CLOCK = PCLK / CLKDIV) जहां "CLKDIV-1" वास्तव में उपयोग किया जाता है, हमारे मामले में PCLK = 60mhz
बर्स्ट मोड (बिट -16): इस बिट का उपयोग BURST रूपांतरण के लिए किया जाता है। यदि यह बिट सेट है तो ADC मॉड्यूल उन सभी चैनलों के लिए रूपांतरण करेगा जो SEL बिट्स में चयनित (SET) हैं। इस बिट में 0 सेट करने से BURST रूपांतरण अक्षम हो जाएगा।
पावर डाउन मोड (बिट -21): इसका उपयोग एडीसी चालू या बंद करने के लिए किया जाता है। इस बिट में सेटिंग (1) एडीसी को पावर डाउन मोड से बाहर लाता है और इसे चालू करता है। इस बिट को साफ़ करने से ADC को शक्ति मिलेगी।
PWM रूपांतरण सेटिंग कॉन्फ़िगर करना
PWMTCR रजिस्टर का उपयोग करके पहले PWM के लिए रीसेट करें और अक्षम करें और prescaler मान के साथ PWM टाइमर प्रेस्केल रजिस्टर सेटअप करें।
PWMTCR = 0x02; PWMPR = 0x1D;
अगला एक चक्र में अधिकतम संख्या सेट करें। यह मैच रजिस्टर 0 (PWMMR0) में किया जाता है। जैसा कि हमारे पास 20000 है क्योंकि यह 20msecs की PWM लहर है
PWMMR0 = 20000;
इसके बाद मैच रजिस्टरों में कर्तव्य चक्र के लिए मूल्य निर्धारित करें, हम PWMMR4, PWMMR2, PWMMR3, PWMMR5 का उपयोग कर रहे हैं। यहां हम 0 मिसेक (टोफ) के प्रारंभिक मान सेट कर रहे हैं
PWMMR4 = 0; PWMMR2 = 0; PWMMR3 = 0; PWMMR5 = 0;
उसके बाद PWM मैच कंट्रोल रजिस्टर सेट करें जब मैच रजिस्टर होने पर काउंटर रीसेट का कारण बने।
PWMMCR = 0x00000002; // MR0 मैच पर रीसेट करें
उसके बाद, PWM ने मैच वैल्यू (PWMLER) के उपयोग को सक्षम करने के लिए रजिस्टर सक्षम करें को कुंडी लगाई
PWMLER = 0x7C; // PWM2, PWM4, PWM4 और PWM5 के लिए सक्षम लैच
PWM टाइमर कंट्रोल रजिस्टर (PWMTCR) में थोड़ा सा उपयोग करके टाइमर काउंटर को रीसेट करें और यह भी PWM को सक्षम करता है।
PWMTCR = 0x09; // PWM और काउंटर सक्षम करें
अगला पीडब्लूएम आउटपुट को सक्षम करें और पीडब्लूएम को पीडब्लूएम कंट्रोल रजिस्टर (पीडब्लूएमसीआर) में सिंगल एज-नियंत्रित मोड में सेट करें ।
PWMPCR = 0x7C00; // PWM2, PWM4, PWM4 और PWM5, सिंगल एज नियंत्रित PWM सक्षम करें
पुश बटन का उपयोग करके घुमाने के लिए सर्वो मोटर का चयन करना
हमारे पास चार पुश बटन हैं जो चार अलग-अलग सर्वो मोटर्स को घुमाने के लिए उपयोग किए जाते हैं। एक पुश बटन का चयन करके और संबंधित पोटेंशियोमीटर को अलग करके, ADC मान कर्तव्य चक्र निर्धारित करता है और इसी सर्वो मोटर इसकी स्थिति को बदलता है। पुश बटन स्विच की स्थिति प्राप्त करने के लिए
switchStatus1 = (IOPIN1 >> SwitchPinNumber1) & 0x01;
तो, किस स्विच मूल्य के आधार पर, ADC रूपांतरण स्थान लेता है और फिर ADC (0 से 1023) मान के सफल रूपांतरण के बाद, इसे (0 से 2045) के संदर्भ में मैप किया जाता है और फिर कर्तव्य चक्र मान लिखा जाता है (PWMMRx) PWM पिन सर्वो मोटर से जुड़ा है। और यह भी, एक एलईडी उच्च है जो इंगित करने के लिए कि स्विच दबाया गया है। निम्नलिखित पहला पुश बटन के लिए एक उदाहरण है
if (switchStatus1 == 1) { IOPIN1 = (1 <
पिक एंड प्लेस रोबोटिक आर्म का कार्य
LPC2148 पर कोड अपलोड करने के बाद, किसी भी स्विच को दबाएं और रोबोट आर्म की स्थिति को बदलने के लिए संबंधित पोटेंशियोमीटर को अलग-अलग करें।
प्रत्येक स्विच और पोटेंशियोमीटर प्रत्येक सर्वोमोटर मूवमेंट को नियंत्रित करता है जो बेस लेफ्ट या राइट मूवमेंट, अप या डाउन मूवमेंट, फॉरवर्ड या बैकवर्ड होता है और फिर ग्रिपर को मूवमेंट और रिलीज होता है। एक विस्तृत कार्य वीडियो के साथ पूरा कोड नीचे दिया गया है।