Tiefpassfilter: Alles, was Sie über diese Schaltung wissen müssen

Tiefpassfilterschaltung

Mit Spulen und Operationsverstärkern können Sie sehr interessante Schaltkreise wie die berühmten erstellen Frequenzfilter. Diese Filter haben eine Vielzahl von Anwendungen in der Elektronikindustrie. Wie beim Tiefpassfilter, Hochpassfilter usw. Sie sind besonders interessant für bestimmte Tonanwendungen, da sie Geräusche oder mehr oder weniger ernsthafte Geräusche entsprechend ihrer Frequenz filtern können. Daher sind sie sehr nützlich.

Wenn Sie mehr darüber wissen möchten Tiefpassfilterund andere Filter und wie sie Ihnen bei Ihren Projekten mit Arduino oder DIY helfen können, empfehle ich Ihnen, weiterzulesen ...

Elektrische Filter

Wie der Name schon sagt, ist ein Filter eine Schaltung, die aus einer Reihe von Spulen und Kondensatoren und sogar einigen Operationsverstärkern besteht nur bestimmte Teile einer Frequenz passieren lassen. Das heißt, vom gesamten Spektrum der verfügbaren Frequenzen filtern sie einen oder mehrere Teile, um zu verhindern, dass sie durchgelassen werden.

Ja für ejemplo Wir sprechen über das vom Menschen hörbare Spektrum, das von 20 Hz bis 20 kHz reicht, mit Filtern, mit denen Sie den niedrigsten oder den höchsten Wert eliminieren können, um nur die mehr oder weniger Höhen / Bässe durchzulassen. Es ist etwas, das viele Audioaufzeichnungs- oder -wiedergabesysteme verwenden, wie z. B. Mikrofone, Lautsprecher usw.

Unsere

Nach Filter TypJe nach der Frequenz, die sie blockieren oder die sie durchlassen, gibt es verschiedene Arten von Schaltkreisen:

  • Tiefpassfilter: Sie werden so genannt, weil sie Filter sind, die die niedrigsten Frequenzen passieren lassen und den Durchgang der höheren Frequenzen unterdrücken oder reduzieren. Sie bestehen aus einer oder mehreren Spulen (in Reihe mit Stromversorgung und Last) und einem oder zwei Nebenschlusskondensatoren mit Stromversorgung und Last. Denken Sie daran, dass unter der Last das an den Filter angeschlossene Gerät zu verstehen ist, das die Filterleistung sammelt ... Innerhalb dieser Filter gibt es auch Varianten wie L, T und π.
  • Hochpassfilter: Das Hochpassfilter ist das Gegenteil des Tiefpassfilters. In diesem Fall wird der Niederfrequenzpass gefiltert oder begrenzt, wodurch die höheren Frequenzen passieren. Darin werden die elektronischen Elemente investiert, aus denen es besteht. Das heißt, hier sind die Kondensatoren diejenigen, die mit der Stromversorgung und der Last in Reihe geschaltet sind, während die Spulen überbrückt werden. Es gibt auch die gleichen Untertypen wie bei Tiefpassfiltern.
  • Bandpassfilter: Dieser Filtertyp übt zwei Frequenzband-Durchlasssperren aus. Das heißt, sie wirken sowohl als Tiefpassfilter als auch als Hochpassfilter und wirken gleichzeitig dem Durchgang der niedrigsten und auch der höchsten Frequenzen entgegen. Mit anderen Worten, es werden nur die mittleren Frequenzen durchgelassen.
  • Bandfilter: Es ist genau das Gegenteil des vorherigen. Es filtert den Durchgang der Mittenfrequenzen und lässt nur die niedrigsten und höchsten Frequenzen durch.

Denken Sie daran, dass die Induktivitäten sie lassen niedrige Frequenzen durch und widersetzen sich dem Durchgang hoher Frequenzen. Stattdessen, Kondensatoren sie lassen hohe Frequenzen durch und wirken dem Durchgang niedriger Frequenzen entgegen.

Ich möchte diese Filter auf praktischer Ebene hinzufügen Sie sind nicht perfekt, und sie können immer einige niedrige oder hohe Frequenzen passieren, die Sie blockieren sollten. Für die meisten Anwendungen machen sie ihre Arbeit jedoch recht gut.

Und zum Schluss möchte ich noch etwas klarstellen, und das ist, dass Sie sicherlich von dem gehört haben EMA- und DEMA-Filter. Mit EMA-Filtern (Exponential Moving Average) können diese Filtertypen auf einfache Weise in eingebetteten Geräten implementiert werden. DEMA (Double Exponential Moving Average) reagiert schneller als EMA und unterdrückt das Rauschen, das Sie vermeiden möchten.

Alpha-Faktor

El Alpha-FaktorDer Parameter, der das Verhalten des Exponentialfilters bestimmt, wird in den Arduino IDE-Codes im nächsten Abschnitt angezeigt. Es hängt mit der Grenzfrequenz zusammen:

  • Alpha = 1: Dies liefert ein Signal an den ungefilterten Ausgang.
  • Alpha = 0: Der Filterwert ist immer 0.
  • Alpha = x: Andere Werte können andere Änderungen im EMA-Filter erfahren. Wenn Sie den Alpha-Faktor verringern, wird das erhaltene Frequenzsignal weicher und die Reaktionszeit des Systems wird ebenfalls verlängert (die Stabilisierung dauert länger).

Filter und Arduino

Arduino I2C Bus

Um diese Filter zu verwenden, erleichtert die Verwendung einer Bibliothek für Arduino IDE Ihre Arbeit erheblich. Sie können verwenden das gleiche.

Sie sollten wissen, dass es nicht erforderlich ist, die Schaltung zu erstellen Hochpassfilter oder Tiefpassfilter um es mit Ihrem Arduino Board zu verbinden und damit zu arbeiten. Obwohl Sie diese Art von einfachen Filtern experimentieren und erstellen können, können Sie auch testen, wie eine EMA nur mit der Arduino-Karte und einem einfachen Code für die Arduino-IDE funktioniert. Es ist das einzige, was Sie sehen müssen, wie es für das Filtern einiger Frequenzen zuständig ist (in diesem Fall wird die Aktion simuliert und einige Ganzzahlen / Gleitkommazahlen werden einfach gefiltert simulieren, was ich tun würde Filter tatsächlich).

Hier sind einige Codebeispiele, die Sie zum Üben verwenden können.

Beispiel eines einfachen digitalen Filters in Arduino vom Typ Tiefpass:

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

Codebeispiel für den Arduino-Typ Hochpass:

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-Codebeispiel Bandpass:

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-Codebeispiel für 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);                                
}

Denken Sie daran, dass ADC der Arduino Analog Digital Konverter ist. Verwenden Sie einen Bereich von 0 bis 5 V, der in Bereiche von 0 bis 1023 unterteilt ist. Wenn der Wert 0 V ist, wird ein digitaler Wert von 0 verwendet, und wenn er 5 V beträgt, wird 1023 als Signalwert verwendet, 1 V kann 204 m betragen, 2 V wären 408 usw.

Ich empfehle Ihnen, diese Codes zu ändern und damit zu experimentieren. Das Ergebnis können Sie sehr grafisch sehen Dank des seriellen Plotters der Arduino-IDE ... Denken Sie daran, dass Sie bei Fragen zur Arduino-Programmierung oder zur Verwendung der IDE die herunterladen können kostenloser HwLibre Kurs in PDF.


Schreiben Sie den ersten Kommentar

Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.