- सर्किट आरेख
- सर्वो मोटर नियंत्रण के लिए GPIO पिन पर PWM सिग्नल उत्पन्न करना
- रोबोट आर्म के लिए प्रोग्रामिंग PIC16F8771A
- तस्वीर रोबोट शाखा का अनुकरण
- पीसीबी डिजाइन ईज़ीडा का उपयोग कर
- गणना और आदेश ऑनलाइन नमूने
- पीआईसी रोबोट शाखा का कार्य
ऑटोमोबाइल विनिर्माण उद्योगों की असेंबली लाइन से लेकर अंतरिक्ष में टेलीसर्जरी रोबोट तक, रोबोटिक आर्म्स हर जगह पाए जाने हैं। इन रोबोटों के तंत्र मानव के समान हैं जिन्हें समान कार्य और बढ़ी हुई क्षमताओं के लिए प्रोग्राम किया जा सकता है। उनका उपयोग मनुष्यों की तुलना में तेजी से और सटीक तरीके से दोहराया क्रिया करने के लिए किया जा सकता है या मानव जीवन को जोखिम में डाले बिना कठोर वातावरण में उपयोग किया जा सकता है। हमने पहले से ही Arduino का उपयोग करके एक रिकॉर्ड और प्ले रोबोट रोबोट का निर्माण किया है जिसे एक विशेष कार्य करने के लिए प्रशिक्षित किया जा सकता है और हमेशा के लिए दोहराया जा सकता है।
इस ट्यूटोरियल में हम पोटेनियोमीटर के साथ एक ही रोबोटिक हाथ को नियंत्रित करने के लिए उद्योग मानक PIC16F877A 8-बिट माइक्रोकंट्रोलर का उपयोग करेंगे । इस परियोजना के साथ चुनौती यह है कि PIC16F877A में केवल दो PWN सक्षम पिन हैं, लेकिन हमें अपने रोबोट के लिए लगभग 5 सर्वो मोटर्स को नियंत्रित करने की आवश्यकता है जिसमें 5 व्यक्तिगत PWM पिन की आवश्यकता होती है। इसलिए हमें GPIO पिन का उपयोग करना होगा और टाइमर में व्यवधान डालने वाले PIC GPIO पिन पर PWM सिग्नल उत्पन्न करना होगा। अब, निश्चित रूप से हम बेहतर माइक्रोकंट्रोलर में अपग्रेड कर सकते हैं या यहां चीजों को बहुत आसान बनाने के लिए डे-मल्टीप्लेक्स आईसी का उपयोग कर सकते हैं। लेकिन फिर भी, यह इस परियोजना को सीखने के अनुभव के लिए प्रयास करने के लायक है।
रोबोटिक हाथ की यांत्रिक संरचना जो मैं इस परियोजना में उपयोग कर रहा हूं, वह मेरी पिछली परियोजना के लिए पूरी तरह से 3 डी प्रिंटेड थी; आप पूरी डिज़ाइन फ़ाइलें और कोडांतरण प्रक्रिया यहाँ पा सकते हैं। वैकल्पिक रूप से, यदि आपके पास 3 डी प्रिंटर नहीं है, तो आप लिंक में शो के रूप में कार्डबोर्ड का उपयोग करके एक सरल रोबोट आर्म भी बना सकते हैं। यह मानते हुए कि आपने किसी तरह से अपने रोबोट आर्म को पकड़ लिया है, परियोजना में आगे बढ़ने देता है।
सर्किट आरेख
इस PIC माइक्रोकंट्रोलर पर आधारित रोबोटिक आर्म के लिए पूरा सर्किट आरेख नीचे दिखाया गया है। ईजीएडीए का उपयोग करके योजनाबद्धता तैयार की गई थी।
सर्किट आरेख बहुत सरल है; पूरा प्रोजेक्ट 12V एडॉप्टर द्वारा संचालित है । यह 12V तब दो 7805 वोल्ट नियामकों का उपयोग करके + 5V में परिवर्तित हो जाता है। एक को + 5 वी के रूप में और दूसरे को + 5 वी (2) के रूप में लेबल किया गया है। दो नियामकों के होने का कारण यह है कि जब सर्वो घूमता है तो यह बहुत अधिक धारा में खींचता है जो एक वोल्टेज ड्रॉप बनाता है। यह वोल्टेज ड्रॉप PIC को स्वयं को पुनरारंभ करने के लिए मजबूर करता है, इसलिए हम PIC और सर्वो मोटर्स दोनों को एक ही + 5V रेल पर संचालित नहीं कर सकते हैं। तो + 5V के रूप में लेबल वाले PIC Microcontroller, LCD और Potentiometers को अलग करने के लिए उपयोग किया जाता है और एक अलग नियामक आउटपुट जिसे + 5V (2) के रूप में लेबल किया जाता है, का उपयोग सर्वो मोटर्स को बिजली देने के लिए किया जाता है।
पोटेंशियोमीटर के पांच आउटपुट पिंस जो 0V से 5V तक एक वैरिएबल वोल्टेज प्रदान करते हैं, PIC के एनालॉग पिन An0 से AN4 से जुड़े होते हैं। चूंकि हम PWM उत्पन्न करने के लिए टाइमर का उपयोग करने की योजना बना रहे हैं, इसलिए इमदादी मोटर्स को किसी भी GPIO पिन से जोड़ा जा सकता है। मैंने इमदादी मोटरों के लिए RD2 से RD6 के लिए पिन फॉर्म का चयन किया है, लेकिन यह आपकी पसंद का कोई भी GPIO हो सकता है।
चूंकि प्रोग्राम में बहुत डिबगिंग शामिल है, इसलिए एक 16x2 एलसीडी डिस्प्ले भी पीआईसीबी के पोर्टब के लिए बाधित है। यह इमदादी मोटर्स के कर्तव्य चक्र को प्रदर्शित करेगा जिन्हें नियंत्रित किया जा रहा है। इसके अलावा मैंने सभी GPIO और एनालॉग पिन के लिए कनेक्शन भी बढ़ाया है, बस अगर किसी सेंसर को भविष्य में हस्तक्षेप करने की आवश्यकता होती है। अंत में मैंने ICSP प्रोग्रामिंग विकल्प का उपयोग करके सीधे PIC को पिकिट 3 के साथ प्रोग्रामर पिन H1 से जोड़ा है।
सर्वो मोटर नियंत्रण के लिए GPIO पिन पर PWM सिग्नल उत्पन्न करना
एक बार सर्किट तैयार हो जाने के बाद हमें यह पता लगाना होगा कि सर्वो मोटर को नियंत्रित करने के लिए PIC के GPIO पिन पर PWN सिग्नल कैसे उत्पन्न करें। हम पहले से ही टाइमर बाधा विधि का उपयोग करके कुछ इसी तरह थक चुके हैं और सफल रहे। यहाँ हम इसके शीर्ष पर निर्माण करने जा रहे हैं, इसलिए यदि आप यहां नए हैं, तो मैं आपको आगे बढ़ने से पहले इस पिछले ट्यूटोरियल को पढ़ने के लिए दृढ़ता से सलाह दूंगा।
सभी हॉबी सर्वो मोटर्स 50Hz की आवृत्ति के साथ काम करती हैं। मतलब एक सर्वो मोटर के लिए एक पूर्ण नाड़ी चक्र 1/50 (F = 1 / T) होगा जो 20ms का है। इस पूर्ण 20ms में से नियंत्रण संकेत केवल 0 से 2ms तक है जबकि बाकी सिग्नल हमेशा बंद रहता है। नीचे दिए गए आंकड़े से पता चलता है कि कैसे ओएन समय केवल 0 से 2ms में बदलता है, मोटर को 0 डिग्री से लेकर कुल 20ms की अवधि के 180 डिग्री तक बदलता है।
इसे ध्यान में रखते हुए, हमें प्रोग्राम को इस तरह से लिखना होगा कि PIC पोटेंटियोमीटर से 0 से to1204 में पढ़ता है और इसे 0 से 100 तक मैप करता है जो सर्वो मोटर का कर्तव्य चक्र होगा। इस कर्तव्य चक्र का उपयोग करके हम सर्वो मोटर के समय की गणना कर सकते हैं। फिर हम एक नियमित अंतराल पर ओवरफ्लो करने के लिए टाइमर की बाधा को शुरू कर सकते हैं जैसे कि यह Arduino में मिलिस () फ़ंक्शन के समान कार्य करता है। इसके साथ, हम जीपीओ पिन को वांछित अवधि के लिए उच्च होने के लिए टॉगल कर सकते हैं और इसे 20ms (एक पूर्ण चक्र) के बाद बंद कर सकते हैं और फिर उसी प्रक्रिया को दोहरा सकते हैं। अब, जब हमने तर्क को समझ लिया है तो हमें कार्यक्रम में आने दें।
रोबोट आर्म के लिए प्रोग्रामिंग PIC16F8771A
हमेशा की तरह एक वीडियो के साथ पूरा कार्यक्रम इस पृष्ठ के अंत में पाया जा सकता है, सभी आवश्यक फ़ाइलों के साथ यहां से भी कोड डाउनलोड किया जा सकता है। इस खंड में हम कार्यक्रम के पीछे के तर्क पर चर्चा करेंगे। कार्यक्रम रोबोटिक शाखा को नियंत्रित करने के लिए एडीसी मॉड्यूल, टाइमर मॉड्यूल और एलसीडी मॉड्यूल को रोजगार देता है। यदि आपको पता नहीं है कि एडीसी सुविधाओं या टाइमर सुविधाओं का उपयोग कैसे करना है या पीआईसी के साथ एलसीडी इंटरफ़ेस करना है, तो आप उन्हें जानने के लिए संबंधित लिंक पर वापस आ सकते हैं। नीचे की व्याख्या यह मानते हुए दी गई है कि पाठक इन अवधारणाओं से परिचित है।
टाइमर 0 पोर्ट कॉन्फ़िगरेशन
कोड में सबसे महत्वपूर्ण खंड टाइमर 0 को हर विशिष्ट देरी के लिए प्रवाह पर सेट कर रहा है । इस विलम्ब की गणना के सूत्र निम्नानुसार दिए जा सकते हैं
विलंब = ((256-REG_val) * (प्रीस्कूल * 4)) / फोक
OPTION_REG और TMR0 रजिस्टर का उपयोग करके हमने टाइमर 0 को 32 के प्रीस्कूलर मान के साथ काम करने के लिए सेट किया है और REG वैल 248 पर सेट है। हमारे हार्डवेयर में उपयोग की जाने वाली क्रिस्टल फ़्रीक्वेंसी (फ़ोकस) 20Mhz है। इन मूल्यों के साथ देरी की गणना की जा सकती है
विलंब = ((256-248) * (32 * 4)) / (20000000) = 0.0000512 सेकंड (या) = 0.05 मिसे
इसलिए अब हमने टाइमर को प्रत्येक 0.05ms पर ओवरफ्लो करने के लिए सेट किया है । ऐसा करने का कोड नीचे दिया गया है
/ ***** टाइमर के लिए पोर्ट कॉन्फ़िगरेशन ****** / OPT__GG = 0b00000100; // Timer0 एक्सटर्नल फ्रीक के साथ और 32 प्रीस्कूलर के रूप में // इसके अलावा PULL UPs TMR0 = 248 सक्षम करता है ; // 0.0001 के लिए समय मान लोड करें; delayValue 0-256 केवल TMR0IE = 1 के बीच हो सकता है ; // PIE1 रजिस्टर GIE = 1 में टाइमर इंटरप्ट बिट सक्षम करें ; // वैश्विक रुकावट PEIE = 1 सक्षम करें ; // पेरिफेरल इंटरप्ट को सक्षम करें / *********** ______ *********** /
सर्वो मोटर के कुल 0ms से 2ms कंट्रोल विंडो में से हम इसे 0.05msec के रिज़ॉल्यूशन के साथ नियंत्रित कर सकते हैं, जो हमें 0 डिग्री से 180 डिग्री के बीच मोटर के लिए (2 / 0.05) 40 अलग-अलग पदों की अनुमति देता है। आप इस मूल्य को और कम कर सकते हैं यदि आपका एमसीयू अधिक पदों और सटीक नियंत्रण प्राप्त करने के लिए इसका समर्थन कर सकता है।
बाधित सेवा दिनचर्या (ISR)
अब जब हमारे पास प्रत्येक 0.05ms के लिए प्रवाह पर सेट करने के लिए टाइमर 0 सेट है, तो हमारे पास TMR0IF इंटरप्ट झंडा होगा जो 0.05ms के लिए सेट होगा। तो ISR फंक्शन के अंदर हम उस झंडे को रीसेट कर सकते हैं और एक वैरिएबल को बढ़ा सकते हैं जिसे एक की गिनती कहा जाता है । तो अब यह वेरिएबल प्रत्येक 0.05ms के लिए 1 से बढ़ेगा।
शून्य अवरोध टाइमर_isr () { अगर (TMR0IF == 1) // टाइमर ओवरफ्लो के कारण टाइमर ध्वज को ट्रिगर किया गया है -> प्रत्येक 0.05ms के लिए अतिप्रवाह के लिए सेट { TMR0 = 248; // टाइमर मान लोड करें TMR0IF = 0; // क्लियर टाइमर इंटरप्ट फ्लैग काउंट ++; // प्रत्येक 0.05ms के लिए 1 से वेतन वृद्धि की गणना करें }
ड्यूटी साइकिल और समय पर गणना
आगे हमें सभी पांच सर्वो मोटर के लिए कर्तव्य चक्र और समय पर गणना करनी होगी। हमारे पास पांच सर्वो मोटर्स हैं, जिनमें से प्रत्येक का उपयोग हाथ के व्यक्तिगत खंड को नियंत्रित करने के लिए किया जाता है। इसलिए हमें सभी पांचों के एडीसी मूल्य को पढ़ना होगा और प्रत्येक के लिए शुल्क चक्र और समय की गणना करनी होगी।
ADC मान 0 से 1024 के बीच होगा जिसे प्राप्त मान से केवल 0.0976 (100/1024 = 0.0976) गुणा करके 0% से 100% कर्तव्य चक्र में परिवर्तित किया जा सकता है। इस 0 से 100% कर्तव्य चक्र को फिर समय पर परिवर्तित करना होगा। हम जानते हैं कि 100% कर्तव्य चक्र पर ON का समय 2ms (180 डिग्री के लिए) होना चाहिए, इसलिए 0.02 (2/100 = 0.02) को गुणा करना 0 से 100 कर्तव्य चक्र को 0 से 2ms में बदल देगा। लेकिन फिर हमारी टाइमर चर गणना प्रत्येक 0.05ms के लिए एक बार बढ़ाने के लिए निर्धारित है। इसका मतलब है कि हर 1ms के लिए गिनती का मूल्य 20 (1 / 0.05 = 20) होगा। इसलिए हमें अपने कार्यक्रम के लिए सटीक समय की गणना करने के लिए 0.02 के साथ 20 गुणा करना होगा जो हमें मान 0.4 (0.02 * 20 = 0.4) देगा। उसी के लिए कोड नीचे दिखाया गया है, आप लूप का उपयोग करके सभी 5 पॉट के लिए इसे 5 बार दोहराया जा सकता है। परिणामी मान T_ON सरणी में संग्रहीत किए जाते हैं।
for (int pot_num = 0; pot_num <= 3; pot_num ++) { int Pev_val = T_ON; POT_val = (ADC_Read (pot_num)); // ADC ड्यूटी_ साइकल = (POT_val * 0.0976) का उपयोग करते हुए पॉट का मूल्य पढ़ें ; // मानचित्र 0 से 1024 से 0 से 100 T_ON = कर्तव्य_ चक्र * 0.4; // 20 * 0.02
किस मोटर को घुमाने के लिए चयन करना
हम सभी पांच मोटर्स को एक साथ नियंत्रित नहीं कर सकते हैं क्योंकि यह आईएसआर कोड को पूरे माइक्रोकंट्रोलर को धीमा कर देगा। इसलिए हमें एक समय में केवल एक सर्वो मोटर को घुमाना होगा। यह चुनने के लिए कि कौन से सर्वो को माइक्रोकंट्रोलर घुमाने के लिए सभी पांच इमदादी मोटर्स के समय की निगरानी करता है और समय के साथ इसकी तुलना करता है। यदि ON समय में कोई परिवर्तन होता है, तो हम यह निष्कर्ष निकाल सकते हैं कि विशेष सर्वो को स्थानांतरित करना होगा। उसी के लिए कोड नीचे दिखाया गया है।
if (T_ON! = Pev_val) { Lcd_Clear (); सर्वो = पॉट_नम; Lcd_Set_Cursor (2,11); Lcd_Print_String ("S:"); Lcd_Print_Char (सर्वो + '0)); if (pot_num == 0) {Lcd_Set_Cursor (1,1); Lcd_Print_String ("A:");} अगर (pot_num == 1) {Lcd_Set_Cursor (1,6); Lcd_Print_String ("B:");} अगर (pot_num == 2) {Lcd_Set_Cursor (1,11); Lcd_Print_String ("C:");} और यदि (pot_num == 3) {Lcd_Set_Cursor (2,1); Lcd_Print_String ("D:");} और यदि (pot_num == 4) {Lcd_Set_Cursor (2,6); Lcd_Print_String ("E:");} char d2 = (ड्यूटी_ चक्र)% 10; char d1 = (ड्यूटी_ साइकिल / 10)% 10; Lcd_Print_Char (d1 + '0'); Lcd_Print_Char (d2 + '0');
हम एलसीडी स्क्रीन पर सर्वो ड्यूटी चक्र भी प्रिंट करते हैं ताकि उपयोगकर्ता को इसकी वर्तमान स्थिति के बारे में पता चल सके। ON समय में परिवर्तन के आधार पर वैरिएबल सर्वो को व्यक्तिगत मोटरों का प्रतिनिधित्व करने वाले प्रत्येक 0 से 4 तक की संख्या के साथ अपडेट किया जाता है।
ISR के अंदर सर्वो मोटर को नियंत्रित करना
ISR के अंदर हमारे पास प्रत्येक 0.05ms के लिए वृद्धिशील गणना हो रही है, इसका मतलब है कि प्रत्येक 1ms के लिए चर को 20 से बढ़ा दिया जाएगा। इसका उपयोग करके हमें PWM सिग्नल का उत्पादन करने के लिए पिंस को नियंत्रित करना होगा। यदि गणना का मान समय से कम है तो उस मोटर के GPIO को नीचे की रेखा का उपयोग करके चालू किया जाता है
PORTD = PORTD - servo_code;
यहां सरणी सर्वो_कोड में सभी पांच सर्वो मोटर का पिन विस्तार है और चर सर्वो में मूल्य के आधार पर, उस विशेष सर्वो मोटर के लिए कोड का उपयोग किया जाएगा। यह तब मौजूदा OR बिट्स के साथ तार्किक रूप से (-) है ताकि हम अन्य मोटर के मूल्यों को परेशान न करें और केवल इस विशेष मोटर को अपडेट करें। इसी तरह पिन को बंद करने के लिए
PORTD = PORTD & ~ (इमदादी / कोड);
हमने लॉजिक इनवर्स (~) ऑपरेटर का उपयोग करके बिट वैल्यू को उलट दिया है और फिर अपने पिछले अवस्था में अन्य पिन को छोड़ते हुए केवल वांछित पिन को बंद करने के लिए PORTD पर AND (&) ऑपरेशन किया है। पूरा कोड स्निपेट नीचे दिखाया गया है।
शून्य अवरोध टाइमर_isr () { अगर (TMR0IF == 1) // टाइमर ओवरफ्लो के कारण टाइमर ध्वज को ट्रिगर किया गया है -> प्रत्येक 0.05ms के लिए अतिप्रवाह के लिए सेट { TMR0 = 248; // टाइमर मान लोड करें TMR0IF = 0; // क्लियर टाइमर इंटरप्ट फ्लैग काउंट ++; // प्रत्येक 0.05ms के लिए 1 की गणना में वृद्धि -> गिनती प्रत्येक 1ms (0.05 / 1 = 20) के लिए 20 होगी }} int servo_code = {0b01000000, 0b00100000, 0b00010000, 0b00001000, 0b00000100}; if (गिनती> = 20 * 20) count = 0; if (गिनती <= (T_ON)) PORTD = PORTD - servo_code; वरना PORTD = PORTD & ~ (servo_code); }
हम जानते हैं कि GPIO पिन को फिर से चालू करने से पहले कुल चक्र को 20ms तक चलना होगा। इसलिए हम जांचते हैं कि क्या गिनती 400 से गणना के मूल्य की तुलना करके 20ms से अधिक हो गई है (जैसा कि ऊपर चर्चा की गई है) और यदि हां, तो हमें फिर से शून्य होने के लिए गणना को शुरू करना होगा।
तस्वीर रोबोट शाखा का अनुकरण
वास्तविक हार्डवेयर पर ले जाने से पहले कोड को अनुकरण करना हमेशा बेहतर होता है। इसलिए मैंने अपने कोड का अनुकरण करने के लिए प्रोटीन का उपयोग किया और इसे सही ढंग से काम करने के लिए सत्यापित किया। सिमुलेशन के लिए उपयोग किए जाने वाले सर्किट को नीचे दिखाया गया है, हमने पीडब्लूएम संकेतों को आवश्यक रूप से उत्पन्न किया जा रहा है या नहीं यह जांचने के लिए एक आस्टसीलस्कप का उपयोग किया है। यदि एलसीडी और सर्वो मोटर्स अपेक्षित रूप से घूम रहे हैं, तो भी हम सत्यापित कर सकते हैं।
जैसा कि आप देख सकते हैं एलसीडी पॉट वैल्यू के आधार पर मोटर डी के कर्तव्य चक्र को 07 प्रदर्शित करता है जो कि 3 आरडी मोटर है। इसी तरह यदि कोई अन्य पॉट उस पॉट के कर्तव्य चक्र को स्थानांतरित करता है और उसकी मोटर संख्या एलसीडी पर प्रदर्शित की जाएगी। आस्टसीलस्कप पर दिखाया गया PWM संकेत नीचे दिखाया गया है।
कुल चक्र अवधि को आस्टसीलस्कप पर कर्सर विकल्प का उपयोग करके 22.2ms होने के लिए मापा जाता है, जो वांछित 20ms के बहुत करीब है। अंत में हमें यकीन है कि कोड काम करता है, इसलिए सर्किट के साथ जारी रखने के लिए हम इसे एक पूर्ण बोर्ड पर मिलाप कर सकते हैं या एक पीसीबी का उपयोग कर सकते हैं। यह ब्रेडबोर्ड पर आसानी से काम नहीं करेगा क्योंकि खराब कनेक्शन के कारण पॉट हमेशा कुछ समस्याएं देता है।
पीसीबी डिजाइन ईज़ीडा का उपयोग कर
इस PIC रोबोटिक आर्म को डिजाइन करने के लिए, हमने ईजीईडीए नामक ऑनलाइन ईडीए टूल को चुना है। मैं लंबे समय से इसका उपयोग कर रहा हूं और इसकी विशाल उपलब्धता के कारण यह बहुत सुविधाजनक है और प्रकृति का उपयोग करने में आसान है। पीसीबी डिजाइन करने के बाद, हम पीसीबी के नमूनों को उनकी कम लागत वाली पीसीबी निर्माण सेवाओं द्वारा ऑर्डर कर सकते हैं। वे घटक सोर्सिंग सेवा भी प्रदान करते हैं जहां उनके पास इलेक्ट्रॉनिक उपकरणों का एक बड़ा भंडार होता है और उपयोगकर्ता पीसीबी के आदेश के साथ अपने आवश्यक घटकों को ऑर्डर कर सकते हैं।
अपने सर्किट और PCB को डिज़ाइन करते समय, आप अपने सर्किट और PCB डिज़ाइन को भी सार्वजनिक कर सकते हैं ताकि अन्य उपयोगकर्ता उन्हें कॉपी या एडिट कर सकें और अपने काम से लाभ उठा सकें, हमने इस सर्किट के लिए अपने पूरे सर्किट और PCB लेआउट को भी सार्वजनिक कर दिया है, जाँच करें नीचे दिए गए लिंक:
easyeda.com/circuitdigest/pic-development-board-for-robotic-arm
इस लिंक का उपयोग करके आप सीधे उसी पीसीबी को ऑर्डर कर सकते हैं जो हम इस परियोजना में उपयोग कर रहे हैं और इसका उपयोग करते हैं। एक बार डिजाइन पूरा हो जाने के बाद बोर्ड को 3D मॉडल के रूप में देखा जा सकता है जो यह कल्पना करने में बहुत सहायक होगा कि निर्माण के बाद बोर्ड कैसे दिखाई देगा। हम जिस बोर्ड का उपयोग कर रहे हैं उसका 3 डी मॉडल नीचे दिखाया गया है। इसके अलावा आप यह जांचने के लिए बोर्ड की ऊपरी और निचली परत को भी देख सकते हैं कि क्या स्लीक स्क्रीन अपेक्षित है।
गणना और आदेश ऑनलाइन नमूने
इस PIC Robot PCB का डिज़ाइन पूरा करने के बाद, आप JLCPCB.com के माध्यम से PCB ऑर्डर कर सकते हैं। JLCPCB से PCB को ऑर्डर करने के लिए, आपको Gerber फाइल की आवश्यकता होती है। अपने PCB की Gerber फाइलों को डाउनलोड करने के लिए बस EasyEDA एडिटर पेज पर जेनरेट फैब्रिकेशन फाइल बटन पर क्लिक करें, फिर वहां से Gerber फाइल डाउनलोड करें या आप जेएलसीपीसीबी के ऑर्डर पर क्लिक कर सकते हैं जैसा कि नीचे दी गई इमेज में दिखाया गया है। यह आपको JLCPCB.com पर पुनर्निर्देशित करेगा, जहां आप उन पीसीबी की संख्या का चयन कर सकते हैं जिन्हें आप ऑर्डर करना चाहते हैं, आपको कितने कॉपर लेयर, पीसीबी की मोटाई, कॉपर वेट और यहां तक कि पीसीबी के रंग की तरह नीचे दिखाए गए स्नैपशॉट का चयन करना होगा:
आपके द्वारा सभी विकल्पों का चयन करने के बाद, "कार्ट में सहेजें" पर क्लिक करें और फिर आपको उस पृष्ठ पर ले जाया जाएगा जहाँ आप अपनी गेरबर फ़ाइल अपलोड कर सकते हैं जिसे हमने ईज़ीईडीए से डाउनलोड किया है। अपनी Gerber फ़ाइल अपलोड करें और "कार्ट में सहेजें" पर क्लिक करें। और अंत में अपना ऑर्डर पूरा करने के लिए Checkout Secure पर क्लिक करें, फिर आपको कुछ दिनों बाद अपने PCB मिल जाएंगे। वे बहुत कम दर पर पीसीबी का निर्माण कर रहे हैं जो $ 2 है। उनका निर्माण समय भी बहुत कम है जो कि 3-5 दिनों के डीएचएल वितरण के साथ 48 घंटे है, मूल रूप से आपको ऑर्डर करने के एक सप्ताह के भीतर अपने पीसीबी मिल जाएंगे।
पीसीबी को ऑर्डर करने के बाद, आप अपने पीसीबी के प्रोडक्शन प्रोग्रेस को तारीख और समय के साथ देख सकते हैं। आप इसे अकाउंट पेज पर जाकर चेक करें और "प्रोडक्शन प्रोग्रेस" पर क्लिक करें।
पीसीबी के आदेश देने के कुछ दिनों के बाद मुझे अच्छी पैकेजिंग में पीसीबी के नमूने मिले, जैसा कि नीचे दिए गए चित्रों में दिखाया गया है।
और इन टुकड़ों को प्राप्त करने के बाद मैंने पीसीबी पर सभी आवश्यक घटकों को मिला दिया है। मैंने सीधे कनेक्टिंग तारों का उपयोग करने के बजाय सीधे पॉट को मिलाया क्योंकि महिला तारों को मैंने शुरू में इस्तेमाल किया था जहां अजीब एनालॉग आउटपुट वोल्टेज दे रहा था शायद ढीले संपर्कों के कारण। एक बार सभी घटकों को इकट्ठा करने के बाद मेरे पीसीबी कुछ इस तरह दिखे।
आपने देखा होगा कि इस बोर्ड पर केवल 7805 है। ऐसा इसलिए है क्योंकि शुरू में मुझे लगा कि मैं PIC और सर्वो मोटर दोनों को चालू करने के लिए बस नियामक के साथ मिल सकता हूं और बाद में मुझे एहसास हुआ कि मुझे दो की आवश्यकता है। इसलिए मैंने आपके द्वारा यहां दिखाई देने वाली हरी तारों के माध्यम से सर्वो मोटर्स को बिजली देने के लिए एक बाहरी सर्किट का उपयोग किया है।
फिर भी आपको इसके बारे में ज्यादा चिंता करने की जरूरत नहीं है क्योंकि; मैंने पीसीबी में अब बदलाव किए हैं। आप बोर्ड पर ही दोनों नियामकों को संशोधित पीसीबी और मिलाप का उपयोग कर सकते हैं।
पीआईसी रोबोट शाखा का कार्य
सभी थका देने वाले काम के बाद यह भुगतान का समय है। बोर्ड पर सभी घटकों को मिलाएं और प्रोग्राम को PIC नियंत्रक पर अपलोड करें। पूरा कोड नीचे दिया गया है या यहाँ से डाउनलोड किया जा सकता है। बोर्ड पर दिए गए प्रोग्रामिंग कनेक्टर को आपको बहुत परेशानी के बिना पिकेट 3 का उपयोग करके प्रोग्राम को सीधे अपलोड करने में मदद करनी चाहिए। एक बार प्रोग्राम अपलोड हो जाने के बाद आपको एलसीडी को उस सर्वो को प्रदर्शित करते हुए देखना चाहिए जिसे वर्तमान में नियंत्रित किया जा रहा है। PIC Microcontroller प्रोग्रामिंग के बारे में अधिक जानने के लिए, बस पिछले ट्यूटोरियल का पालन करें।
वहां से आप बस पॉट को चालू कर सकते हैं और जांच सकते हैं कि सर्वो मोटर्स प्रत्येक पोटेंशियोमीटर का जवाब कैसे देते हैं। एक बार जब आप प्रारूप को समझ जाते हैं तो आप रोबोट आर्म को नियंत्रित कर सकते हैं कि आपको जो भी क्रिया करने की आवश्यकता है वह प्रदर्शन और मज़ेदार हो। आप नीचे दिए गए वीडियो में परियोजना का पूरा काम देख सकते हैं ।
यह है कि लोगों को उम्मीद है कि आप परियोजना को समझ गए हैं और इससे कुछ नया सीखा है। यदि आपके कोई प्रश्न हैं, तो उन्हें टिप्पणी अनुभाग में छोड़ दें या अन्य तकनीकी चर्चाओं के लिए मंचों का उपयोग करें।