Isihlungi se-pass pass: konke odinga ukukwazi mayelana nalesi sifunda

isifunda sesihlungi esiphansi

Amakhoyili nama-op amps akuvumela ukuthi udale amasekethe athakazelisa kakhulu, njengadumile izihlungi zemvamisa. Lezi zihlungi zinezicelo eziningi embonini ye-elekthronikhi. Njengoba kunjalo ngesihlungi sephasi esiphansi, isihlungi sephasi eliphakeme, njll. Ziyathakazelisa ikakhulukazi kuzinhlelo ezithile zemisindo, zikwazi ukuhlunga imisindo, noma imisindo engaphezulu noma emincane ngokuya ngemvamisa yayo. Ngakho-ke, ziwusizo kakhulu.

Uma ufuna ukwazi kabanzi mayelana isihlungi sephasi eliphansi, nezinye izihlungi, nokuthi zingakusiza kanjani kumaphrojekthi akho nge-Arduino noma i-DIY, ngiyakukhuthaza ukuthi uqhubeke nokufunda ...

Izihlungi zikagesi

Njengoba igama layo liphakamisa, isihlungi yisifunda esakhiwa ngochungechunge lwamakhoyili nama-capacitors, ngisho namanye ama-amplifiers okusebenza, ngenhloso ukuvumela kuphela izingxenye ezithile zemvamisa ukudlula. Lokho wukuthi, kububanzi obubanzi bama-frequency atholakalayo, bazohlunga ingxenye eyodwa noma ngaphezulu ukuvimbela ukuthi badlule.

Uma for ejemplo Sikhuluma nge-spectrum ezwakalayo ngumuntu, esukela ku-20 Hz iye ku-20 Khz, ngezihlungi ongaqeda eziphansi kakhulu, noma eziphakeme kakhulu, ukuze uvumele kuphela imisindo ye-treble / bass engaphezulu ukuthi idlule. Kuyinto esetshenziswa amasistimu amaningi wokuqopha umsindo noma wokukhiqiza kabusha, njengamakhrofoni, izipikha, njll.

Izinhlobo

Ngokusho kwe- uhlobo lokuhlunga, noma kunalokho, kuya ngemvamisa abavimba ngayo noma leyo abayidedelayo, kunezinhlobo ezahlukahlukene zamasekethe ezi:

  • Isihlungi sokuphasa esiphansi: zibizwa kanjalo ngoba yilezo zihlungi ezivumela amaza aphansi ukuthi adlule futhi acindezele noma anciphise ukudlula kwamaza aphezulu. Ziqukethe ikhoyili eyodwa noma ngaphezulu (ngochungechunge lokuphakelwa kwamandla nomthwalo), kanye ne-one noma amabili ama-shunt capacitors anikezwa amandla nomthwalo. Khumbula ukuthi umthwalo uqondwa njengedivayisi exhunywe kusihlungi futhi eqoqa okukhiphayo kwesihlungi ... Ngaphakathi kwalezi zihlungi kukhona nokuhlukahluka, okufana no-L, T no π.
  • Isihlungi sokudlula okuphezulu: isihlungi se-pass high siphambene nepasi eliphansi, kulokhu, okuzohlunga noma kukhawulele ukudlula kwemvamisa ephansi, kuvumela amaza aphezulu ukuba adlule. Kulokhu, izinto ze-elekthronikhi eziyibhalayo zitshaliwe. Okusho ukuthi, lapha ama-capacitors yiwona azochungechunge ngokuhlinzekwa kwamandla nomthwalo, ngenkathi amakhoyili azovalwa. Kukhona futhi ama-subtypes afanayo nasendabeni yezihlungi zokudlula eziphansi.
  • Isihlungi se-band pass: Lolu hlobo lwesihlungi lunamabhulokhi wamazinga wokuphasa amabhendi amabili. Okungukuthi, zisebenza zombili njengesihlungi sephasi eliphansi futhi njengesihlungi sephasi eliphakeme, eziphikisana nokudlula kwamafrikhthi aphansi kakhulu futhi ziphakeme kakhulu ngasikhathi sinye. Ngamanye amagama, kuvumela kuphela amaza aphakathi ukuthi adlule.
  • Isihlungi sebhendi: kuphambene ncamashi nokwedlule, okwenzayo ukuthi kuhlunga ukudlula kokuvama kwaphakathi nendawo futhi kuvumela kuphela amaza aphansi naphakeme kakhulu ukuba adlule.

Khumbula lokho inductances bavumela amaza aphansi futhi baphikisana nokudlula kwamafrikhwensi aphezulu. Esikhundleni salokho, ama-capacitor bavumela amaza aphakeme futhi baphikise ukudlula kwamafrikhwensi aphansi.

Ngingathanda ukungeza lezo zihlungi ezingeni elisebenzayo abaphelele, futhi bangahlala badedela amaza athile aphansi noma aphezulu okufanele ngabe uyawavimba. Kodwa-ke, benza umsebenzi wabo kahle ezinhlelweni eziningi zokusebenza.

Ekugcineni, ngithanda futhi ukucacisa enye into, futhi lokho ukuthi uzwile ngokuqinisekile nge- Izihlungi ze-EMA ne-DEMA. Izihlungi ze-EMA (Exponential Moving Average) zivumela ukusebenzisa lolu hlobo lokuhlunga ngendlela elula kumadivayisi ashumekiwe. Ngokuqondene ne-DEMA (Double Exponential Moving Average), banempendulo esheshayo kune-EMA, begcina ukucindezelwa okuhle komsindo ofuna ukuwugwema.

Isici se-Alpha

El i-alpha factor, ozobona ukuthi ivela kumakhodi we-Arduino IDE esigabeni esilandelayo, ipharamitha enquma ukusebenza kwesihlungi esichazayo. Ihlobene nemvamisa ye-cutoff:

  • I-Alpha = 1: enikezela ngesiginali kokukhipha okungafakiwe.
  • I-Alpha = 0: inani lokuhlunga lizohlala lingu-0.
  • I-Alpha = x: amanye amanani angathola ezinye izinguquko kusihlungi se-EMA. Uma wehlisa isici se-Alpha, uzothambisa isignali yokuvama etholwe kakhulu, futhi nesikhathi sokuphendula sohlelo naso siyakhuphuka (kuthatha isikhathi eside ukuzinza).

Izihlungi ne-Arduino

Ibhasi le-Arduino I2C

Ukusetshenziswa kwalezi zihlungi, ukusetshenziswa kwelabhulali ye-Arduino IDE kuzokwenza umsebenzi wakho ube lula kakhulu. Ungasebenzisa okufanayo.

Kufanele wazi ukuthi akudingekile ukudala isekethe isihlungi sokupasa esiphakeme noma isihlungi sephasi eliphansi ukuyixhuma ebhodini lakho le-Arduino futhi usebenze nayo. Noma ungazama futhi udale lezi zinhlobo zezihlungi ezilula, ungahlola nokuthi i-EMA izosebenza kanjani nebhodi le-Arduino kanye nekhodi elula ye-Arduino IDE. Ukuphela kwento odinga ukuyibona ukuthi iphethe kanjani ukuhlunga amaza athile (kulokhu isenzo silingisiwe futhi amanye amanani / amaflothi avele ahlungwe ukulingisa engizokwenza hlunga empeleni).

Nawa amanye amasampula ekhodi ongawasebenzisa ukuzijwayeza.

Isibonelo sesihlungi sedijithali esilula ku-Arduino sohlobo ukudlula okuphansi:

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

Isibonelo sekhodi yohlobo lwe-Arduino Ukudlula okuphezulu:

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
}

Isibonelo sekhodi ye-Arduino ukudlula kwebhendi:

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

Isibonelo sekhodi ye-Arduino kweqembu:

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

Khumbula ukuthi i-ADC yisiguquli se-Arduino Analog Digital. Sebenzisa ibanga elingu-0-5v, uhlukanise amabanga ka-0-1023. Uma inani lingu-0v, inani ledijithali lika-0 liyathathwa, futhi uma lingu-5v, i-1023 izothathwa njengenani lesiginali, i-1v ingaba yi-204m, i-2v ibe ngu-408, njll.

Ngikweluleka ukuthi ushintshe futhi uzame lawa makhodi. Umphumela unga bona ngokugqamile sibonga i-Serial Plotter ye-Arduino IDE… Khumbula ukuthi uma unemibuzo mayelana nohlelo lwe-Arduino noma ukuthi ungayisebenzisa kanjani i-IDE, ungalanda inkambo yamahhala ye-HwLibre nge-PDF.


Yiba ngowokuqala ukuphawula

Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Ubhekele imininingwane: Miguel Ángel Gatón
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.