- इन्फ्रारेड स्लॉटेड ऑप्टिकल LM-393 स्पीड सेंसर मॉड्यूल
- मापने की गति और दूरी की गणना करने के लिए यात्रा की दूरी
आज डिजिटल मीटर हर क्षेत्र में एनालॉग मीटर की जगह ले रहे हैं चाहे वह बिजली मीटर हो या टैक्सी किराया मीटर। एनालॉग मीटर के मुख्य कारण में यांत्रिक भाग होते हैं जो लंबे समय तक इस्तेमाल किए जाने पर पहनने के लिए होते हैं और वे डिजिटल मीटर के रूप में सटीक नहीं होते हैं।
इसके लिए एक अच्छा उदाहरण एनालॉग स्पीडोमीटर और ओडोमीटर है जो गति और दूरी की यात्रा को मापने के लिए पुरानी मोटर बाइक में उपयोग किया जाता है। उनके पास एक विशेष भाग होता है जिसे पिनियन और रैक की व्यवस्था कहा जाता है जिसमें व्हील को घुमाए जाने पर स्पीडोमीटर की पिन को घुमाने के लिए एक केबल का उपयोग किया जाता है। लंबे समय तक उपयोग करने पर यह खराब हो जाएगा और प्रतिस्थापन और रखरखाव की भी आवश्यकता होगी।
डिजिटल मीटर में, यांत्रिक भागों का उपयोग करने के बजाय, गति और दूरी की गणना के लिए ऑप्टिकल इंटरप्रेटर या हॉल सेंसर जैसे कुछ सेंसर का उपयोग किया जाता है। यह एनालॉग मीटर की तुलना में अधिक सटीक है और लंबे समय तक किसी भी रखरखाव की आवश्यकता नहीं है। हमने पहले विभिन्न सेंसरों का उपयोग करके कई डिजिटल स्पीडोमीटर प्रोजेक्ट बनाए:
- Arduino और प्रसंस्करण Android ऐप का उपयोग करके DIY स्पीडोमीटर
- पीआईसी माइक्रोकंट्रोलर का उपयोग करके डिजिटल स्पीडोमीटर और ओडोमीटर सर्किट
- LM393 सेंसर (H206) का उपयोग करके मोबाइल रोबोट के लिए गति, दूरी और कोण माप
आज, इस ट्यूटोरियल में हम Arduino का उपयोग करके एक डिजिटल टैक्सी फेयर मीटर का एक प्रोटोटाइप बनाएंगे । यह परियोजना टैक्सी के पहिये द्वारा यात्रा की जाने वाली गति और दूरी की गणना करती है और इसे 16x2 एलसीडी डिस्प्ले पर लगातार प्रदर्शित करती है। और दूरी के आधार पर जब हम पुश बटन दबाते हैं तो यह किराया राशि उत्पन्न करता है।
नीचे दी गई छवि डिजिटल टैक्सी मीटर प्रोजेक्ट का पूरा सेटअप दिखाती है
इस प्रोटोटाइप में एक आरसी कार चेसिस है जिसमें स्पीड सेंसर मॉड्यूल और मोटर से जुड़ा एक एनकोडर व्हील है। एक बार गति को मापने के बाद, हम यात्रा की गई दूरी को माप सकते हैं और पुश बटन दबाकर किराया राशि का मूल्य जान सकते हैं। हम पोटेंशियोमीटर का उपयोग करके पहिया की गति निर्धारित कर सकते हैं। Arduino के साथ LM-393 स्पीड सेंसर मॉड्यूल का उपयोग करने के बारे में अधिक जानने के लिए, लिंक का अनुसरण करें। चलो स्पीड सेंसर मॉड्यूल का एक छोटा परिचय देखें।
इन्फ्रारेड स्लॉटेड ऑप्टिकल LM-393 स्पीड सेंसर मॉड्यूल
यह एक स्लॉट प्रकार मॉड्यूल है जिसका उपयोग एनकोडर पहियों के रोटेशन की गति को मापने के लिए किया जा सकता है। यह स्पीड सेंसर मॉड्यूल स्लॉट प्रकार के ऑप्टिकल इंटरप्टेर पर आधारित काम करता है जिसे ऑप्टिकल स्रोत सेंसर भी कहा जाता है। इस मॉड्यूल को 3.3V से 5V के वोल्टेज की आवश्यकता होती है और यह डिजिटल आउटपुट का उत्पादन करता है। तो यह किसी भी माइक्रोकंट्रोलर के साथ हस्तक्षेप किया जा सकता है।
इन्फ्रारेड लाइट सेंसर में प्रकाश स्रोत (IR-LED) और एक फोटोट्रांसिस्टर सेंसर होते हैं। दोनों को बीच में एक छोटे से अंतराल के साथ रखा गया है। जब कोई ऑब्जेक्ट IR LED और फोटोट्रांसिस्टर के गैप के बीच में रखा जाता है, तो यह प्रकाश किरण को बाधित करेगा जिससे फोटोट्रांसिस्टर करंट पास करना बंद कर देगा।
इस प्रकार इस सेंसर के साथ एक स्लोटेड डिस्क (एनकोडर व्हील) का उपयोग किया जाता है जिसे मोटर से जोड़ा जा सकता है और जब पहिया मोटर से घूमता है तो आईआर एलईडी और फोटोट्रांसिस्टर के बीच प्रकाश किरण को बाधित करता है जो आउटपुट ऑन और ऑफ (पल्स बनाना) बनाता है।
इस प्रकार यह उच्च उत्पादन का उत्पादन करता है जब स्रोत और सेंसर के बीच में व्यवधान होता है (जब किसी भी वस्तु को बीच में रखा जाता है) और कोई वस्तु नहीं रखे जाने पर कम आउटपुट उत्पन्न करता है। मॉड्यूल में हमारे पास ऑप्टिकल रुकावट के संकेत के लिए एक एलईडी है।
यह मॉड्यूल LM393 तुलनित्र आईसी के साथ आता है जो OUTPUT पर सटीक उच्च और कम संकेतों का उत्पादन करने के लिए उपयोग किया जाता है। इस प्रकार इस मॉड्यूल को कभी-कभी LM393 स्पीड सेंसर कहा जाता है ।
मापने की गति और दूरी की गणना करने के लिए यात्रा की दूरी
रोटेशन की गति को मापने के लिए हमें एनकोडर व्हील में मौजूद स्लॉट की संख्या को जानना होगा। मेरे पास 20 स्लॉट्स के साथ एक एनकोडर व्हील है। जब वे एक पूरा रोटेशन घुमाते हैं तो हमारे पास आउटपुट पर 20 दालें होती हैं। इसलिए गति की गणना करने के लिए हमें प्रति सेकंड उत्पादित दालों की संख्या की आवश्यकता है।
उदाहरण के लिए
यदि एक सेकंड में 40 दालें हैं, तो
गति = नू। दालों की / स्लॉट की संख्या = 40/20 = 2RPS (प्रति सेकंड क्रांति)
RPM में गति की गणना के लिए (क्रांतियों प्रति मिनट) 60 से गुणा करें।
RPM में गति = 2 X 60 = 120 RPM (प्रति मिनट क्रांतियाँ)
मापने की दूरी
पहिया द्वारा तय की गई दूरी को मापना इतना सरल है। दूरी की गणना करने से पहले, पहिया की परिधि ज्ञात होनी चाहिए।
चक्र की परिधि = wheel * d
जहाँ d पहिया का व्यास है।
3. का मान 3.14 है।
मेरे पास 6.60 सेमी व्यास का एक पहिया (आरसी कार पहिया) है, इसलिए परिधि (20.7 सेमी) है।
इसलिए यात्रा की गई दूरी की गणना करने के लिए, परिधि के साथ पहचानी गई दालों की संख्या को गुणा करें।
दूरी की यात्रा = पहिया x की परिधि (दालों की संख्या / स्लॉट की संख्या)
इसलिए जब परिधि 20.7cm का एक पहिया 20 दालों को ले जाता है जो एनकोडर व्हील का एक चक्कर होता है तो उसके द्वारा तय की गई दूरी की गणना किसके द्वारा की जाती है
दूरी की यात्रा = 20.7 x (20/20) = 20.7 सेमी
मीटर में दूरी की गणना करने के लिए सेमी वैल्यू में दूरी को 100 से विभाजित करें।
नोट: यह एक छोटी RC कार का पहिया है, वास्तविक समय में कारों में इससे बड़े पहिए होते हैं। तो मैं मान रहा हूँ कि इस ट्यूटोरियल में पहिया की परिधि 230cm है ।
दूरी की यात्रा के आधार पर किराया की गणना
कुल किराया राशि प्राप्त करने के लिए, किराया दर (राशि / मीटर) के साथ यात्रा की गई दूरी को गुणा करें।
Timer1.initialize (1000000); Timer1.attachInterrupt (टाइमरआईएसआर);
अगला दो बाहरी व्यवधानों को जोड़ता है। पहला इंटरप्ट Arduino pin 2 को इंटरप्ट पिन बनाता है और पिन पर पता चलने पर ISR (काउंट) को कॉल करता है। 2. पिन 2 का पता लगाया गया है। यह पिन 2 स्पीड सेंसर मॉड्यूल के D0 आउटपुट से जुड़ा है।
और दूसरा एक Arduino pin 3 को इंटरप्ट पिन के रूप में बनाता है और जब IS को पिन 3 पर हाई का पता लगाया जाता है तो ISR (जेनरेट) को कॉल करता है। यह पिन पुश बटन के साथ पुल डाउन रेज़िस्टर से जुड़ा हुआ है।
संलग्नक (digitalPinToInterrupt (2), गिनती, RISING); attachInterrupt (digitalPinToInterrupt (3), generatefare , उच्च);
5. इसके बाद आइए हम यहां उपयोग किए जाने वाले ISR के बारे में देखें:
ISR1- गिनती () ISR उस समय कहलाती है जब पिन 2 (स्पीड सेंसर से जुड़ा) पर एक RISING (LOW TO HIGH) होता है।
void count () // आईएसआर गति सेंसर से काउंटरों के लिए { काउंटर ++; // एक रोटेशन ++ द्वारा काउंटर मूल्य में वृद्धि ; // एक देरी (10) द्वारा रोटेशन मूल्य बढ़ाएं ; }
ISR2- टाइमरआईआरएस () ISR को हर एक सेकंड में कहा जाता है और ISR के अंदर मौजूद उन लाइनों को निष्पादित करता है।
शून्य टाइमरआईएसआर () { detachInterrupt (digitalPinToInterrupt (2)); Timer1.detachInterrupt (); lcd.clear (); फ्लोट गति = (काउंटर / 20.0) * 60.0; फ्लोट घुमाव = 230 * (रोटेशन / 20); रोटेशनिनम = घुमाव / 100; lcd.setCursor (0,0); lcd.print ("Dist (m):"); lcd.print (घुमाव); lcd.setCursor (0,1); lcd.print ("स्पीड (RPM):"); lcd.print (गति); काउंटर = 0; int analogip = analogRead (A0); int मोटरस्पेड = नक्शा (एनालॉग, 0,1023,0,255); एनालॉगवर्इट (5, मोटरस्पेड); Timer1.attachInterrupt (टाइमरआईएसआर); संलग्नक (digitalPinToInterrupt (2), गिनती, RISING); }
इस फ़ंक्शन में वह लाइनें शामिल हैं जो वास्तव में पहले टाइमर 1 और इंटरप्ट पिन 2 को अलग करती हैं क्योंकि हमारे पास आईएसआर के अंदर एलसीडी प्रिंट स्टेटमेंट हैं।
RPM में SPEED की गणना के लिए हम नीचे दिए गए कोड का उपयोग करते हैं जहां 20.0 एनकोडर व्हील में प्रीसेट स्लॉट्स की संख्या नहीं है।
फ्लोट गति = (काउंटर / 20.0) * 60.0;
और कोड के नीचे की दूरी की गणना के लिए उपयोग किया जाता है:
फ्लोट रोटेशन = 230 * (रोटेशन / 20);
यहाँ पहिया की परिधि को 230cm माना जाता है (जैसा कि यह वास्तविक समय की कारों के लिए सामान्य है)
अगला मी की दूरी को 100 से विभाजित करके दूरी में परिवर्तित करें
रोटेशनिनम = घुमाव / 100;
उसके बाद हम LCD डिस्प्ले पर SPEED और DISTANCE प्रदर्शित करते हैं
lcd.setCursor (0,0); lcd.print ("Dist (m):"); lcd.print (घुमाव); lcd.setCursor (0,1); lcd.print ("स्पीड (RPM):"); lcd.print (गति);
महत्वपूर्ण: हमें काउंटर को 0 पर रीसेट करना होगा क्योंकि हमें प्रति सेकंड के लिए पता लगाने वाले प्लस की संख्या प्राप्त करने की आवश्यकता है इसलिए हम इस लाइन का उपयोग करते हैं
काउंटर = 0;
अगला एनालॉग पिन A0 पढ़ें और इसे डिजिटल मान (0 से 1023) में परिवर्तित करें और उन मानों को PWM आउटपुट (मोटर की गति निर्धारित करना) के लिए 0-255 पर मैप करें और आखिर में उन एनालॉग PWR मानों का उपयोग करके उन PWM मानों को लिखें जो ULN2003 से जुड़े हैं मोटर आईसी।
int analogip = analogRead (A0); int मोटरस्पेड = नक्शा (एनालॉग, 0,1023,0,255); एनालॉगवर्इट (5, मोटरस्पेड);
ISR3: जेनरेशन () ISR का उपयोग यात्रा की दूरी के आधार पर किराया राशि उत्पन्न करने के लिए किया जाता है। यह ISR तब कहा जाता है जब इंटरप्ट पिन 3 को हाई (जब पुश बटन दबाया जाता है) का पता लगाया जाता है। यह फ़ंक्शन पिन 2 और टाइमर के बीच में व्यवधान को रोकता है और फिर एलसीडी को साफ करता है।
शून्य उत्पन्न () { detachInterrupt (digitalPinToInterrupt (2)); 2 टिमर 1.detachInterrupt () पर पिन करें ; lcd.clear (); lcd.setCursor (0,0); lcd.print ("Fare Rs:"); फ्लोट रुपए = रोटेशनिनम * 5; lcd.print (रुपए); lcd.setCursor (0,1); lcd.print ("प्रति मीटर 5 रु"); }
उसके बाद तय की गई दूरी को 5 से गुणा किया जाता है (मैंने रेट 5 / मीटर के लिए 5 का उपयोग किया है)। आप अपनी इच्छा के अनुसार बदल सकते हैं।
फ्लोट रुपए = रोटेशनिनम * 5;
राशि मूल्य की गणना के बाद इसे Arduino से जुड़े एलसीडी डिस्प्ले पर प्रदर्शित करें।
lcd.setCursor (0,0); lcd.print ("Fare Rs:"); lcd.print (रुपए); lcd.setCursor (0,1); lcd.print ("प्रति मीटर 5 रु");
पूरा कोड और प्रदर्शन वीडियो नीचे दिया गया है।
आप सटीकता, मजबूती और एंड्रॉइड ऐप, डिजिटल भुगतान आदि जैसी अधिक सुविधाओं को जोड़कर और इसे एक उत्पाद के रूप में विकसित करके इस प्रोटोटाइप को और बेहतर बना सकते हैं।