विषयसूची:

इंजन RPM प्रदर्शित करने के लिए Arduino का उपयोग करें: 10 कदम (चित्रों के साथ)
इंजन RPM प्रदर्शित करने के लिए Arduino का उपयोग करें: 10 कदम (चित्रों के साथ)

वीडियो: इंजन RPM प्रदर्शित करने के लिए Arduino का उपयोग करें: 10 कदम (चित्रों के साथ)

वीडियो: इंजन RPM प्रदर्शित करने के लिए Arduino का उपयोग करें: 10 कदम (चित्रों के साथ)
वीडियो: कैसे Arduino- आधारित डिजिटल टैकोमीटर डिजाइन करने के लिए 2024, नवंबर
Anonim
इंजन RPM प्रदर्शित करने के लिए Arduino का उपयोग करें
इंजन RPM प्रदर्शित करने के लिए Arduino का उपयोग करें
इंजन RPM प्रदर्शित करने के लिए Arduino का उपयोग करें
इंजन RPM प्रदर्शित करने के लिए Arduino का उपयोग करें
इंजन RPM प्रदर्शित करने के लिए Arduino का उपयोग करें
इंजन RPM प्रदर्शित करने के लिए Arduino का उपयोग करें

यह मार्गदर्शिका बताएगी कि कैसे मैंने Arduino UNO R3, I2C के साथ एक 16x2 LCD डिस्प्ले, और मेरी Acura Integra ट्रैक कार में इंजन स्पीड गेज और शिफ्ट लाइट के रूप में उपयोग की जाने वाली एक LED पट्टी का उपयोग किया। यह किसी ऐसे व्यक्ति के संदर्भ में लिखा गया है जिसके पास कुछ अनुभव या Arduino सॉफ़्टवेयर या सामान्य रूप से कोडिंग, गणितीय सॉफ़्टवेयर MATLAB, और इलेक्ट्रिक सर्किट बनाने या संशोधित करने का अनुभव है। भविष्य में इसे संशोधित किया जा सकता है ताकि इन विषयों के साथ कम या बिना अनुभव वाले किसी व्यक्ति के लिए समझना आसान हो।

चरण 1: एक सिगल वायर चुनें

एक सिगल वायर चुनें
एक सिगल वायर चुनें

आपको एक संकेत प्राप्त करने की आवश्यकता होगी जो इंजन की गति से संबंधित हो। एक ऐसी प्रणाली को जोड़ना संभव है जो इंजन की गति को मापता है लेकिन मौजूदा तार में टैप करना कहीं अधिक व्यावहारिक है जो इंजन की गति की जानकारी रखता है। इसके लिए एक कार के कई स्रोत हो सकते हैं, और यह एकल वाहन मॉडल पर साल-दर-साल बेतहाशा भिन्न हो सकता है। इस ट्यूटोरियल के लिए मैं अपनी कार के उदाहरण का उपयोग करूंगा, एक ट्रैक संशोधित 2000 Acura Integra LS। मैंने अपने इंजन पर पाया (B18B1, OBD2 के साथ) एक अप्रयुक्त वोल्टेज है जो 12V उच्च है और एक पूर्ण क्रांति को पूरा करने पर 0V तक गिर जाता है।

चीजें जो संभावित इंजन गति संकेत की पहचान करने में मदद करेंगी:

  • आपके वाहन के लिए वायरिंग आरेख
  • इंजन/ईसीयू सिग्नल वाले अपने वाहन के लिए खोज फ़ोरम
  • एक दोस्ताना मैकेनिक या कार उत्साही

चरण 2: तार को Arduino Board तक बढ़ाएँ

Arduino बोर्ड के लिए तार बढ़ाएँ
Arduino बोर्ड के लिए तार बढ़ाएँ
Arduino बोर्ड के लिए तार बढ़ाएँ
Arduino बोर्ड के लिए तार बढ़ाएँ

एक बार जब आप एक उपयुक्त संकेत चुन लेते हैं, तो आपको इसे उस स्थान तक विस्तारित करना होगा जहाँ आप अपना Arduino बोर्ड रख रहे हैं। मैंने अपना वाहन उस वाहन के अंदर रखने का फैसला किया जहां रेडियो हुआ करता था, इसलिए मैंने इंजन से नए तार को आग की दीवार में एक रबर ग्रोमेट के माध्यम से और रेडियो क्षेत्र के दाईं ओर घुमाया। चूंकि स्ट्रिपिंग, सोल्डरिंग और प्रोटेक्टिंग वायरिंग पर पहले से ही प्रचुर मात्रा में गाइड हैं, इसलिए मैं इस प्रक्रिया की व्याख्या नहीं करूंगा।

चरण 3: सिग्नल विश्लेषण

सिग्नल विश्लेषण
सिग्नल विश्लेषण

यहीं से चीजें जटिल हो सकती हैं। सिग्नल विश्लेषण और नियंत्रणों की सामान्य समझ रखने से आपको बहुत मदद मिलेगी, लेकिन थोड़े ज्ञान के साथ ऐसा किया जा सकता है।

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

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

1 / (सेकंड प्रति चक्र) = चक्र प्रति सेकंड, या हर्ट्ज

प्रति मिनट क्रांतियां = हर्ट्ज * 60

चरण 4: अपना सिग्नल विश्लेषण कोड करें

कोड योर सिग्नल एनालिसिस
कोड योर सिग्नल एनालिसिस

इस पद्धति के लिए इनपुट सिग्नल को एक पूर्ण चक्र पूरा करने में लगने वाले समय की आवश्यकता होती है। सौभाग्य से Arduino IDE सॉफ़्टवेयर में एक कमांड है जो ठीक यही करता है, PulseIn।

यह कमांड एक सिग्नल के लिए थ्रेशोल्ड को पार करने, गिनती शुरू करने और थ्रेशोल्ड को फिर से पार करने पर गिनती बंद करने की प्रतीक्षा करेगा। कुछ विवरण हैं जिन्हें कमांड का उपयोग करते समय नोट किया जाना चाहिए, इसलिए मैं यहां पल्सइन की जानकारी के लिए एक लिंक शामिल करूंगा:

पल्सइन माइक्रोसेकंड में एक मान लौटाएगा, और गणित को सरल रखने के लिए इसे तुरंत सामान्य सेकंड में परिवर्तित किया जाना चाहिए। पिछले चरण पर गणित के बाद, समय की इस अवधि को सीधे RPM में बराबर किया जा सकता है।

नोट: परीक्षण और त्रुटि के बाद मैंने पाया कि वितरक इंजन क्रैंकशाफ्ट के प्रत्येक घूर्णन के लिए दो घूर्णन पूरा करता है, इसलिए मैंने इसके लिए अपने उत्तर को 2 से विभाजित कर दिया।

चरण 5: एक फ़िल्टर की पहचान करें

फ़िल्टर की पहचान करें
फ़िल्टर की पहचान करें

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

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

एक कम पास फिल्टर कम आवृत्तियों (वांछित) को पारित करने की अनुमति देता है और उच्च आवृत्तियों (अवांछित) को क्षीण करता है।

चरण 6: फ़िल्टरिंग: भाग 1

छनन: भाग १
छनन: भाग १
छनन: भाग १
छनन: भाग १
छनन: भाग १
छनन: भाग १

फ़िल्टर को डिज़ाइन करना हाथ से किया जा सकता है, हालाँकि MATLAB का उपयोग करने से यह काफी तेज़ हो जाएगा यदि आपके पास सॉफ़्टवेयर तक पहुँच है।

एक कम पास फ़िल्टर को लैपलेस डोमेन (फ़्रीक्वेंसी डोमेन) में स्थानांतरण फ़ंक्शन (या अंश) के बराबर किया जा सकता है। इनपुट फ़्रीक्वेंसी को इस अंश से गुणा किया जाएगा और आउटपुट एक फ़िल्टर्ड सिग्नल है जिसमें केवल वही जानकारी होती है जिसका आप उपयोग करना चाहते हैं।

फ़ंक्शन में एकमात्र चर ताऊ है। ताऊ 1 / ओमेगा के बराबर है, जहां ओमेगा कटऑफ आवृत्ति है जो आप चाहते हैं (प्रति सेकंड रेडियन में होना चाहिए)। कटऑफ आवृत्ति वह सीमा है जहां से अधिक आवृत्तियों को हटा दिया जाएगा और इससे कम आवृत्तियों को रखा जाएगा।

मैंने कटऑफ आवृत्ति को आरपीएम के बराबर सेट किया है, मेरा इंजन कभी नहीं पहुंचेगा (990 आरपीएम या 165 हर्ट्ज)। FFT ग्राफ़ मोटे तौर पर दिखाते हैं कि मेरे कच्चे सिग्नल में कौन सी आवृत्तियाँ थीं और फ़िल्टर से निकलने वाली आवृत्तियाँ क्या थीं।

चरण 7: फ़िल्टरिंग: भाग 2

फ़िल्टरिंग: भाग 2
फ़िल्टरिंग: भाग 2
फ़िल्टरिंग: भाग 2
फ़िल्टरिंग: भाग 2

यहाँ समय के लिए MATLAB का फिर से उपयोग किया गया था। कटऑफ आवृत्ति परिभाषित की जाती है, और इससे परिणामी स्थानांतरण फ़ंक्शन प्रदर्शित होता है। ध्यान रखें कि यह अंश केवल लैपलेस डोमेन पर लागू होता है और सीधे Arduino UNO R3 जैसे समय-आधारित माइक्रो नियंत्रक पर उपयोग नहीं किया जा सकता है।

चरण 8: फ़िल्टरिंग: भाग 3

छनन: भाग ३
छनन: भाग ३
छनन: भाग ३
छनन: भाग ३

MATLAB में एक कमांड है जो एक निरंतर फ़ंक्शन (फ़्रीक्वेंसी डोमेन) को एक असतत फ़ंक्शन (टाइम डोमेन) में बदल देगा। इस कमांड का आउटपुट एक समीकरण प्रदान करेगा जिसे आसानी से Arduino IDE कोड में शामिल किया जा सकता है।

चरण 9: फ़िल्टरिंग: भाग 4

छनन: भाग 4
छनन: भाग 4
छनन: भाग 4
छनन: भाग 4

Arduino स्केच में, सेटअप से पहले वेरिएबल u और y शामिल करें। फ्लोट कमांड केवल यह परिभाषित करता है कि चर डेटा कैसे संग्रहीत करेगा (अधिकतम मूल्य, दशमलव, आदि जैसी चीजें…) और इस पर अधिक जानकारी के लिए एक लिंक यहां प्रदान किया जाएगा: https://www.arduino.cc/reference/en/language /वरिया…

उस लूप में जहां कच्चे सिग्नल से इंजन की गति में रूपांतरण हो रहा है, u वैरिएबल और y मल्टीपल इक्वेशन शामिल करें। इसे नियोजित करने के कई तरीके हैं, लेकिन चर u को मापा जा रहा कच्चे इनपुट सिग्नल के बराबर सेट किया जाना चाहिए, और चर y फ़िल्टर किया गया मान होगा।

सिफारिश की: