अच्छा प्रोजेक्ट है। यहां कुछ संकेत दिए गए हैं, लेकिन हर प्रोजेक्ट के लिए इसे सामान्य बनाना मुश्किल होगा।
कम्प्यूटेशनल आवश्यकताओं के साथ शुरू करो
यह वह है जो आपको बताएगा कि आपको किस तरह के कोर की आवश्यकता है और एमसीयू के सामान्य प्रदर्शन। मेरा सुझाव है कि आप इसके साथ शुरू करें, क्योंकि बाह्य उपकरणों के उपयोग से इसे स्पष्ट रूप से बढ़ाया नहीं जा सकता है।
सबसे पहले, ऐसा लगता है कि आप लूप के भीतर बड़े पूर्णांकों के साथ भारी गणितीय कार्यों का उपयोग करते हैं। इसलिए, जैसा कि आपने सुझाव दिया है, 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, वास्तव में (लुक फ्रीट्रॉस, कोओक्स ओएस, न्यूटैक्स, ... वे बहुत छोटे हैं, मोटे तौर पर कॉर्टेक्स-एम पर उपयोग किए जाते हैं, और आवश्यक मल्टीटास्किंग तंत्र प्रदान करते हैं)।