Filtër me kalim të ulët: gjithçka që duhet të dini në lidhje me këtë qark

qark i filtrit me kalim të ulët

Spiralet dhe amperët op ju lejojnë të krijoni qarqe shumë interesante, të tilla si të famshmet filtra frekuencash. Këta filtra kanë një mori aplikimesh në industrinë elektronike. Siç është rasti i filtrit të kalimit të ulët, filtrit të kalimit të lartë, etj. Ato janë veçanërisht interesante për aplikime të caktuara të zërit, të qenit në gjendje të filtrojnë zhurmat, ose tinguj pak a shumë seriozë sipas frekuencës së tyre. Prandaj, ato janë shumë të dobishme.

Nëse doni të dini më shumë rreth filtër me kalim të ulët, dhe filtra të tjerë, dhe se si mund t'ju ndihmojnë në projektet tuaja me Arduino ose DIY, unë ju inkurajoj të vazhdoni të lexoni ...

Filtra elektrik

Siç sugjeron emri i tij, një filtër është një qark që përbëhet nga një seri mbështjelljesh dhe kondensatorësh, madje edhe disa përforcues operacionalë, për qëllimin e duke lënë të kalojnë vetëm pjesë të caktuara të një frekuence. Kjo do të thotë, nga i gjithë spektri i frekuencave të disponueshme, ato do të filtrojnë një ose më shumë pjesë për të parandaluar kalimin e tyre.

Po për Ejemplo Ne po flasim për spektrin e dëgjueshëm nga qenia njerëzore, i cili shkon nga 20 Hz në 20 Khz, me filtra që mund të eleminoni më të ultën, ose më të lartin, në mënyrë që të lejoni që tingujt pak a shumë të trefishtë / bas të kalojnë. Somethingshtë diçka që shumë sisteme regjistrimi ose riprodhimi audio përdorin, të tilla si mikrofona, altoparlantë, etj.

lloj

Sipas lloji i filtrit, ose më mirë, në varësi të frekuencës që ata bllokojnë ose asaj që ata lëshojnë përmes, ekzistojnë lloje të ndryshme të qarqeve që janë:

  • Filtri i kalimit të ulët: quhen kështu sepse janë ata filtra që lënë frekuencat më të ulta dhe shtypin ose zvogëlojnë kalimin e frekuencave më të larta. Ato përbëhen nga një ose më shumë mbështjellje (në seri me furnizimin me energji elektrike dhe ngarkesën), dhe një ose dy kondensatorë shunt me furnizimin me energji dhe ngarkesën. Mos harroni se një ngarkesë kuptohet të jetë pajisja e lidhur me filtrin dhe që mbledh prodhimin e filtrit ... Brenda këtyre filtrave ka edhe variante, të tilla si L, T dhe π.
  • Filtri i kalimit të lartë: filtri i kalimit të lartë është e kundërta e kalimit të ulët, në këtë rast, ajo që do të filtrojë ose kufizojë është kalimi i frekuencës së ulët, duke lënë të kalojnë frekuencat më të larta. Në këtë investohen elementet elektronike që e përbëjnë atë. Kjo është, këtu kondensatorët do të jenë ata në seri me furnizimin me energji dhe ngarkesën, ndërsa mbështjelljet do të devijohen. Ekzistojnë gjithashtu të njëjtat nëntipe si në rastin e filtrave me kalim të ulët.
  • Filtri i kalimit të bandës: Ky lloj filtri ushtron dy blloqe të shpejtësisë së kalimit të brezit të frekuencës. Kjo do të thotë, ata veprojnë si një filtër i kalimit të ulët dhe si një filtër i kalimit të lartë, duke kundërshtuar kalimin e frekuencave më të ulëta dhe gjithashtu më të lartën në të njëjtën kohë. Me fjalë të tjera, vetëm lejon që frekuencat e mesme të kalojnë përmes.
  • Filtri i bandës: është saktësisht e kundërta e asaj të mëparshme, ajo që bën është se filtron kalimin e frekuencës mesatare dhe lejon që vetëm frekuencat më të ulëta dhe më të larta të kalojnë.

Mos harroni se induktancat ato lëshojnë nëpër frekuenca të ulta dhe kundërshtojnë kalimin e frekuencave të larta. Në vend të kësaj, kapacitoreve ato lëshojnë nëpër frekuenca të larta dhe kundërshtojnë kalimin e frekuencave të ulëta.

Unë do të doja të shtoja se filtrat në një nivel praktik ato nuk janë perfekte, dhe ato gjithmonë mund të lejojnë përmes disa frekuencave të ulëta ose të larta që ju duhet të bllokoni. Sidoqoftë, ata e bëjnë punën e tyre mjaft mirë për shumicën e aplikacioneve.

Dhe së fundmi, unë gjithashtu do të doja të sqaroja një tjetër gjë, dhe kjo është që ju me siguri keni dëgjuar për Filtrat EMA dhe DEMA. Filtrat EMA (Mesatarja Lëvizëse Eksponenciale) ju lejojnë të zbatoni këtë lloj filtri në një mënyrë të thjeshtë në pajisjet e ngulitura. Sa i përket DEMA (Double Exponential Moving Average), ata kanë një përgjigje më të shpejtë se EMA, duke ruajtur shtypjen e mirë të zhurmës që dëshironi të shmangni.

Faktori alfa

El faktori alfa, të cilin do të shihni që shfaqet në kodet Arduino IDE në seksionin tjetër, është parametri që kushtëzon sjelljen e filtrit eksponencial. Isshtë e lidhur me frekuencën e ndërprerjes:

  • Alpha = 1: që siguron një sinjal në daljen e pa filtruar.
  • Alpha = 0: vlera e filtrit do të jetë gjithmonë 0.
  • Alpha = x: vlerat e tjera mund të marrin ndryshime të tjera në filtrin EMA. Nëse zvogëloni faktorin Alpha do të zbusni sinjalin e frekuencës të marrë më shumë, dhe koha e përgjigjes së sistemit do të rritet gjithashtu (duhet më shumë kohë për t’u stabilizuar).

Filtrat dhe Arduino

Autobusi Arduino I2C

Për përdorimin e këtyre filtrave, përdorimi i një biblioteke për Arduino IDE do ta bëjë punën tuaj shumë më të lehtë. Ju mund të përdorni kjo e njejta.

Duhet ta dini se nuk është e nevojshme të krijoni qarkun filtri i kalimit të lartë ose filtri i kalimit të ulët për ta lidhur atë me bordin tuaj Arduino dhe për të punuar me të. Megjithëse mund të eksperimentoni dhe krijoni këto lloj filtrash të thjeshtë, ju gjithashtu mund të provoni se si do të funksiononte një EMA vetëm me bordin Arduino dhe një kod të thjeshtë për Arduino IDE. Theshtë e vetmja gjë që duhet të shihni se si është i ngarkuar me filtrimin e disa frekuencave (në këtë rast veprimi simulohet dhe disa numra të plotë / notues thjesht filtrohen duke simuluar atë që do të bëja filtër në të vërtetë).

Këtu janë disa shembuj të kodit që mund t’i përdorni për t’i praktikuar.

Shembull i filtrit dixhital të thjeshtë në llojin Arduino kalojë ulët:

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

Shembull kodi për llojin Arduino Kalim i lartë:

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
}

Shembull i kodit Arduino pasimi i bandës:

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

Shembull i kodit Arduino për bandën:

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

Mos harroni se ADC është konvertuesi dixhital analog Arduino. Përdorni një diapazon prej 0-5v, duke u ndarë në interval prej 0-1023. Nëse vlera është 0v, merret një vlerë dixhitale 0, dhe nëse është 5v, 1023 do të merret si vlerë e sinjalit, 1v mund të jetë 204m, 2v do të jetë 408, etj.

Unë ju këshilloj të modifikoni dhe eksperimentoni me këto kode. Rezultati që mundeni shih shumë grafikisht falë Plotter Serial të Arduino IDE ... Mos harroni se nëse keni pyetje në lidhje me programimin Arduino ose si të përdorni IDE, ju mund të shkarkoni Kurs falas HwLibre në PDF.


Bëhu i pari që komenton

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.