Penapis lulus rendah: semua yang perlu anda ketahui mengenai litar ini

litar penapis lulus rendah

Coil dan op amp membolehkan anda membuat litar yang sangat menarik, seperti yang terkenal penapis frekuensi. Penapis ini mempunyai banyak aplikasi dalam industri elektronik. Seperti kes saringan lulus rendah, penapis lulus tinggi, dll. Mereka sangat menarik untuk aplikasi suara tertentu, dapat menapis suara, atau lebih banyak atau lebih serius bunyi mengikut frekuensi mereka. Oleh itu, mereka sangat berguna.

Sekiranya anda ingin mengetahui lebih lanjut mengenai penapis lulus rendah, dan penapis lain, dan bagaimana ia dapat membantu anda dalam projek anda dengan Arduino atau DIY, saya mendorong anda untuk terus membaca ...

Penapis elektrik

Seperti namanya, penapis adalah rangkaian yang terdiri daripada rangkaian gegelung dan kapasitor, dan bahkan beberapa penguat operasi, untuk tujuan membiarkan hanya bahagian tertentu dari frekuensi yang berlalu. Maksudnya, dari keseluruhan spektrum frekuensi yang ada, mereka akan menyaring satu atau lebih bahagian untuk mengelakkannya melewati.

Ya untuk ejemplo Kami bercakap mengenai spektrum yang dapat didengar oleh manusia, dari 20 Hz hingga 20 Khz, dengan penapis yang dapat anda hilangkan yang paling rendah, atau yang paling tinggi, untuk hanya membiarkan suara treb / ​​bass lebih kurang. Ia adalah sesuatu yang banyak digunakan oleh sistem rakaman audio atau pembiakan, seperti mikrofon, pembesar suara, dll.

Jenis

Menurut jenis penapis, atau lebih tepatnya, bergantung pada frekuensi yang mereka blok atau yang mereka lalui, terdapat pelbagai jenis litar yang:

  • Penapis lulus rendah: mereka dipanggil kerana mereka adalah penapis yang membiarkan frekuensi terendah berlalu dan menekan atau mengurangkan lulus frekuensi yang lebih tinggi. Mereka terdiri daripada satu atau lebih gegelung (bersiri dengan bekalan kuasa dan beban), dan satu atau dua kapasitor shunt dengan bekalan kuasa dan beban. Ingat bahawa beban difahami sebagai peranti yang disambungkan ke penapis dan yang mengumpulkan output penapis ... Di dalam penapis ini terdapat juga varian, seperti L, T dan π.
  • Penapis lulus tinggi: saringan lulus tinggi adalah kebalikan dari lulus rendah, dalam kes ini, yang akan ditapis atau dibatasi ialah lulus frekuensi rendah, membiarkan frekuensi yang lebih tinggi berlalu. Di dalamnya elemen elektronik yang menyusunnya dilaburkan. Maksudnya, di sini kapasitor akan menjadi yang bersiri dengan bekalan kuasa dan beban, sementara gegelung akan dijauhi. Terdapat juga subtipe yang sama seperti dalam kes low pass filter.
  • Penapis pas jalur: Jenis penapis ini menggunakan dua kunci kadar lulus jalur frekuensi. Iaitu, kedua-duanya bertindak sebagai penapis lulus rendah dan sebagai penapis lulus tinggi, menentang laluan frekuensi terendah dan juga tertinggi pada masa yang sama. Dengan kata lain, ia hanya membenarkan frekuensi tengah melaluinya.
  • Penapis jalur: ini adalah kebalikan dari yang sebelumnya, yang dilakukannya ialah menyaring lulus frekuensi pertengahan dan hanya membiarkan melalui frekuensi terendah dan tertinggi.

Ingatlah itu induktansi mereka membiarkan melalui frekuensi rendah dan menentang laluan frekuensi tinggi. Sebaliknya, kapasitor mereka membiarkan frekuensi tinggi dan menentang laluan frekuensi rendah.

Saya ingin menambahkan penapis itu pada tahap praktikal mereka tidak sempurna, dan mereka selalu dapat melepaskan beberapa frekuensi rendah atau tinggi yang harus anda halang. Walau bagaimanapun, mereka menjalankan tugas mereka dengan baik untuk kebanyakan aplikasi.

Dan akhirnya, saya juga ingin menjelaskan perkara lain, dan itu adalah bahawa anda pasti pernah mendengar mengenai perkara tersebut Penapis EMA dan DEMA. Penapis EMA (Exponential Moving Average) membolehkan anda menerapkan penapis jenis ini dengan cara yang mudah dalam peranti yang disematkan. Bagi DEMA (Double Exponential Moving Average), mereka mempunyai tindak balas yang lebih pantas daripada EMA, mengekalkan penekanan bunyi yang anda ingin hindari.

Faktor alfa

El faktor alpha, yang akan anda lihat yang muncul dalam kod Arduino IDE di bahagian seterusnya, adalah parameter yang menentukan tingkah laku penapis eksponensial. Ini berkaitan dengan frekuensi pemotongan:

  • Alpha = 1: yang memberikan isyarat kepada output yang tidak difilter.
  • Alpha = 0: nilai penapis akan selalu 0.
  • Alpha = x: nilai lain dapat memperoleh perubahan lain dalam penapis EMA. Sekiranya anda mengurangkan faktor Alpha, anda akan melemahkan isyarat frekuensi yang diperoleh lebih banyak, dan masa tindak balas sistem juga meningkat (memerlukan masa lebih lama untuk stabil).

Penapis dan Arduino

Bas Arduino I2C

Untuk penggunaan penapis ini, penggunaan perpustakaan untuk Arduino IDE akan menjadikan kerja anda lebih mudah. Anda boleh menggunakan ini sama.

Anda harus tahu bahawa tidak perlu membuat litar penapis lulus tinggi atau penuras lulus rendah untuk menyambungkannya ke papan Arduino anda dan bekerjasama dengannya. Walaupun anda boleh bereksperimen dan membuat jenis penapis mudah ini, anda juga dapat menguji bagaimana EMA berfungsi dengan hanya papan Arduino dan kod ringkas untuk Arduino IDE. Ini adalah satu-satunya perkara yang perlu anda lihat bagaimana ia bertugas menyaring beberapa frekuensi (dalam hal ini tindakan disimulasikan dan beberapa bilangan bulat / apungan hanya disaring mensimulasikan apa yang akan saya lakukan tapis sebenarnya).

Berikut adalah beberapa contoh kod yang boleh anda gunakan untuk berlatih.

Contoh penapis digital ringkas dalam jenis Arduino PAS Rendah:

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);

Contoh kod untuk jenis Arduino Hantaran tinggi:

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
}

Contoh kod Arduino hantaran band:

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);                              
}

Contoh kod Arduino untuk band:

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);                                
}

Ingat bahawa ADC adalah penukar Arduino Analog Digital. Gunakan julat 0-5v, bahagikan kepada julat 0-1023. Sekiranya nilainya 0v, nilai digital 0 diambil, dan jika 5v, 1023 akan diambil sebagai nilai isyarat, 1v boleh menjadi 204m, 2v akan menjadi 408, dll.

Saya menasihati anda untuk mengubah dan bereksperimen dengan kod-kod ini. Hasilnya anda boleh lihat secara grafik terima kasih kepada Serial Plotter of the Arduino IDE… Ingatlah bahawa jika anda mempunyai pertanyaan mengenai pengaturcaraan Arduino atau cara menggunakan IDE, anda boleh memuat turun kursus HwLibre percuma dalam bentuk PDF.


Menjadi yang pertama untuk komen

Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.