Filtre passe-bas: tout ce que vous devez savoir sur ce circuit

circuit de filtre passe-bas

Les bobines et amplis op permettent de créer des circuits très intéressants, comme le fameux filtres de fréquence. Ces filtres ont une multitude d'applications dans l'industrie électronique. Comme c'est le cas avec le filtre passe-bas, le filtre passe-haut, etc. Ils sont particulièrement intéressants pour certaines applications sonores, pouvant filtrer des bruits, ou des sons plus ou moins graves en fonction de leur fréquence. Par conséquent, ils sont très utiles.

Si vous voulez en savoir plus sur filtre passe bas, et autres filtres, et comment ils peuvent vous aider dans vos projets avec Arduino ou DIY, je vous encourage à continuer la lecture ...

Filtres électriques

Comme son nom l'indique, un filtre est un circuit composé d'une série de bobines et de condensateurs, et même de quelques amplificateurs opérationnels, dans le but de ne laissant passer que certaines parties d'une fréquence. C'est-à-dire que sur tout le spectre des fréquences disponibles, ils filtreront une ou plusieurs parties pour les empêcher de passer.

Oui par exemple On parle du spectre audible par l'être humain, qui va de 20 Hz à 20 Khz, avec des filtres que l'on pourrait éliminer le plus bas, ou le plus élevé, afin de ne laisser passer que les sons plus ou moins aigus / graves. C'est quelque chose que de nombreux systèmes d'enregistrement ou de reproduction audio utilisent, tels que des microphones, des haut-parleurs, etc.

Types

Selon le type de filtre, ou plutôt, selon la fréquence qu'ils bloquent ou celle qu'ils laissent passer, il existe différents types de circuits qui sont:

  • Filtre passe bas: ils sont appelés ainsi parce que ce sont ces filtres qui laissent passer les fréquences les plus basses et suppriment ou réduisent le passage des fréquences supérieures. Ils se composent d'une ou plusieurs bobines (en série avec l'alimentation et la charge), et d'un ou deux condensateurs shunt avec l'alimentation et la charge. N'oubliez pas que la charge est comprise comme étant l'appareil connecté au filtre et qui collecte la sortie du filtre ... Dans ces filtres, il existe également des variantes, telles que L, T et π.
  • Filtre passe-haut: le filtre passe-haut est l'opposé du passe-bas, dans ce cas, ce qu'il va filtrer ou limiter c'est le passe basse fréquence, laissant passer les hautes fréquences. En cela les éléments électroniques qui le composent sont investis. Autrement dit, ici, les condensateurs seront ceux en série avec l'alimentation et la charge, tandis que les bobines seront shuntées. Il existe également les mêmes sous-types que dans le cas des filtres passe-bas.
  • Filtre passe-bande: Ce type de filtre exerce deux verrouillages de taux de passage de bande de fréquence. C'est-à-dire qu'ils agissent à la fois comme un filtre passe-bas et comme un filtre passe-haut, s'opposant au passage des fréquences les plus basses et aussi les plus élevées en même temps. En d'autres termes, il ne laisse passer que les fréquences moyennes.
  • Filtre de bande: c'est exactement le contraire du précédent, ce qu'il fait, c'est qu'il filtre le passage des moyennes fréquences et ne laisse passer que les fréquences les plus basses et les plus hautes.

Rappelez-vous que le inductances ils laissent passer les basses fréquences et s'opposent au passage des hautes fréquences. Au lieu, condensateurs ils laissent passer les hautes fréquences et s'opposent au passage des basses fréquences.

Je voudrais ajouter que les filtres à un niveau pratique ils ne sont pas parfaits, et ils peuvent toujours transmettre des fréquences basses ou élevées que vous devez bloquer. Cependant, ils font assez bien leur travail pour la plupart des applications.

Et enfin, je voudrais aussi clarifier une autre chose, c'est que vous avez sûrement entendu parler de la Filtres EMA et DEMA. Les filtres EMA (Exponential Moving Average) permettent d'implémenter ce type de filtres de manière simple dans les appareils embarqués. Quant aux DEMA (Double Exponential Moving Average), ils ont une réponse plus rapide que l'EMA, maintenant une bonne suppression du bruit que vous souhaitez éviter.

Facteur alpha

El facteur alpha, que vous verrez qui apparaît dans les codes IDE Arduino dans la section suivante, est le paramètre qui conditionne le comportement du filtre exponentiel. Elle est liée à la fréquence de coupure:

  • Alpha = 1: qui fournit un signal à la sortie non filtrée.
  • Alpha = 0: la valeur du filtre sera toujours 0.
  • Alpha = x: d'autres valeurs peuvent obtenir d'autres modifications dans le filtre EMA. Si vous diminuez le facteur Alpha, vous adoucirez davantage le signal de fréquence obtenu, et le temps de réponse du système est également augmenté (il faut plus de temps pour se stabiliser).

Filtres et Arduino

Bus Arduino I2C

Pour utiliser ces filtres, l'utilisation d'une bibliothèque pour Arduino IDE rendra votre travail beaucoup plus facile. Vous pouvez utiliser C'est pareil.

Il faut savoir qu'il n'est pas nécessaire de créer le circuit filtre passe-haut ou filtre passe-bas pour le connecter à votre carte Arduino et travailler avec. Bien que vous puissiez expérimenter et créer ces types de filtres simples, vous pouvez également tester comment un EMA fonctionnerait uniquement avec la carte Arduino et un code simple pour l'IDE Arduino. C'est la seule chose dont vous avez besoin pour voir comment il se charge de filtrer certaines fréquences (dans ce cas l'action est simulée et certains entiers / flottants sont simplement filtrés simulant ce que je ferais filtre en fait).

Voici quelques exemples de code que vous pouvez utiliser pour vous entraîner.

Exemple de filtre numérique simple dans Arduino de type passe-bas:

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

Exemple de code pour le type Arduino Passe haut:

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
}

Exemple de code Arduino passe-bande:

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

Exemple de code Arduino pour groupe:

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

N'oubliez pas que ADC est le convertisseur analogique numérique Arduino. Utilisez une plage de 0 à 5 V, divisée en plages de 0 à 1023. Si la valeur est 0v, une valeur numérique de 0 est prise, et si elle est 5v, 1023 sera prise comme valeur de signal, 1v peut être 204m, 2v serait 408, etc.

Je vous conseille de modifier et d'expérimenter ces codes. Le résultat que vous pouvez voir très graphiquement grâce au Serial Plotter de l'IDE Arduino ... N'oubliez pas que si vous avez des questions sur la programmation Arduino ou comment utiliser l'IDE, vous pouvez télécharger le cours HwLibre gratuit en PDF.


Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.