इस ट्यूटोरियल में हम दूरी को मापने के लिए एक सर्किट पर चर्चा और डिज़ाइन करने जा रहे हैं। इस सर्किट को AVR माइक्रोकंट्रोलर के साथ अल्ट्रासोनिक सेंसर "HC-SR04" को बदलकर विकसित किया गया है । यह सेंसर "ईसीएचओ" नामक एक तकनीक का उपयोग करता है जो आपको तब मिलता है जब ध्वनि सतह से टकराकर वापस आती है।
हम जानते हैं कि ध्वनि कंपन ठोसों के माध्यम से प्रवेश नहीं कर सकते हैं। तो क्या होता है, जब ध्वनि का एक स्रोत कंपन उत्पन्न करता है जो वे 220 मीटर प्रति सेकंड की गति से हवा के माध्यम से यात्रा करते हैं। ये कंपन जब वे हमारे कान से मिलते हैं तो हम उन्हें ध्वनि के रूप में वर्णित करते हैं। जैसा कि पहले कहा गया था कि ये कंपन ठोस नहीं हो सकते हैं, इसलिए जब वे दीवार जैसी सतह से टकराते हैं, तो वे उसी गति से वापस उसी गति से स्रोत की ओर परावर्तित होते हैं, जिसे प्रतिध्वनि कहते हैं।
अल्ट्रासोनिक सेंसर "HC-SR04" ईको के आधार पर दूरी के लिए आनुपातिक संकेत प्रदान करता है। यहां सेंसर ट्रिगर देने पर अल्ट्रासोनिक रेंज में ध्वनि कंपन उत्पन्न करता है, इसके बाद वह ध्वनि कंपन के वापस आने का इंतजार करता है। अब मापदंडों, ध्वनि की गति (220 मीटर / सेकंड) और स्रोत तक पहुंचने के लिए प्रतिध्वनि के समय के आधार पर, यह दूरी के लिए आनुपातिक पल्स प्रदान करता है।
जैसा कि चित्र में दिखाया गया है, सबसे पहले हमें दूरी मापने के लिए सेंसर शुरू करने की आवश्यकता है, जो कि 10uS से अधिक के सेंसर के ट्रिगर पिन पर एक उच्च तर्क संकेत है, इसके बाद सेंसर द्वारा एक ध्वनि कंपन भेजा जाता है, एक गूंज के बाद, सेंसर प्रदान करता है आउटपुट पिन पर एक सिग्नल जिसकी चौड़ाई स्रोत और बाधा के बीच की दूरी के लिए आनुपातिक है।
इस दूरी की गणना की जाती है, दूरी (सेमी में) = पल्स आउटपुट की चौड़ाई (यूएस में) / 58।
यहां सिग्नल की चौड़ाई को कई यूएस (माइक्रो सेकंड या 10 ^ -6) में लिया जाना चाहिए।
अवयव आवश्यक
हार्डवेयर: ATMEGA32, बिजली की आपूर्ति (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16x2LCD), 1000uF संधारित्र, 10KΩ रोकनेवाला (2 टुकड़े), HC-SR04 सेंसर।
सॉफ्टवेयर: Atmel स्टूडियो 6.1, progisp या फ़्लैश मैजिक।
सर्किट आरेख और कार्य स्पष्टीकरण
यहां हम एलसीडी डेटा पोर्ट (D0-D7) से कनेक्ट करने के लिए PORTB का उपयोग कर रहे हैं। जो कोई भी ATMEGA32A के FUSE BITS के साथ काम नहीं करना चाहता, वह PORTC का उपयोग नहीं कर सकता है, क्योंकि PORTC में एक विशेष प्रकार का संचार होता है जिसे केवल FUSEBITS बदलकर अक्षम किया जा सकता है।
सर्किट में, आप निरीक्षण करते हैं मैंने केवल दो नियंत्रण पिन लिए हैं, इससे बेहतर समझ का लचीलापन मिलता है। कंट्रास्ट बिट और READ / WRITE का उपयोग अक्सर नहीं किया जाता है, ताकि उन्हें जमीन पर छोटा किया जा सके। यह एलसीडी को कंट्रास्ट और रीड मोड में डालता है। हमें केवल वर्ण और डेटा भेजने के लिए सक्षम और आरएस पिन को नियंत्रित करने की आवश्यकता है।
एलसीडी के लिए जो कनेक्शन दिए गए हैं, वे नीचे दिए गए हैं:
PIN1 या VSS जमीन पर
PIN2 या VDD या VCC से + 5v पावर
पिन 3 या वीईई को ग्राउंड (शुरुआती के लिए अधिकतम विपरीत देता है)
पिन 4 या आरएस (रजिस्टर चयन) को यूसी के पीडी 6 में
पिन 5 या आरडब्ल्यू (पढ़ें / लिखें) को जमीन पर रखें (रीड मोड में एलसीडी लगाता है उपयोगकर्ता के लिए संचार को आसान बनाता है)
पिन 6 या uC के PD5 के लिए E (सक्षम करें)
पिन 7 या U0 से PBC का P0
PIN8 या U1 के PB1 को D1
PIN9 या U2 के PB2 को D2
पिन 10 या यूसी के पीबी 3 से 3 डी
PIN11 या U4 के PB4 को D4
PIN12 या U5 के PB5 को D5
PIN13 या U6 के PB6 को D6
पिन 14 या U7 के PB7 को D7
सर्किट में आप देख सकते हैं कि हमने 8bit संचार (D0-D7) का उपयोग किया है लेकिन यह अनिवार्य नहीं है और हम 4bit संचार (D4-D7) का उपयोग कर सकते हैं लेकिन 4 बिट संचार कार्यक्रम थोड़ा जटिल हो जाता है। तो जैसा कि ऊपर की तालिका में दिखाया गया है, हम एलसीडी के 10 पिनों को नियंत्रक से जोड़ रहे हैं जिसमें 8 पिन डेटा पिन और नियंत्रण के लिए 2 पिन हैं।
अल्ट्रासोनिक सेंसर एक चार पिन डिवाइस है, PIN1- VCC या + 5V; PIN2-TRIGGER; PIN3- ईसीएचओ; PIN4- सकल। ट्रिगर पिन वह जगह है जहां हम सेंसर को दूरी को मापने के लिए बताने के लिए ट्रिगर देते हैं। इको आउटपुट पिन है जहां हमें नाड़ी की चौड़ाई के रूप में दूरी मिलती है। यहां इको पिन बाहरी बाधा स्रोत के रूप में नियंत्रक से जुड़ा है। तो सिग्नल आउटपुट की चौड़ाई प्राप्त करने के लिए, सेंसर का इको पिन INT0 (इंटरप्ट 0) या PD2 से जुड़ा है।
1. कम से कम 12uS के लिए ट्रिगर पिन को खींचकर सेंसर को ट्रिगर करना।
2. एक बार जब उच्च प्रतिध्वनि होती है तो हमें एक बाहरी अवरोधन मिलता है और हम ISR (इंटरप्ट सर्विस रूटीन) में एक काउंटर (एक काउंटर को सक्षम करना) शुरू करने जा रहे हैं, जो एक बाधित ट्रिगर के ठीक बाद निष्पादित होता है।
3. एक बार जब प्रतिध्वनि कम होती है तो एक अवरोध उत्पन्न होता है, इस बार हम काउंटर को बंद करने जा रहे हैं (काउंटर को अक्षम करना)।
4. इसलिए इको पिन पर पल्स हाई से लो के लिए, हमने एक काउंटर शुरू किया है और इसे बंद कर दिया है। यह गणना दूरी प्राप्त करने के लिए मेमोरी में अपडेट की जाती है, क्योंकि अब हमारे पास गणना में प्रतिध्वनि की चौड़ाई है।
5. हम सेमी में दूरी प्राप्त करने के लिए मेमोरी में आगे की गणना करने जा रहे हैं
6. दूरी 16x2 एलसीडी डिस्प्ले पर प्रदर्शित की जाती है।
उपरोक्त सुविधाएँ सेट करने के लिए हम निम्नलिखित रजिस्टर सेट करने जा रहे हैं:
उपरोक्त तीन रजिस्टर काम करने के लिए सेटअप के अनुसार सेट किए जाने हैं और हम उन पर संक्षेप में चर्चा करने जा रहे हैं, BLUE (INT0): बाहरी अवरोधन को सक्षम करने के लिए इस बिट को उच्च सेट किया जाना चाहिए, एक बार इस पिन को सेट करने के बाद हमें PIND2 पिन पर तर्क परिवर्तन की जानकारी मिलती है।
BROWN (ISC00, ISC01): इन दोनों बिट्स को PD2 में उपयुक्त तर्क परिवर्तन के लिए समायोजित किया गया है, जिसे बीच में माना जाता है।
जैसा कि पहले कहा गया था कि हमें एक गिनती शुरू करने और इसे रोकने के लिए एक व्यवधान की आवश्यकता है। इसलिए हम ISC00 को एक के रूप में सेट करते हैं और हमें एक अवरोध मिलता है जब INT0 पर एक लॉजिक टू हाई होता है; एक और रुकावट जब वहाँ एक तर्क उच्च कम है।
RED (CS10): यह बिट सक्षम करने और काउंटर को अक्षम करने के लिए है। हालांकि यह अन्य बिट्स CS10, CS12 के साथ काम करता है। हम यहां कोई पूर्व निर्धारित नहीं कर रहे हैं, इसलिए हमें उनके बारे में चिंता करने की आवश्यकता नहीं है।
यहां याद रखने योग्य कुछ महत्वपूर्ण बातें हैं:
हम ATMEGA32A की आंतरिक घड़ी का उपयोग कर रहे हैं जो 1MHz है। यहां कोई अनुमान नहीं है, हम मैच की बाधा उत्पन्न करने वाली दिनचर्या की तुलना नहीं कर रहे हैं, इसलिए कोई जटिल रजिस्टर सेटिंग्स नहीं।
गिनती के बाद की गणना का मान 16bit TCNT1 रजिस्टर में संग्रहीत किया जाता है।
इसके अलावा इस परियोजना की जाँच करें Arduino: Arduino का उपयोग करके दूरी माप
प्रोग्रामिंग स्पष्टीकरण
डिस्टेंस मेजरमेंट सेंसर का कार्य नीचे दिए गए C प्रोग्राम में स्टेप बाई स्टेप बताया गया है।
#include // हेडर पिन पर डेटा फ्लो कंट्रोल को सक्षम करने के लिए #define F_CPU 1000000 // कंट्रोलर क्रिस्टल फ्रिक्वेंसी बता रहा है #include