Filtr dolnoprzepustowy: wszystko, co musisz wiedzieć o tym obwodzie

obwód filtra dolnoprzepustowego

Cewki i wzmacniacze operacyjne pozwalają na tworzenie bardzo interesujących układów, takich jak słynny filtry częstotliwości. Filtry te mają wiele zastosowań w przemyśle elektronicznym. Podobnie jak w przypadku filtra dolnoprzepustowego, górnoprzepustowego itp. Są szczególnie interesujące w niektórych zastosowaniach dźwiękowych, ponieważ są w stanie filtrować szumy lub mniej lub bardziej poważne dźwięki w zależności od ich częstotliwości. Dlatego są bardzo przydatne.

Jeśli chcesz dowiedzieć się więcej o Filtr dolnoprzepustowyi inne filtry oraz jak mogą Ci pomóc w Twoich projektach z Arduino czy DIY, zachęcam do dalszej lektury ...

Filtry elektryczne

Jak sama nazwa wskazuje, filtr to obwód złożony z szeregu cewek i kondensatorów, a nawet niektórych wzmacniaczy operacyjnych, w celu przepuszczanie tylko niektórych części częstotliwości. Oznacza to, że z całego spektrum dostępnych częstotliwości będą filtrować jedną lub więcej części, aby zapobiec ich przejściu.

Jeśli dla ejemplo Mowa o widmie słyszalnym przez człowieka, które sięga od 20 Hz do 20 kHz, z filtrami można było wyeliminować najniższe lub najwyższe, aby przepuszczać tylko mniej lub bardziej wysokie tony / basy. Jest to coś, czego używa wiele systemów nagrywania lub odtwarzania dźwięku, takich jak mikrofony, głośniki itp.

Rodzaje

Stosownie typ filtra, a raczej, w zależności od częstotliwości, którą blokują lub przepuszczają, istnieją różne typy obwodów, które są:

  • Filtr dolnoprzepustowy: są tak nazywane, ponieważ są to filtry, które przepuszczają najniższe częstotliwości i tłumią lub redukują przejście wyższych częstotliwości. Składają się z jednej lub więcej cewek (połączonych szeregowo z zasilaczem i obciążeniem) oraz jednego lub dwóch kondensatorów bocznikowych z zasilaniem i obciążeniem. Pamiętaj, że przez obciążenie rozumie się urządzenie podłączone do filtra, które zbiera wyjście filtra ... W ramach tych filtrów występują również warianty, takie jak L, T i π.
  • Filtr górnoprzepustowy: filtr górnoprzepustowy jest przeciwieństwem filtra dolnoprzepustowego, w tym przypadku tym, co będzie filtrować lub ograniczać, jest pasmo niskich częstotliwości, przepuszczając wyższe częstotliwości. W to zainwestowane są elementy elektroniczne, które go tworzą. Oznacza to, że tutaj kondensatory będą połączone szeregowo z zasilaczem i obciążeniem, podczas gdy cewki będą bocznikowane. Istnieją również te same podtypy, co w przypadku filtrów dolnoprzepustowych.
  • Filtr pasmowy: Ten typ filtra wywiera dwa bloki przepustowości pasma częstotliwości. Oznacza to, że działają one zarówno jako filtr dolnoprzepustowy, jak i górnoprzepustowy, przeciwdziałając przejściu najniższych częstotliwości, a jednocześnie najwyższych. Innymi słowy, przepuszcza tylko średnie częstotliwości.
  • Filtr pasmowy: jest dokładnym przeciwieństwem poprzedniego, to, co robi, polega na tym, że filtruje przejście średniej częstotliwości i przepuszcza tylko najniższe i najwyższe częstotliwości.

Pamiętaj o tym indukcyjności przepuszczają niskie częstotliwości i przeciwdziałają przejściu wysokich częstotliwości. Zamiast, kondensatory przepuszczają wysokie częstotliwości i przeciwdziałają przejściu niskich częstotliwości.

Chciałbym dodać, że filtry są na poziomie praktycznym nie są doskonałe, i zawsze mogą przepuścić niektóre niskie lub wysokie częstotliwości, które powinieneś blokować. Jednak w przypadku większości aplikacji całkiem dobrze wykonują swoją pracę.

Na koniec chciałbym wyjaśnić jeszcze jedną rzecz, a mianowicie, że na pewno słyszałeś o Filtry EMA i DEMA. Filtry EMA (Exponential Moving Average) pozwalają w prosty sposób zaimplementować tego typu filtry w urządzeniach wbudowanych. Jeśli chodzi o DEMA (Double Exponential Moving Average), mają one szybszą odpowiedź niż EMA, zachowując dobre tłumienie szumu, którego chcesz uniknąć.

Współczynnik alfa

El współczynnik alfa, który zobaczysz, który pojawia się w kodach Arduino IDE w następnej sekcji, jest parametrem warunkującym zachowanie filtra wykładniczego. Jest to związane z częstotliwością odcięcia:

  • Alpha = 1: zapewnia sygnał do niefiltrowanego wyjścia.
  • Alpha = 0: wartość filtru zawsze będzie wynosić 0.
  • Alpha = x: inne wartości mogą spowodować inne zmiany w filtrze EMA. Zmniejszenie współczynnika Alfa spowoduje większe zmiękczenie uzyskanego sygnału częstotliwościowego, a także zwiększy się czas odpowiedzi układu (stabilizacja zajmie więcej czasu).

Filtry i Arduino

Magistrala Arduino I2C

Do korzystania z tych filtrów, użycie biblioteki dla Arduino IDE znacznie ułatwi ci pracę. Możesz użyć To samo.

Powinieneś wiedzieć, że nie jest konieczne tworzenie obwodu filtr górnoprzepustowy lub dolnoprzepustowy podłączyć go do płyty Arduino i pracować z nią. Chociaż możesz eksperymentować i tworzyć tego rodzaju proste filtry, możesz również przetestować, jak EMA działałaby tylko z płytą Arduino i prostym kodem dla Arduino IDE. Jest to jedyna rzecz, którą musisz zobaczyć, jak odpowiada za filtrowanie niektórych częstotliwości (w tym przypadku akcja jest symulowana, a niektóre liczby całkowite / zmiennoprzecinkowe są po prostu filtrowane symulowanie tego, co bym zrobił filtr faktycznie).

Oto kilka przykładów kodu, których możesz użyć do ćwiczenia.

Przykład prostego filtra cyfrowego typu Arduino dolnoprzepustowy:

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

Przykład kodu dla typu Arduino Wysokie przejście:

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
}

Przykład kodu Arduino przepustka zespołu:

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

Przykład kodu Arduino dla zespołu:

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

Pamiętaj, że ADC to konwerter Arduino Analog Digital. Użyj zakresu 0-5v, dzieląc go na zakresy 0-1023. Jeśli wartość wynosi 0 v, przyjmowana jest wartość cyfrowa 0, a jeśli wynosi 5 v, 1023 zostanie przyjęte jako wartość sygnału, 1v może wynosić 204 m, 2v będzie równe 408 itd.

Radzę modyfikować i eksperymentować z tymi kodami. Wynik, który możesz zobacz bardzo graficznie dzięki Ploterowi Szeregowemu Arduino IDE ... Pamiętaj, że jeśli masz pytania dotyczące programowania Arduino lub korzystania z IDE, możesz pobrać darmowy kurs HwLibre w formacie PDF.


Bądź pierwszym który skomentuje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.