কয়েলস এবং অপ্প এম্পস আপনাকে খুব আকর্ষণীয় সার্কিট তৈরি করতে দেয় যেমন বিখ্যাত ফ্রিকোয়েন্সি ফিল্টার। এই ফিল্টারগুলিতে বৈদ্যুতিন শিল্পে প্রচুর অ্যাপ্লিকেশন রয়েছে। লো পাস ফিল্টার, হাই পাস ফিল্টার ইত্যাদির ক্ষেত্রে যেমন হয় তারা নির্দিষ্ট সাউন্ড অ্যাপ্লিকেশনগুলির জন্য বিশেষত আকর্ষণীয়, শব্দগুলি ফিল্টার করতে সক্ষম হয়েছে বা তাদের ফ্রিকোয়েন্সি অনুযায়ী কম-বেশি গুরুতর শব্দ। সুতরাং, তারা খুব দরকারী।
আপনি যদি আরও জানতে চান কম পাস ফিল্টার, এবং অন্যান্য ফিল্টারগুলি, এবং কীভাবে তারা আপনাকে আপনার প্রকল্পগুলিতে আরডিনো বা ডিআইওয়াই দিয়ে সাহায্য করতে পারে, আমি আপনাকে পড়া চালিয়ে যেতে উত্সাহিত করি ...
বৈদ্যুতিক ফিল্টার
এর নাম অনুসারে, ফিল্টারটি এমন একটি সার্কিট যা কয়েল এবং ক্যাপাসিটার এবং এমনকি কিছু অপারেশনাল পরিবর্ধকগুলির তৈরির উদ্দেশ্যে তৈরি হয় of একটি ফ্রিকোয়েন্সি কেবল নির্দিষ্ট কিছু অংশ দেওয়া। অর্থাৎ উপলভ্য ফ্রিকোয়েন্সিগুলির পুরো বর্ণালীগুলির মধ্যে, তারা এগুলির মধ্য দিয়ে যেতে বাধা দিতে এক বা একাধিক অংশ ফিল্টার করবে।
জন্য যদি উদাহরণস্বরূপ আমরা মানুষের দ্বারা শ্রাব্য বর্ণালী সম্পর্কে কথা বলছি, যা 20 হার্জ থেকে 20 Khz পর্যন্ত যায় ফিল্টারগুলি দিয়ে আপনি কেবলমাত্র কম বা ত্রৈমাসিক / খাদ শব্দটিকেই পাস করতে দিতে কেবল সর্বনিম্ন বা সর্বোচ্চকে সরিয়ে ফেলতে পারেন। এটি এমন কিছু যা অনেক অডিও রেকর্ডিং বা প্রজনন সিস্টেম ব্যবহার করে যেমন মাইক্রোফোনস, স্পিকার ইত্যাদি
আদর্শ
- কম পাস ফিল্টার
- উচ্চ পাস ফিল্টার
- ফ্রিকোয়েন্সি ফিল্টার গ্রাফ
অনুযায়ী মতে ফিল্টার প্রকার, বা পরিবর্তে, তারা যে ফ্রিকোয়েন্সি অবরুদ্ধ করে থাকে বা তার মাধ্যমে দেওয়া তার উপর নির্ভর করে বিভিন্ন ধরণের সার্কিট রয়েছে:
- কম পাস ফিল্টার: এগুলিকে তাই বলা হয় কারণ এগুলি সেই ফিল্টার যা সর্বনিম্ন ফ্রিকোয়েন্সিগুলিকে পাস এবং দমন করতে বা উচ্চতর ফ্রিকোয়েন্সিগুলির পাসকে হ্রাস করতে দেয়। এগুলিতে এক বা একাধিক কয়েল (বিদ্যুৎ সরবরাহ এবং লোডের সাথে ধারাবাহিকভাবে) এবং বিদ্যুৎ সরবরাহ এবং লোড সহ এক বা দুটি শান্ট ক্যাপাসিটার রয়েছে। মনে রাখবেন যে লোডটি ফিল্টারটির সাথে সংযুক্ত ডিভাইস হিসাবে বোঝা গেছে এবং এটি ফিল্টারের আউটপুট সংগ্রহ করে ... এই ফিল্টারগুলির মধ্যে এল, টি এবং এর মতো বিভিন্ন রূপ রয়েছে are π.
- উচ্চ পাস ফিল্টার: উচ্চ পাস ফিল্টার নিম্ন পাসের বিপরীত, এই ক্ষেত্রে, ফিল্টার বা সীমা কী হবে তা কম ফ্রিকোয়েন্সি পাস, উচ্চতর ফ্রিকোয়েন্সিগুলি পাস করার অনুমতি দেয়। এতে এটি রচনা করা বৈদ্যুতিন উপাদানগুলি বিনিয়োগ করা হয়। এটি হ'ল এখানে ক্যাপাসিটারগুলি পাওয়ার সাপ্লাই এবং লোডের সাথে সিরিজের সাথে থাকবে এবং কয়েলগুলি বন্ধ করে দেওয়া হবে। লো পাস ফিল্টারগুলির ক্ষেত্রে একই সাব টাইপগুলি রয়েছে।
- ব্যান্ড পাস ফিল্টার: এই ধরণের ফিল্টার দুটি ফ্রিকোয়েন্সি ব্যান্ড পাসের হার লকগুলি সরবরাহ করে। এটি হ'ল, তারা নিম্ন পাস ফিল্টার এবং উচ্চ পাস ফিল্টার হিসাবে উভয়ই কাজ করে, সর্বনিম্ন ফ্রিকোয়েন্সিগুলির পাসের বিরোধিতা করে এবং একই সাথে সর্বোচ্চও। অন্য কথায়, এটি কেবল মাঝারি ফ্রিকোয়েন্সিগুলির মধ্য দিয়ে যেতে দেয়।
- ব্যান্ড ফিল্টার: এটি পূর্বেরটির ঠিক বিপরীত, এটি যা করে তা মধ্য ফ্রিকোয়েন্সিগুলির পাস ফিল্টার করে এবং কেবলমাত্র সর্বনিম্ন এবং সর্বোচ্চ ফ্রিকোয়েন্সিগুলির মধ্য দিয়ে যায় through
মনে আছে inductance তারা কম ফ্রিকোয়েন্সি দিয়ে যায় এবং উচ্চ ফ্রিকোয়েন্সিগুলি পাস করার বিরোধিতা করে। পরিবর্তে, ক্যাপাসিটারগুলিকে তারা উচ্চ ফ্রিকোয়েন্সি দিয়ে যায় এবং কম ফ্রিকোয়েন্সিগুলি পাস করার বিরোধিতা করে।
আমি ফিল্টারগুলি ব্যবহারিক স্তরে যুক্ত করতে চাই তারা নিখুঁত হয় না, এবং এগুলি সর্বদা কিছু নিম্ন বা উচ্চ ফ্রিকোয়েন্সি পাস করতে পারে যা আপনার ব্লক করা উচিত। তবে বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য তারা তাদের কাজটি বেশ ভালভাবে করে।
এবং অবশেষে, আমি অন্য একটি বিষয়ও স্পষ্ট করে বলতে চাই, এবং এটি হ'ল আপনি অবশ্যই এই বিষয়ে শুনেছেন EMA এবং DEMA ফিল্টার। EMA (এক্সফোনেনশিয়াল মুভিং এভারেজ) ফিল্টার আপনাকে এম্বেডড ডিভাইসে সাধারণ উপায়ে এই ধরণের ফিল্টার প্রয়োগ করতে দেয়। ডিএমএ (ডাবল এক্সফোনেনশিয়াল মুভিং এভারেজ) হিসাবে, তাদের এএমএর চেয়ে দ্রুত সাড়া আছে, আপনি যে শব্দটি এড়াতে চান তার ভাল দমন বজায় রেখে।
আলফা ফ্যাক্টর
El আলফা ফ্যাক্টর, যা আপনি দেখতে পাবেন যে পরবর্তী বিভাগে আরডুইনো আইডিই কোডগুলিতে প্রদর্শিত হবে, এটি হ'ল প্যারামিটার যা ক্ষতিকারক ফিল্টারটির আচরণকে শর্ত করে। এটি কাটার অফ ফ্রিকোয়েন্সি সম্পর্কিত:
- আলফা = 1: যা না ছাপানো আউটপুটকে সংকেত সরবরাহ করে।
- আলফা = 0: ফিল্টার মান সর্বদা 0 হবে।
- আলফা = এক্স: অন্যান্য মানগুলি EMA ফিল্টারটিতে অন্যান্য পরিবর্তনগুলি পেতে পারে। আপনি যদি আলফা ফ্যাক্টর হ্রাস করেন তবে আপনি আরও বেশি পরিমাণে প্রাপ্ত ফ্রিকোয়েন্সি সংকেতকে নরম করবেন এবং সিস্টেমের প্রতিক্রিয়া সময়টিও বৃদ্ধি পেয়েছে (স্থিতিশীল হতে বেশি সময় নেয়)।
ফিল্টার এবং আরডুইনো
আপনার জানা উচিত যে সার্কিটটি তৈরি করা প্রয়োজন নয় উচ্চ পাস ফিল্টার বা লো পাস ফিল্টার এটি আপনার আরডুইনো বোর্ডের সাথে সংযুক্ত করতে এবং এটির সাথে কাজ করতে। যদিও আপনি এই ধরণের সরল ফিল্টার পরীক্ষা এবং তৈরি করতে পারেন, আপনি এটিও পরীক্ষা করতে পারেন কীভাবে কোনও EMA ঠিক আরডুইনো বোর্ড এবং আরডুইনো আইডিইর জন্য একটি সাধারণ কোড দিয়ে কাজ করবে। এটি কেবলমাত্র আপনাকে দেখার দরকার যে এটি কীভাবে কিছু ফ্রিকোয়েন্সি ফিল্টার করার দায়িত্বে রয়েছে (এই ক্ষেত্রে ক্রিয়াটি সিমুলেটেড হয় এবং কিছু পূর্ণসংখ্যার / ফ্লোটগুলি কেবল ফিল্টার করা হয় আমি কি করব অনুকরণ ফিল্টার আসলে)।
এখানে কয়েকটি কোড নমুনা রয়েছে যা আপনি অনুশীলনের জন্য ব্যবহার করতে পারেন।
টাইপের আরডুইনোতে সাধারণ ডিজিটাল ফিল্টার উদাহরণ কম পাস:
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);
আরডুইনো টাইপের জন্য কোড উদাহরণ হাই পাস:
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 }
আরডুইনো কোড উদাহরণ ব্যান্ড পাস:
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); }
আরডুইনো কোড উদাহরণ ব্যান্ডের জন্য:
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); }
আমি আপনাকে এই কোডগুলি সংশোধন ও পরীক্ষা করার পরামর্শ দিচ্ছি। ফলাফল আপনি পারেন খুব গ্রাফিকালি দেখুন আরডুইনো আইডিইয়ের সিরিয়াল প্লটারকে ধন্যবাদ ... মনে রাখবেন যে আপনার যদি আরডুইনো প্রোগ্রামিং বা আইডিই ব্যবহার করার পদ্ধতি সম্পর্কে প্রশ্ন থাকে তবে আপনি ডাউনলোড করতে পারেন পিডিএফ এ বিনামূল্যে HwLibre কোর্স.