Arduino का उपयोग करके दो बिंदुओं के बीच की दूरी को कैसे मापें?

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



मापने Arduino का उपयोग दूरी

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



दूरी को मापने के लिए Arduino और अल्ट्रासोनिक सेंसर का उपयोग कैसे करें?

जैसा कि हम परियोजना के पीछे के सारांश को जानते हैं, आइए हम आगे बढ़ें और परियोजना शुरू करने के लिए आगे की जानकारी इकट्ठा करें।



चरण 1: घटकों (हार्डवेयर) को इकट्ठा करना

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



  • जम्पर तार
  • 5V एसी से डीसी एडाप्टर (x2)

चरण 2: घटकों (सॉफ्टवेयर) को इकट्ठा करना

  • प्रोटीन 8 प्रोफेशनल (से डाउनलोड किया जा सकता है) यहाँ )

Proteus 8 Professional को डाउनलोड करने के बाद, इस पर सर्किट डिज़ाइन करें। मैंने यहां सॉफ्टवेयर सिमुलेशन शामिल किए हैं ताकि शुरुआती लोगों के लिए सर्किट डिजाइन करना और हार्डवेयर पर उचित कनेक्शन बनाना सुविधाजनक हो सके।

चरण 3: HCR-05 का कार्य करना

जैसा कि अब हम अपनी परियोजना के मुख्य सार को जानते हैं, आइए हम आगे बढ़ते हैं और काम करने के एक संक्षिप्त अध्ययन से गुजरते हैं HCR-05 । आप निम्न चित्र द्वारा इस सेंसर के मुख्य कार्य को समझ सकते हैं।

इस सेंसर में दो पिन हैं, ट्रिगर पिन, तथा इको पिन दोनों का उपयोग दो विशेष बिंदुओं के बीच की दूरी को मापने के लिए किया जाता है। सेंसर से अल्ट्रासोनिक तरंग भेजकर प्रक्रिया शुरू की जाती है। यह कार्य 10us के लिए ट्रिगर पिन को ट्रिगर करके किया जाता है। इस कार्य के संपन्न होते ही अल्ट्रासोनिक तरंगों के 8 सोनिक फट को ट्रांसमीटर से भेजा जाता है। यह तरंग हवा में यात्रा करेगी और जैसे ही यह अपने रास्ते में किसी वस्तु से टकराती है, यह सेंसर में निर्मित रिसीवर द्वारा वापस आ जाएगी और प्राप्त होगी।



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

अपने अल्ट्रासोनिक सेंसर बनाने के लिए ट्रांसमीटर केवल, ट्रिगर पिन को अपने आउटपुट पिन के रूप में बनाएं और 10 पिन के लिए इस पिन पर एक उच्च पल्स भेजें। जैसे ही यह किया जाएगा एक अल्ट्रासोनिक फट शुरू किया जाएगा। इसलिए, जब भी लहर को प्रेषित किया जाना है, बस अल्ट्रासोनिक सेंसर के ट्रिगर पिन को नियंत्रित करना है।

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

चरण 4: सर्किट का कार्य करना

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

इस समस्या को हल करने के लिए, हमें जो करना है, उसे भेजना होगा उच्च जैसे ही रिसीवर की ईसीओ को संकेत मिलता है जैसे ही अल्ट्रासोनिक तरंग ट्रांसमीटर ट्रांसमीटर सेंसर द्वारा प्रसारित किया जाता है। या सरल शब्दों में, हम कह सकते हैं कि रिसीवर के ईसीओ और ट्रांसमीटर के ट्रिगर को एक ही समय में हाई पर भेजा जाना चाहिए। इसलिए, इसे प्राप्त करने के लिए, हम किसी तरह रिसीवर के ट्रिगर को ऊंचा कर देंगे जैसे ही ट्रांसमीटर का ट्रिगर उच्च हो जाता है। ईसीओ पिन जाने तक रिसीवर का यह ट्रिगर उच्च रहेगा कम । जब रिसीवर के ECO पिन से एक अल्ट्रासोनिक सिग्नल प्राप्त होगा, तो यह LOW जाएगा। इसका मतलब यह होगा कि ट्रांसमीटर सेंसर के ट्रिगर को केवल एक उच्च संकेत मिला। अब, जैसे ही ईसीओ कम होता है, हम ज्ञात देरी के लिए इंतजार करेंगे और रिसीवर के ट्रिगर को डाल देंगे। ऐसा करने पर, दोनों सेंसरों के ट्रिगर्स को सिंक किया जाएगा और वेव ट्रैवल की देरी के समय को जानकर दूरी की गणना की जाएगी।

चरण 5: अवयवों को असेंबल करना

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

  1. दो अल्ट्रासोनिक सेंसर लें। पहले सेंसर के रिसीवर को कवर करें और दूसरे सेंसर के ट्रांसमीटर को। इस उद्देश्य के लिए सफेद डक्ट टेप का उपयोग करें और सुनिश्चित करें कि ये दोनों पूरी तरह से कवर किए गए हैं ताकि कोई संकेत दूसरे सेंसर के ट्रांसमीटर को न छोड़े और कोई संकेत पहले सेंसर के रिसीवर में न जाए।
  2. दो Arduino को दो अलग-अलग ब्रेडबोर्ड पर कनेक्ट करें और उनके संबंधित सेंसर को उनके साथ कनेक्ट करें। Arduino के पिन 9 को ट्रिगर पिन से कनेक्ट करें और Arduino के पिन 10 को EcoPin। Arduino के 5V द्वारा अल्ट्रासोनिक सेंसर को पावर और सभी आधारों को सामान्य।
  3. रिसीवर कोड को रिसीवर के Arduino और ट्रांसमीटर के Arduino को ट्रांसमीटर कोड अपलोड करें।
  4. अब प्राप्त पक्ष के सीरियल मॉनिटर को खोलें और उस दूरी को नोट करें जो मापा जा रहा है।

इस परियोजना का सर्किट आरेख इस प्रकार है:

सर्किट आरेख

चरण 6: Arduino के साथ शुरुआत करना

यदि आप पहले से ही Arduino IDE से परिचित नहीं हैं, तो चिंता न करें क्योंकि एक माइक्रोकंट्रोलर बोर्ड के साथ Arduino IDE को सेट-अप और उपयोग करने के लिए चरण प्रक्रिया द्वारा नीचे बताया गया है।

  1. से Arduino IDE का नवीनतम संस्करण डाउनलोड करें Arduino।
  2. अपने Arduino नैनो बोर्ड को अपने लैपटॉप से ​​कनेक्ट करें और कंट्रोल पैनल खोलें। नियंत्रण कक्ष में, पर क्लिक करें हार्डवेयर और ध्वनि । अब पर क्लिक करें उपकरणों और छापक यंत्रों। यहां, वह पोर्ट ढूंढें जिसमें आपका माइक्रोकंट्रोलर बोर्ड जुड़ा हुआ है। मेरे मामले में यह है COM14 लेकिन यह विभिन्न कंप्यूटरों पर अलग है।

    पोर्ट ढूँढना

  3. टूल मेनू पर क्लिक करें। और बोर्ड को सेट करें अरुडिनो नैनो ड्रॉप-डाउन मेनू से।

    बोर्ड की स्थापना

  4. उसी टूल मेनू में, पोर्ट को उस पोर्ट संख्या पर सेट करें जिसे आपने पहले देखा था उपकरणों और छापक यंत्रों

    पोर्ट की स्थापना

  5. उसी टूल मेनू में, प्रोसेसर को सेट करें ATmega328P (पुराना) बूटलोडर )।

    प्रोसेसर

  6. नीचे दिए गए कोड को डाउनलोड करें और इसे अपने Arduino IDE में पेस्ट करें। पर क्लिक करें डालना अपने माइक्रोकंट्रोलर बोर्ड पर कोड को जलाने के लिए बटन।

    डालना

कोड डाउनलोड करने के लिए, यहाँ क्लिक करें।

चरण 7: कोड को समझना

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

ट्रांसमीटर साइड के लिए कोड

1. शुरू में, Arduino बोर्ड के पिंस को इनिशियलाइज़ किया जाता है जो कि अल्ट्रासोनिक सेंसर से जुड़ा होगा। फिर चर घोषित किए जाते हैं जो कोड के रन समय के दौरान समय और दूरी की गणना के लिए मूल्यों को संग्रहीत करने के लिए उपयोग किया जाएगा।

// पिन को परिभाषित करता है संख्या int int ट्रिपिन = 9; // Arduino const int echoPin = 10 के अल्ट्रासोनिक सेंसर के ट्रिगर पिन को कनेक्ट करें; // Arduino के pin10 को अल्ट्रासोनिक सेंसर के इको पिन कनेक्ट करें // चर लंबी अवधि को परिभाषित करता है; // वैरिएबल वेव टी ट्रैवल इंट इंट डिस्टेंस द्वारा लिए गए समय को स्टोर करने के लिए चर; // वैरिएबल को स्टोर की गई दूरी की गणना

2। व्यर्थ व्यवस्था() एक ऐसा कार्य है जो प्रारंभ में केवल एक बार चलता है जब बोर्ड संचालित होता है या सक्षम बटन दबाया जाता है। यहाँ Arduino के दोनों पिनों को उपयोग करने के लिए घोषित किया गया है इनपुट तथा आउटपुट । इस फ़ंक्शन में बॉड्रेट को सेट किया गया है। बॉड दर प्रति सेकंड बिट्स में गति है जिसके द्वारा माइक्रोकंट्रोलर अल्ट्रासोनिक सेंसर के साथ संचार करता है।

शून्य सेटअप () {pinMode (trigPin, OUTPUT); // एक आउटपुट पिनकोड (इकोपिन, INPUT) के रूप में ट्रिगपिन सेट करता है; // इकोपिन को इनपुट सीरियल के रूप में सेट करता है ।begin (9600); // सीरियल संचार शुरू करता है}

3। शून्य लूप () एक फ़ंक्शन है जो बार-बार लूप में चलता है। यहां हमने माइक्रोकंट्रोलर को कोडित किया है ताकि यह अल्ट्रासोनिक सेंसर के ट्रिगर पिन को एक उच्च सिग्नल भेजता है, 20 माइक्रोसेकंड के लिए बैठता है और इसे एक एलओवी सिग्नल भेजता है।

शून्य लूप () {// 10 माइक्रो सेकंड डिजिटलविराइट (ट्राइपिन, हाई) के लिए हाई स्टेट पर ट्रिगपिन सेट करता है; // पहले सेंसर में देरी के ट्रिगर पर एक उच्च संकेत भेजेंमाइक्रोसेकंड (10); // 10 माइक्रो सेकंड digitalWrite (trigPin, LOW) की प्रतीक्षा करें; // पहले सेंसर देरी (2) के ट्रिगर के लिए एक कम संकेत भेजें; // 0.2 सेकंड के लिए प्रतीक्षा करें}

कोड प्राप्तकर्ता के लिए

1. शुरू में, Arduino बोर्ड के पिंस को इनिशियलाइज़ किया जाता है जो कि अल्ट्रासोनिक सेंसर से जुड़ा होगा। फिर चर घोषित किए जाते हैं जो कोड के रन समय के दौरान समय और दूरी की गणना के लिए मूल्यों को संग्रहीत करने के लिए उपयोग किया जाएगा।

// पिन को परिभाषित करता है संख्या int int ट्रिपिन = 9; // Arduino const int echoPin = 10 के अल्ट्रासोनिक सेंसर के ट्रिगर पिन को कनेक्ट करें; // Arduino के pin10 को अल्ट्रासोनिक सेंसर के इको पिन कनेक्ट करें // चर लंबी अवधि को परिभाषित करता है; // वैरिएबल वेव टी ट्रैवल इंट इंट डिस्टेंस द्वारा लिए गए समय को स्टोर करने के लिए चर; // वैरिएबल को स्टोर की गई दूरी की गणना

2। व्यर्थ व्यवस्था() एक ऐसा कार्य है जो प्रारंभ में केवल एक बार चलता है जब बोर्ड संचालित होता है या सक्षम बटन दबाया जाता है। यहाँ Arduino के दोनों पिन को INPUT और OUTPUT के रूप में उपयोग करने के लिए घोषित किया गया है। इस फ़ंक्शन में बॉड्रेट को सेट किया गया है। बॉड दर प्रति सेकंड बिट्स में गति है जिसके द्वारा माइक्रोकंट्रोलर अल्ट्रासोनिक सेंसर के साथ संचार करता है।

शून्य सेटअप () {pinMode (trigPin, OUTPUT); // एक आउटपुट पिनकोड (इकोपिन, INPUT) के रूप में ट्रिगपिन सेट करता है; // इकोपिन को इनपुट सीरियल के रूप में सेट करता है ।begin (9600); // सीरियल संचार शुरू करता है}

3। शून्य ट्रिगर_स () एक ऐसा फ़ंक्शन है जिसे दूसरे अल्ट्रासोनिक सेंसर के ट्रिगर पिन के नकली ट्रिगर के लिए बुलाया जाएगा। हम दोनों सेंसर के ट्रिगर पिन के ट्रिगर समय को सिंक करेंगे।

void Trigger_US () {// नकली यूएस सेंसर डिजिटलविराइट (ट्राइगिन, हाई) ट्रिगर; // दूसरा सेंसर देरी के ट्रिगर पिन के लिए एक उच्च संकेत भेजेंमाइक्रोसेकंड (10); // 10 माइक्रो सेकंड्स के लिए प्रतीक्षा करें DigitalWrite (trigPin, LOW); // ट्रिगर पिन दूसरे प्रेषक को कम संकेत भेजें}

चार। शून्य Calc () एक ऐसा फंक्शन है, जिसका इस्तेमाल अल्ट्रासोनिक सिग्नल द्वारा पहले सेंसर से दूसरे सेंसर तक की यात्रा के समय की गणना के लिए किया जाता है।

void Calc () // फ़ंक्शन को अल्ट्रासोनिक तरंग द्वारा यात्रा करने के लिए {अवधि = 0; // अवधि शुरू में शून्य ट्रिगर (शून्य) पर सेट (); // (डिजिटल (echoPin) == उच्च) जबकि ट्रिगर_स फ़ंक्शन को कॉल करें; // जबकि उच्च देरी में ईओ पिन की स्थिति (2); // 0.2 सेकंड की देरी ट्रिगर Trig__ (); // कॉल ट्रिगर_स फ़ंक्शन अवधि = पल्स इन (इकोपिन, हाई); // लिया गया समय शांत करें}

5. यहाँ में शून्य लूप () फ़ंक्शन, हम पहले सेंसर से दूसरे सेंसर की यात्रा के लिए अल्ट्रासोनिक सिग्नल द्वारा लिए गए समय का उपयोग करके दूरी की गणना कर रहे हैं।

शून्य लूप () {Pdistance = दूरी; कैल्क (); // कॉल कैल्क () फ़ंक्शन दूरी = अवधि * 0.034; // अल्ट्रासोनिक तरंग द्वारा तय की गई दूरी को शांत करना अगर (पीडिंसेंस == डिस्टेंस || पीडिंसेंस == डिस्टेंस + 1 || पडीस्टेंस == डिस्टेंस -1) {सीरियल ((नापी गई दूरी: ’) || // सीरियल मॉनिटर पर प्रिंट करें Serial.println (दूरी / 2); // सीरियल मॉनीटर पर प्रिंट करें} //Serial.print('Distance: '); //Serial.println(distance/2); देरी (500); // 0.5 सेकंड के लिए प्रतीक्षा करें}