Фильтр низких частот: все, что вам нужно знать об этой схеме

схема фильтра нижних частот

Катушки и операционные усилители позволяют создавать очень интересные схемы, такие как знаменитые частотные фильтры. Эти фильтры находят множество применений в электронной промышленности. Как и в случае с фильтром низких частот, фильтром высоких частот и т. Д. Они особенно интересны для определенных звуковых приложений, поскольку могут фильтровать шумы или более или менее серьезные звуки в зависимости от их частоты. Поэтому они очень полезны.

Если вы хотите узнать больше о фильтр нижних частот, и другие фильтры, и как они могут помочь вам в ваших проектах с Arduino или DIY, я призываю вас продолжить чтение ...

Электрические фильтры

Как следует из названия, фильтр представляет собой схему, состоящую из ряда катушек и конденсаторов, и даже некоторых операционных усилителей, предназначенных для пропускать только определенные части частоты. То есть из всего спектра доступных частот они будут фильтровать одну или несколько частей, чтобы предотвратить их прохождение.

Если для пример Мы говорим о спектре, который слышит человек, который колеблется от 20 Гц до 20 кГц, с фильтрами, которые вы можете удалить самые низкие или самые высокие, чтобы пропустить только более или менее высокие / низкие звуки. Это то, что используют многие системы записи или воспроизведения звука, такие как микрофоны, динамики и т. Д.

Тип

В соответствии с тип фильтраили, скорее, в зависимости от частоты, которую они блокируют, или той, которую они пропускают, существуют разные типы цепей, которые:

  • Фильтр низких частот: они так называются, потому что это те фильтры, которые пропускают более низкие частоты и подавляют или уменьшают пропускание более высоких частот. Они состоят из одной или нескольких катушек (последовательно соединенных с источником питания и нагрузкой) и одного или двух шунтирующих конденсаторов с источником питания и нагрузкой. Помните, что под нагрузкой понимается устройство, подключенное к фильтру и собирающее выходные данные фильтра ... В этих фильтрах также есть варианты, такие как L, T и π.
  • Фильтр высоких частот: фильтр высоких частот противоположен фильтру низких частот, в этом случае он будет фильтровать или ограничивать проход низких частот, пропуская более высокие частоты. В это вложены электронные элементы, из которых он состоит. То есть здесь конденсаторы будут подключены последовательно к источнику питания и нагрузке, а катушки будут шунтированы. Также есть те же подтипы, что и в случае с фильтрами нижних частот.
  • Полосовой фильтр: Этот тип фильтра задействует два блока скорости пропускания полосы частот. То есть они действуют как фильтр нижних частот и как фильтр верхних частот, одновременно препятствуя прохождению как самых низких, так и самых высоких частот. Другими словами, он пропускает только средние частоты.
  • Полосовой фильтр: он полностью противоположен предыдущему, он фильтрует проход средних частот и пропускает только самые низкие и самые высокие частоты.

Помните, что индуктивности они пропускают низкие частоты и препятствуют прохождению высоких частот. Вместо, конденсаторы они пропускают высокие частоты и препятствуют прохождению низких частот.

Хочу добавить, что фильтры на практическом уровне они не идеальны, и они всегда могут передавать некоторые низкие или высокие частоты, которые вы должны заблокировать. Однако они достаточно хорошо справляются со своей работой для большинства приложений.

И, наконец, я хотел бы еще кое-что прояснить, а именно то, что вы наверняка слышали о EMA и DEMA фильтры. Фильтры EMA (Exponential Moving Average) позволяют легко реализовать этот тип фильтра во встроенных устройствах. Что касается DEMA (Double Exponential Moving Average), они имеют более быстрый отклик, чем EMA, обеспечивая хорошее подавление шума, которого вы хотите избежать.

Альфа-фактор

El альфа-фактор, который, как вы увидите, появляется в кодах Arduino IDE в следующем разделе, является параметром, который определяет поведение экспоненциального фильтра. Это связано с частотой среза:

  • Alpha = 1: подает сигнал на нефильтрованный выход.
  • Alpha = 0: значение фильтра всегда будет 0.
  • Alpha = x: другие значения могут быть изменены в фильтре EMA. Если вы уменьшите коэффициент альфа, вы еще больше смягчите полученный частотный сигнал, а также увеличится время отклика системы (требуется больше времени для стабилизации).

Фильтры и Ардуино

Шина Arduino I2C

Чтобы использовать эти фильтры, использование библиотеки для Arduino IDE значительно упростит вашу работу. Ты можешь использовать это то же самое.

Вы должны знать, что создавать схему не обязательно. фильтр высоких частот или фильтр низких частот чтобы подключить его к плате Arduino и работать с ней. Хотя вы можете экспериментировать и создавать такие простые фильтры, вы также можете протестировать, как EMA будет работать, только с платой 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. Используйте диапазон 0–5 В, разделив на диапазоны 0–1023. Если значение равно 0 В, то берется цифровое значение 0, а если 5 В, то 1023 будет принято как значение сигнала, 1 В может быть 204 м, 2 В будет 408 и т. Д.

Советую модифицировать и экспериментировать с этими кодами. Результат вы можете видеть очень наглядно благодаря последовательному плоттеру Arduino IDE ... Помните, что если у вас есть вопросы о программировании Arduino или о том, как использовать IDE, вы можете скачать бесплатный курс HwLibre в PDF.


Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.