Coils और op amps आपको बहुत ही रोचक सर्किट बनाने की अनुमति देते हैं, जैसे कि प्रसिद्ध आवृत्ति फ़िल्टर। इन फिल्टरों में इलेक्ट्रॉनिक्स उद्योग में कई एप्लिकेशन हैं। जैसा कि कम पास फिल्टर, उच्च पास फिल्टर, आदि के साथ होता है। वे कुछ ध्वनि अनुप्रयोगों के लिए विशेष रूप से दिलचस्प हैं, उनकी आवृत्ति के अनुसार शोर, या अधिक या कम गंभीर ध्वनियों को फ़िल्टर करने में सक्षम हैं। इसलिए, वे बहुत उपयोगी हैं।
अगर आप इसके बारे में और जानना चाहते हैं लो पास फिल्टर, और अन्य फिल्टर, और वे कैसे Arduino या DIY के साथ आपकी परियोजनाओं में आपकी मदद कर सकते हैं, मैं आपको पढ़ने जारी रखने के लिए प्रोत्साहित करता हूं ...
इलेक्ट्रिक फिल्टर
जैसा कि इसके नाम से पता चलता है, एक फिल्टर एक सर्किट है जो कॉइल और कैपेसिटर की एक श्रृंखला से बना होता है, और यहां तक कि कुछ परिचालन एम्पलीफायरों के लिए, फ़्रीक्वेंसी पास के केवल कुछ भागों को देना। यही है, उपलब्ध आवृत्तियों के पूरे स्पेक्ट्रम के लिए, वे एक या एक से अधिक भागों को फिल्टर करेंगे ताकि उन्हें गुजरने से रोका जा सके।
अगर के लिए ejemplo हम मानव द्वारा स्पेक्ट्रम के श्रव्य के बारे में बात कर रहे हैं, जो 20 हर्ट्ज से 20 खुज़ तक जाता है, फ़िल्टर के साथ आप सबसे कम, या उच्चतम को समाप्त कर सकते हैं, केवल अधिक या कम तिहरा / बास ध्वनियों को पारित करने की अनुमति देते हैं। यह कुछ ऐसा है जो कई ऑडियो रिकॉर्डिंग या प्रजनन प्रणाली का उपयोग करते हैं, जैसे कि माइक्रोफोन, स्पीकर आदि।
प्रकार
अनुसार फ़िल्टर प्रकार, या यों कहें कि वे जिस आवृत्ति को रोकते हैं या जिस पर वे गुजरते हैं, उसके आधार पर, विभिन्न प्रकार के सर्किट होते हैं:
- लो पास फिल्टर: उन्हें इसलिए बुलाया जाता है क्योंकि वे वे फिल्टर हैं जो सबसे कम आवृत्तियों को पास करते हैं और उच्च आवृत्तियों के पास को दबाते हैं या कम करते हैं। वे एक या अधिक कॉइल (बिजली की आपूर्ति और लोड के साथ श्रृंखला में), और बिजली की आपूर्ति और लोड के साथ एक या दो शंट कैपेसिटर से मिलकर होते हैं। याद रखें कि लोड को फ़िल्टर से जुड़ा उपकरण समझा जाता है और जो फ़िल्टर के आउटपुट को इकट्ठा करता है ... इन फ़िल्टर के भीतर भी एल, टी जैसे वेरिएंट हैं। π.
- उच्च पास फिल्टर: उच्च पास फ़िल्टर निम्न पास के विपरीत है, इस मामले में, फ़िल्टर या सीमा क्या है कम आवृत्ति पास, उच्च आवृत्तियों को पास करने देता है। इसमें, यह रचना करने वाले इलेक्ट्रॉनिक तत्वों का निवेश किया जाता है। यही है, यहां कैपेसिटर बिजली की आपूर्ति और भार के साथ श्रृंखला में होंगे, जबकि कॉइल को हिलाया जाएगा। कम पास फिल्टर के मामले में भी वही उपप्रकार हैं।
- बंदपास छननी: इस प्रकार का फिल्टर दो आवृत्ति बैंड पास दर ताले को बाहर निकालता है। यही है, वे कम पास फिल्टर के रूप में और उच्च पास फिल्टर के रूप में कार्य करते हैं, सबसे कम आवृत्तियों के पारित होने का विरोध करते हैं और एक ही समय में उच्चतम भी होते हैं। दूसरे शब्दों में, यह केवल मध्य आवृत्तियों को गुजरने की अनुमति देता है।
- बैंड फिल्टर: यह पिछले एक के विपरीत है, यह क्या करता है कि यह मध्य आवृत्तियों के पास को फ़िल्टर करता है और केवल सबसे कम और उच्चतम आवृत्तियों के माध्यम से देता है।
वह याद रखें प्रेरण वे कम आवृत्तियों के माध्यम से जाने देते हैं और उच्च आवृत्तियों के पारित होने का विरोध करते हैं। बजाय, संधारित्र वे उच्च आवृत्तियों के माध्यम से जाने देते हैं और कम आवृत्तियों के पारित होने का विरोध करते हैं।
मैं उस फिल्टर को व्यावहारिक स्तर पर जोड़ना चाहूंगा वे सही नहीं हैं, और वे हमेशा कुछ कम या उच्च आवृत्तियों को पारित कर सकते हैं जिन्हें आपको ब्लॉक करना चाहिए। हालांकि, वे अधिकांश अनुप्रयोगों के लिए अपना काम काफी अच्छी तरह से करते हैं।
और अंत में, मैं एक और बात स्पष्ट करना चाहूंगा, और वह यह है कि आपने निश्चित रूप से इसके बारे में सुना होगा ईएमए और डीईएमए फिल्टर। EMA (घातीय मूविंग एवरेज) फिल्टर इस प्रकार के फिल्टर को एम्बेडेड उपकरणों में सरल तरीके से लागू करने की अनुमति देते हैं। DEMA (डबल एक्सपोनेंशियल मूविंग एवरेज) के रूप में, उनके पास ईएमए की तुलना में तेज़ प्रतिक्रिया है, शोर के अच्छे दमन को बनाए रखता है जिससे आप बचना चाहते हैं।
अल्फा कारक
El अल्फा कारक, जो आप देखेंगे कि अगले अनुभाग में Arduino IDE कोड में दिखाई देता है, वह पैरामीटर है जो घातीय फिल्टर के व्यवहार को स्थिति देता है। यह कटऑफ आवृत्ति से संबंधित है:
- अल्फा = 1: जो अनफ़िल्टर्ड आउटपुट को संकेत प्रदान करता है।
- अल्फा = 0: फ़िल्टर मान हमेशा 0 होगा।
- अल्फा = x: अन्य मान EMA फ़िल्टर में अन्य परिवर्तन प्राप्त कर सकते हैं। यदि आप अल्फा कारक को कम करते हैं, तो आप अधिक प्राप्त आवृत्ति संकेत को नरम कर देंगे, और सिस्टम की प्रतिक्रिया समय भी बढ़ जाता है (इसे स्थिर होने में अधिक समय लगता है)।
फिल्टर और Arduino
आपको पता होना चाहिए कि सर्किट बनाने के लिए आवश्यक नहीं है उच्च पास फिल्टर या कम पास फिल्टर इसे अपने Arduino बोर्ड से कनेक्ट करने और इसके साथ काम करने के लिए। यद्यपि आप इस प्रकार के सरल फ़िल्टर बना सकते हैं और प्रयोग कर सकते हैं, आप यह भी परख सकते हैं कि कैसे एक ईएमए सिर्फ Arduino बोर्ड और Arduino IDE के लिए एक सरल कोड के साथ काम करेगा। यह केवल एक चीज है जिसे आपको यह देखने की आवश्यकता है कि यह कुछ आवृत्तियों को फ़िल्टर करने के लिए कैसे है (इस मामले में कार्रवाई सिम्युलेटेड है और कुछ पूर्णांक / फ़्लोट बस फ़िल्टर किए गए हैं मैं क्या करूँगा अनुकरण फ़िल्टर वास्तव में)।
यहां कुछ कोड नमूने दिए गए हैं जिनका उपयोग आप अभ्यास करने के लिए कर सकते हैं।
प्रकार के Arduino में सरल डिजिटल फ़िल्टर का उदाहरण कम उत्तीर्ण:
float lowpass_prev_out[LOWPASS_ANALOG_PIN_AMT], lowpass_cur_out[LOWPASS_ANALOG_PIN_AMT]; int lowpass_input[LOWPASS_ANALOG_PIN_AMT]; int adcsample_and_lowpass(int pin, int sample_rate, int samples, float alpha, char use_previous) { // pin: Pin analógico de Arduino usado // sample_rate: El ratio adecuado // samples: Samples // alpha: El factor Alpha para el filtro paso bajo // use_previous: Si es true se sigue ajustando hasta el valor más reciente. float one_minus_alpha = 1.0-alpha; int micro_delay=max(100, (1000000/sample_rate) - 160); if (!use_previous) { lowpass_input[pin] = analogRead(pin); lowpass_prev_out[pin]=lowpass_input[pin]; } int i; for (i=samples;i>0;i--) { delayMicroseconds(micro_delay); lowpass_input[pin] = analogRead(pin); lowpass_cur_out[pin] = alpha*lowpass_input[pin] + one_minus_alpha*lowpass_prev_out[pin]; lowpass_prev_out[pin]=lowpass_cur_out[pin]; } return lowpass_cur_out[pin]; } int resulting_value; void setup() { Serial.begin(9600); resulting_value = adcsample_and_lowpass(0, 1000, 300, 0.015, false); } void loop() { resulting_value = adcsample_and_lowpass(0, 1000, 150, 0.015, true); Serial.println(resulting_value);
Arduino प्रकार के लिए कोड उदाहरण उच्च मार्ग:
int sensorPin = 0; //pin usado para el ADC int sensorValue = 0; //Inicia sensor variable equivalente a EMA Y float EMA_a = 0.3; //Inicialización del EMA Alpha int EMA_S = 0; //Iniciación del EMA s int highpass = 0; void setup(){ Serial.begin(115200); EMA_S = analogRead(sensorPin); } void loop(){ sensorValue = analogRead(sensorPin); //Lee el valor del sensor ADC EMA_S = (EMA_a*sensorValue) + ((1-EMA_a)*EMA_S); //Ejecuta el filtro EMA highpass = sensorValue - EMA_S; //Calcula la seña alta Serial.println(highpass); delay(20); //Espera 20ms }
Arduino कोड उदाहरण बैंड पास:
int sensorPin = 0; //Pin para el ADC int sensorValue = 0; //Inicia la variable del sensor, equivale a EMA Y float EMA_a_low = 0.3; //Inicia EMA Alpha float EMA_a_high = 0.5; int EMA_S_low = 0; //Inicia EMA S int EMA_S_high = 0; int highpass = 0; int bandpass = 0; void setup(){ Serial.begin(115200); EMA_S_low = analogRead(sensorPin); EMA_S_high = analogRead(sensorPin); } void loop(){ sensorValue = analogRead(sensorPin); //Lee el valor del sensor ADC EMA_S_low = (EMA_a_low*sensorValue) + ((1-EMA_a_low)*EMA_S_low); //Ejecuta EMA EMA_S_high = (EMA_a_high*sensorValue) + ((1-EMA_a_high)*EMA_S_high); highpass = sensorValue - EMA_S_low; bandpass = EMA_S_high - EMA_S_low; Serial.print(highpass); Serial.print(" "); Serial.println(bandpass); delay(20); }
Arduino कोड उदाहरण बैंड के लिए:
int sensorPin = 0; //Pin usado para el ADC int sensorValue = 0; //Inicio para EMA Y float EMA_a_low = 0.05; //Inicio de EMA alpha float EMA_a_high = 0.4; int EMA_S_low = 0; //Inicia EMA S int EMA_S_high = 0; int highpass = 0; int bandpass = 0; int bandstop = 0; void setup(){ Serial.begin(115200); EMA_S_low = analogRead(sensorPin); EMA_S_high = analogRead(sensorPin); } void loop(){ sensorValue = analogRead(sensorPin); //Lee el valor del sensor ADC EMA_S_low = (EMA_a_low*sensorValue) + ((1-EMA_a_low)*EMA_S_low); //Ejecuta EMA EMA_S_high = (EMA_a_high*sensorValue) + ((1-EMA_a_high)*EMA_S_high); bandpass = EMA_S_high - EMA_S_low; bandstop = sensorValue - bandpass; Serial.print(sensorValue); Serial.print(" "); Serial.print(EMA_S_low); Serial.print(" "); Serial.println(bandstop); delay(20); }
मैं आपको इन कोड के साथ संशोधित करने और प्रयोग करने की सलाह देता हूं। परिणाम आप कर सकते हैं बहुत चित्रमय रूप से देखें Arduino IDE के सीरियल प्लॉटर के लिए धन्यवाद ... याद रखें कि यदि आपके पास Arduino प्रोग्रामिंग के बारे में प्रश्न हैं या IDE का उपयोग कैसे करें, तो आप डाउनलोड कर सकते हैं पीडीएफ में नि: शुल्क HwLibre पाठ्यक्रम.