विषयसूची:
- चरण 1: डिजिटल फ्रीक्वेंसी डिवीजन
- चरण 2: अनुशंसित हार्डवेयर
- चरण 3: सर्किट
- चरण 4: कोड और कम आवृत्तियों को मापना
वीडियो: माइक्रोकंट्रोलर का उपयोग करके, साथ ही साथ उच्च आवृत्ति और कर्तव्य चक्र को कैसे मापें: 4 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:21
मुझे पता है कि आप क्या सोचते हैं: "हुह? सिग्नल आवृत्ति को मापने के लिए माइक्रोकंट्रोलर का उपयोग करने के तरीके पर बहुत सारे निर्देश हैं। जम्हाई।" लेकिन रुकिए, इसमें एक नवीनता है: मैं एक माइक्रोकंट्रोलर (MCU) की तुलना में बहुत अधिक आवृत्तियों को मापने की एक विधि का वर्णन करता हूं और सिग्नल का कर्तव्य चक्र - सभी एक ही समय में!
डिवाइस की फ़्रीक्वेंसी रेंज ~ 43 हर्ट्ज से ~ 450 किलोहर्ट्ज़ तक फैली हुई है, जबकि कर्तव्य चक्र 1% से 99% तक है।
मुझे "सहन कर सकते हैं" भाग की व्याख्या करने दें: एक एमसीयू दो बाद के संक्रमण घटनाओं के बीच समय को ट्रैक करके एक वर्ग तरंग संकेत, टी की अवधि को मापता है। उदाहरण के लिए, निम्न-से-उच्च वोल्टेज इसके I/O पिन में से एक पर कूदता है। यह अपनी आंतरिक घड़ी की दालों की संख्या की गणना करके करता है। स्वाभाविक रूप से, मापा आवृत्तियों के लिए ऊपरी सीमा को Nyqvist-Shannon नमूनाकरण प्रमेय का पालन करना चाहिए; यानी, यह लगभग एमसीयू की घड़ी की आवृत्ति के आधे के बराबर होगा। वास्तव में सीमा बहुत कम है, क्योंकि एमसीयू को इंटरप्ट को संभालने, चर को बचाने, अंकगणितीय संचालन करने, परिणाम प्रदर्शित करने आदि के लिए कोड निष्पादित करना होगा। 48 मेगाहर्ट्ज एमसीयू के साथ मेरे प्रयोगों में मापने योग्य संक्रमणों के बीच घड़ी चक्रों की न्यूनतम संख्या थी लगभग 106। इसलिए, इस मामले में मापने योग्य आवृत्ति रेंज की ऊपरी सीमा 48, 000/212/2 = 226.4 kHz होगी।
जबकि एमसीयू सिग्नल की अवधि को मापता है, यह इसकी पल्स चौड़ाई भी निर्धारित कर सकता है, पी: सिग्नल वोल्टेज का समय उच्च रहता है। दूसरे शब्दों में, निम्न-से-उच्च और उच्च-से-निम्न संक्रमणों के बीच का समय। सिग्नल के कर्तव्य चक्र को तब निम्न प्रतिशत के रूप में परिभाषित किया जाता है:
ड्यूटी = १००% * पी / टी
जैसे आवृत्ति के मामले में, नाड़ी की चौड़ाई पर एक व्यावहारिक सीमा होती है। उपरोक्त उदाहरण का उपयोग करते हुए, 106 घड़ी चक्र पल्स की चौड़ाई को 2.21 माइक्रोसेकंड से कम नहीं करेंगे। या, 226.4 kHz पर 50% से कम नहीं।
वर्ग तरंग संकेतों की ऊपरी आवृत्ति सीमा को बढ़ाने के तरीकों में से एक डिजिटल डिवाइडर का अनुप्रयोग है जो फ्लिप-फ्लॉप का उपयोग करता है। इनपुट फ़्रीक्वेंसी को n से विभाजित करने पर औसत दर्जे की ऊपरी सीमा n गुना बढ़ जाएगी। यह अच्छी खबर है, डिजिटल डिवाइडर में एक मूलभूत दोष है: विभाजित सिग्नल पल्स चौड़ाई (और कर्तव्य चक्र) की जानकारी खो देता है! डिवाइडर के काम करने के तरीके के कारण, उनके आउटपुट में हमेशा 50% कर्तव्य चक्र होता है। बकवास…
निम्नलिखित पृष्ठों में, हालांकि, मैं दिखाऊंगा कि कैसे आवृत्ति को डिजिटल रूप से विभाजित किया जाए और मूल पल्स चौड़ाई को संरक्षित किया जाए जिससे मुझे सीधे गिनती द्वारा लगाए गए सीमाओं से परे संकेतों को मापने की अनुमति मिल सके।
चरण 1: डिजिटल फ्रीक्वेंसी डिवीजन
पारंपरिक डिजिटल फ़्रीक्वेंसी डिवाइडर फ्लिप-फ्लॉप का उपयोग करते हैं; यह ट्यूटोरियल मानक जेके फ्लिप-फ्लॉप का उपयोग करके डिवाइडर बनाने के सिद्धांतों को अच्छी तरह से समझाता है। यह एमसीयू के लिए बहुत अधिक इनपुट आवृत्तियों की समस्या को हल करता है, लेकिन इसमें एक बड़ी कमी है: विभाजित सिग्नल में इनपुट सिग्नल के कर्तव्य के बावजूद 50% कर्तव्य चक्र है! यह देखने के लिए कि ऐसा क्यों है, पहले दो आंकड़ों को देखें। अवधि टी और पल्स चौड़ाई पी के साथ मूल सिग्नल जेके फ्लिप-फ्लॉप के घड़ी पिन में खिलाया जाता है जबकि इसके जे और के पिन हर समय उच्च होते हैं (पहला आंकड़ा)। 3.3V तर्क भर में ग्रहण किया जाता है। आइए मान लें कि फ्लिप-फ्लॉप घड़ी के सकारात्मक (यानी, बढ़ते) किनारे से ट्रिगर होता है। इन शर्तों के तहत, आउटपुट पिन (व्यक्तिगत "फ्लिप्स" और "फ्लॉप") की स्थिति में परिवर्तन हर बार क्लॉक पिन के निम्न से उच्च पर जाने पर होता है। घड़ी के उच्च से निम्न संक्रमण (यानी, नकारात्मक किनारे) को पूरी तरह से नजरअंदाज कर दिया जाता है। दूसरा आंकड़ा देखें। आउटपुट पिन, क्यू, एक संकेत का उत्सर्जन करता है जिसकी अवधि मूल अवधि से दोगुनी है, यानी इसकी आवृत्ति आधी हो गई है। आउटपुट की पल्स चौड़ाई हमेशा T के बराबर होती है। नतीजतन, मूल पल्स चौड़ाई, P खो जाती है।
तीसरे आंकड़े में दिखाए गए कॉन्फ़िगरेशन में एक और जेके फ्लिप-फ्लॉप जोड़ना मूल आवृत्ति को 4 से विभाजित करता है। उसी अनुक्रमिक तरीके से अधिक फ्लिप-फ्लॉप जोड़ना आवृत्ति को 2: 8, 16, 32, आदि की बाद की शक्तियों से विभाजित करता है।
समस्या: पल्स चौड़ाई को संरक्षित करते हुए एक वर्ग तरंग की आवृत्ति को कैसे विभाजित किया जाए?
विचार मिश्रण में एक नकारात्मक बढ़त ट्रिगर जेके फ्लिप-फ्लॉप को ठीक से जोड़ना है। चलो इसे "नेग एफएफ" कहते हैं; चौथा आंकड़ा देखें। यहां, "ठीक से" का अर्थ है कि नए फ्लिप-फ्लॉप के जे और के पिन पिछले आंकड़े में दिखाए गए डिवाइडर-बाय -4 ("पॉज़ एफएफ") के क्रमशः क्यू और क्यूबर आउटपुट पिन से बंधे हैं। (यहां, "बार" तार्किक निषेध को इंगित करने वाले क्यू प्रतीक पर क्षैतिज पट्टी है।) यह देखने के लिए कि यह क्या हासिल करता है, पांचवें आंकड़े में "नेग एफएफ" की फ़ंक्शन टेबल पर एक नज़र डालें: नेग के आउटपुट पिन, क्यू और क्यूबर, क्रमशः इसके इनपुट पिन, J और K की स्थिति को मिरर करें। जिसका अर्थ है कि वे स्थिति Q और Qbar की स्थिति को दर्शाते हैं। लेकिन, नेग की फ्लिप-फ्लॉप कार्रवाई को मूल सिग्नल के नकारात्मक किनारे की प्रतीक्षा करनी चाहिए, जो सकारात्मक किनारे के बाद समय पी पर आता है। आह!
परिणामी तरंगों को छठे चित्र में दिखाया गया है। "Pos Q" 1 / 4th फ़्रीक्वेंसी पर सिग्नल आउटपुट करता है, "Pos Qbar" उलटा है, "Neg Q" "Pos Q" को पल्स चौड़ाई P द्वारा स्थानांतरित करता है, और "Neg Qbar" इसका उलटा है। आप सत्यापित कर सकते हैं कि तार्किक और "Pos Qbar" और "Neg Q" मूल पल्स चौड़ाई P और 1/4 फ़्रीक्वेंसी की विशेषता वाली पल्स ट्रेन का उत्पादन करते हैं। बिंगो!
सबसे पहले मैंने एमसीयू को खिलाने के लिए बिल्कुल इस आउटपुट सिग्नल का इस्तेमाल किया। हालांकि, परिचय में उल्लिखित एमसीयू की 106 चक्र सीमा के कारण यह बहुत कम पल्स चौड़ाई के लिए समस्याग्रस्त हो गया। मैंने एक और आउटपुट चुनकर इस छोटी सी समस्या को हल किया है: इसके बजाय "Pos Qbar" और "Neg Qbar"। तरंगों पर एक नज़र आपको यह विश्वास दिलाना चाहिए कि इस विशेष तरंग, P' की पल्स चौड़ाई, P के लिए (0, T) रेंज के बजाय T और 2T के बीच भिन्न होती है। P को P से आसानी से पुनर्प्राप्त किया जा सकता है:
पी = 2टी - पी'
चरण 2: अनुशंसित हार्डवेयर
मैं वास्तव में इलेक्ट्रॉनिक शौकियों के सापेक्ष नवागंतुक को पसंद करता हूं: 32-बिट एआरएम कॉर्टेक्स एम0+ प्रोसेसर पर आधारित एटमेल एसएएम डी21 एमसीयू 48 मेगाहर्ट्ज की घड़ी की दर पर काम कर रहा है, जो पुराने एटमेल्स की तुलना में बहुत अधिक है। इस परियोजना के लिए मैंने खरीदा:
- एडफ्रूट से इट्सीबिट्सी एम0 एक्सप्रेस एमसीयू बोर्ड
- मेरे पास Adafruit की एक रिचार्जेबल LiPo बैटरी थी
- मोनोक्रोम 128x32 SPI OLED डिस्प्ले (आपने अनुमान लगाया: Adafruit)
- टेक्सास इंस्ट्रूमेंट्स से दोहरी सकारात्मक-किनारे-ट्रिगर जेके फ्लिप-फ्लॉप एसएन७४एचसी१०९
- टेक्सास इंस्ट्रूमेंट्स से डुअल नेगेटिव-एज-ट्रिगर जेके फ्लिप-फ्लॉप SN74HC112
- टेक्सास इंस्ट्रूमेंट्स से चौगुनी और गेट CD74AC08E
- टेक्सास इंस्ट्रूमेंट्स से चौगुनी या गेट CD74AC32E
चरण 3: सर्किट
पहला आंकड़ा फ़्रीक्वेंसी/ड्यूटी मीटर का एक सरलीकृत योजनाबद्ध दिखाता है। 3.3 V CMOS तर्क पूरे मान लिया गया है। नतीजतन, इनपुट स्क्वायर वेव का आयाम संबंधित V. के बीच होना चाहिएआईएच स्तर (यानी, 2 वी) और 3.3 वी। यदि नहीं, तो आपको तदनुसार इसे ऊपर या नीचे स्केल करने की आवश्यकता है। ज्यादातर मामलों में एक साधारण वोल्टेज विभक्त पर्याप्त होगा। यदि आप मीटर के अपने संस्करण को एक अलग तर्क स्तर पर डिज़ाइन करना चाहते हैं, तो आपको एक अन्य माइक्रो नियंत्रक (एमसीयू), बैटरी और वांछित स्तर पर काम करने वाले डिस्प्ले का उपयोग करना होगा। इस प्रोजेक्ट में इस्तेमाल किए गए लॉजिक गेट और फ्लिप-फ्लॉप 2 वी और 6 वी के बीच कहीं भी लॉजिक लेवल के साथ काम करते हैं और ज्यादातर मामलों में ठीक होना चाहिए।
जैसा कि दिखाया गया है, सॉफ्टवेयर एसपीआई प्रोटोकॉल के माध्यम से डिस्प्ले के साथ संचार करने के लिए इट्सीबिट्सी एमसीयू पिन 9-13 का उपयोग करता है। 3V पिन पूरे सर्किट को पावर डिलीवर करता है। डिजिटल इनपुट पिन 3 विश्लेषण किए गए सिग्नल को स्वीकार करता है, जबकि पिन 2 और 4 सिग्नल स्रोत को नियंत्रित करते हैं: या तो गेट AND3 (कम इनपुट फ़्रीक्वेंसी) के माध्यम से आने वाला सीधा सिग्नल, या चरण 2 में वर्णित गेट AND4 (उच्च इनपुट फ़्रीक्वेंसी) के माध्यम से 4 से विभाजित सिग्नल अगले चरण में चर्चा किया गया कोड स्वचालित रूप से आने वाली आवृत्ति रेंज का पता लगाता है और सिग्नल स्रोत को उचित रूप से स्विच करता है।
योजनाबद्ध डिजिटल चिप कनेक्शन की वास्तविक जटिलता को नहीं दिखाता है। दूसरी छवि दिखाती है कि प्रोजेक्ट ब्रेडबोर्ड पर कैसा दिखेगा। इनपुट सिग्नल लाल तार के माध्यम से दोहरी सकारात्मक किनारे फ्लिप-फ्लॉप के 2CLK पिन पर आता है। सावधानी: आम तौर पर, इस फ्लिप-फ्लॉप के सभी J और K पिनों को ऊंचा रखा जाना चाहिए, लेकिन SN74HC109 विशेष रूप से इसके बजाय Kbar पिन - एक उल्टा K पिन - की सुविधा देता है। इसलिए, इस पिन को ग्राउंड किया जाना चाहिए! SN74HC112 में पहले नकारात्मक किनारे फ्लिप-फ्लॉप में इसका 1K और 1J पिन SN74HC109 के 1Q और 1Qbar पिन से जुड़ा है। SN74HC112 में दूसरा फ्लिप-फ्लॉप अप्रयुक्त है और इसके इनपुट पिन (2K, 2J, 2CLRbar) ग्राउंडेड हैं। सभी फ्लिप-फ्लॉप में अन्य सभी अतिरिक्त पिन प्रीबार (प्रीसेट) और सीएलआरबार (स्पष्ट) तार्किक उच्च से जुड़े होने चाहिए। अप्रयुक्त घड़ी और आउटपुट पिन असंबद्ध छोड़ दिए जाते हैं। इसी तरह, सभी गेटों में अप्रयुक्त इनपुट पिन को ग्राउंड किया जाता है, जबकि अप्रयुक्त आउटपुट पिन को असंबद्ध छोड़ दिया जाता है। जैसा कि मैंने अपने "इनविजिबल किलर ऑफ द फोन रिंग" इंस्ट्रक्शनल में चर्चा की, लॉजिकल चिप्स के अप्रयुक्त इनपुट पिन को ग्राउंडिंग यादृच्छिक दोलनों को समाप्त करता है और बैटरी पावर बचाता है।
चरण 4: कोड और कम आवृत्तियों को मापना
स्वाभाविक रूप से, सभी क्रियाएं नीचे लिंक किए गए कोड में होती हैं। जब पिन 3 पर आने वाला इनपुट डिजिटल लो से हाई पर स्विच होता है, तो एमसीयू अपनी आंतरिक 48 मेगाहर्ट्ज घड़ी की दालों की गिनती शुरू कर देता है। यह उच्च से निम्न संक्रमण के क्षण को नोट करता है और अगले निम्न से उच्च स्विच तक गिनती जारी रखता है, जब यह पूरी प्रक्रिया को फिर से शुरू करता है। पहली गिनती पल्स चौड़ाई का प्रतिनिधित्व करती है, जबकि पूरी गिनती सिग्नल की अवधि का प्रतिनिधित्व करती है। और यही पूरा रहस्य है।
CPU इन ट्रांज़िशन को हार्डवेयर इंटरप्ट के माध्यम से नोट करता है। SAMD21 में कई घड़ियां हैं; मेरा कोड TC3 वन का उपयोग करता है। प्रारंभ में, मैंने इंटरप्ट हैंडलर को कोड करने में बहुत प्रयास के लिए M0 की डेटा शीट ब्रेसिंग को पढ़कर शुरू किया है, लेकिन जल्द ही मैंने Arduino फोरम पोस्ट में इलेक्ट्रो_95, मार्टिनएल और रुकस द्वारा बहुत अधिक संबंधित कोड की खोज की है जिसका योगदान है विधिवत स्वीकार किया। मैंने उनके संयुक्त कोड को खदान में शामिल और संशोधित किया; मुझे बहुत समय बचा रहा है!
जैसा कि मैंने पहले उल्लेख किया है, सिग्नल रिज़ॉल्यूशन ~ 106 सीपीयू चक्रों द्वारा इंटरप्ट के बीच कोड निष्पादित करने के लिए सीमित है। पल्स चौड़ाई संरक्षण के साथ डिजिटल डिवीजन उच्च आवृत्तियों का ख्याल रखता है। दूसरी ओर, कम आवृत्तियां एक और चुनौती पेश करती हैं: चूंकि TC3 क्लॉक काउंटर 16 बिट लंबा है, यह 65, 536 काउंट की सीमा को पार करने के बाद ओवरफ्लो हो जाता है। एक अतिप्रवाह रुकावट जोड़कर इस स्थिति को संभाल सकता है, लेकिन एक अलग समाधान चुना: टीसी 3 हार्डवेयर 48 मेगाहर्ट्ज के बजाय एक पूर्व-स्केल्ड (यानी, सॉफ़्टवेयर-विभाजित) सीपीयू घड़ी का उपयोग कर सकता है। इस प्रकार, यदि सिग्नल की अवधि अतिप्रवाह सीमा तक पहुंचती है, तो कोड TC3 को अगली अवधि के लिए 24 मेगाहर्ट्ज काउंट का उपयोग करने का निर्देश दे सकता है और, वॉइला, काउंटर 32, 768 काउंट से नीचे चला जाता है। और भी कम आवृत्तियों के लिए TC3 को 12 मेगाहर्ट्ज दालों, आदि की गणना करने का निर्देश दिया जा सकता है। TC3 काउंटर को अतिप्रवाह सीमा के भीतर रखने के लिए, हिस्टैरिसीस के साथ, सिग्नल की आवृत्ति के आधार पर उपयुक्त प्रीस्केलर स्वचालित रूप से निर्धारित किया जाता है। नतीजतन, डिवाइस की सीमा का निचला छोर लगभग 43 हर्ट्ज है।
कोड को फोर्क करने और इसे अपने प्रोजेक्ट में उपयोग करने के लिए आपका स्वागत है, लेकिन कृपया परिणाम प्रकाशित करते समय इसके स्रोत का उल्लेख करें।
कोड से लिंक करें।
सिफारिश की:
माइक्रोकंट्रोलर का उपयोग कर आवृत्ति मीटर: 8 कदम
माइक्रोकंट्रोलर का उपयोग कर फ़्रीक्वेंसी मीटर: यह ट्यूटोरियल केवल एक माइक्रोकंट्रोलर का उपयोग करके पल्स स्रोत की आवृत्ति की गणना करने का तरीका बताता है। पल्स स्रोत का उच्च वोल्टेज स्तर 3.3 V और निम्न 0V है। मैंने STM32L476, Tiva लॉन्चपैड, 16x2 अल्फ़ान्यूमेरिक LCD कुछ वायर ब्रेडबोर्ड का उपयोग किया है और 1K रेजि
Arduino UNO का उपयोग करके ड्रोन कैसे बनाएं - माइक्रोकंट्रोलर का उपयोग करके क्वाडकॉप्टर बनाएं: 8 कदम (चित्रों के साथ)
Arduino UNO का उपयोग करके ड्रोन कैसे बनाएं | माइक्रोकंट्रोलर का उपयोग करके क्वाडकॉप्टर बनाएं: परिचय मेरे यूट्यूब चैनल पर जाएंएक ड्रोन खरीदने के लिए एक बहुत महंगा गैजेट (उत्पाद) है। इस पोस्ट में मैं चर्चा करने जा रहा हूँ कि मैं इसे सस्ते में कैसे बना सकता हूँ ?? और आप इसे सस्ते दाम पर कैसे बना सकते हैं … वैसे भारत में सभी सामग्री (मोटर, ईएससी
7 सेगमेंट डिस्प्ले के साथ 8051 माइक्रोकंट्रोलर का उपयोग करके 0 से 99 तक की गणना कैसे करें: 5 कदम (चित्रों के साथ)
7 सेगमेंट डिस्प्ले के साथ 8051 माइक्रोकंट्रोलर का उपयोग करके 0 से 99 तक कैसे गिनें
Arduino का उपयोग करके AC पावर फैक्टर को कैसे मापें: 4 कदम
Arduino का उपयोग करके AC पावर फैक्टर को कैसे मापें: हाय सब लोग! यह मेरा तीसरा निर्देश है, आशा है कि आपको यह जानकारीपूर्ण लगेगा :-) यह एक निर्देश योग्य होगा कि कैसे एक Arduino का उपयोग करके एक बुनियादी शक्ति कारक मापन किया जाए। इससे पहले कि हम शुरू करें कुछ बातों को ध्यान में रखना चाहिए: यह केवल वाई-फाई काम करेगा
कस्टम सिल्वर केबल्स ऑडियो/डिजिटल/उच्च आवृत्ति/जीपीएस: 7 कदम
कस्टम सिल्वर केबल्स ऑडियो/डिजिटल/उच्च आवृत्ति/जीपीएस: कई नए ऑडियो/वीडियो मोड और नए उपकरणों के साथ, आइपॉड के लिए ऑडियो और अब वीडियो के लिए डिजिटल दोनों के साथ हमें अपने सिस्टम को अधिक जटिल केबल वाले नए उपकरणों से जोड़ना होगा। कुछ बहुत महँगे… इनमें अवयव अवश्य होने चाहिए & निर्माण परियोजना के लिए सामग्री