रोबोटिक आर्म के लिए इंटर-प्रोसेसर संचार


13

मैं एक शौक 6-DOF रोबोट बांह का निर्माण कर रहा हूं और सोच रहा हूं कि प्रोसेसर (3-4 AVR, 18 इंच अधिकतम जुदाई) के बीच संवाद करने का सबसे अच्छा तरीका क्या है। मैं कंप्यूटर पर नियंत्रण लूप चलाना चाहता हूं, जो एक Atmega32u4 यूएसबी-टू के माध्यम से माइक्रोप्रोसेसरों को कमांड भेजता है - ??? पुल।

कुछ विचार जो मैं विचार कर रहा हूं:

  1. 485 रुपये
    • पेशेवरों: एक ही तार पर सभी प्रोसेसर, अंतर सिग्नल अधिक मजबूत
    • विपक्ष: अतिरिक्त चिप्स की आवश्यकता होती है, प्रोसेसर को एक ही समय में प्रसारित करने से रोकने के लिए लिखने (या खोजने?) प्रोटोकॉल की आवश्यकता होती है
  2. UART लूप (यानी, एक प्रोसेसर का TX अगले के RX से जुड़ा है)
    • पेशेवरों: सरल फर्मवेयर, प्रोसेसर UART में बनाया गया है
    • विपक्ष: अंतिम कनेक्शन को रोबोट की लंबाई की यात्रा करनी होती है, प्रत्येक प्रोसेसर को साइकिल रीफ्रेश करने वाले संदेशों को खर्च करना पड़ता है
  3. कैनबस (मैं इस बारे में बहुत कम जानता हूं)

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

जवाबों:


13

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

आपके द्वारा चुना गया संचार कई कारकों पर निर्भर करेगा:

  • आवश्यक बैंडविड्थ (हम मान लेंगे कि आप उन्हें 16 मेगाहर्ट्ज पर चला रहे हैं)
  • जटिलता (तारों और कोडिंग)
  • द्वि-दिशात्मक, या मास्टर-दास

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


एक USART लूप में निम्नलिखित विशेषताएं हैं:

  • सीएलके की अधिकतम बॉड दर / 16 = 1 मेगाहर्ट्ज (16 मेगाहर्ट्ज घड़ी पर) जो लगभग 90KB / s की अंतरण दर है
  • पूरी तरह से द्वि-दिशात्मक संचार (कोई मास्टर या दास पदनाम)
  • माइक्रोकंट्रोलर्स की प्रत्येक जोड़ी के बीच अलग-अलग तारों की आवश्यकता होती है - Atmega32u4 दो USART पोर्ट का मूल रूप से समर्थन करता है, माइक्रोकंट्रोलर की संख्या को सीमित करता है जिसे आप अभ्यास में नेटवर्क से कनेक्ट कर सकते हैं (या फिर आप माइक्रो-सर्किटर्स के लंबे स्ट्रिंग के साथ समाप्त होते हैं - यानी एक लिंक की गई सूची में जुड़ा हुआ है)। तौर तरीका)

नोट: यह वह भी है जिसे आप RS232 संचार प्राप्त करने के लिए उपयोग करेंगे, सिवाय इसके कि RS232 को 10V की आवश्यकता होती है, इसके लिए उन वोल्टेज स्तरों को प्राप्त करने के लिए ड्राइवर की आवश्यकता होती है। माइक्रोकंट्रोलर्स के बीच संचार के लिए, यह उपयोगी नहीं है (केवल वोल्टेज का स्तर बदल जाता है)।

485 रुपये:

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

दो-तार इंटरफ़ेस:

  • इसे I2C भी कहा जाता है। इसका मतलब है कि सभी डिवाइस समान दो तारों को साझा करते हैं।

  • आपको दोनों तारों पर पुल-अप रोकनेवाला चाहिए

  • यह धीमा है (क्योंकि पुल-अप प्रतिरोधों को मूल्य में सीमित किया गया है, और बढ़ती समाई है क्योंकि उपकरणों की संख्या बढ़ जाती है, और तार की लंबाई बढ़ जाती है)। इस AVR माइक्रोकंट्रोलर के लिए, गति 400 kHz तक है - USART की तुलना में धीमी (लेकिन यह गति आपके समाई को सीमित करने पर निर्भर करती है)। कारण यह है कि यद्यपि एक उपकरण डेटा तार को कम ड्राइव करता है, विपरीत संक्रमण तार को फिर से उच्च गति (पुल-अप रोकनेवाला) की अनुमति देकर पूरा किया जाता है।

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

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

  • कोई भी उपकरण गुरु और / या दास दोनों के रूप में कार्य कर सकता है, जिससे यह काफी लचीला हो जाता है।

एसपीआई

  • यह वही है जो मैं माइक्रोकंट्रोलर्स के बीच सामान्य संचार के लिए सुझा / उपयोग करूंगा।

  • यह उच्च गति है - सीएलके / 2 = 8 मेगाहर्ट्ज (16 मेगाहर्ट्ज पर सीएलके के लिए), यह सबसे तेज विधि है। यह पूरी तरह से घड़ी के लिए अलग तार की वजह से प्राप्त करने योग्य है।

  • MOSI, MISO डेटा और SCK घड़ी के तारों को पूरे नेटवर्क पर साझा किया जाता है, जिसका अर्थ है कि इसमें सरल वायरिंग है।

  • यह एक मास्टर-स्लेव प्रारूप है, लेकिन कोई भी उपकरण मास्टर और / या दास हो सकता है। हालाँकि, दास चयन जटिलताओं के कारण, साझा वायरिंग (नेटवर्क के भीतर) के लिए, आपको इसका उपयोग केवल एक पदानुक्रमित तरीके से (दो-तार इंटरफ़ेस के विपरीत) करना चाहिए। अर्थात। यदि आप सभी उपकरणों को एक पेड़ में व्यवस्थित करते हैं, तो एक उपकरण केवल अपने बच्चों के लिए मास्टर होना चाहिए, और केवल अपने माता-पिता के लिए एक दास होना चाहिए। इसका मतलब है कि दास मोड में, एक उपकरण में हमेशा एक ही मास्टर होगा। इसके अलावा, इसे सही ढंग से करने के लिए, आपको अपस्ट्रीम मास्टर के लिए MISO / MOSI / SCK के लिए प्रतिरोधकों को जोड़ने की जरूरत है, ताकि यदि डिवाइस डाउनस्ट्रीम (जब एक गुलाम के रूप में नहीं चुना जाता है) से संचार कर रहा है, तो संचार अन्य भागों में संचार को प्रभावित नहीं करेगा। नेटवर्क (प्रतिरोधों का उपयोग करके आप यह कर सकते हैं स्तरों की संख्या सीमित है, दोनों SPI बंदरगाहों का उपयोग कर बेहतर समाधान के लिए नीचे देखें)।

    AVR माइक्रोकंट्रोलर स्वचालित रूप से MOSI सिग्नल को त्रि-राज्य कर सकता है जब यह गुलाम-चयनित होता है, और स्लेव मोड में स्विच होता है (यदि मास्टर में)।

    भले ही इसके लिए एक पदानुक्रमित नेटवर्क की आवश्यकता हो, लेकिन अधिकांश नेटवर्क को पेड़ की तरह से व्यवस्थित किया जा सकता है, इसलिए यह आमतौर पर महत्वपूर्ण स्वच्छता नहीं है

  • उपरोक्त को थोड़ा आराम दिया जा सकता है, क्योंकि प्रत्येक एवीआर माइक्रोकंट्रोलर दो अलग-अलग एसपीआई पोर्ट का समर्थन करता है, इसलिए प्रत्येक डिवाइस में दो अलग-अलग नेटवर्क में अलग-अलग स्थिति हो सकती है।

    यह कहने के बाद, यदि आपको अपने पेड़ / पदानुक्रम (2 से अधिक) में कई स्तरों की आवश्यकता होती है, तो प्रतिरोधों का उपयोग करने वाले उपरोक्त समाधान को काम करने के लिए बहुत अधिक सावधानी से प्राप्त किया जाता है। इस मामले में, आपको पेड़ की प्रत्येक परत के बीच SPI नेटवर्क को बदलना चाहिए। इसका मतलब है कि प्रत्येक डिवाइस एक एसपीआई नेटवर्क पर अपने बच्चों से जुड़ेगा, और दूसरे एसपीआई नेटवर्क पर उसके माता-पिता। हालांकि इसका मतलब है कि आपके पास केवल कनेक्शन का एक ही पेड़ है, लाभ यह है कि एक उपकरण एक ही समय में अपने बच्चों और उसके माता-पिता दोनों के साथ संवाद कर सकता है और आपके पास फ़िडली प्रतिरोधक नहीं हैं (हमेशा सही मान चुनने में कठिन) ।

  • क्योंकि इसमें अलग MOSI और MISO तार हैं, दोनों मास्टर और दास एक ही समय में संचार कर सकते हैं, जिससे यह गति में दो वृद्धि का संभावित कारक है। प्रत्येक अतिरिक्त दास के लिए दास-चयन के लिए एक अतिरिक्त पिन की आवश्यकता होती है, लेकिन यह एक बड़ा बोझ नहीं है, यहां तक ​​कि 10 अलग-अलग दासों को केवल 10 अतिरिक्त पिनों की आवश्यकता होती है, जिसे एक विशिष्ट एवीआर माइक्रोकंट्रोलर पर आसानी से समायोजित किया जा सकता है।

आपके द्वारा निर्दिष्ट AVR माइक्रोकंट्रोलर द्वारा CAN का समर्थन नहीं किया जाता है। जैसा कि अन्य अच्छे विकल्प हैं, वैसे भी इस मामले में यह महत्वपूर्ण नहीं है।


सिफारिश एसपीआई है , क्योंकि यह तेज है, वायरिंग बहुत जटिल नहीं है, और इसके लिए फिडली पुल-अप प्रतिरोधों की आवश्यकता नहीं है। दुर्लभ मामले में जहां SPI आपकी आवश्यकताओं को पूरा नहीं करता है (शायद अधिक जटिल नेटवर्क में), आप कई विकल्पों का उपयोग कर सकते हैं (जैसे, दो SPI पोर्ट का उपयोग करें, दो-तार इंटरफ़ेस के साथ-साथ कुछ माइक्रोकंट्रोलर की जोड़ी भी। एक USART लूप का उपयोग कर! "

आपके मामले में, SPI का उपयोग करने का अर्थ है कि स्वाभाविक रूप से, कंप्यूटर के लिए USB कनेक्शन वाला माइक्रोकंट्रोलर मास्टर हो सकता है, और यह कंप्यूटर से प्रत्येक दास डिवाइस के लिए प्रासंगिक आदेशों को अग्रेषित कर सकता है। यह प्रत्येक दास से अपडेट / माप भी पढ़ सकता है और इन्हें कंप्यूटर पर भेज सकता है।

8MHz, और 0.5m तार की लंबाई पर, मुझे नहीं लगता कि यह एक समस्या बन जाएगी। लेकिन अगर ऐसा है, तो कैपेसिटेंस से अधिक सावधान रहने की कोशिश करें (ग्राउंड और सिग्नल तारों को बहुत पास रखें, और विभिन्न कंडक्टरों के बीच कनेक्शन से सावधान रहें), और सिग्नल समाप्ति भी। अप्रत्याशित घटना में कि यह एक समस्या बनी हुई है, आप घड़ी की दर को कम कर सकते हैं, लेकिन मुझे नहीं लगता कि यह आवश्यक है।


मुझ से एसपीआई के लिए अंगूठे
georgebrindeiro

2
मैं एसपीआई का भी प्रशंसक हूं, हालांकि शायद I2C भी विचार करने लायक है (प्रत्येक डिवाइस को अलग सीएस लाइनों की आवश्यकता से बचा जाता है)। लेकिन इतनी आसानी से खारिज नहीं किया जा सकता है - आखिरकार, यह पसंद की मोटर वाहन बस है, इसलिए मैं इसे शौक रोबोटिक्स के लिए बाहर नहीं करूंगा!
एंड्रयू

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

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

3
CAN पर आपकी टिप्पणी सटीक नहीं है। कैन किसी भी 2-तार बस नहीं है। मुझे लगता है कि आप इसे I2C के साथ भ्रमित कर रहे हैं, जिसकी शीर्ष गति 400kbps है। CAN की टॉप स्पीड 1Mbps है।
राकेटमग्नेट

5

मैं अंतर प्रोसेसर संचार के लिए कैन की अत्यधिक अनुशंसा कर सकता हूं। हम अपने रोबोट में इसका उपयोग करते हैं, एक ही बस में 22 प्रोसेसर तक। अच्छे प्रोटोकॉल डिज़ाइन के साथ, आप उपलब्ध बैंडविड्थ के लगभग 90% (लगभग 640kbps जब आप सभी त्रुटि जाँच और अंतर फ़्रेम रिक्ति को ध्यान में रखते हैं) का उपयोग कर सकते हैं। हम एक कैन बस में 1000 हर्ट्ज पर 10 मोटरों की सर्विस कर सकते हैं। यह सीमा के निकट है। यदि आप डेटा को बहुत सावधानी से पैक करते हैं तो आप शायद इसे 20 मोटर्स तक निचोड़ सकते हैं।

आम तौर पर प्रत्येक प्रोसेसर के लिए एक ट्रांसीवर चिप की आवश्यकता हो सकती है (यह सिर्फ 8-पिन डिवाइस है)। ट्रांसीवर आपको अच्छा अंतर संकेत देता है जो बहुत कम हस्तक्षेप का उत्सर्जन करता है, और यदि आप एक विद्युत शोर वातावरण (मोटर्स, सोलनॉइड, और रेडियो ट्रांसमीटर) में काम कर रहे हैं, तो यह हस्तक्षेप के लिए प्रतिरक्षा बनाता है।

बस कनेक्शन कर सकते हैं

हालाँकि, सीमित परिस्थितियों में, कैन का उपयोग करना संभव नहीं है


EtherCAT

यदि आप कभी भी गंभीर बैंडविड्थ के साथ एक बस को लागू करने की तरह महसूस करते हैं, तो मेरा सुझाव है कि आप EtherCAT का प्रयास करें । यह 100Mb बस है, जिसे आपके पीसी के ईथरनेट पोर्ट से जोड़ा जा सकता है। बस के दो महत्वपूर्ण हिस्से हैं:

  • पुल। यह ईथरनेट भौतिक परत को एक सरल, कम लागत वाले LVDS भौतिक परत में परिवर्तित करता है, जिसके लिए बड़े कनेक्टर, Phy चिप और कई घटकों की आवश्यकता नहीं होती है जो ईथरनेट स्वयं करता है।
  • नोड्स। प्रत्येक नोड को केवल एक ET1200 चिप और एक माइक्रोकंट्रोलर की आवश्यकता होती है।

पीसी 1kHz या उससे अधिक गति से नोड्स से डेटा का बड़ा हिस्सा संचारित और प्राप्त कर सकता है। आप एक एकल ईथर बस पर काफी सामान नियंत्रित कर सकते हैं ।

जोड़ा गया:

शैडो रोबोट कंपनी अब एक उपयोगी EtherCAT बस प्रणाली बेचती है जिसे Ronex कहा जाता है । यह आपको बहुत सारे I / O जोड़ देता है, और वे जल्द ही कई अन्य प्रकार के बोर्ड शुरू करने जा रहे हैं, जैसे मोटर नियंत्रक, और उच्च गुणवत्ता वाले ADCs।


उस छवि का स्रोत क्या है? इसमें CAN Highलाल और नीले दोनों तारों के लिए है।
इयान

1

मुझे पता है कि मैं एक पुराने धागे को खोद रहा हूं और यह बंद विषय है, लेकिन मुझे नहीं लगता कि आप बेकहॉफ से ईटी 1200 के चिप्स पकड़ सकते हैं। मैंने उन्हें कुछ समय पहले ईमेल किया था और मुझे सलाह दी गई थी कि मुझे एथरकट समूह में शामिल होने की आवश्यकता है। ऐसा करने के लिए मुझे यह प्रदर्शित करना था कि मैं समूह में वापस योगदान करने जा रहा हूं - यानी, एथरकट सामान का उपयोग करने वाले उपकरणों के निर्माण और बिक्री से। उस समय (और यह) बिंदु पर, मैं अभी भी अपने डिवाइस (रोबोट अनुप्रयोगों के लिए एक ब्रशलेस मोटर नियंत्रक - वर्तमान में CAN का उपयोग कर रहा हूं) का प्रोटोटाइप बना रहा हूं, इसलिए मैं कुछ भी पेश नहीं कर सका (मैं पूरा करने के लिए एक ठोस समय नहीं दे सकता - Im अभी भी मेरे पर काम कर रहा है छात्र)। मैंने उन्हें अपनी निराशा व्यक्त की। उन्होंने कहा निराश न होने के लिए !! बहुत मज़ेदार सामान! मैं वास्तव में होगाईथरेट में उतरना पसंद करते हैं, लेकिन ASIC शौकीनों या कंपनी के बिना उन लोगों के लिए अछूत लगते हैं। इसके अलावा, यह मेरी पहली पोस्ट है, इसलिए अगर किसी पुराने पोस्ट को खोदकर मैंने देवताओं को नाराज कर दिया हो तो माफी!


स्वागत हे। यदि उत्तर प्रासंगिक है, तो पुरानी पोस्ट को फिर से ठीक करना और अपनी टिप्पणी मेरे लिए प्रासंगिक लगता है ...
एंड्रयू

धन्यवाद दोस्त। यह एक बहुत बड़िया मंच है! रुचि से बाहर, क्या आपको ईथर के साथ कोई अनुभव है? क्या आप एक गुलाम डिवाइस को पीसीबी पर प्रोटोटाइप के लिए उपयुक्त होने के किसी अन्य तरीके से जानते हैं? मैं भुगतान करने के लिए तैयार हूं, लेकिन फिलहाल मैं Bechoff ASICs खरीदने के लिए समूह में शामिल होने की आवश्यकताओं को पूरा नहीं करता हूं। निराशा होती!
कानून

एथरकट नहीं, नहीं। मैं कर सकते हैं (एक अच्छा विकल्प), लिन (इतना अच्छा नहीं IMHO) का उपयोग करें और निश्चित रूप से एसपीआई या I2C सिफारिश कर सकते हैं
एंड्रयू

क्या आपने ET1100 या ET1200 चिप पर पकड़ बनाने का प्रबंधन किया? यदि आपने अभी कोई अन्य विकल्प उपलब्ध नहीं किया है: माइक्रोचिप LAN9252, यह ET1100 के साथ संगत है और बहुत अच्छी तरह से काम करता है। SOES पुस्तकालय के संबंध में प्रयोग करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.