- सामग्री की आवश्यकता:
- सर्किट आरेख:
- HC-SR04 मॉड्यूल वास्तव में कैसे काम करता है:
- दो अल्ट्रासोनिक सेंसर (HC-SR04) के बीच की दूरी को मापने:
- ट्रांसमीटर सेंसर के लिए कार्यक्रम:
- रिसीवर सेंसर के लिए कार्यक्रम:
- काम कर रहे:
- इम्प्रूव्ड आइडिया - एक ज्ञात दूरी का उपयोग करके सेंसर को कैलिब्रेट करना:
अल्ट्रासोनिक सेंसर (HC-SR04) आमतौर पर एक विशेष बिंदु से किसी वस्तु की दूरी का पता लगाने के लिए उपयोग किया जाता है। Arduino के साथ ऐसा करना काफी आसान है और कोड भी बहुत सरल है। लेकिन इस लेख में हम इन लोकप्रिय HC-SR04 सेंसर के साथ कुछ अलग करने की कोशिश करने जा रहे हैं। हम दो अल्ट्रासोनिक सेंसर के बीच की दूरी की गणना करने की कोशिश करेंगे, हम एक सेंसर को ट्रांसमीटर के रूप में काम करेंगे और दूसरे सेंसर को रिसीवर के रूप में कार्य करने के लिए। ऐसा करने से हम कई अल्ट्रासोनिक रिसीवरों का उपयोग करके एक ट्रांसमीटर के स्थान को ट्रैक कर सकते हैं इस ट्रैकिंग को त्रिकोणासन कहा जाता है और इसका उपयोग स्वचालित डॉकिंग रोबोट सामान अनुयायियों और अन्य समान एप्लिकेशन के लिए किया जा सकता है। दो अमेरिकी सेंसर के बीच की दूरी का पता लगाना एक काफी सरल कार्य हो सकता है, लेकिन मुझे कुछ चुनौतियों का सामना करना पड़ा, जिनकी चर्चा इस परियोजना में की जाती है।
इस आलेख में चर्चा की गई तकनीक काफी सटीक नहीं है और बिना संशोधनों के किसी भी वास्तविक प्रणाली में उपयोगी नहीं हो सकती है। इस दस्तावेज़ के समय के दौरान मुझे किसी को भी मेरे जितना ही परिणाम नहीं मिला, इसलिए मैंने इस बारे में अपने विचार साझा किए हैं कि मुझे यह कैसे काम करने के लिए मिला, ताकि जो लोग इस प्रयास कर रहे हैं वे पहिया का फिर से आविष्कार न करें।
सामग्री की आवश्यकता:
- Arduino (2Nos) - कोई भी मॉडल
- HCSR04 मॉड्यूल (2Nos)
सर्किट आरेख:
भले ही हम ट्रांसमीटर के रूप में काम करने के लिए एक यूएस (अल्ट्रासोनिक) सेंसर बनाने जा रहे हैं और रिसीवर के रूप में दूसरा यह अनिवार्य है कि सेंसर के सभी चार पिनों को Arduino के साथ जोड़ा जाए। हमें ऐसा क्यों करना चाहिए? उस पर अधिक चर्चा बाद में की जाएगी, लेकिन अब सर्किट आरेख इस प्रकार होगा
जैसा कि आप देख सकते हैं कि सर्किट आरेख ट्रांसमीटर और रिसीवर दोनों समान हैं। यह भी जांचें: Arduino Ultrasonic Sensor Interfacing
HC-SR04 मॉड्यूल वास्तव में कैसे काम करता है:
आगे बढ़ने से पहले हम समझते हैं कि HC-SR04 सेंसर कैसे काम करता है । नीचे दिए गए समय के आरेख से हमें काम को समझने में मदद मिलेगी।
सेंसर में दो पिन हैं ट्रिगर और इको जो दूरी को मापने के लिए उपयोग किया जाता है जैसा कि समय आरेख में दिखाया गया है। माप आरंभ करने के लिए हमें ट्रांसमीटर से एक अल्ट्रासोनिक तरंग भेजनी चाहिए, यह ट्रिगर पिन 10uS के लिए उच्च सेट करके किया जा सकता है। जैसे ही यह किया जाता है ट्रांसमीटर पिन अमेरिकी तरंगों के 8 सोनिक फट भेजेगा। यह अमेरिकी लहर एक वस्तु को वापस उछाल देगी और रिसीवर द्वारा प्राप्त की जाएगी।
यहां टाइमिंग आरेख से पता चलता है कि एक बार रिसीवर द्वारा तरंग प्राप्त करने के बाद यह इको पिन को अधिक समय तक चला देगा जो कि यूएस सेंसर से यात्रा करने और सेंसर तक वापस पहुंचने में लगने वाले समय के बराबर है। यह समय आरेख सही नहीं लगता है ।
मैंने अपने सेंसर के टीएक्स (ट्रांसमीटर) हिस्से को कवर किया और चेक किया कि क्या इको पल्स उच्च है, और हां यह उच्च जाता है। इसका मतलब यह है कि इको पल्स को अमेरिका (अल्ट्रासोनिक) की लहर का इंतजार नहीं है। एक बार जब यह अमेरिकी लहर को प्रसारित करता है तो यह उच्च हो जाता है और जब तक लहर वापस नहीं आती है तब तक उच्च रहता है। तो सही समय आरेख कुछ इस तरह होना चाहिए जो नीचे दिखाया गया है (मेरे खराब लेखन कौशल के लिए क्षमा करें)
अपने HC-SR04 को केवल ट्रांसमीटर के रूप में काम करना:
यह केवल ट्रांसमीटर के रूप में काम करने के लिए HC-SR04 बनाने के लिए बहुत सीधे है। जैसा कि टाइमिंग आरेख में दिखाया गया है कि आपको ट्रिगर पिन को आउटपुट पिन के रूप में घोषित करना होगा और इसे 10 माइक्रोसेकंड के लिए उच्च रहना होगा। यह अल्ट्रासोनिक तरंग के फटने की शुरुआत करेगा। इसलिए जब भी हम लहर को प्रसारित करना चाहते हैं तो हमें सिर्फ ट्रांसमीटर सेंसर के ट्रिगर पिन को नियंत्रित करना होगा, जिसके लिए नीचे कोड दिया गया है।
केवल रिसीवर के रूप में काम करने के लिए अपना HC-SR04 बनाना:
जैसा कि टाइमिंग आरेख में दिखाया गया है कि हम इको पिन के उदय को नियंत्रित नहीं कर सकते हैं क्योंकि यह ट्रिगर पिन से संबंधित है। इसलिए कोई रास्ता नहीं है कि हम HC-SR04 को केवल रिसीवर के रूप में काम कर सकें। लेकिन हम एक हैक का उपयोग कर सकते हैं, बस टेप के साथ सेंसर के ट्रांसमीटर भाग को कवर करके (जैसा कि नीचे दी गई तस्वीर में दिखाया गया है) या यूएस तरंग अपने ट्रांसमीटर ट्रांसमीटर के बाहर नहीं बच सकती है और इको पिन इस अमेरिकी लहर से प्रभावित नहीं होगी।
अब इको पिन को उच्च बनाने के लिए हमें इस डमी ट्रिगर पिन को 10 माइक्रोसेकंड के लिए उच्च खींचना होगा। एक बार जब इस रिसीवर सेंसर को अमेरिकी तरंग ट्रांसमीटर ट्रांसमीटर द्वारा प्रेषित हो जाता है तो इको पिन कम हो जाएगा।
दो अल्ट्रासोनिक सेंसर (HC-SR04) के बीच की दूरी को मापने:
अब तक हम समझ चुके हैं कि कैसे एक सेंसर को ट्रांसमीटर के रूप में और दूसरे सेंसर को रिसीवर के रूप में काम करना है। अब, हमें अल्ट्रासोनिक सेंसर को ट्रांसमीटर सेंसर से संचारित करना है और इसे रिसीवर सेंसर के साथ प्राप्त करना है और ट्रांसमीटर से रिसीवर की यात्रा के लिए तरंग के लिए लगने वाले समय की जाँच करना आसान है ?? लेकिन दुख की बात है! हम यहाँ एक समस्या है और यह काम नहीं करेगा।
ट्रांसमीटर मॉड्यूल और रिसीवर मॉड्यूल दूर हैं और जब रिसीवर मॉड्यूल ट्रांसमीटर मॉड्यूल से अमेरिकी लहर प्राप्त करता है, तो यह पता नहीं चलेगा कि ट्रांसमीटर ने इस विशेष लहर को कब भेजा था। प्रारंभ समय को जाने बिना हम लिए गए समय और इस प्रकार दूरी की गणना नहीं कर सकते। इस समस्या को हल करने के लिए रिसीवर मॉड्यूल के इको पल्स को उच्च स्तर पर जाने के लिए बनाया जाना चाहिए, जब ट्रांसमीटर मॉड्यूल ने अमेरिकी लहर को संचारित किया है। दूसरे शब्दों में, एक ही समय में ट्रांसमीटर मॉड्यूल और रिसीवर मॉड्यूल को ट्रिगर करना चाहिए। यह निम्नलिखित विधि द्वारा प्राप्त किया जा सकता है।
उपरोक्त आरेख में, Tx ट्रांसमीटर सेंसर का प्रतिनिधित्व करता है और Rx रिसीवर सेंसर का प्रतिनिधित्व करता है। जैसा कि दिखाया गया है कि ट्रांसमीटर सेंसर अमेरिकी तरंगों को समय-समय पर ज्ञात देरी से प्रसारित करने के लिए बनाया जाएगा, यह सब करना है।
रिसीवर सेंसर में हमें किसी तरह ट्रिगर पिन को ठीक उसी तरह ऊंचा करना पड़ता है जब ट्रांसमीटर पिन ऊंचा हो जाता है। तो शुरू में हम बेतरतीब ढंग से रिसीवर्स ट्रिगर को ऊँचा जाने के लिए बनाते हैं जो इको पिन के कम होने तक उच्च रहेगा। यह इको पिन तभी कम चलेगी जब उसे ट्रांसमीटर से अमेरिकी लहर मिलेगी। इसलिए जैसे ही यह कम होता है हम मान सकते हैं कि ट्रांसमीटर सेंसर बस चालू हो गया। अब, इस अनुमान के साथ जैसे ही प्रतिध्वनि कम होती है हम ज्ञात विलंब की प्रतीक्षा कर सकते हैं और फिर रिसीवर ट्रिगर को ट्रिगर कर सकते हैं। यह ट्रांसमीटर और रिसीवर दोनों के ट्रिगर को आंशिक रूप से सिंक करेगा और इसलिए आप पल्स इन () का उपयोग करके तत्काल इको पल्स अवधि पढ़ सकते हैं और दूरी की गणना कर सकते हैं।
ट्रांसमीटर सेंसर के लिए कार्यक्रम:
ट्रांसमीटर मॉड्यूल के लिए पूरा कार्यक्रम पृष्ठ के नीचे पाया जा सकता है। यह एक आवधिक अंतराल पर ट्रांसमीटर सेंसर को ट्रिगर करने के अलावा कुछ नहीं करता है।
digitalWrite (ट्राइगिन, हाई); देरीमाइक्रोसेकंड (10); digitalWrite (trigPin, LOW);
एक सेंसर को ट्रिगर करने के लिए हमें 10uS के लिए उच्च रहने के लिए ट्रिगर पिन बनाना होगा। ऐसा करने का कोड ऊपर दिखाया गया है
रिसीवर सेंसर के लिए कार्यक्रम:
रिसीवर संवेदक में हमारे पास संवेदक की ट्रांसमीटर आंख को कवर किया गया है ताकि इसे पहले से चर्चा के अनुसार डमी बनाया जा सके। अब हम उपर्युक्त तकनीक का उपयोग दो सेंसर के बीच की दूरी को मापने के लिए कर सकते हैं। पूरा कार्यक्रम इस पृष्ठ के नीचे दिया गया है। कुछ महत्वपूर्ण पंक्तियों को नीचे समझाया गया है
Trigger_US (); जबकि (digitalRead (echoPin) == High); देरीमाइक्रोसेकंड (10); Trigger_US (); अवधि = पल्स इन (इकोपिन, हाई);
प्रारंभ में हम Trigger_US () फ़ंक्शन का उपयोग करके यूएस सेंसर को ट्रिगर करते हैं और तब तक प्रतीक्षा करते हैं जब तक कि इको पिन थोड़ी देर लूप का उपयोग करके उच्च नहीं रहता। एक बार जब यह कम हो जाता है तो हम पूर्व-निर्धारित अवधि की प्रतीक्षा करते हैं, यह अवधि 10 से 30 माइक्रोसेकंड के बीच होनी चाहिए जिसे परीक्षण और त्रुटि का उपयोग करके निर्धारित किया जा सकता है (या आप नीचे दिए गए तात्कालिक विचार का उपयोग कर सकते हैं)। इस देरी के बाद उसी फ़ंक्शन का उपयोग करके यूएस को फिर से ट्रिगर करें और फिर वेवइन () फ़ंक्शन का उपयोग करके तरंग की अवधि की गणना करें।
अब उसी पुराने फ़ार्मुलों का उपयोग करके हम नीचे की दूरी की गणना कर सकते हैं
दूरी = अवधि * 0.034;
काम कर रहे:
कार्यक्रम में बताए अनुसार संबंध बनाएं। रिसीवर सेंसर के टीएक्स हिस्से को कवर करें जैसा कि चित्र में दिखाया गया है। फिर ट्रांसमीटर कोड और रिसीवर कोड अपलोड करें जो क्रमशः ट्रांसमीटर और रिसीवर Arduino के नीचे दिए गए हैं। रिसीवर मॉड्यूल के सीरियल मॉनिटर को खोलें और आपको दो मॉड्यूल के बीच की दूरी को प्रदर्शित करना चाहिए जैसा कि नीचे दिए गए वीडियो में दिखाया गया है।
नोट: यह विधि केवल एक विचारधारा है और सटीक या संतोषजनक नहीं हो सकती है। हालांकि आप बेहतर परिणाम प्राप्त करने के लिए नीचे दिए गए तात्कालिक विचार को आजमा सकते हैं।
इम्प्रूव्ड आइडिया - एक ज्ञात दूरी का उपयोग करके सेंसर को कैलिब्रेट करना:
जिस विधि को अब तक विचित्र रूप से समझाया गया था, वह संतोषजनक प्रतीत होती है, फिर भी यह मेरी परियोजना के लिए पर्याप्त थी। हालाँकि मैं इस विधि की कमियां और उन्हें दूर करने का एक तरीका भी साझा करना चाहूंगा। इस विधि का एक बड़ा दोष यह है कि हम मानते हैं कि रिसीवर का इको पिन कम हो जाता है जब ट्रांसमीटर सेंसर ने अमेरिकी लहर को संचारित किया है जो कि सही नहीं है क्योंकि तरंग को ट्रांसमीटर से रिसीवर तक यात्रा करने में कुछ समय लगेगा। इसलिए ट्रांसमीटर का ट्रिगर और रिसीवर का ट्रिगर सही सिंक में नहीं होगा।
इसे दूर करने के लिए हम शुरू में एक पता दूरी का उपयोग करके सेंसर को कैलिब्रेट कर सकते हैं। यदि दूरी ज्ञात है, तो हमें ट्रांसमीटर से रिसीवर तक पहुंचने के लिए अमेरिकी लहर के लिए समय लगेगा। इस समय को डेल (डी) के रूप में नीचे दिखाए गए अनुसार रखें।
अब हमें वास्तव में पता चल जाएगा कि कितने समय बाद हमें ट्रांसमीटर के ट्रिगर के साथ सिंक प्राप्त करने के लिए रिसीवर के ट्रिगर पिन को उच्च करना चाहिए। इस अवधि की गणना ज्ञात विलंब (t) - डेल (D) द्वारा की जा सकती है। मैं समय सीमा के कारण इस विचार का परीक्षण करने में सक्षम नहीं था, इसलिए मुझे यकीन नहीं है कि यह कितना सही होगा। तो यदि आप इसे करने की कोशिश करते हैं तो मुझे टिप्पणी अनुभाग के माध्यम से परिणाम जानने दें।