विषयसूची:
- चरण 1: सामग्री
- चरण 2: शारीरिक पृष्ठभूमि और सर्किट की आवश्यकता
- चरण 3: सिग्नल प्रोसेसिंग: क्यों और कैसे?
- चरण 4: सर्किट कैसे काम करता है
- चरण 5: घटकों और मूल्यों को चुनना
- चरण 6: सर्किट का निर्माण
- चरण 7: मानव के साथ परीक्षण सर्किट
- चरण 8: Arduino कोड
- चरण 9: भविष्य के चरण
वीडियो: अपनी आँखों से रोशनी को नियंत्रित करना: 9 कदम (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:19
कॉलेज में इस सेमेस्टर में, मैंने बायोमेडिसिन में इंस्ट्रुमेंटेशन नामक एक कक्षा ली जिसमें मैंने चिकित्सा अनुप्रयोगों के लिए सिग्नल प्रोसेसिंग की मूल बातें सीखीं। कक्षा के अंतिम प्रोजेक्ट के लिए, मेरी टीम ने ईओजी (इलेक्ट्रोकुलोग्राफी) तकनीक पर काम किया। अनिवार्य रूप से, किसी के मंदिरों से जुड़े इलेक्ट्रोड सिग्नल को फ़िल्टर और बढ़ाने के लिए डिज़ाइन किए गए सर्किट में वोल्टेज अंतर (कॉर्नियो-रेटिनल डीपोल के आधार पर) भेजते हैं। सिग्नल को ADC (एनालॉग-टू-डिजिटल कनवर्टर - मेरे मामले में, Arduino Uno का ADC) को खिलाया जाता है और एक नियोपिक्सल गहना के रंग बदलने के लिए उपयोग किया जाता है।
यह ट्यूटोरियल मेरे लिए जो कुछ सीखा है उसे रिकॉर्ड करने का एक तरीका है, और नियमित पाठक के साथ भी साझा करता है कि मानव शरीर से सिग्नल कैसे अलग होते हैं (इसलिए सावधान रहें: यह अतिरिक्त विवरण से भरा है!) इस सर्किट का उपयोग वास्तव में, कुछ मामूली बदलावों के साथ, ईकेजी तरंग के रूप में मोटर दिलों के विद्युत आवेगों के लिए किया जा सकता है, और भी बहुत कुछ! हालांकि यह निश्चित रूप से कहीं भी उतना उन्नत और सिद्ध नहीं है जितना कि आप एक अस्पताल में पाएंगे, यह आंख-स्थिति-नियंत्रित दीपक प्रारंभिक समझ और झलक के लिए बहुत अच्छा है।
नोट: मैं सिग्नल प्रोसेसिंग में कोई विशेषज्ञ नहीं हूं, इसलिए यदि कोई त्रुटि है या यदि आपके पास सुधार के लिए सुझाव हैं, तो कृपया मुझे बताएं! मुझे अभी भी बहुत कुछ सीखना है इसलिए कमेंट्री की सराहना की जाती है। साथ ही, इस पूरे ट्यूटोरियल में लिंक में मेरे द्वारा संदर्भित कई पेपरों के लिए अकादमिक पहुंच की आवश्यकता होती है जो कि मेरे विश्वविद्यालय के सौजन्य से है; उन लोगों के लिए अग्रिम क्षमा करें जिनके पास पहुंच नहीं होगी।
चरण 1: सामग्री
- protoboard
- प्रतिरोधक (100, 1k, 10k, 33k, 1M + 0.5M)
- संधारित्र (0.1uF)
- इंस्ट्रूमेंटेशन amp (INA111 मेरे मामले में, लेकिन एक युगल है जो अपेक्षाकृत ठीक काम करना चाहिए)
- op amp (कोई भी - मेरे पास LM324N हुआ)
- नियोपिक्सल (कोई भी काम करता है, लेकिन मैंने एक गहना का इस्तेमाल किया)
- 9वी बैटरी x2
- 9वी बैटरी हेडर x2
- ठोस जेल इलेक्ट्रोड (इलेक्ट्रोड चयन की चर्चा चरण 5 में की गई है)
- तनाव नापने का यंत्र
- अछूता तार
- तार स्ट्रिपर्स
- सोल्डरिंग आयरन + सोल्डर
- मगरमच्छ क्लिप (तारों के साथ संलग्न - यदि आवश्यक हो तो कुछ मिलाप)
- गर्म गोंद (तारों को स्थिर करने के लिए जो आगे और पीछे मुड़े होंगे)
- Arduino (बहुत अधिक बोर्ड कोई भी काम करता है, लेकिन मैंने एक Arduino Uno का उपयोग किया है)
अत्यधिक अनुशंसा: आस्टसीलस्कप, मल्टीमीटर, और फ़ंक्शन जनरेटर। मेरे प्रतिरोधक मूल्यों पर निर्भर रहने के बजाय अपने आउटपुट की जांच करें!
चरण 2: शारीरिक पृष्ठभूमि और सर्किट की आवश्यकता
त्वरित अस्वीकरण: मैं किसी भी तरह से इस क्षेत्र में एक चिकित्सा विशेषज्ञ नहीं हूं, लेकिन मैंने कक्षा में/नीचे दिए गए गुगलिंग से जो सीखा है उसे संकलित और सरल बनाया है, यदि आप चाहें तो आगे पढ़ने के लिए लिंक के साथ। साथ ही, यह लिंक उस विषय का अब तक का सबसे अच्छा अवलोकन है जो मुझे मिला - इसमें वैकल्पिक तकनीकें शामिल हैं।
ईओजी (इलेक्ट्रो-ओकुलोग्राफी) कॉर्नियो-रेटिनल डीपोल पर काम करता है। कॉर्निया (आंख के सामने) थोड़ा धनात्मक रूप से आवेशित होता है और रेटिना (आंख का पिछला भाग) थोड़ा ऋणात्मक रूप से आवेशित होता है। जब आप मंदिरों पर इलेक्ट्रोड लगाते हैं और अपने सर्किट को अपने माथे पर लगाते हैं (आपके रीडिंग को स्थिर करने और कुछ 60 हर्ट्ज के हस्तक्षेप से छुटकारा पाने में मदद करता है), तो आप क्षैतिज आंखों की गति के लिए लगभग ~ 1-10mV वोल्टेज अंतर को माप सकते हैं (ऊपर चित्र देखें)। ऊर्ध्वाधर नेत्र गति के लिए, इलेक्ट्रोड को अपनी आंख के ऊपर और नीचे रखें। इस लेख को अच्छी तरह से पढ़ने के लिए देखें कि शरीर बिजली के साथ कैसे इंटरैक्ट करता है - त्वचा प्रतिबाधा आदि पर बहुत अच्छी जानकारी। ईओजी का उपयोग आमतौर पर मोतियाबिंद, अपवर्तक त्रुटियों, या मैकुलर अपघटन जैसे नेत्र संबंधी रोगों के निदान के लिए किया जाता है। आंखों पर नियंत्रण रखने वाले रोबोटिक्स में भी ऐसे अनुप्रयोग हैं जिनमें आंखों की झिलमिलाहट के साथ सरल कार्य किए जा सकते हैं।
इन संकेतों को पढ़ने के लिए, यानी इलेक्ट्रोड के बीच वोल्टेज अंतर की गणना करने के लिए, हम अपने सर्किट में एक महत्वपूर्ण चिप को इंस्ट्रुमेंटेशन एम्पलीफायर कहते हैं। इस इंस्ट्रूमेंटेशन amp में वोल्टेज फॉलोअर्स, एक नॉन-इनवर्टिंग amp और एक डिफरेंशियल amp होता है। यदि आप op amps के बारे में अधिक नहीं जानते हैं, तो कृपया इसे क्रैश कोर्स के लिए पढ़ें - अनिवार्य रूप से, वे एक इनपुट वोल्टेज लेते हैं, इसे स्केल करते हैं, और इसके पावर रेल का उपयोग करके परिणामी वोल्टेज को आउटपुट करते हैं। प्रत्येक चरण के बीच में सभी प्रतिरोधों का एकीकरण सहिष्णुता त्रुटियों में मदद करता है: आम तौर पर प्रतिरोधों के मूल्यों में 5-10% सहिष्णुता होती है, और नियमित सर्किट (एक उपकरण amp में पूरी तरह से एकीकृत नहीं) अच्छे सीएमएमआर के लिए सटीकता पर बहुत अधिक निर्भर करेगा (अगला चरण देखें)) वोल्टेज अनुयायी उच्च इनपुट प्रतिबाधा के लिए हैं (उपरोक्त पैराग्राफ में चर्चा की गई है - रोगी को नुकसान को रोकने के लिए प्रमुख), गैर-इनवर्टिंग amp सिग्नल के उच्च लाभ (अगले चरण में प्रवर्धन पर अधिक) सुनिश्चित करने के लिए है और अंतर amp अंतर लेता है इनपुट के बीच (इलेक्ट्रोड से मूल्यों को घटाता है)। इन्हें बायोमेडिकल सिग्नल के लिए जितना संभव हो उतना सामान्य मोड शोर/हस्तक्षेप (सिग्नल प्रोसेसिंग पर अधिक के लिए, अगला चरण देखें) को कुचलने के लिए डिज़ाइन किया गया है, जो बाहरी कलाकृतियों से भरे हुए हैं।
इलेक्ट्रोड कुछ त्वचा प्रतिबाधा का सामना करते हैं क्योंकि आपकी त्वचा के ऊतक और वसा वोल्टेज के प्रत्यक्ष माप में बाधा डालते हैं, जिससे संकेत प्रवर्धन और फ़िल्टरिंग की आवश्यकता होती है। यहां, यहां और यहां कुछ लेख हैं जिनमें शोधकर्ताओं ने इस प्रतिबाधा को मापने का प्रयास किया है। यह शारीरिक मात्रा आमतौर पर 47nF संधारित्र के समानांतर 51kOhm रोकनेवाला के रूप में तैयार की जाती है, हालांकि कई विविधताएं और संयोजन हैं। विभिन्न स्थानों में त्वचा में अलग-अलग बाधाएं हो सकती हैं, खासकर जब आप अलग-अलग मोटाई और आसन्न मांसपेशियों की मात्रा पर विचार करते हैं। इलेक्ट्रोड के लिए आपकी त्वचा कितनी अच्छी तरह तैयार है, इसके साथ प्रतिबाधा भी बदलती है: आमतौर पर साबुन और पानी से पूरी तरह से सफाई करने का सुझाव दिया जाता है ताकि उत्कृष्ट आसंजन और स्थिरता सुनिश्चित हो सके, और इलेक्ट्रोड के लिए विशेष जैल भी हैं यदि आप वास्तव में पूर्णता चाहते हैं। एक महत्वपूर्ण नोट यह है कि प्रतिबाधा आवृत्ति (कैपेसिटर की विशेषता) के साथ बदलती है, इसलिए आपको प्रतिबाधा की भविष्यवाणी करने के लिए अपने सिग्नल बैंडविड्थ को जानना होगा। और हां, शोर मिलान के लिए प्रतिबाधा का अनुमान लगाना महत्वपूर्ण है - इस पर अधिक जानकारी के लिए बाद का चरण देखें।
चरण 3: सिग्नल प्रोसेसिंग: क्यों और कैसे?
अब, आप एल ई डी को नियंत्रित करने के लिए तत्काल आउटपुट के रूप में 1-10mV वोल्टेज अंतर का उपयोग क्यों नहीं कर सकते? खैर, संकेतों को फ़िल्टर करने और बढ़ाने के कई कारण हैं:
-
कई एडीसी (एनालॉग-टू-डिजिटल कन्वर्टर्स - आपका एनालॉग इनपुट लेते हैं और उन्हें कंप्यूटर पर डेटा पढ़ने और संग्रहीत करने के लिए डिजिटाइज़ करते हैं) बस ऐसे छोटे बदलावों का पता नहीं लगा सकते हैं। उदाहरण के लिए, Arduino Uno का ADC विशेष रूप से 5V आउटपुट के साथ 10-बिट ADC है, जिसका अर्थ है कि यह 0-5V इनपुट वोल्टेज को मैप करता है (रेंज मान से बाहर "रेल" होगा, जिसका अर्थ है कि निम्न मान 0V के रूप में पढ़े जाएंगे और उच्च मान पढ़े जाएंगे 5V के रूप में) 0 और 1023 के बीच पूर्णांक मानों के लिए। 10mV उस 5V रेंज में इतना छोटा है, इसलिए यदि आप अपने सिग्नल को पूर्ण 5V रेंज तक बढ़ा सकते हैं, तो छोटे परिवर्तन अधिक आसानी से पहचाने जा सकते हैं क्योंकि वे बड़े मात्रात्मक परिवर्तनों से परिलक्षित होंगे (5mV 10mV में बदल जाता है जबकि 2V 4V में बदल जाता है)। इसे अपने कंप्यूटर पर एक छोटे से चित्र की तरह समझें: विवरण आपके पिक्सेल द्वारा पूरी तरह से परिभाषित हो सकता है, लेकिन जब तक आप चित्र का विस्तार नहीं करते, तब तक आप आकृतियों में अंतर नहीं कर पाएंगे।
ध्यान दें कि आपके ADC के लिए अधिक बिट्स होना बेहतर है क्योंकि आप अपने निरंतर सिग्नल को असतत, डिजीटल मानों में बदलने से परिमाणीकरण शोर को कम कर सकते हैं। इनपुट एसएनआर के ~96% प्रतिधारण के लिए आपको कितने बिट्स की गणना करने के लिए, अंगूठे के नियम के रूप में एन = एसएनआर (डीबी में)/6 का उपयोग करें। आप अपने बटुए को भी ध्यान में रखना चाहते हैं, हालांकि: यदि आप अधिक बिट्स चाहते हैं, तो आपको अधिक पैसे खर्च करने के लिए तैयार रहना होगा।
-
शोर और हस्तक्षेप (शोर = यादृच्छिक कलाकृतियां जो आपके संकेतों को सुचारू बनाम हस्तक्षेप के बजाय दांतेदार बनाती हैं = गैर-यादृच्छिक, रेडियो तरंगों से आसन्न संकेतों से साइनसोइडल कलाकृतियां, आदि) रोजमर्रा की जिंदगी से मापे गए सभी संकेतों को प्लेग करती हैं।
- सबसे प्रसिद्ध एक 60 हर्ट्ज हस्तक्षेप है (50 हर्ट्ज यदि आप यूरोप में हैं और रूस में कोई नहीं है क्योंकि वे आउटलेट पावर के लिए एसी के विपरीत डीसी का उपयोग करते हैं …), जिसे बिजली के आउटलेट के एसी विद्युत चुम्बकीय क्षेत्रों से उपयोगिता आवृत्ति कहा जाता है। बिजली की लाइनें बिजली के जनरेटर से आवासीय क्षेत्रों में एसी उच्च वोल्टेज ले जाती हैं, जहां ट्रांसफार्मर अमेरिकी बिजली के आउटलेट में वोल्टेज को मानक ~ 120V तक ले जाते हैं। प्रत्यावर्ती वोल्टेज हमारे परिवेश में 60 हर्ट्ज के इस निरंतर स्नान की ओर जाता है, जो सभी प्रकार के संकेतों में हस्तक्षेप करता है और इसे फ़िल्टर करने की आवश्यकता होती है।
-
60Hz इंटरफेरेंस को आम तौर पर कॉमन मोड इंटरफेरेंस कहा जाता है क्योंकि यह आपके दोनों इनपुट (+ और -) से लेकर op amps तक में दिखाई देता है। अब, op amps में सामान्य मोड कलाकृतियों को कम करने के लिए सामान्य मोड अस्वीकृति अनुपात (CMRR) कहा जाता है, लेकिन (अगर मैं गलत हूं तो मुझे सही करें!) यह मुख्य रूप से सामान्य मोड शोर के लिए अच्छा है (यादृच्छिक: गैर-यादृच्छिक के बजाय शोर: हस्तक्षेप). ६० हर्ट्ज़ से छुटकारा पाने के लिए, बैंडस्टॉप फ़िल्टर का उपयोग चुनिंदा रूप से इसे फ़्रीक्वेंसी स्पेक्ट्रम से हटाने के लिए किया जा सकता है, लेकिन फिर आप वास्तविक डेटा को हटाने का जोखिम भी उठाते हैं। सबसे अच्छा मामला, आप केवल 60 हर्ट्ज से कम आवृत्तियों की एक श्रृंखला रखने के लिए कम पास फ़िल्टर का उपयोग कर सकते हैं, इसलिए उच्च आवृत्तियों के साथ सब कुछ फ़िल्टर किया जाता है। मैंने ईओजी के लिए यही किया: मेरे सिग्नल की अपेक्षित बैंडविड्थ 0-10 हर्ट्ज थी (तेजी से आंखों की गति की उपेक्षा करना - हमारे सरलीकृत संस्करण में इससे निपटना नहीं चाहता था) इसलिए मैंने कम पास फिल्टर के साथ 10 हर्ट्ज से अधिक आवृत्तियों को हटा दिया.
- 60 हर्ट्ज कैपेसिटिव कपलिंग और इंडक्टिव कपलिंग के जरिए हमारे सिग्नल को भ्रष्ट कर सकता है। कैपेसिटिव कपलिंग (यहां कैपेसिटर पर पढ़ें) तब होता है जब हवा आसन्न सर्किट के बीच एसी संकेतों के लिए एक ढांकता हुआ के रूप में कार्य करती है। जब आप चुंबकीय क्षेत्र में करंट चलाते हैं तो इंडक्टिव कपलिंग फैराडे के नियम से आती है। युग्मन को दूर करने के लिए बहुत सारी तरकीबें हैं: उदाहरण के लिए, आप एक ग्राउंडेड शील्ड का उपयोग फैराडे पिंजरे के रूप में कर सकते हैं। जब संभव हो तो घुमावदार/ब्राइडिंग तार आगमनात्मक युग्मन के हस्तक्षेप के लिए उपलब्ध क्षेत्र को कम कर देता है। तारों को छोटा करना और आपके सर्किट के समग्र आकार को कम करना भी उसी कारण से समान प्रभाव डालता है। पावर आउटलेट में प्लगिंग के विरोध में ऑप amp रेल के लिए बैटरी पावर पर निर्भर होने से भी मदद मिलती है क्योंकि बैटरी बिना साइनसॉइडल ऑसीलेशन के डीसी स्रोत प्रदान करती है। और भी बहुत कुछ यहाँ पढ़ें!
-
कम पास फिल्टर भी बहुत सारे शोर से छुटकारा पाते हैं, क्योंकि यादृच्छिक शोर उच्च आवृत्तियों द्वारा दर्शाया जाता है। बहुत सारे शोर सफेद शोर हैं, जिसका अर्थ है कि शोर सभी आवृत्तियों के लिए मौजूद है, इसलिए जितना संभव हो सके आपके सिग्नल बैंडविड्थ को सीमित करने से आपके सिग्नल में कितना शोर मौजूद है, इसे सीमित करने में मदद मिलती है।
कुछ कम पास फिल्टर को एंटी-अलियासिंग फिल्टर कहा जाता है क्योंकि वे एलियासिंग को रोकते हैं: जब साइनसॉइड का नमूना लिया जाता है, तो उन्हें एक अलग आवृत्ति के रूप में पहचाना जा सकता है, फिर वे वास्तव में हैं। आपको हमेशा Nyquist के नमूनाकरण प्रमेय का पालन करना याद रखना चाहिए (2x उच्च आवृत्ति पर नमूना संकेत: अपेक्षित 1Hz साइन लहर, आदि के लिए> 2Hz की नमूना आवृत्ति की आवश्यकता होती है)। इस ईओजी मामले में, मुझे Nyquist के बारे में चिंता करने की ज़रूरत नहीं थी क्योंकि मेरा सिग्नल मुख्य रूप से 10Hz रेंज में होने की उम्मीद थी, और मेरे Arduino ADC नमूने 10kHz पर - सब कुछ पकड़ने के लिए पर्याप्त तेज़ से अधिक।
- शोर से छुटकारा पाने के लिए छोटी-छोटी तरकीबें भी हैं। एक स्टार ग्राउंड का उपयोग करना है ताकि आपके सर्किट के सभी हिस्सों का एक ही संदर्भ हो। अन्यथा, जिसे एक भाग "ग्राउंड" कहता है, वह तारों में मामूली प्रतिरोध के कारण दूसरे भाग से भिन्न हो सकता है, जो विसंगतियों में जुड़ जाता है। ब्रेडबोर्ड से चिपके रहने के बजाय प्रोटोबार्ड को मिलाप करने से कुछ शोर भी कम होता है और सुरक्षित कनेक्शन बनते हैं जिन पर आप प्रेस-फिट सम्मिलन के विपरीत भरोसा कर सकते हैं।
शोर और हस्तक्षेप को दबाने के कई अन्य तरीके हैं (यहां और यहां देखें), लेकिन अधिक जानकारी के लिए आप उस पर या Google पर क्लास ले सकते हैं: आइए वास्तविक सर्किट पर चलते हैं!
चरण 4: सर्किट कैसे काम करता है
सर्किट आरेख से भयभीत न हों: यहां सब कुछ कैसे काम करता है इसका एक मोटा ब्रेकडाउन है: (कुछ स्पष्टीकरणों के लिए पिछले चरण को भी देखें)
- दूर बाईं ओर हमारे पास इलेक्ट्रोड हैं। एक बाएं मंदिर से जुड़ा है, दूसरा दाएं मंदिर पर, और तीसरा इलेक्ट्रोड माथे से जुड़ा हुआ है। यह ग्राउंडिंग सिग्नल को स्थिर करता है इसलिए कम बहाव होता है, और यह 60Hz के कुछ हस्तक्षेप से भी छुटकारा दिलाता है।
- अगला इंस्ट्रूमेंटेशन amp है। वोल्टेज अंतर उत्पन्न करने के लिए यह क्या करता है, इसकी व्याख्या के लिए दो कदम पीछे जाएं। amp के लाभ को बदलने के लिए समीकरण डेटा शीट के पृष्ठ 7 पर है [G = 1+(50kOhm/Rg) जहां amp के पिन 1 और 8 पर Rg जुड़ा हुआ है]। अपने सर्किट के लिए, मैंने Rg = 100Ohm का उपयोग करके 500 के लाभ को समायोजित किया।
- इंस्ट्रूमेंटेशन amp के बाद 500x प्रवर्धित वोल्टेज अंतर को आउटपुट करता है, एक प्रथम-क्रम RC कम पास फ़िल्टर होता है, जिसमें एक रोकनेवाला R_filter और कैपेसिटर C_filter होता है। कम पास फ़िल्टर एंटी-अलियासिंग को रोकता है (हालांकि मेरे लिए कोई चिंता का विषय नहीं है क्योंकि Nyquist द्वारा, मुझे अपेक्षित 10Hz बैंडविड्थ के लिए कम से कम 20Hz का नमूना लेने की आवश्यकता है, और Arduino ADC के नमूने 10kHz पर - पर्याप्त से अधिक) और शोर में भी कटौती करते हैं उन सभी आवृत्तियों पर जिनकी मुझे आवश्यकता नहीं है। आरसी सिस्टम काम करता है क्योंकि कैपेसिटर उच्च आवृत्तियों को आसानी से अनुमति देते हैं लेकिन कम आवृत्तियों (प्रतिबाधा जेड = 1/(2 * पीआई * एफ)) को बाधित करते हैं, और कैपेसिटर के वोल्टेज के साथ वोल्टेज डिवाइडर बनाने से फ़िल्टर में परिणाम होता है जो केवल कम आवृत्तियों की अनुमति देता है के माध्यम से [3dB तीव्रता के लिए कटऑफ सूत्र f_c = 1/(2*pi*RC)] द्वारा नियंत्रित होता है। मैंने अपने फ़िल्टर के R और C मानों को ~10Hz से अधिक सिग्नल काटने के लिए समायोजित किया क्योंकि उस सीमा में ईओजी के लिए जैविक संकेत अपेक्षित है। मूल रूप से मैंने 20 हर्ट्ज के बाद काट दिया, लेकिन प्रयोग के बाद 10 हर्ट्ज ने भी काम किया, इसलिए मैं छोटे बैंडविड्थ के साथ गया (छोटी बैंडविड्थ कुछ भी अनावश्यक काटने के लिए बेहतर है, बस मामले में)।
- इस फ़िल्टर किए गए सिग्नल के साथ, मैंने बाएं और दाएं (मेरी सीमा के दो चरम) देखने से मूल्यों की मेरी सीमा को देखने के लिए एक ऑसिलोस्कोप के साथ आउटपुट को मापा। यह मुझे लगभग 2-4V तक मिला (क्योंकि ~ 4-8mV की सीमा के लिए इंस्ट्रूमेंटेशन amp लाभ 500x था), जब मेरा लक्ष्य 5V (Arduino ADC की पूरी श्रृंखला) है। यह सीमा बहुत भिन्न थी (इस पर आधारित है कि व्यक्ति ने पहले से त्वचा को कितनी अच्छी तरह धोया था) इसलिए मैं अपने दूसरे गैर-इनवर्टिंग amp के साथ इतना लाभ नहीं लेना चाहता था। मैंने इसे केवल 1.3 के लाभ के लिए समायोजित करना समाप्त कर दिया (सर्किट में R1 और R2 को समायोजित करें क्योंकि amp = 1+R2/R1 का लाभ)। आपको अपने स्वयं के आउटपुट का दायरा बढ़ाने और वहां से समायोजित करने की आवश्यकता होगी ताकि आप 5V से अधिक न जाएं! केवल मेरे प्रतिरोधक मानों का उपयोग न करें।
- यह संकेत अब पढ़ने के लिए Arduino एनालॉग पिन में फीड किया जा सकता है लेकिन Arduino ADC नकारात्मक इनपुट स्वीकार नहीं करता है! आपको अपने सिग्नल को ऊपर की ओर शिफ्ट करने की आवश्यकता होगी ताकि -2.5V से 2.5V के विपरीत सीमा 0-5V हो। इसे ठीक करने का एक तरीका यह है कि आप अपने सर्किट बोर्ड की जमीन को Arduino के 3.3V पिन से जोड़ दें: यह आपके सिग्नल को 3.3V (2.5V से अधिक इष्टतम लेकिन यह काम करता है) तक बदल देता है। मेरी सीमा वास्तव में विजयी थी इसलिए मैंने एक चर ऑफ़सेट वोल्टेज डिज़ाइन किया: इस तरह, मैं पोटेंशियोमीटर को 0-5V तक की सीमा को केंद्र में रख सकता था। यह अनिवार्य रूप से +/- 9 वी पावर रेल का उपयोग करके एक परिवर्तनीय वोल्टेज विभक्त है ताकि मैं सर्किट ग्राउंड को -9 से 9वी तक किसी भी मूल्य से जोड़ सकूं और इस प्रकार मेरे सिग्नल को ऊपर या नीचे 9वी में स्थानांतरित कर सकूं।
चरण 5: घटकों और मूल्यों को चुनना
सर्किट की व्याख्या के साथ, हम किस एक (इलेक्ट्रोड, सेशन amp) का उपयोग करने के लिए चुनते हैं?
-
एक सेंसर के रूप में, ठोस जेल इलेक्ट्रोड में उच्च इनपुट प्रतिबाधा और कम आउटपुट प्रतिबाधा होती है: इसका अनिवार्य रूप से मतलब यह है कि करंट आसानी से डाउनस्ट्रीम से बाकी सर्किट (कम आउटपुट प्रतिबाधा) तक जा सकता है, लेकिन आपके मंदिरों में वापस जाने में परेशानी होगी। (उच्च इनपुट प्रतिबाधा)। यह आपके शेष सर्किट में किसी भी उच्च धाराओं या वोल्टेज से उपयोगकर्ता को घायल होने से रोकता है; वास्तव में, कई प्रणालियों में अतिरिक्त सुरक्षा के लिए रोगी सुरक्षा अवरोधक नामक कुछ होता है, बस मामले में।
-
कई अलग-अलग इलेक्ट्रोड प्रकार मौजूद हैं। अधिकांश लोग ईकेजी/ईओजी/आदि अनुप्रयोगों में उपयोग के लिए एजी/एजीसीएल ठोस जेल इलेक्ट्रोड का सुझाव देते हैं। इसे ध्यान में रखते हुए, आपको इन इलेक्ट्रोडों के स्रोत प्रतिरोध को देखने की जरूरत है (त्वचा प्रतिबाधा पर मेरे नोट्स के लिए दो कदम पीछे जाएं) और इसे शोर प्रतिरोध (V/sqrt(Hz) में शोर वोल्टेज को शोर धारा से विभाजित करके मिलान करें। A/sqrt(Hz) -- अपने op amps की डेटा शीट देखें) -- इस तरह आप अपने डिवाइस के लिए सही इंस्ट्रूमेंटेशन amp चुनते हैं। इसे नॉइज़ मैचिंग कहा जाता है, और इस बात का स्पष्टीकरण कि क्यों मैचिंग सोर्स रेसिस्टेंस टू नॉइज़ रेजिस्टेंस Rn वर्क्स ऑनलाइन जैसे यहाँ पाए जा सकते हैं। मेरे INA111 के लिए जिसे मैंने चुना था, Rn की गणना डेटा शीट के शोर वोल्टेज और शोर करंट (ऊपर स्क्रीनशॉट) का उपयोग करके की जा सकती है।
-
इलेक्ट्रोड प्रदर्शन का मूल्यांकन करने वाले बहुत सारे लेख हैं, और कोई भी इलेक्ट्रोड सभी उद्देश्यों के लिए सबसे अच्छा नहीं है: उदाहरण के लिए यहां प्रयास करें। अलग-अलग बैंडविड्थ के लिए प्रतिबाधा भी बदलती है जैसा कि op amp डेटा शीट में परिलक्षित होता है (कुछ डेटा शीट में अलग-अलग आवृत्तियों पर वक्र या टेबल होंगे)। अपना शोध करें लेकिन अपने बटुए को ध्यान में रखना याद रखें। यह जानना अच्छा है कि कौन से इलेक्ट्रोड/ऑप एम्प्स सबसे अच्छे हैं, लेकिन यदि आप इसे वहन नहीं कर सकते तो इसका कोई फायदा नहीं है। आपको परीक्षण के लिए कम से कम ~ ५० इलेक्ट्रोड की आवश्यकता होगी, न कि केवल ३ एक बार के उपयोग के लिए।
-
इष्टतम शोर मिलान के लिए, न केवल Rn ~ = रु: आप यह भी चाहते हैं कि शोर वोल्टेज * शोर करंट (Pn) जितना संभव हो उतना कम हो। इसे Rn ~=Rs बनाने से ज्यादा महत्वपूर्ण माना जाता है क्योंकि यदि आवश्यक हो तो आप ट्रांसफॉर्मर का उपयोग करके रुपये और Rn को समायोजित कर सकते हैं।
ट्रांसफॉर्मर के साथ चेतावनी (गलत होने पर मुझे सुधारें): वे कुछ हद तक भारी हो सकते हैं और इस प्रकार उन उपकरणों के लिए इष्टतम नहीं हैं जिन्हें छोटे होने की आवश्यकता है। वे गर्मी का निर्माण भी करते हैं इसलिए हीट सिंक या उत्कृष्ट वेंटिलेशन आवश्यक है।
- शोर केवल आपके पहले प्रारंभिक amp से मेल खाता है; दूसरा amp उतना प्रभावित नहीं करता है, इसलिए कोई भी op amp करेगा।
-
-
-
चरण 6: सर्किट का निर्माण
सर्किट बनाने के लिए ऊपर दिए गए फ्रिटिंग आरेख का उपयोग करें (दूसरी प्रति यह बताती है कि प्रत्येक भाग पिछले चरण से सर्किट आरेख में क्या संदर्भित करता है)। यदि आपको आरेख में एल ई डी की पहचान करने में सहायता की आवश्यकता है, तो इस प्रतिरोधक रंग कोड कैलकुलेटर का उपयोग करें, लेकिन इंस्ट्रूमेंटेशन amp का Rg 100Ohm है, R_filter 1.5MOhm है, C_filter 0.1uF है, नॉन इनवर्टिंग amp का R1 10kOhm है, R2 33kOhm है, और पोटेंशियोमीटर के लिए रेसिस्टर 1kOhm है (पोटेंशियोमीटर 0 से 20kOhm तक भिन्न होता है)। लाभ को समायोजित करने के लिए आवश्यकतानुसार अपने प्रतिरोधक मूल्यों को बदलना याद रखें!
संपादित करें: ऑफसेट ग्राउंड हिस्से में एक त्रुटि है। बाएं काले तार को हटा दें। रोकनेवाला को लाल तार के साथ पावर रेल से जोड़ा जाना चाहिए जैसा कि दिखाया गया है, लेकिन दूसरे पिन से भी, पहले नहीं, पोटेंशियोमीटर के। पोटेंशियोमीटर के पहले पिन को Arduino के 5V पिन से जोड़ा जाना चाहिए। नारंगी तार जो कि ऑफसेट ग्राउंड है उसे पहले नहीं, दूसरे पिन से जोड़ा जाना चाहिए।
मैंने ऑफसेट ग्राउंड पर काफी चर्चा की है। आरेख में आप देख सकते हैं कि Arduino ग्राउंड को ब्रेडबोर्ड की जमीन से जुड़ा हुआ दिखाया गया है। ऐसे में आपको अपना मैदान बदलने की जरूरत नहीं है। यदि आपका सिग्नल सीमा से बाहर है और आपको अपना ग्राउंड शिफ्ट करने की आवश्यकता है, तो पहले Arduino ग्राउंड को Arduino के 3.3V पिन से कनेक्ट करने का प्रयास करें और अपना सिग्नल देखें। अन्यथा नारंगी तार को पोटेंशियोमीटर सेट अप (ऑफ़सेट ग्राउंड) में Arduino के GND पिन से जोड़ने का प्रयास करें।
सुरक्षा नोट: टांका लगाते समय बैटरियों को अंदर न रखें, और बैटरियों को पीछे की ओर न लगाएं और न ही सोल्डर करें। आपका सर्किट धूम्रपान करना शुरू कर देगा, कैपेसिटर उड़ जाएगा, और ब्रेडबोर्ड भी क्षतिग्रस्त हो सकता है। एक नियम के रूप में, जब आप सर्किट का उपयोग करना चाहते हैं तो केवल बैटरी का उपयोग करें; अन्यथा, उन्हें उतार दें (बैटरी को आसानी से डिस्कनेक्ट करने के लिए एक फ्लिप स्विच जोड़ना भी एक अच्छा विचार होगा)।
ध्यान दें कि आपको एक प्रोटोबार्ड को टांका लगाने से पहले सर्किट पीस को टुकड़े से बनाना चाहिए (प्रत्येक चरण की जांच करें!) और ब्रेडबोर्ड पर। जाँच करने के लिए पहला चरण इंस्ट्रूमेंटेशन amp है: सभी रेल (बैटरी धारकों में मिलाप), आरजी, आदि को संलग्न करें और आउटपुट पिन पर एक आस्टसीलस्कप का उपयोग करें। शुरुआत के लिए, 5mV आयाम (या सबसे कम आपका जनरेटर जाएगा) के साथ 1Hz साइन वेव के साथ एक फ़ंक्शन जनरेटर का उपयोग करें। यह सिर्फ यह जांचने के लिए है कि इंस्ट्रुमेंटेशन amp ठीक से काम कर रहा है, और आपका आरजी आपका लक्ष्य लाभ प्रदान कर रहा है।
इसके बाद, अपना लो पास फ़िल्टर जांचें। सर्किट के उस हिस्से को जोड़ें और अपने तरंग की जांच करें: यह बिल्कुल वही दिखना चाहिए लेकिन कम शोर (दांतेदार - ऊपर अंतिम दो छवियां देखें)। आइए अब एक फ़ंक्शन जनरेटर के बजाय अपने इलेक्ट्रोड के साथ एक आस्टसीलस्कप के साथ अपने अंतिम आउटपुट की जांच करें…
चरण 7: मानव के साथ परीक्षण सर्किट
फिर से, अपने बाएं और दाएं मंदिरों में इलेक्ट्रोड लगाएं, और एक ग्राउंड वायर को अपने माथे पर एक इलेक्ट्रोड से जोड़ दें। उसके बाद ही आपको बैटरी जोड़नी चाहिए -- यदि कोई झुनझुनी होती है, तो तुरंत हटा दें और कनेक्शन दोबारा जांचें !!! अब जब आप बाएँ बनाम दाएँ देखते हैं तो अपने मूल्यों की सीमा की जाँच करें और गैर-इनवर्टिंग amp के R1/R2 को समायोजित करें, जैसा कि दो कदम पहले बताया गया है - याद रखें कि लक्ष्य 5V रेंज है! क्या देखना है, इस पर नोट्स के लिए ऊपर दिए गए चित्र देखें।
जब आप सभी प्रतिरोधक मूल्यों से खुश होते हैं, तो सब कुछ एक प्रोटोबार्ड में मिला दें। सोल्डरिंग सख्ती से जरूरी नहीं है, लेकिन यह साधारण प्रेस फिट जोड़ों पर अधिक स्थिरता प्रदान करता है और सर्किट की अनिश्चितता को केवल इसलिए काम नहीं कर रहा है क्योंकि आपने उन्हें ब्रेडबोर्ड में पर्याप्त रूप से दबाया नहीं है।
चरण 8: Arduino कोड
इस चरण के नीचे सभी कोड संलग्न हैं!
अब जब आपके पास 5V रेंज है, तो आपको यह सुनिश्चित करने की आवश्यकता है कि यह -1V से 4V के बजाय 0-5V के भीतर आता है, आदि। या तो Arduino के 3.3V पिन के लिए जमीन संलग्न करें या ऑफसेट ग्राउंड वोल्टेज (ऊपर नारंगी तार) संलग्न करें। ग्राउंड रेल से और फिर ग्राउंड रेल से Arduino के GND पिन से एक तार कनेक्ट करें (यह सिग्नल को ऊपर या नीचे शिफ्ट करने के लिए है ताकि आप 0-5V रेंज के भीतर गिरें)। आपको इधर-उधर खेलना होगा: अनिश्चित होने पर अपने आउटपुट को स्कोप करना न भूलें!
अब अंशांकन के लिए: आप चाहते हैं कि प्रकाश अलग-अलग आंखों की स्थिति के लिए रंग बदल दे (दूर बाईं ओर देखना बनाम बहुत दूर नहीं..)। उसके लिए आपको मूल्यों और श्रेणियों की आवश्यकता है: Arduino पर EOG-calibration-numbers.ino चलाएं, सब कुछ ठीक से जुड़ा हुआ है (मेरे फ्रिटिंग आरेख के अनुसार Arduino और neopixel से कनेक्शन समाप्त करें)। अति आवश्यक नहीं है, लेकिन मेरे पास मौजूद bioe.py कोड भी चलाएँ - यह आपके डेस्कटॉप पर एक टेक्स्ट फ़ाइल को आउटपुट करेगा ताकि आप सभी मानों को रिकॉर्ड कर सकें जैसे आप बाएं या दाएं दिखते हैं (पायथन कोड इस उदाहरण से अनुकूलित किया गया था)। मैंने यह कैसे किया 8 बीट्स के लिए बाएं, फिर दाएं, फिर ऊपर, फिर नीचे और बाद में औसत के लिए दोहराएं (मेरे द्वारा रखे गए एक लॉग के लिए output_2.pdf देखें)। जब आप संतुष्ट हों तो जबरदस्ती छोड़ने के लिए ctrl+C दबाएं। उन मानों का उपयोग करके, आप फिर मेरे BioE101_EOG-neopixel.ino कोड में एनिमेशन की श्रेणियों को समायोजित कर सकते हैं। मेरे लिए, मेरे पास एक इंद्रधनुष एनीमेशन था जब मैं सीधे आगे देखता था, दूर बाईं ओर नीला, थोड़ा बाएँ के लिए हरा, थोड़ा दाएँ के लिए बैंगनी, और दूर दाईं ओर लाल।
चरण 9: भविष्य के चरण
वोइला; जिसे आप सिर्फ अपनी आंखों से नियंत्रित कर सकते हैं। अस्पताल में पहुंचने से पहले इसे अनुकूलित करने के लिए बहुत कुछ है, लेकिन यह एक और दिन के लिए है: बुनियादी अवधारणाओं को अब समझना कम से कम आसान है। एक चीज जो मैं वापस जाना चाहता हूं और परिवर्तन करना चाहता हूं, इंस्ट्रूमेंटेशन amp के लिए मेरे लाभ को 500 तक समायोजित कर रहा है: पीछे मुड़कर देखें, तो शायद यह बहुत अधिक था क्योंकि मेरा सिग्नल बाद में पहले से ही 2-4V था और मुझे गैर-इनवर्टिंग का उपयोग करने में कठिन समय था मेरी सीमा को पूरी तरह से समायोजित करने के लिए amp …
स्थिरता प्राप्त करना कठिन है क्योंकि सिग्नल विभिन्न स्थितियों के लिए बहुत अधिक बदलता है:
- अलग व्यक्ति
- प्रकाश की स्थिति
- त्वचा की तैयारी (जैल, धुलाई, आदि)
लेकिन फिर भी, मैं अपने प्रदर्शन के अंतिम वीडियो सबूत से काफी खुश हूं (सुबह 3 बजे लिया गया क्योंकि वह तब होता है जब सब कुछ जादुई रूप से काम करना शुरू कर देता है)।
मुझे पता है कि इस ट्यूटोरियल का बहुत कुछ भ्रामक लग सकता है (हाँ, सीखने की अवस्था मेरे लिए भी कठिन थी) इसलिए कृपया नीचे दिए गए प्रश्न पूछने में संकोच न करें और मैं उत्तर देने की पूरी कोशिश करूंगा। आनंद लेना!
अछूत चुनौती में उपविजेता
सिफारिश की:
12 वोल्ट की बैटरी हैक! आपको अपनी आँखों पर विश्वास नहीं होगा !!!!! (अपडेट किया गया): ७ कदम
12 वोल्ट की बैटरी हैक! आपको अपनी आँखों पर विश्वास नहीं होगा !!!!! (अपडेट किया गया): किपके के निर्देश से प्रेरित होकर मैंने सोचा कि मैं एक अलग ब्रांड की अपनी कुछ बैटरी उठाऊंगा … और, लड़का, क्या मैं हैरान था
अपनी आवाज के साथ आरजीबी एलईडी या लेडस्ट्रिप्स को नियंत्रित करने के लिए कॉर्टाना और एक अरुडिनो का प्रयोग करें!: 4 कदम (चित्रों के साथ)
अपनी आवाज के साथ आरजीबी एलईडी या एलईडीस्ट्रिप्स को नियंत्रित करने के लिए कॉर्टाना और एक अरुडिनो का उपयोग करें !: इस निर्देश में मैं आपको दिखाऊंगा कि आप अपनी आवाज के साथ आरजीबी एलईडी या एलईडी पट्टी को कैसे नियंत्रित कर सकते हैं। यह सीओआरजीबी ऐप द्वारा किया जाता है जो विंडोज़ ऐप स्टोर में मुफ्त में उपलब्ध है। यह ऐप मेरे CortanaRoom प्रोजेक्ट का हिस्सा है। जब आप बुद्धि समाप्त कर लेते हैं
Arduino/Android Timer (ऐप के साथ!)। अपनी रोशनी और अन्य सामग्री को नियंत्रित करें: 6 कदम
Arduino/Android Timer (ऐप के साथ!)। अपनी रोशनी और अन्य सामग्री को नियंत्रित करें: नमस्ते! यहाँ मैं एक और टाइमर के साथ हूँ। इस प्रोजेक्ट के साथ आप सेट कर सकते हैं कि टाइमर "चालू" या "बंद" दिन के हर घंटे के लिए। आप Android ऐप का उपयोग करके दिन में एक से अधिक ईवेंट सेट कर सकते हैं। Arduino और Android को मिलाकर हम
कंप्यूटर जॉयस्टिक के रूप में PSP का उपयोग करना और फिर PSP के साथ अपने कंप्यूटर को नियंत्रित करना: 5 चरण (चित्रों के साथ)
कंप्यूटर जॉयस्टिक के रूप में पीएसपी का उपयोग करना और फिर पीएसपी के साथ अपने कंप्यूटर को नियंत्रित करना: आप पीएसपी होमब्रू के साथ कई अच्छी चीजें कर सकते हैं, और इस निर्देशयोग्य में मैं आपको सिखाने जा रहा हूं कि गेम खेलने के लिए जॉयस्टिक के रूप में अपने पीएसपी का उपयोग कैसे करें, लेकिन यह भी है एक प्रोग्राम जो आपको अपने जॉयस्टिक को अपने माउस के रूप में उपयोग करने की अनुमति देता है। यहाँ मेटर हैं
अपने घर में अपने कंप्यूटर के साथ रोशनी को नियंत्रित करें: 3 कदम (चित्रों के साथ)
अपने घर में अपने कंप्यूटर से रोशनी को नियंत्रित करें: क्या आप कभी अपने घर में रोशनी को अपने कंप्यूटर से नियंत्रित करना चाहते हैं? ऐसा करना वास्तव में काफी किफायती है। आप स्प्रिंकलर सिस्टम, स्वचालित विंडो ब्लाइंड्स, मोटराइज्ड प्रोजेक्शन स्क्रीन आदि को भी नियंत्रित कर सकते हैं। आपको हार्डवेयर के दो टुकड़े चाहिए