किसी भी परियोजना को जीवित करने के लिए, हमें सेंसर का उपयोग करने की आवश्यकता है। सेंसर सभी एम्बेडेड एप्लिकेशन के लिए आंख और कान के रूप में कार्य करते हैं, यह डिजिटल माइक्रोकंट्रोलर को यह समझने में मदद करता है कि वास्तव में इस वास्तविक एनालॉग दुनिया में क्या हो रहा है। इस ट्यूटोरियल में हम सीखेंगे कि PIC माइक्रोकंट्रोलर के साथ अल्ट्रासोनिक सेंसर HC-SR04 को कैसे इंटरफ़ेस करें ।
कोर्ट-SR04 एक अल्ट्रासोनिक सेंसर है जो 450cm (सैद्धांतिक रूप से) के लिए 2cm के बीच की दूरी को मापने के लिए कहीं भी इस्तेमाल किया जा सकता। इस सेंसर ने कई परियोजनाओं में फिटिंग करके खुद को योग्य साबित किया है जिसमें बाधाओं का पता लगाना, दूरी को मापना, पर्यावरण की मैपिंग आदि शामिल है। इस लेख के अंत में आप जानेंगे कि यह सेंसर कैसे काम करता है और दूरी और प्रदर्शन को मापने के लिए PIC16F877A माइक्रोकंट्रोलर से इसे कैसे इंटरफ़ेस करें। यह एलसीडी स्क्रीन पर । दिलचस्प सही लगता है !! तो चलो शुरू करते है…
सामग्री की आवश्यकता:
- PIC16F877A प्रोग्रामिंग सेट-अप के साथ MCU
- एलसीडी 16 * 2 डिस्प्ले
- अल्ट्रासोनिक सेंसर (HC-SR04)
- तारों को जोड़ना
एक अल्ट्रासोनिक सेंसर कैसे काम करता है?
इससे पहले कि हम आगे बढ़ें, हमें पता होना चाहिए कि एक अल्ट्रासोनिक सेंसर कैसे काम करता है ताकि हम इस ट्यूटोरियल को बेहतर तरीके से समझ सकें। इस परियोजना में प्रयुक्त अल्ट्रासोनिक सेंसर नीचे दिखाया गया है।
जैसा कि आप देख सकते हैं कि इसमें दो गोलाकार आंखें हैं जैसे कि अनुमान और इससे निकलने वाले चार पिन। अनुमानों की तरह दो आंखें अल्ट्रासोनिक तरंग हैं (इसके बाद अमेरिकी लहर के रूप में संदर्भित) ट्रांसमीटर और रिसीवर। ट्रांसमीटर 40Hz की आवृत्ति पर अमेरिकी लहर का उत्सर्जन करता है, यह तरंग हवा में से होकर गुजरती है और किसी वस्तु के होश में आने पर वापस परावर्तित हो जाती है। रिसीवर द्वारा लौटने वाली तरंगें देखी जाती हैं। अब हम जानते हैं कि इस तरंग के परावर्तित होने और वापस आने में लगने वाला समय और यूएस तरंग की गति भी सार्वभौमिक है (3400 सेमी / सेकेंड)। इस जानकारी और नीचे दिए गए हाई स्कूल फ़ार्मुलों का उपयोग करके हम तय की गई दूरी की गणना कर सकते हैं।
दूरी = गति × समय
अब जब हम जानते हैं कि एक अमेरिकी सेंसर कैसे काम करता है, तो आइए हम चार पिनों का उपयोग करके किसी भी MCU / CPU के साथ कैसे हस्तक्षेप कर सकते हैं। ये चार पिन क्रमशः Vcc, Trigger, Echo और Ground हैं। मॉड्यूल + 5V पर काम करता है और इसलिए मॉड्यूल को पावर करने के लिए Vcc और ग्राउंड पिन का उपयोग किया जाता है। अन्य दो पिन I / O पिन हैं, जिनके उपयोग से हम अपने MCU में संचार करते हैं। ट्रिगर पिन एक आउटपुट पिन के रूप में घोषित किया जाना चाहिए और एक 10us के लिए उच्च बनाया है, यह 8 चक्र ध्वनि फट के रूप में हवा में अमेरिका लहर भेज देगा। एक बार तरंग का अवलोकन करने के बाद, इको पिन समय के सटीक अंतराल के लिए उच्च हो जाएगा, जिसे सेंसर मॉड्यूल में वापस लौटने के लिए अमेरिकी लहर द्वारा लिया गया था। इसलिए इस इको पिन को इनपुट के रूप में घोषित किया जाएगाऔर एक टाइमर का उपयोग यह मापने के लिए किया जाएगा कि पिन कितना लंबा था। इसे नीचे दिए गए टाइमिंग आरेख द्वारा समझा जा सकता है।
आशा है कि आप इस सेंसर को PIC के साथ इंटरफेस करने के लिए एक अस्थायी तरीके से पहुंचे हैं। हम इस ट्यूटोरियल में टाइमर मॉड्यूल और एलसीडी मॉड्यूल का उपयोग कर रहे हैं और मुझे लगता है कि आप दोनों से परिचित हैं, अगर नीचे दिए गए संबंधित ट्यूटोरियल में वापस नहीं आते हैं तो मैं इससे संबंधित अधिकांश जानकारी को छोड़ दूंगा।
- पीआईसी माइक्रोकंट्रोलर के साथ एलसीडी इंटरफैसिंग
- पीआईसी माइक्रोकंट्रोलर में टाइमर को समझना
सर्किट आरेख:
PIC16F877A के साथ अल्ट्रासोनिक सेंसर को इंटरफेस करने के लिए पूरा सर्किट आरेख नीचे दिखाया गया है:
जैसा कि दिखाया गया है, सर्किट में एलसीडी डिस्प्ले और खुद अल्ट्रासोनिक सेंसर से ज्यादा कुछ नहीं होता है। यूएस सेंसर + 5 वी द्वारा संचालित किया जा सकता है और इसलिए यह सीधे 7805 वोल्टेज नियामक द्वारा संचालित होता है। सेंसर में एक आउटपुट पिन (ट्रिगर पिन) होता है जो पिन 34 (RB1) से जुड़ा होता है और इनपुट पिन (इको पिन) पिन 35 (RB2) से जुड़ा होता है। पूरा पिन कनेक्शन नीचे तालिका में चित्रित किया गया है।
S.No: |
तस्वीर पिन नंबर |
पिन नाम |
से जुड़ा |
1 |
२१ |
RD2 |
एलसीडी का आर.एस. |
२ |
२२ |
RD3 |
ई का एलसीडी |
३ |
२। |
RD4 |
डी 4 की एलसीडी |
४ |
२। |
RD5 |
डी 5 की एलसीडी |
५ |
२ ९ |
RD6 |
डी 6 एलसीडी की |
६ |
३० |
RD7 |
डी 7 की एलसीडी |
। |
34 |
RB1 |
अमेरिका का ट्रिगर |
। |
३५ |
RB2 |
यूको की गूंज |
अपने PIC माइक्रोकंट्रोलर प्रोग्रामिंग:
इस ट्यूटोरियल का पूरा कार्यक्रम इस पेज के अंत में दिया गया है, आगे मैंने आपको समझने के लिए कोड को छोटे अर्थों में दिया है। जैसा कि पहले कहा गया था कि इस कार्यक्रम में एलसीडी इंटरफेसिंग और टाइमर की अवधारणा शामिल है जिसे इस ट्यूटोरियल में विवरण में नहीं समझाया जाएगा क्योंकि हमने पहले ही उन्हें पिछले ट्यूटोरियल में कवर किया है।
अंदर, मुख्य कार्य हम सामान्य रूप से IO पिन और अन्य रजिस्टरों को शुरू करने के साथ शुरू करते हैं । हम एलसीडी और यूएस सेंसर के लिए IO पिन को परिभाषित करते हैं और 1: 4 प्री-स्केलर पर काम करने के लिए और आंतरिक घड़ी (Fosc / 4) का उपयोग करके टाइमर 1 रजिस्टर की शुरुआत करते हैं।
TRISD = 0x00; // LCD TRISB0 = 1 को इंटरफेस करने के लिए PORTD को आउटपुट घोषित किया गया; // इंटरप्ट पिन TRISB1 = 0 के रूप में उपयोग करने के लिए इनपुट के रूप में RB0 पिन को परिभाषित करें; // US सेंसर का ट्रिगर पिन आउटपुट पिन TRISB2 = 1 के रूप में भेजा जाता है; // यूएस सेंसर का इको पिन इनपुट पिन TRISB3 = 0 के रूप में सेट किया गया है; // RB3 एलईडी T1CON = 0x20 के लिए आउटपुट पिन है; // 4 प्री-स्केलर और आंतरिक घड़ी
टाइमर 1 PIC16F877A में उपयोग किया जाने वाला एक 16-बिट टाइमर है, T1CON रजिस्टर टाइमर मॉड्यूल के मापदंडों को नियंत्रित करता है और परिणाम TMR1H और TMR1L में संग्रहीत किया जाएगा क्योंकि यह 16-बिट परिणाम पहले 8 TMR1H में संग्रहीत किया जाएगा और अगले 8 TMR1L में। यह टाइमर क्रमशः TMR1ON = 0 और TMR1ON = 1 का उपयोग करके चालू या बंद किया जा सकता है।
अब, टाइमर उपयोग करने के लिए तैयार है, लेकिन हमें यूएस तरंगों को सेंसर से बाहर भेजना है, ऐसा करने के लिए हमें ट्रिगर पिन को 10uS के लिए उच्च रखना है, यह निम्नलिखित कोड द्वारा किया जाता है।
ट्रिगर = 1; __delay_us (10); ट्रिगर = 0;
जैसा कि ऊपर दिए गए समय आरेख में दिखाया गया है, तरंग वापसी तक इको पिन कम रहेगा और फिर वापस लौटने के लिए तरंगों के लिए उठाए गए सटीक समय के लिए उच्च जाएगा और उच्च रहेगा। इस समय को टाइमर 1 मॉड्यूल द्वारा मापा जाना चाहिए, जो कि नीचे की रेखा से किया जा सकता है
जबकि (इको == 0); TMR1ON = 1; जबकि (इको == 1); TMR1ON = 0;
एक बार समय मापा जाने के बाद परिणामी मूल्य को रजिस्टर TMR1H और TMR1L में सहेजा जाएगा, इन रजिस्टरों को 16-बिट मान प्राप्त करने के लिए इकट्ठा करने के लिए क्लब करना होगा। यह नीचे की रेखा का उपयोग करके किया जाता है
time_taken = (TMR1L - (TMR1H << 8));
यह time_taken फॉर्म बाइट्स में होगा, वास्तविक समय मूल्य प्राप्त करने के लिए हमें नीचे दिए गए सूत्र का उपयोग करना होगा।
समय = (16-बिट रजिस्टर मूल्य) * (1 / आंतरिक घड़ी) * (पूर्व-पैमाने पर) आंतरिक घड़ी = फोक / 4 हमारे मामले में, फॉस्क = 20000000Mhz और पूर्व-स्केल = 4 इसलिए आंतरिक घड़ी का मूल्य होगा 5000000Mhz और समय का मान समय = (16-बिट रजिस्टर मूल्य) * (1/5000000) * (4) = (16-बिट रजिस्टर मूल्य) * (4/5000000) = (16-बिट रजिस्टर मूल्य) * होगा 0.0000008 सेकंड (या) समय = (16-बिट रजिस्टर मूल्य) * 0.8 माइक्रो सेकंड
हमारे कार्यक्रम में 16-बिट रजिस्टर का मान चर time_taken में संग्रहीत किया जाता है और इसलिए नीचे की रेखा का उपयोग माइक्रो सेकंड में time_taken की गणना करने के लिए किया जाता है
time_taken = time_taken * 0.8;
आगे हमें यह पता लगाना है कि दूरी की गणना कैसे करें । जैसा कि हम दूरी = गति * समय जानते हैं। लेकिन यहां परिणाम को 2 से विभाजित किया जाना चाहिए क्योंकि लहर दोनों संचारण दूरी को कवर कर रही है और दूरी प्राप्त कर रही है। हमें तरंग (ध्वनि) की गति 34000 सेमी / एस है।
दूरी = (गति * समय) / 2 = (34000 * (16-बिट रजिस्टर मूल्य) * 0.0000008) / 2 दूरी = (0.0272 * 16-बिट रजिस्टर मूल्य) / 2
तो दूरी की गणना सेंटीमीटर में नीचे की तरह की जा सकती है:
दूरी = (0.0272 * time_taken) / 2;
दूरी और समय के मूल्य की गणना करने के बाद हमें बस उन्हें एलसीडी स्क्रीन पर प्रदर्शित करना होगा।
PIC और अल्ट्रासोनिक सेंसर का उपयोग कर दूरी को मापने:
कनेक्शन बनाने और कोड अपलोड करने के बाद, आपके प्रयोगात्मक सेट-अप को नीचे दी गई तस्वीर में दिखाया गया है।
इस चित्र में दिख रहा PIC परफेक्ट बोर्ड, हमारी PIC ट्यूटोरियल श्रृंखला के लिए बनाया गया था, जिसमें हमने PIC माइक्रोकंट्रोलर का उपयोग करने का तरीका सीखा। आप MPLABX और XC8 का उपयोग करके उन PIC माइक्रोकंट्रोलर ट्यूटोरियल पर वापस जाना चाह सकते हैं यदि आप नहीं जानते कि पिकेट 3 का उपयोग करके किसी प्रोग्राम को कैसे जलाया जाए, क्योंकि मैं उन सभी बुनियादी जानकारी को छोड़ दूंगा।
अब एक ऑब्जेक्ट को सेंसर से पहले रखें और यह प्रदर्शित करना चाहिए कि ऑब्जेक्ट सेंसर से कितनी दूर है। आप लहर को प्रसारित करने और वापस लौटने के लिए माइक्रो सेकंड में प्रदर्शित होने में लगने वाले समय को भी नोटिस कर सकते हैं।
आप अपने पसंदीदा स्थान पर ऑब्जेक्ट को स्थानांतरित कर सकते हैं और एलसीडी पर प्रदर्शित मूल्य की जांच कर सकते हैं। मैं 0.5 सेमी की सटीकता के साथ 2 सेमी से 350 सेमी की दूरी को मापने में सक्षम था। यह काफी संतोषजनक परिणाम है! आशा है कि आप ट्यूटोरियल का आनंद लेंगे और सीखेंगे कि अपने दम पर कुछ कैसे बनाएं। यदि आपको कोई संदेह है, तो उन्हें नीचे टिप्पणी अनुभाग में छोड़ दें या मंचों का उपयोग करें।
इसके अलावा अन्य माइक्रोकंट्रोलर्स के साथ अल्ट्रासोनिक सेंसर की इंटरफेसिंग की जाँच करें:
- Arduino और अल्ट्रासोनिक सेंसर आधारित दूरी माप
- माप रास्पबेरी पाई और HCSR04 अल्ट्रासोनिक सेंसर का उपयोग कर दूरी
- HC-SR04 और AVR माइक्रोकंट्रोलर का उपयोग करके दूरी माप