Passածր անցման զտիչ. Ամեն ինչ, որ դուք պետք է իմանաք այս շրջանի մասին

ցածր անցման ֆիլտրի միացում

Կծիկներն ու գործառնական ուժեղացուցիչները թույլ են տալիս ստեղծել շատ հետաքրքիր շղթաներ, ինչպիսին է հանրահայտը հաճախականության ֆիլտրեր, Այս զտիչներն ունեն բազմաթիվ կիրառություններ էլեկտրոնիկայի արդյունաբերության մեջ: Ինչպես ցածր անցման ֆիլտրի դեպքում, բարձր անցման ֆիլտրը և այլն: Դրանք հատկապես հետաքրքիր են որոշակի ձայնային ծրագրերի համար, դրանց հաճախականության համաձայն կարող են զտել աղմուկները կամ քիչ թե շատ լուրջ հնչյունները: Հետեւաբար, դրանք շատ օգտակար են:

Եթե ​​ուզում եք ավելին իմանալ ցածր անցման ֆիլտրև այլ զտիչներ, և թե ինչպես դրանք կարող են օգնել ձեզ Arduino- ի կամ DIY- ի հետ ձեր նախագծերում, ես խրախուսում եմ ձեզ շարունակել կարդալ ...

Էլեկտրական ֆիլտրեր

Քանի որ նրա անունն է հուշում, ֆիլտրը մի շրջան է, որը բաղկացած է մի շարք պարույրներից և կոնդենսատորներից և նույնիսկ որոշ գործառնական ուժեղացուցիչներից ՝ թողնելով հաճախականության միայն որոշակի մասեր, Այսինքն ՝ մատչելի հաճախականությունների ողջ սպեկտրից նրանք կզտեն մեկ կամ մի քանի մասեր ՝ դրանց անցումը կանխելու համար:

Այո ejemplo Մենք խոսում ենք մարդու կողմից լսելի սպեկտրի մասին, որը անցնում է 20 Հց-ից մինչև 20 ԿՀց, ֆիլտրերով դուք կարող եք վերացնել ամենացածրը, կամ ամենաբարձրը, որպեսզի թույլ տան միայն քիչ թե շատ թրեբլ / բաս հնչյունները անցնել: Դա մի բան է, որն օգտագործում են աուդիո ձայնագրման կամ վերարտադրման շատ համակարգեր, ինչպիսիք են խոսափողերը, բարձրախոսները և այլն:

Տեսակները

Ըստ ֆիլտրի տեսակը, ավելի ճիշտ, կախված հաճախությունից, որը նրանք արգելափակում են կամ դրանց թողածից, կան տարբեր տեսակի շղթաներ, որոնք են.

  • Passածր անցման ֆիլտրԴրանք այսպես կոչված են, քանի որ դրանք այն զտիչներն են, որոնք թույլ են տալիս անցնել ցածր հաճախականությունները և ճնշել կամ նվազեցնել բարձր հաճախականությունների անցումը: Դրանք բաղկացած են մեկ կամ ավելի կծիկներից (շարքով `էլեկտրամատակարարմամբ և բեռով), և մեկ կամ երկու լարման կոնդենսատորներ` էլեկտրամատակարարմամբ և բեռով: Հիշեք, որ բեռը հասկացվում է, որ այն սարքն է, որը միացված է ֆիլտրին և որը հավաքում է ֆիլտրի ելքը ... Այս ֆիլտրերի մեջ կան նաև տարբերակներ, ինչպիսիք են L, T և π.
  • Բարձր անցման զտիչբարձր անցման ֆիլտրը ցածր անցման հակառակն է, այս դեպքում այն, ինչը զտելու կամ սահմանափակելու է, ցածր հաճախականության անցումն է ՝ թույլ տալով, որ ավելի բարձր հաճախականություններն անցնեն: Դրանում ներդրվում են այն կազմող էլեկտրոնային տարրերը: Այսինքն, այստեղ կոնդենսատորները կլինեն սերիայի էլեկտրամատակարարմամբ և բեռնվածքով, մինչդեռ կծիկները կուղղվեն: Կան նաև նույն ենթատիպերը, ինչ ցածր անցման ֆիլտրերի դեպքում:
  • Խմբի անցման ֆիլտրԱյս տեսակի զտիչն ազդում է երկու հաճախականությունների տիրույթի անցման արագության բլոկների վրա: Այսինքն ՝ նրանք հանդես են գալիս ինչպես ցածր անցման ֆիլտրի, այնպես էլ բարձր անցման ֆիլտրի նման ՝ միաժամանակ հակադրելով ամենացածր հաճախությունների անցումը և նաև ամենաբարձրը: Այլ կերպ ասած, դա թույլ է տալիս միայն միջին հաճախականությունների միջով անցնել:
  • Խմբի զտիչԴա ճիշտ հակառակն է նախորդից, ինչն անում է այն, որ այն ֆիլտրում է միջին հաճախականության անցումը և թույլ է տալիս միայն անցնել ամենացածր և բարձր հաճախականությունները:

Հիշեք դա ինդուկտիվություններ դրանք թույլ են տալիս ցածր հաճախականությունների միջով և դեմ են բարձր հաճախությունների անցմանը: Փոխարենը կոնդենսատորներ դրանք թողնում են բարձր հաճախականությունների միջով և դեմ են ցածր հաճախությունների անցմանը:

Ես կցանկանայի ավելացնել, որ ֆիլտրերը գործնական մակարդակում են դրանք կատարյալ չեն, և նրանք միշտ կարող են թույլ տալ որոշ ցածր կամ բարձր հաճախականությունների միջոցով, որոնք դուք պետք է արգելափակեք: Այնուամենայնիվ, նրանք շատ լավ են կատարում իրենց աշխատանքը դիմումների մեծ մասի համար:

Վերջապես, ես կցանկանայի պարզաբանել ևս մեկ բան, և դա այն է, որ դուք հաստատ լսել եք այդ մասին EMA և DEMA ֆիլտրեր, EMA (Exponential Moving Average) ֆիլտրերը թույլ են տալիս իրականացնել այս տեսակի ֆիլտրերի ներդիրային սարքերում պարզ եղանակով: Ինչ վերաբերում է DEMA- ին (կրկնակի էքսպոնենցիալ շարժվող միջին), դրանք ունեն ավելի արագ արձագանք, քան EMA- ն ՝ պահպանելով աղմուկի լավ ճնշումը, որը ցանկանում եք խուսափել:

Ալֆա գործոն

El ալֆա գործոն, որը կտեսնեք, որ հայտնվում է Arduino IDE կոդերում հաջորդ բաժնում, այն պարամետրն է, որը որոշում է ցուցիչ ֆիլտրի վարքը: Դա կապված է անջատման հաճախականության հետ.

  • Ալֆա = 1. Սա ազդանշան է տրամադրում դեպի չզտված ելքը:
  • Ալֆա = 0. Զտիչի արժեքը միշտ կլինի 0:
  • Ալֆա = x. Այլ արժեքները կարող են այլ փոփոխություններ ստանալ EMA ֆիլտրում: Ալֆայի գործոնը նվազեցնելու դեպքում դուք ավելի կմեղմեք ստացված հաճախականության ազդանշանը, և համակարգի արձագանքման ժամանակը նույնպես ավելանում է (կայունացման համար ավելի շատ ժամանակ է պետք):

Fտիչներ և Arduino

Arduino I2C ավտոբուս

Այս զտիչների օգտագործման համար Arduino IDE- ի համար գրադարանի օգտագործումը շատ ավելի կհեշտացնի ձեր աշխատանքը: Կարող եք օգտագործել այս նույնը.

Դուք պետք է իմանաք, որ սխեման ստեղծելու անհրաժեշտություն չկա բարձր անցման ֆիլտր կամ ցածր անցման ֆիլտր այն միացնել ձեր Arduino տախտակին և աշխատել դրա հետ: Չնայած դուք կարող եք փորձարկել և ստեղծել այս տեսակի պարզ զտիչները, կարող եք նաև ստուգել, ​​թե ինչպես կգործի EMA- ն պարզապես Arduino տախտակով և Arduino IDE- ի պարզ կոդով: Դա միակ բանն է, որ դուք պետք է տեսնեք, թե ինչպես է այն ղեկավարվում որոշ հաճախականությունների զտման համար (այս դեպքում գործողությունը մոդելավորվում է, և որոշ ամբողջ թվեր / բոցեր պարզապես զտվում են մոդելավորելով այն, ինչ ես կանեի ֆիլտր իրականում):

Ահա մի քանի կոդերի նմուշներ, որոնք կարող եք օգտագործել գործնականում կիրառելու համար:

Արդուինոյում պարզ թվային ֆիլտրի օրինակ ցածր անցում:

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

Հիշեք, որ ADC- ն Arduino անալոգային թվային փոխարկիչ է: Օգտագործեք 0-5v միջակայք ՝ բաժանվելով 0-1023 միջակայքերի: Եթե ​​արժեքը 0v է, ապա վերցվում է թվային 0 արժեք, և եթե այն 5v է, ապա 1023-ը վերցվելու է որպես ազդանշանային արժեք, 1v- ը կարող է լինել 204m, 2v կլինի 408 և այլն:

Ես ձեզ խորհուրդ եմ տալիս փոփոխել և փորձարկել այս ծածկագրերը: Արդյունքը, որը կարող եք տեսնել շատ գրաֆիկորեն Arduino IDE- ի սերիական գծագրիչի շնորհիվ ... Հիշեք, որ եթե հարցեր ունեք Arduino ծրագրավորման կամ ինչպես օգտագործել IDE- ի վերաբերյալ, կարող եք ներբեռնել անվճար HwLibre դասընթաց PDF- ով.


Հոդվածի բովանդակությունը հավատարիմ է մեր սկզբունքներին խմբագրական էթիկա, Սխալի մասին հաղորդելու համար կտտացրեք այստեղ.

Եղիր առաջին մեկնաբանողը

Թողեք ձեր մեկնաբանությունը

Ձեր էլ. Փոստի հասցեն չի հրապարակվելու: Պահանջվող դաշտերը նշված են *

*

*

  1. Տվյալների համար պատասխանատու ՝ Միգել Անխել Գատոն
  2. Տվյալների նպատակը. Վերահսկել SPAM, մեկնաբանությունների կառավարում:
  3. Օրինականություն. Ձեր համաձայնությունը
  4. Տվյալների հաղորդագրություն. Տվյալները չեն փոխանցվի երրորդ անձանց, բացառությամբ իրավական պարտավորության:
  5. Տվյալների պահպանում. Տվյալների շտեմարան, որը հյուրընկալվում է Occentus Networks (EU) - ում
  6. Իրավունքներ. Timeանկացած պահի կարող եք սահմանափակել, վերականգնել և ջնջել ձեր տեղեկատվությունը: