Arduino एक प्रोटोटाइप एक नंबर से मिलकर मंच है हार्डवेयर बोर्डों के साथ एक सॉफ्टवेयर abstraction परत। इस तरह के एक प्रश्न के लिए, अंतर्निहित हार्डवेयर की क्षमताओं पर विचार करना उपयोगी है, क्योंकि ये अंतिम सीमाएं प्रदान करते हैं। मुझे लगता है कि आप Arduino Uno/Nano का उपयोग कर रहे हैं, कहानी के कारण कहानी अलग है।
डेटाशीट के अनुसार, प्रत्येक एडीसी पढ़ने (पहले से परे) 13 एडीसी घड़ी चक्र लेता है। एडीसी घड़ी (एमसीयू से अलग) घड़ी कुछ कारकों से कम से कम 2 कारकों को सिस्टम घड़ी को विभाजित करके प्राप्त की जाती है। इसलिए 16 मेगाहट्र्ज बोर्ड पर यह प्रति सेकंड 0.6 मिलियन नमूने तक है। अब तक सब ठीक है। हालांकि, यह कहानी का अंत नहीं है, आपको अभी भी डेटा को पढ़ने की जरूरत है। यदि आप इंटरप्ट्स का उपयोग करते हैं, भले ही आप कुछ सरल करते हैं, अनुभव से पता चलता है कि आप प्रसंस्करण को बाधित करने के लिए लगभग 100 घड़ी खो देंगे। अब आप नीचे 126 के नमूने/दूसरे हैं। लेकिन यह एक सैद्धांतिक अधिकतम है।
डेटाशीट का कहना है कि एडीसी के लिए अधिकतम सटीकता के लिए 50kHz - 200kHz एडीसी घड़ी की आवश्यकता है। (wiring.c
में) Arduino कोड में, 128 का एक प्रभाग कारक चुना जाता है:
sbi(ADCSRA, ADPS2);
sbi(ADCSRA, ADPS1);
sbi(ADCSRA, ADPS0);
इसका मतलब है कि प्रत्येक रूपांतरण 128 * 13 = 1764 घड़ियों जो प्रति सेकंड 10K नमूनों की एक सैद्धांतिक अधिकतम पैदावार ले जाता है,। यह 0 बिटफ़ंक्शन केवल एडीसी रूपांतरण शुरू करने और इसके समाप्त होने की प्रतीक्षा करने से परे कुछ करता है, लेकिन यह बहुत खराब नहीं होना चाहिए। इसमें आपके पाठ्यक्रम का कोड शामिल नहीं है: readAnalog()
के परिणामों पर आपके द्वारा किए जाने वाले किसी भी प्रसंस्करण से अधिक नमूने कैप्चर करना अधिक कठिन हो जाएगा।लेकिन हां, 4 किलोहर्ट्ज़ पर कैप्चर करने के लिए आपको यह सुनिश्चित करना होगा कि कोड 1.5k घड़ी चक्र/नमूना से कम खर्च करता है, जो करने योग्य होना चाहिए। ध्यान दें कि यदि आप पांच रीडिंग कर रहे हैं जैसे आप पोस्ट किए गए कोड में कर रहे हैं, तो आपका कोड बहुत कम होने पर अधिकतम कैप्चर रेट 2kHz होगी।
जहाँ तक डेटा पर कब्जा करने के लिए कैसे के रूप में, आप तथ्य यह है कि प्रवर्धन के बिना माइक्रोफोन आप 0-5V रीडिंग है कि आप अगर आप analogRead()
उपयोग कर रहे हैं उम्मीद कर सकते हैं नहीं देंगे साथ सौदा करने की जरूरत है। वास्तव में, माइक्रोफ़ोन आउटपुट वोल्टेज सकारात्मक से नकारात्मक तक स्विंग करते हैं, हालांकि, नकारात्मक वोल्टेज एडीसी द्वारा नहीं उठाए जाएंगे, और जब तक आप अपना माइक्रोफ़ोन वोल्टेज ऑफसेट नहीं देते हैं, तब तक केवल शून्य के रूप में दिखाई दें।
मुझे बिल्कुल यकीन नहीं है कि आपका कोड जो अधिकतम आयाम से अधिकतम आयाम की तुलना करता है, वह माना जाता है। क्या आप ऑडियो डिजिटाइज करना चाहते हैं? इस मामले में आपको analogRead()
से एकत्रित सभी आयाम रीडिंग को सहेजने की आवश्यकता है, और फिर आप किसी अन्य कंप्यूटर पर एफएफटी चला सकते हैं: Arduino डेटा पर आवृत्ति विश्लेषण करने के लिए पर्याप्त तेज़ी से नहीं होने वाला है।
आप किस प्रकार का Arduino उपयोग कर रहे हैं? – angelatlarge