विषयसूची:
वीडियो: PIC16F886 माइक्रोकंट्रोलर के साथ कैपेसिटिव टच: 3 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:22
इस ट्यूटोरियल में हम जानेंगे कि आप कैपेसिटेंस में अंतर का पता लगाने के लिए PIC16F886 माइक्रोकंट्रोलर का उपयोग कैसे कर सकते हैं, इसे बाद में यह बताने के लिए इस्तेमाल किया जा सकता है कि टच पैड दबाया जा रहा है या नहीं। इस प्रोजेक्ट को बनाने से पहले पिक माइक्रोकंट्रोलर्स से परिचित होना अच्छा है।
चरण 1: अपने सर्किट को तार दें
सबसे पहले, ऊपर दिए गए योजनाबद्ध के अनुसार सर्किट को वायरिंग करके शुरू करते हैं। टच पैड बनाने के लिए आप एल्युमिनियम फॉयल को एक चौकोर आकार में मोड़ सकते हैं और तार पर टेप लगा सकते हैं। आप 100k रोकनेवाला के लिए विभिन्न मूल्यों के साथ प्रयोग कर सकते हैं, मैंने पाया कि 100k ने मेरे लिए अच्छा काम किया है।
RC4 पिन का उपयोग मापी जाने वाली कैपेसिटेंस को चार्ज/डिस्चार्ज करना शुरू करने के लिए किया जाता है। C12IN0 एक आंतरिक तुलनित्र के - पक्ष से जुड़ा है और C1IN पिन उसी तुलनित्र के + पक्ष से जुड़ा है। जब C12IN0 वोल्टेज C1IN वोल्टेज से ऊपर पहुंच जाता है, तो माइक्रोकंट्रोलर कैपेसिटेंस को पूरी तरह से चार्ज के रूप में देखता है। प्रतिरोधक वोल्टेज विभक्त सुनिश्चित करता है कि C1IN 5 वोल्ट के करीब है।
चूंकि टच पैड आपके और सर्किट ग्राउंड के बीच एक महत्वपूर्ण समाई होने पर निर्भर करता है, इसलिए संभावना है कि बैटरी काम न करे।
चरण 2: हैडर फ़ाइल
सभी कनेक्शन के साथ समाप्त? अच्छा, हम हेडर फाइल के साथ आगे बढ़ेंगे। हम XC8 कंपाइलर का उपयोग करेंगे और जैसा कि शीर्षक से पता चलता है कि अब आप अपने प्रोजेक्ट में एक नई हेडर फाइल बनाएंगे और निम्नलिखित कोड को कॉपी-पेस्ट करेंगे। आप बिना किसी हेडर फ़ाइल के इसे अपने मुख्य कोड के ऊपर कॉपी-पेस्ट भी कर सकते हैं।
#define CALIBRATION_SAMPLE 20#परिभाषित करें TOUCH_SAMPLE 10 #define DISCHARGE_TIME 5
इंट काउंट;
इंट कैलिब्रेशनवैल्यू, मैक्सकैलिब्रेशनवैल्यू, मिनकैलिब्रेशनवैल्यू;
int getChargeTime () {
इंट टाइमरकाउंट = 0; इंट ओवरफ्लोकाउंट = 0; // डिस्चार्ज कैपेसिटेंस को RC4 = 0 मापा जाना है; _delay_ms(DISCHARGE_TIME); // "कैपेसिटर" को पूरी तरह से (लगभग पूरी तरह से वास्तव में) डिस्चार्ज करने के लिए पर्याप्त देरी दें // टाइमर ओवरफ्लो फ्लैग T0IF = 0 को साफ़ करें; // टाइमर के अतिप्रवाह के लिए प्रतीक्षा करें, 0 से गिनती शुरू करें जबकि (! T0IF); टी0आईएफ = 0; // RC4 = 1 को मापने के लिए कैपेसिटेंस चार्ज करना शुरू करें; // कैपेसिटेंस के लिए रेफरेंस वोल्टेज तक चार्ज होने की प्रतीक्षा करें जबकि (C1OUT) {timerCount = TMR0; अगर (T0IF) {ओवरफ्लोकाउंट ++; टी0आईएफ = 0; } } गिनती = (256 * ओवरफ्लोकाउंट) + टाइमरकाउंट; // रीसेट टाइमरकाउंट टाइमरकाउंट = 0; अतिप्रवाह गणना = 0; वापसी की गिनती; }
इंट टचिंग (इंट टॉलरेंस) {
// कई नमूनों का औसत दोगुना औसत = 0; for(int i = 0; i कैलिब्रेशनवैल्यू + टॉलरेंस) औसत++; } औसत /= TOUCH_SAMPLE; // औसत 0 और 1 के बीच की संख्या होगी यदि (औसत> 0.2) रिटर्न 1; वापसी 0; }
शून्य जांचना () {
इंट औसत = 0; int नमूने[CALIBRATION_SAMPLE]; // के लिए औसत मूल्य प्राप्त करें (int i = 0; i < CALIBRATION_SAMPLE; i ++) {नमूने = getChargeTime (); औसत + = नमूने ; } औसत /= CALIBRATION_SAMPLE; अंशांकन वैल्यू = औसत; // अधिकतम / न्यूनतम मान प्राप्त करें maxCalibrationValue = नमूने [0]; minCalibrationValue = नमूने [0]; for(int i = 0; i maxCalibrationValue) maxCalibrationValue = नमूने ; अगर (नमूने < minCalibrationValue) minCalibrationValue = नमूने ; } }
शून्य सेटअप कैपेसिटिव टच () {
// आउटपुट के रूप में चार्ज/डिस्चार्ज पिन सेट करना, इस मामले में यह RC4 TRISCbits. TRISC4 = 0 है; // टाइमर सेट करना0 T0CS = 0; पीएसए = 1; // तुलनित्र की स्थापना C1CH0 = 0; C1CH1 = 0; सी1आर = 0; C1ON = 1; C1POL = 0; // क्लियरिंग काउंट वैल्यू काउंट = 0; // क्लियरिंग कैलिब्रेशन वैल्यू कैलिब्रेशन वैल्यू = 0; मैक्स कैलिब्रेशनवैल्यू = 0; न्यूनतम अंशांकन वैल्यू = 0; // स्टार्ट कैलिब्रेट पर कैलिब्रेशन चलाएं (); }
चरण 3: मुख्य कोड लिखना
मुख्य कोड से शुरू करते हुए, आपको पिछले चरण में बनाई गई हेडर फ़ाइल को शामिल करना होगा। निम्न कोड एक उदाहरण है कि आप स्विच के रूप में isTouching फ़ंक्शन का उपयोग कैसे कर सकते हैं। मेरे मामले में मैंने हेडर को कैपेसिटिव टच.एच नाम दिया है।
#शामिल
#शामिल "कैपेसिटिवटच.एच"
// यह चर बताता है कि बटन पहले से दबाया गया है या नहीं
इंट लास्टस्टेट = 0;
शून्य मुख्य () {
// RC5 को आउटपुट TRISCbits. TRISC5 = 0 के रूप में सेट करना; // आपको इस फ़ंक्शन को प्रोग्राम सेटअप कैपेसिटिवटच () की शुरुआत में कॉल करने की आवश्यकता है; _देरी_एमएस (1000); // अपने सटीक सेटअप कैलिब्रेट () के बाद कैलिब्रेट करें; जबकि (1) {// जांच कर रहा है कि बटन दबाया जा रहा है अगर (isTouching(15) && lastState == 0) {if (RC5) RC5 = 0; अन्य RC5 = 1; लास्टस्टेट = 1; } // जाँच कर रहा है कि क्या बटन जारी किया जा रहा है अगर (lastState == 1 &&! isTouching(15)) lastState = 0; _देरी_एमएस(20); } }
जांचना:
जब इस फ़ंक्शन को वेरिएबल कैलिब्रेशन वैल्यू कहा जाता है, तो अधिकतम कैलिब्रेशन वैल्यू और मिन कैलिब्रेशन वैल्यू अपडेट हो जाएंगे। कैलिब्रेशनवैल्यू का उपयोग isTouching फ़ंक्शन द्वारा किया जाता है। ध्यान रखें कि कैलिब्रेशन के दौरान टच पैड को अकेला छोड़ देना चाहिए।
सेटअप कैपेसिटिव टच:
आपके कार्यक्रम की शुरुआत में कॉल करने की आवश्यकता है। यह अन्य कार्यों द्वारा उपयोग किए जाने वाले आवश्यक बिट्स को सेट करता है। यह एक कैलिब्रेशन भी चलाता है। हालाँकि मुझे एक सेकंड प्रतीक्षा करके और फिर से अलग से कैलिब्रेशन चलाकर बेहतर परिणाम मिले।
छू रहा है:
यदि यह C12IN0 पर कैपेसिटेंस में वृद्धि का पता लगाता है तो यह फ़ंक्शन 1 लौटाता है और यदि कैपेसिटेंस कैलिब्रेशन के दौरान था तो कैपेसिटेंस के करीब होने पर 0 देता है। सीधे शब्दों में कहें, अगर कोई पैड को छूता है तो isTouching फ़ंक्शन 1 वापस आ जाएगा। फ़ंक्शन भी एक इनपुट के रूप में एक पैरामीटर चाहता है, यह ट्रिगर करने के लिए सहिष्णुता है। सहिष्णुता मूल्य जितना अधिक होता है, उतना ही कम संवेदनशील होता है। मेरे सेटअप में मैंने पाया कि 15 ने अच्छी तरह से काम किया है, लेकिन क्योंकि यह थरथरानवाला आवृत्ति पर निर्भर करता है और जब आप इसे दबाते हैं तो कितना समाई जोड़ा जाता है, आपको इस मूल्य के साथ प्रयोग करना चाहिए जब तक कि आपको कुछ ऐसा न मिल जाए जो आपके लिए काम करता हो।
चार्जटाइम प्राप्त करें:
जब आप जानना चाहते हैं कि सीवीआरईएफ वोल्टेज को कैपेसिटेंस चार्ज करने में कितना समय लगेगा, तो यह फ़ंक्शन इसका परीक्षण करेगा और एक पूर्णांक लौटाएगा। सेकंड में समय प्राप्त करने के लिए आप इस सूत्र का उपयोग करते हैं: (4 * getChargeTime) / थरथरानवाला आवृत्ति = चार्जटाइमइनसेकंड इस सूत्र का उपयोग isTouching फ़ंक्शन से सेकंड तक सहिष्णुता इनपुट प्राप्त करने के लिए भी किया जा सकता है।
सिफारिश की:
टेस्ट बेयर अरुडिनो, कैपेसिटिव इनपुट और एलईडी का उपयोग करके गेम सॉफ्टवेयर के साथ: 4 कदम
टेस्ट बेयर अरुडिनो, कैपेसिटिव इनपुट और एलईडी का उपयोग करके गेम सॉफ्टवेयर के साथ: "पुश-इट" एक नंगे Arduino बोर्ड का उपयोग करके इंटरएक्टिव गेम, किसी बाहरी हिस्से या वायरिंग की आवश्यकता नहीं है (एक कैपेसिटिव 'टच' इनपुट का उपयोग करता है)। ऊपर दिखाया गया है, यह दो अलग-अलग बोर्डों पर चल रहा है। पुश-इसके दो उद्देश्य हैं। जल्दी से प्रदर्शित करने के लिए / वी
कैपेसिटिव टच स्विच के साथ Arduino हैंडहेल्ड फैन।: 6 कदम
कैपेसिटिव टच स्विच के साथ Arduino हैंडहेल्ड फैन: इस ट्यूटोरियल में हम सीखेंगे कि कैपेसिटिव टच सेंसर, रिले मॉड्यूल और विसुइनो का उपयोग करके हैंडहेल्ड बैटरी फैन को कैसे चालू और बंद किया जाए। एक प्रदर्शन वीडियो देखें।
कैपेसिटिव सेंसर के साथ डीएफप्लेयर आधारित ऑडियो सैम्पलर: 9 कदम
कैपेसिटिव सेंसर के साथ डीएफप्लेयर आधारित ऑडियो नमूना: परिचय विभिन्न सिंथेसाइज़र के निर्माण के साथ प्रयोग करने के बाद, मैंने एक ऑडियो नमूना बनाने के लिए निर्धारित किया, जो आसानी से प्रतिलिपि बनाने योग्य और सस्ता था। अच्छी ऑडियो गुणवत्ता (44.1 किलोहर्ट्ज़) और पर्याप्त भंडारण क्षमता रखने के लिए, डीएफप्लेयर मोड
AVR माइक्रोकंट्रोलर फ्यूज बिट्स कॉन्फ़िगरेशन। माइक्रोकंट्रोलर की फ्लैश मेमोरी में एलईडी ब्लिंकिंग प्रोग्राम बनाना और अपलोड करना: 5 कदम
AVR माइक्रोकंट्रोलर फ्यूज बिट्स कॉन्फ़िगरेशन। माइक्रोकंट्रोलर की फ्लैश मेमोरी में एलईडी ब्लिंकिंग प्रोग्राम बनाना और अपलोड करना: इस मामले में हम सी कोड में सरल प्रोग्राम बनाएंगे और इसे माइक्रोकंट्रोलर की मेमोरी में जला देंगे। हम एकीकृत विकास मंच के रूप में एटमेल स्टूडियो का उपयोग करते हुए, अपना स्वयं का कार्यक्रम लिखेंगे और हेक्स फ़ाइल संकलित करेंगे। हम फ्यूज बाय को कॉन्फ़िगर करेंगे
एविव के साथ कैपेसिटिव टच (Arduino आधारित नियंत्रक): 6 कदम (चित्रों के साथ)
कैपेसिटिव टच विद इविव (Arduino बेस्ड कंट्रोलर): क्या आप जानते हैं कि आपके स्मार्टफोन का टचस्क्रीन कैसे काम करता है? स्मार्टफोन में ग्लास स्क्रीन के नीचे कई तरह के टच सेंसर होते हैं। आजकल, इसकी कैपेसिटेंस टच सेंसिंग तकनीक पर आधारित है और यहां तक कि एक कोमल स्पर्श भी आसानी से पता लगाया जाता है। कैपेसिटिव टच को महसूस किया जाता है