मैं अपनी परियोजना के लिए माइक्रोकंट्रोलर के लिए आवश्यकताओं की सूची कैसे ला सकता हूं? फिर मैं कैसे फिट होने वाले माइक्रोकंट्रोलर्स पा सकता हूं?


20

मैं Arduino MEGA2560 पर एक eBike नियंत्रण परियोजना पर काम कर रहा हूँ। कार्यक्रम 3x पीआईडी ​​नियंत्रण लूप, एक बैटरी क्षमता नियंत्रण लूप (लुकअप तालिकाओं पर आधारित प्रक्षेप), एक स्पीडोमीटर (एक रीड स्विच पर आधारित नमूने) के साथ-साथ सूचना प्रदर्शित करने के लिए एक एलसीडी स्क्रीन चलाता है। इसके इनपुट 3 एनालॉग सिग्नल हैं: बैटरी वोल्टेज, वर्तमान और उपयोगकर्ता थ्रॉटल इनपुट के साथ-साथ एक डिजिटल इनपुट: स्पीडोमीटर (रीड स्विच) ऑन / ऑफ सिग्नल। वर्तमान में, यह सब "लंबे" अंकगणित पर चल रहा है, अरुडुइनो प्रति सेकंड 10 छोरों को पूरा करने का प्रबंधन करता है। जैसा कि TFT एलसीडी स्क्रीन जबरदस्त मात्रा में कम्प्यूटेशनल शक्ति लेता है, मैं इसे एक अल्फ़ान्यूमेरिक स्क्रीन के साथ बदलने की सोच रहा हूं।

आउटपुट एक एनालॉग थ्रोटल सिग्नल से युक्त होते हैं जो मोटर नियंत्रक, एलसीडी स्क्रीन और संभवतः कुछ अन्य उपकरणों में एनालॉग सिग्नल की आवश्यकता होती है। इस प्रकार, ADC कन्वर्टर्स आवश्यक हैं और DAC बहुत उपयोगी होगा, हालांकि मैं वर्तमान में RC RC फ़िल्टर के साथ Arduino PWM आउटपुट का उपयोग कर रहा हूं। इसी तरह, प्रोसेसर को बाधित किए बिना डिजिटल और एनालॉग संकेतों को पढ़ने की क्षमता बहुत अच्छी होगी।

मैं संभावित रूप से इससे एक उपभोक्ता उत्पाद बनाना चाहूंगा, इसलिए मैं एक अलग माइक्रोकंट्रोलर के साथ जमीन से अपना खुद का प्लेटफॉर्म बनाना चाहता हूं जो मुझे प्रति सेकंड कम से कम 100 नमूने दे सकता है (अरुडिनो जो प्राप्त कर रहा है)। इसके अलावा, फ्लोटिंग पॉइंट्स से बचने के लिए, मेरी गणना लंबे चर का उपयोग करती है और परिणामस्वरूप 16 बिट्स से बड़ी संख्या होती है, इसलिए मैं मान रहा हूं कि एक 32 बिट एमसीयू एक अच्छा विचार होगा। इसके अलावा, फ्लोटिंग पॉइंट गणना करने में सक्षम MCU कोड में गणित को सरल बनाने के लिए दिलचस्प हो सकता है।

अंत में मुझे यकीन नहीं है कि एमसीयू की तलाश कैसे शुरू की जाए जो इन आवश्यकताओं को पूरा करे और Arduino वातावरण से एक तेज संक्रमण की अनुमति दे। इस तरह के MCU खोजने के बारे में जाने के लिए कोई मार्गदर्शन बहुत सराहना की जाएगी!


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

5
यह आपके पिछले प्रश्न की तुलना में बहुत बेहतर है, लेकिन यह अभी भी बहुत व्यापक है, और आपकी आवश्यकताओं में कुछ बिंदु स्पष्ट नहीं हैं। उदाहरण के लिए, "प्रोसेसर को बाधित किए बिना" आपका क्या मतलब है? मैं अनुमान लगा रहा हूं कि आप वास्तव में पराग I / O को नहीं करना चाहते। आपको नमूनों के प्रत्येक सेट पर वास्तव में कितनी कंप्यूटिंग की आवश्यकता है, इस पर एक बेहतर संभाल पाने की आवश्यकता है।
डेव ट्वीड

1
आपको पूर्णांक गणित का उपयोग करने पर विचार करना चाहिए। यह सही बात है।
स्कॉट सीडमैन


4
इंटीगर गणित, लंबा या छोटा, फ्लोटिंग पॉइंट की तुलना में बहुत तेज है; और पूर्णांक गणित जो प्रोसेसर की "मूल" बिट गहराई से अधिक लंबा है, वह भी धीमा होगा। तो 32-बिट एक बहुत अच्छे विचार की तरह लगता है, शायद "डीएसपी" प्रकार के उपकरणों में से एक।
pjc50

जवाबों:


18

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

चरण 1: किसी न किसी आकार, बजट, विक्रेता

इनमें से एक चुनें:

  • कंप्यूटर (रास्पबेरी पाई, बीगलबोर्ड, पीसी104 बोर्ड, इंटेल एडिसन, आदि)। एक सामान्य-प्रयोजन ऑपरेटिंग सिस्टम बूट करता है और इसमें बहुत सारी प्रसंस्करण शक्ति होती है। अधिक महंगी और शक्ति-भूख। $ 10 $ 100।

  • बड़े MCU। एआरएम कोर्टेक्स-ए / PIC32 / dsPIC / AVR32 / TI C श्रृंखला डीएसपी आदि निर्णय कंप्यूटिंग शक्ति, ओएस वैकल्पिक। ~ $ 5।

  • छोटा MCU। कोर्टेक्स-एम / PIC16। एक सच्चे ओएस के लिए वास्तव में पर्याप्त जगह नहीं है, शायद सिर्फ एक हल्का कार्य शेड्यूलर है। ~ $ 2।

  • टिनी MCU। केवल उन अनुप्रयोगों के लिए, जहां आप बिजली की खपत के हर अंतिम माइक्रोएम्प की परवाह करते हैं। ~ $ 1 या उससे कम।

आपको इस स्तर पर भी विचार करना चाहिए कि कौन से विक्रेता और उपकरण आपको पसंद और नापसंद हैं। इन-सर्किट डिबगिंग डिवाइस और आईडीई जैसी चीजों की लागत पर एक नज़र डालें।

चरण 2: न्यूनतम परिधीय

क्या आपको USB जैसी चीजों की आवश्यकता है? पीसीआई? HDMI? SATA? असामान्य रूप से ADCs या DACs? लगभग सभी "छोटे" या "छोटे" श्रेणी में ये नहीं होते हैं, हालांकि USB काफी व्यापक रूप से उपलब्ध है।

चरण 3: प्रोटोटाइप

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

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

चरण 4: सिकोड़ें

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


14
चरण 0: उपकरण श्रृंखला (फर्मवेयर विकास पर्यावरण)। विकास का वातावरण खोजें, जिसे आप अपने लिए काम बना सकते हैं। यह वह जगह है जहाँ यह जीता या हारा है। यहां तक ​​कि अगर आपके पास सिलिकॉन है जो एकदम फिट है, लेकिन आप फर्मवेयर विकास पर्यावरण कार्य (किसी भी कारण से) नहीं कर सकते हैं, तो आपका प्रोजेक्ट जमीन पर नहीं उतरेगा। (बिंदु में मामला: Arduino IDE को आपका Arduino- आधारित प्रोटोटाइप जमीन से मिल गया है।)
निक अलेक्सीव

8
Cortex-M को "स्मॉल MCU" के रूप में वर्गीकृत किया जा रहा है, और PIC32 / AVR32 को "लार्ज MCU" के रूप में थोड़ा दुर्भाग्यपूर्ण लगता है। मैंने व्यक्तिगत रूप से PIC32 / AVR32 का उपयोग नहीं किया है, लेकिन एक त्वरित नज़र के आधार पर चश्मे की सीमा, मैं कहूंगा कि वे सभी एक ही ब्रैकेट में होना चाहिए। (कॉर्टेक्स-एम MCU हैं जो 200MHz पर चलते हैं, कई मेगाबाइट्स फ्लैश और आधे से अधिक मेगाबाइट रैम हैं)
अलेक्सई तोरहमो

13

अच्छा प्रोजेक्ट है। यहां कुछ संकेत दिए गए हैं, लेकिन हर प्रोजेक्ट के लिए इसे सामान्य बनाना मुश्किल होगा।

कम्प्यूटेशनल आवश्यकताओं के साथ शुरू करो

यह वह है जो आपको बताएगा कि आपको किस तरह के कोर की आवश्यकता है और एमसीयू के सामान्य प्रदर्शन। मेरा सुझाव है कि आप इसके साथ शुरू करें, क्योंकि बाह्य उपकरणों के उपयोग से इसे स्पष्ट रूप से बढ़ाया नहीं जा सकता है।

सबसे पहले, ऐसा लगता है कि आप लूप के भीतर बड़े पूर्णांकों के साथ भारी गणितीय कार्यों का उपयोग करते हैं। इसलिए, जैसा कि आपने सुझाव दिया है, 32 बिट यहां उपयोगी होगा, इसलिए एआरएम एक आदर्श उम्मीदवार के रूप में आता है। ऑपरेशन की आवृत्ति के लिए: वर्तमान में, आप एक Arduino MEGA2560 (16MHz पर चल रहा है, मुझे लगता है) का उपयोग कर रहे हैं और आप 10 छोरों / s बना सकते हैं। यदि आप 100 लूप / एस हासिल करना चाहते हैं, तो आपको 100MHz या उससे अधिक (मोटे अनुमान) की सीमा में एक Cortex-M3 / M4 के साथ ठीक होना चाहिए। ध्यान दें कि कॉर्टेक्स-एम 4 एफ में एक फ्लोटिंग पॉइंट यूनिट है।

हमने पहले ही चयन को सीमित कर दिया था।

मेमोरी आवश्यकताओं

यह आसान है: एमसीयू चुनें जिसमें प्रोटोटाइप के लिए अपनी सीमा की सबसे अधिक रैम / फ्लैश है। एक बार जब आप प्रोटोटाइप को वैध कर लेते हैं, तो उसी रेंज से MCU पर स्विच करें जिसमें अभी पर्याप्त RAM / Flash है, अब आप अपनी सटीक आवश्यकताओं को जानते हैं।

ध्यान दें कि मुझे नहीं लगता कि आपके एप्लिकेशन को अद्भुत मात्रा में मेमोरी की आवश्यकता है।

अब, बाह्य उपकरणों

आपको कुछ ADC की आवश्यकता है। जिस रेंज को हम देख रहे हैं उसके सभी MCU में कुछ हैं, इसलिए यह एक उपयोगी मानदंड नहीं है। न तो डिजिटल इनपुट / आउटपुट होते हैं, सिवाय इसके कि अगर आपको उनमें से एक बड़ी संख्या की आवश्यकता है (जो कि आपका मामला नहीं लगता है)।

आपको एक डीएसी की आवश्यकता है। हालाँकि, यह कुछ ऐसा है जो आपको वास्तव में आसानी से नहीं मिलेगा और उम्मीदवारों को बहुत कम कर देगा। इसलिए हम उस आवश्यकता को नहीं रखते हैं और हम PWM और लोपास (जो निश्चित रूप से स्वीकार्य है, वास्तव में) के साथ रहेंगे।

एलसीडी (बाद में) को छोड़कर, आप किसी भी संचार इंटरफ़ेस का उल्लेख नहीं करते हैं। वैसे भी, सभी MCUs में I2C / SPI / UART / ... यदि आपको कुछ चाहिए।

एलसीडी

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

  • यदि आप एक चरित्र एलसीडी चाहते हैं: तो एमसीयू के लिए सबसे आसान और कम से कम बाधा कुछ सीरियल इंटरफ़ेस (अक्सर एसपीआई) के माध्यम से इसके साथ बात करना है। इस तरह यह बहुत अधिक पिन का उपयोग नहीं करेगा, आप छोटे / सस्ते MCUs का उपयोग कर सकते हैं और गति कोई समस्या नहीं है।
  • यदि आप एक ग्राफिक TFT एलसीडी चाहते हैं: यदि यह एक छोटा है, तो सीरियल लिंक अभी भी उपयुक्त हो सकता है। हालाँकि, 320x200 या उससे अधिक के लिए और यदि आप एक अच्छा चित्रमय इंटरफ़ेस चाहते हैं, तो आप समानांतर इंटरफ़ेस के साथ संवाद करना शुरू करेंगे। इस स्थिति में, या तो आप कुछ GPIO का उपयोग करते हैं (लेकिन जो MCU पर अधिक लोड डालेंगे क्योंकि आपको नियंत्रण रेखाओं को थोड़ा धमाका करना होगा) या आप एक MCU चुनें जिसमें एक समर्पित LCD इंटरफ़ेस हो (जो अक्सर एक जैसा हो बाहरी मेमोरी इंटरफ़ेस)। यह अंतिम MCU पसंद का एक मजबूत बाधा डालता है, लेकिन आपके पास अन्य मजबूत बाधाएं नहीं हैं, इसलिए ...

अब, आप चुनते हैं

ST Micro / NXP / Atmel वेबसाइट पर जाएं और उनके MCU चयन टूल का उपयोग करें। आप डेटशीट पढ़ने में भी बहुत समय लगाते हैं। इस समय ले लो। यह व्यर्थ नहीं है। कुछ भी आप यहाँ सीखेंगे, भले ही आप इसे विशेष रूप से इस परियोजना के लिए उपयोग न करें, उपयोगी हो सकता है।

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

मूसर / डिजीकाइ पर कीमतों / उपलब्धता की जाँच करें। लेकिन आपको यहां कुछ विशेष रूप से महंगी की आवश्यकता नहीं होनी चाहिए। शायद 5 € या तो।

एलसीडी कंट्रोल के संबंध में अंतिम बात

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

हाँ, आदर्श रूप से, इसमें कुछ कार्य स्विचिंग और सामान की आवश्यकता होती है। एक वास्तविक OS, वास्तव में (लुक फ्रीट्रॉस, कोओक्स ओएस, न्यूटैक्स, ... वे बहुत छोटे हैं, मोटे तौर पर कॉर्टेक्स-एम पर उपयोग किए जाते हैं, और आवश्यक मल्टीटास्किंग तंत्र प्रदान करते हैं)।


आपके व्यापक उत्तर के लिए बहुत बहुत धन्यवाद! मैं एआरएम कोर्टेक्स MCUs 3.3V पर सभी कार्य देख रहा हूँ। मेरे थ्रॉटल सिग्नल को 1 और 5 वी के बीच के पैमाने की जरूरत है। मैं अनुमान लगा रहा हूं कि अगर मैं एक एआरएम नियंत्रक का उपयोग करना चाहता हूं, तो मुझे वोल्टेज को स्टेप-अप करने का एक तरीका खोजना होगा, क्योंकि यह एमसीयू से 3.3V पर कैप किया जाएगा?
एलियट डब्ल्यू

हाँ। थ्रॉटल सिग्नल एनालॉग आउटपुट है, है ना? उस मामले में आप इसे बढ़ाने के लिए एक opamp का उपयोग कर सकते हैं।
मंद

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

1
@ माइकलकॉर्जिंग बेशक, मेरा मतलब लिनक्स की तरह दूर से भी नहीं था। लेकिन उदाहरण के लिए FreeRTOS, Coocox OS या Nuttx जैसी कोई चीज़। ये वही हैं जिन्हें मैं वास्तविक ओएस मानता हूं , हालांकि बहुत छोटा है। मैंने लिखा है कि क्योंकि वास्तव में, नंगे-धातु पर ऐसा करने में अधिक समय लगेगा, डीबग करने के लिए दर्द हो सकता है और कम लचीला हो सकता है। और Arduino पर्यावरण (हालांकि मैं इस पर एक विशेषज्ञ से बहुत दूर हूं) यह टास्किंग तंत्र प्रदान करने के लिए प्रतीत नहीं होता है (और, जैसे, मैं इसे वास्तविक ओएस नहीं मानता )।
मंद

1
आह। खैर, मैं "असली" भाग को गलत करता हूं, फिर। बस हमें ऐसे आउटलैंडरों के लाभ के लिए जो कभी-कभार यहां खत्म हो जाते हैं, आप अपने उत्तर में उस हिस्से को स्पष्ट करने पर विचार करना चाह सकते हैं।
बजे एक CVn

4

ध्यान दें कि यह एक व्यापक विषय है जिसे कई (व्यक्तिपरक) दृष्टिकोणों का उपयोग करके सही ढंग से उत्तर दिया जा सकता है।

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

ने कहा कि...

प्रोसेसर की उन विशेषताओं से शुरू करें जिन्हें आप बदल नहीं सकते हैं। जैसे गति और मेमोरी (यदि लागू हो) आकार। जांच करें कि क्या आपको व्यवधान की आवश्यकता है और बाधा संचालन कितना जटिल है।

यदि आपको ADCs या DAC जैसे परिधीय समर्थन की आवश्यकता है, तो स्थिति अधिक जटिल है। क्या इन सुविधाओं को प्रोसेसर में बनाया जाना चाहिए या प्रोसेसर से बाहरी होना चाहिए। मूल्य, सटीकता और यहां तक ​​कि शोर इस निर्णय में कारक हैं।

यदि बाह्य बाह्य उपकरणों का समर्थन किया जाना है तो धारावाहिक संचार के प्रकार पर विचार करें जो आवश्यक हैं। बाहरी हार्डवेयर को SPI, I2C या अन्य प्रकार के UART की आवश्यकता हो सकती है। यदि डेटा दर अधिक है, तो इसके सीरियल संचार पोर्ट से जुड़े डीएमए सुविधाओं के साथ एक प्रोसेसर ढूंढना सबसे अच्छा हो सकता है।

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

वास्तविक दुनिया में, यह दृष्टिकोण पुनरावृत्त है। यही है, कई परियोजनाएं एक प्रोसेसर से शुरू होती हैं और विभिन्न प्रोसेसर को स्वैप करती हैं क्योंकि हार्डवेयर और / या सॉफ्टवेयर की समस्याएं होती हैं या परियोजना का दायरा बदल जाता है।


आप संकलक से अपेक्षा करने के लिए किस प्रकार की संख्याओं के बेहतर न्यायाधीश हैं। मैं फ़्लोट्स का उपयोग करने के सामान्य दृष्टिकोण से बचूंगा। उदाहरण के लिए, यह हो सकता है कि फ्लोट परिणाम विभिन्न प्लेटफार्मों पर समान नहीं हैं! मैं पूर्णांक अंकगणितीय और दर्जी का उपयोग आपकी आवश्यकताओं के समाधान के लिए करूंगा।
13 फरवरी को st2000

3

मैं किसी को भी उपकरण की लागत का उल्लेख नहीं देखा। मेरी कंपनी एक TI CC2541 चुनती है और यह केवल एक $ 4k IAR संकलक के साथ संकलित पाया गया, निश्चित रूप से एक हॉबी के लिए एक शो स्टॉपर। इसके अलावा प्रोग्रामर। यह $ 20 या बहुत अधिक हो सकता है। सस्ता उपकरण अब अधिक आदर्श लगता है, इसलिए शायद यह जल्द ही अतीत की बात होगी।

इसके अलावा, यदि आप इसे अपने आप से दूर करते हैं, तो TQFP जैसे पैकेज, BGA, की तुलना में आसान हैं। एक बड़ा बीजीए व्यक्तिगत अनुभव के आधार पर, सही होना मुश्किल है।


2

यदि उत्पाद अपेक्षाकृत मूल्य-संवेदनशील है और आपके पास सभ्य विकास निधि है, तो आप मूल्यांकन बोर्डों का एक गुच्छा खरीद सकते हैं और एक विचार प्राप्त करने के लिए प्रत्येक पर कोड को प्रोफाइल कर सकते हैं। यदि आपका कोड पोर्टेबल C. में लिखा गया है तो यह काफी सरल होना चाहिए। माइक्रो से अलग आप IAR या Keil जैसे पूर्ण-विकसित IDE की लागत को पूरा करने से पहले टूलकिन्स का डेमो संस्करणों के साथ मूल्यांकन करेंगे। कुछ मामलों में आप बिना हार्डवेयर के IDE पर सीधे टोंटी कोड को प्रोफाइल कर सकते हैं।

यदि आप विकास लागत पर कसने के लिए विवश हैं, तो आपको ऐसी चीज़ को खोजने के लिए समझौता करना पड़ सकता है, जिसकी लागत विकास सेटअप के लिए बहुत अधिक नहीं है।

उदाहरण के लिए, ST में <$ 100 के लिए एक अच्छा रंग प्रदर्शन के साथ ARM Cortex M7 eval बोर्ड है। इसमें डीएसपी सुविधाओं के साथ एक एफपीयू है ताकि आप कुछ भी कर सकें जो आप आसानी से बात कर सकते हैं- शायद केवल 100 हर्ट्ज के बजाय 100kHZ पर पीआईडी ​​लूप चलाएं। यह संभवतः ओवरकिल है जब तक कि प्रदर्शन एक प्राथमिकता नहीं है।

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

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

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

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


1

कई अलग-अलग प्लेटफ़ॉर्म हैं जिन्हें आप Arduinos, PIC microcontrollers, FPGAs और बहुत कुछ जैसे देखना शुरू कर सकते हैं। मैंने अतीत में Arduinos के साथ काम किया और इसमें ADC पोर्ट है जो 74kS / s को प्राप्त करने में सक्षम है। प्रति सेकंड 100 नमूने बेहद धीमे हैं और मैं सोच रहा हूं कि आपने इसे कैसे पाया? दूसरी ओर, आप अपने आप से पूछना चाहते हैं कि क्या आपको SPI, CAN, I2C, या कार्ट जैसे किसी भी प्रकार के इंटरफेस की आवश्यकता होगी। वे सभी के अपने लाभ हो सकते हैं और यह स्वयं पर विचार करने के लिए है कि क्या आप एक या अधिक दासों से बात करेंगे। अंतिम लेकिन शायद सबसे महत्वपूर्ण कदम यह अनुमान लगाना होगा कि आपके द्वारा उपयोग किए जाने वाले माइक्रोकंट्रोलर पर कितने पिन होंगे।

"प्रोसेसर को बाधित किए बिना डिजिटल सिग्नल के अनुरूप पढ़ने की क्षमता बहुत अच्छी होगी।" मैं यह कहकर एक जंगली अनुमान लगा सकता हूं कि आप बाहरी या आंतरिक बफ़र्स से निपटना नहीं चाहते हैं जो आपके डेटा को प्रसारित करेगा और संभवतः आपके डेटा प्रोसेसिंग को धीमा कर देगा। क्या वह सही है? यदि ऐसा है, तो आपके लिए ऐसा करने के लिए अधिक प्रोग्रामिंग है, लेकिन प्रोसेसर आमतौर पर प्रति सेकंड 100 नमूनों की गति को संभालने में सक्षम हैं। यह आपके लिए घड़ी, नमूनाकरण दर और बाकी कार्यक्रम के लिए होगा।

इसके अलावा, अपने कार्यक्रम में व्यवधान पर विचार करें यदि आप डेटा का नमूना लगातार रखना चाहते हैं और झंडा उठाए जाने पर अन्य कार्य करते हैं।


2
मुझे लगता है कि आप इस बिंदु से चूक गए हैं। उसके पास एक आर्डिनो पर निर्मित एक प्रोटोटाइप है। नमूना धीमा नहीं है। नियंत्रण छोरें धीमी हैं। उन्हें तीन पीआईडी ​​नियंत्रकों की गणना अरुडिनो पर फ्लोटिंग पॉइंट का उपयोग करके की जा रही है, इसलिए वे एक अंटार्कटिक सर्दियों में गुड़ की तुलना में धीमी हैं। तो, नमूना समस्या नहीं है। अक्षम कोड है।
JRE

तुम उस बारे में सही हो।
12Lappie

हां, समस्या यह है कि यद्यपि मेरे लूप लंबे अंकगणित में हैं और फ्लोटिंग अंक नहीं हैं, फिर भी कई गणनाएं की जा रही हैं, जैसे कि Arduino प्रति लूप में एक बार एक नमूना लेता है, मेरी नमूना दर बहुत छोटी है (वर्तमान में प्रति सेकंड 20 नमूने) ।
एलियट डब्ल्यू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.