मैं और मेरा दोस्त सीखने के उद्देश्यों के लिए इस तरह के एक सार्वभौमिक सीखने के रिमोट कंट्रोलर को डिजाइन करना चाहते हैं। हम मूल रूप से क्या करना चाहते हैं स्टोर और अवरक्त दालों को फिर से खेलना है।
हम 36kHz, 38kHz और 40kHz सिग्नल का पता लगाना चाहते हैं। 40kHz सिग्नल में 25 s की अवधि होगी ।
हम एक 8-बिट PIC माइक्रोकंट्रोलर का उपयोग करना चाहते हैं, अभी के लिए हमने PIC16F616 का चयन किया है, जो 20MHz उच्च गति वाले क्रिस्टल ऑसिलेटर पर चलेगा। हमारे पास दो विकल्प उपलब्ध हैं:
Interrupt On Change
मॉड्यूल का उपयोग करें ।- CCP मॉड्यूल के कैप्चर मोड का उपयोग करें।
पहला विकल्प इस प्रकार होगा:
मान लें एक रजिस्टर के रूप में सेट किया गया है: unsigned char _10_us = 0;
। यह रजिस्टर समय आयोजित करेगा। अवधि रजिस्टर के साथ TMR2 मॉड्यूल प्रत्येक 10 सेकंड में एक बाधा बनाने के लिए सेट किया गया है । जब कोई अवरोध उत्पन्न होता है, तो यह रजिस्टर और निकास में वृद्धि करेगा । यह अधिकतम 2.55msec का समय देगा। यदि अधिक समय माप की आवश्यकता होती है, तो अतिरिक्त रजिस्टरों जैसे कि परिभाषित किया जा सकता है और आवश्यकतानुसार बढ़ाया जा सकता है।_10_us
_1_ms
अब, हर बार किसी भी प्रकार के परिवर्तन (उच्च-से-निम्न या निम्न-से-उच्च) से एक बाधा उत्पन्न होती है, कार्यक्रम वर्तमान समय को नोट करेगा, यह _10_us
रजिस्टर का मूल्य है । थोड़ी देर बाद, जब अगली बाधा उत्पन्न होती है, तो प्रोग्राम _10_us
रजिस्टर से सहेजे गए मूल्य को घटा देगा , और इस प्रकार अब वह समय होगा जो 10 सेकंड की इकाई के साथ होता है ।
यह विकल्प मुझे अपना सिर खरोंच कर देता है; TMR2 व्यवधान प्रत्येक 50 निर्देशों के बारे में होगा। इंटरप्ट हैंडलिंग में लगभग 20 निर्देश होंगे। अवधि की गणना करने और सहेजने के लिए मुझे 30 निर्देशों के साथ छोड़ दिया गया है। क्या यह तरीका काम करेगा?
दूसरा विकल्प इस प्रकार होगा:
CCP मॉड्यूल के कैप्चर मोड को सेट करें ताकि C1.1 पिन पर एक घटना (उच्च-से-कम) होने पर यह एक अवरोध उत्पन्न करे। रुकावट की दिनचर्या में, यह एक झंडा स्थापित करेगा ताकि कार्यक्रम में एक कार्य गणना (यदि आवश्यक हो) और CCPR1H के मान को बचा सके (शायद इसकी आवश्यकता नहीं होगी) और CCPR1L। फिर हम कैप्चर मोड के कॉन्फ़िगरेशन को बदल देंगे ताकि कम-से-उच्च किनारे होने पर यह बाधित हो जाए। और फिर यह अगली घटना की प्रतीक्षा करेगा। मैं इस पद्धति के प्रदर्शन का अनुमान नहीं लगा सकता क्योंकि मैंने इसका उपयोग कभी नहीं किया।
एक अन्य विकल्प?
हम TSOP17xx श्रृंखला जैसे एक इन्फ्रारेड डेमोडुलेटर आईसी का उपयोग कर सकते हैं । जिससे हमारी समस्या पूरी तरह से हल हो जाएगी। हालांकि कुछ सवाल दिमाग में आते हैं।
हमारे पढ़ने की दूरी की आवश्यकता ज्यादा नहीं है; 1 मीटर (~ 3 फीट)। यदि हम एक TSOP1738 का चयन करते हैं जो 38kHz में काम करने के लिए है, तो यह 36kHz और 40kHz सिग्नल के साथ कितनी अच्छी तरह काम करेगा?
TSOP17xx श्रृंखला की डेटशीट के पेज 4 में "फ्रीक्वेंसी डिपेंडेंस ऑफ रिस्पॉन्सिबिलिटी" ग्राफ दिखाया गया है। जहां तक हमने समझा;
- 40kHz, जो कि 38kHz का ~ 1.053 है, ~ 0.6 की सापेक्ष संवेदनशीलता देगा।
- 36kHz, जो कि 38kHz का ~ 0.95 है, ~ 0.65 की एक सापेक्ष संवेदनशीलता देगा।
इन मूल्यों का क्या मतलब है? क्या हम TSOP1738 का उपयोग कर सकते हैं और ठीक हो सकते हैं?