מסנן נמוך לעבור: כל מה שאתה צריך לדעת על המעגל הזה

מעגל מסנן נמוך לעבור

סלילים ומגברי אופ מאפשרים לכם ליצור מעגלים מעניינים מאוד, כמו המפורסמים מסנני תדרים. למסננים אלה יש מגוון יישומים בתעשיית האלקטרוניקה. כמו במקרה של מסנן המעבר הנמוך, מסנן המעבר הגבוה וכו '. הם מעניינים במיוחד עבור יישומי צליל מסוימים, היכולת לסנן רעשים, או צלילים רציניים פחות או יותר בהתאם לתדירותם. לכן, הם מאוד שימושיים.

אם אתה רוצה לדעת יותר על מסנן מעביר נמוך, ומסננים אחרים, וכיצד הם יכולים לעזור לך בפרויקטים שלך עם Arduino או DIY, אני ממליץ לך להמשיך לקרוא ...

פילטרים חשמליים

כשמו כן הוא, פילטר הוא מעגל המורכב מסדרת סלילים וקבלים, ואפילו מגברים תפעוליים מסוימים, לצורך לתת רק לחלקים מסוימים בתדר לעבור. כלומר, מכל הספקטרום של התדרים הזמינים הם יסננו חלק אחד או יותר בכדי למנוע את מעברם.

אם לשם כך ejemplo אנחנו מדברים על הספקטרום הנשמע על ידי האדם, ועובר מ -20 הרץ ל -20 קילו-הרץ, עם פילטרים שתוכל לבטל את הנמוך ביותר, או את הגבוה ביותר, כדי לאפשר רק לעבור לצלילי הטרבל / בס. זה משהו שרבים ממערכות הקלטה או העתקה של שמע משתמשים בו, כגון מיקרופונים, רמקולים וכו '.

סוגים

פי סוג מסנן, או ליתר דיוק, תלוי בתדירות שהם חוסמים או זה שהם עוברים לעבור, ישנם סוגים שונים של מעגלים שהם:

  • מסנן מעביר נמוך: הם נקראים כך מכיוון שהם אותם פילטרים שמאפשרים לתדרים הנמוכים ביותר לדכא או להקטין את המעבר של התדרים הגבוהים יותר. הם מורכבים מסליל אחד או יותר (בסדרה עם ספק הכוח והעומס), וקבלים שאנט או שניים עם ספק הכוח והעומס. זכרו שעומס מובן כמכשיר המחובר למסנן ואוסף את תפוקת המסנן ... בתוך המסננים הללו קיימות גם גרסאות, כגון L, T ו- π.
  • לעבור סינון גבוה: מסנן המעבר הגבוה הוא ההפך מהמעבר הנמוך, במקרה זה, מה שיסנן או יגביל הוא המעבר בתדר הנמוך, ומאפשר לתדרים הגבוהים יותר לעבור. בכך מושקעים האלמנטים האלקטרוניים המרכיבים אותו. כלומר, כאן הקבלים יהיו אלה בסדרה עם אספקת החשמל והעומס, ואילו הסלילים יוסרו. ישנם גם אותם תת-סוגים כמו במקרה של מסנני מעבר נמוך.
  • מסנן מעבר פס: סוג זה של פילטר מפעיל שני חסימות קצב מעבר של תדרים. כלומר, הם פועלים גם כפילטר מעבר נמוך וגם כמסנן מעבר גבוה, המתנגדים למעבר התדרים הנמוכים ביותר וגם הגבוהים ביותר בו זמנית. במילים אחרות, זה מאפשר רק לעבור לתדרים האמצעיים.
  • פילטר הלהקה: זה בדיוק ההפך מקודמו, מה שהוא עושה זה שהוא מסנן את המעבר של תדרי האמצע ורק מאפשר לעבור את התדרים הנמוכים והגבוהים ביותר.

תזכור זאת השראות הם מאפשרים לעבור תדרים נמוכים ומתנגדים לתדרים גבוהים. במקום זאת, קבלים הם עוברים בתדרים גבוהים ומתנגדים למעבר תדרים נמוכים.

ברצוני להוסיף את המסננים ברמה המעשית הם לא מושלמיםוהם תמיד יכולים לאפשר תדרים נמוכים או גבוהים שאתה אמור לחסום. עם זאת, הם עושים את עבודתם די טוב עבור רוב היישומים.

ולבסוף, ברצוני גם להבהיר דבר אחר, וזה שבוודאי שמעתם על ה- מסנני EMA ו- DEMA. מסנני EMA (אקספוננציאלי נע ממוצע) מאפשרים לך להטמיע מסנן מסוג זה בצורה פשוטה במכשירים משובצים. באשר ל- DEMA (ממוצע נע אקספוננציאלי כפול), יש להם תגובה מהירה יותר מ- EMA, תוך שמירה על דיכוי טוב של הרעש שברצונך להימנע ממנו.

גורם אלפא

El גורם אלפא, שתראה המופיע בקודי ה- Arduino IDE בסעיף הבא, הוא הפרמטר התנאי להתנהגות המסנן האקספוננציאלי. זה קשור לתדירות הניתוק:

  • אלפא = 1: המספק אות לפלט הלא מסונן.
  • אלפא = 0: ערך המסנן תמיד יהיה 0.
  • אלפא = x: ערכים אחרים יכולים לקבל שינויים אחרים במסנן EMA. אם תקטין את גורם האלפא, תרכך את אות התדרים המתקבל יותר וזמן התגובה של המערכת גדל גם הוא (לוקח יותר זמן להתייצב).

פילטרים וארדואינו

אוטובוס ארדואינו I2C

לשימוש במסננים אלה, השימוש בספרייה עבור Arduino IDE יקל על עבודתך. אתה יכול להשתמש אותו הדבר.

עליכם לדעת כי אין צורך ליצור את המעגל מסנן מעבר גבוה או מסנן נמוך לעבור כדי לחבר אותו ללוח Arduino שלך ולעבוד איתו. למרות שאתה יכול להתנסות וליצור סוגים כאלה של פילטרים פשוטים, אתה יכול גם לבדוק כיצד EMA יעבוד רק עם לוח Arduino וקוד פשוט עבור IDE של Arduino. זה הדבר היחיד שאתה צריך כדי לראות כיצד הוא אחראי על סינון תדרים מסוימים (במקרה זה הפעולה מדומה וכמה מספרים שלמים / צפים פשוט מסוננים מדמה מה הייתי עושה מסנן למעשה).

להלן מספר דוגמאות קוד שתוכלו להשתמש בהן לתרגול.

דוגמה למסנן דיגיטלי פשוט בארדואינו מהסוג מעבר נמוך:

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

דוגמת קוד לסוג ארדואינו מעבר גבוה:

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
}

דוגמת קוד ארדואינו לעבור להקה:

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

דוגמת קוד ארדואינו ללהקה:

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-5 וולט, מחלק לטווחים של 0-1023. אם הערך הוא 0v, הערך הדיגיטלי של 0 נלקח, ואם הוא 5v, 1023 ייקח כערך האות, 1v יכול להיות 204m, 2v יהיה 408 וכו '.

אני ממליץ לך לשנות ולהתנסות בקודים אלה. התוצאה שאתה יכול לראות בצורה גרפית מאוד תודה למתווה הסדרתי של ארדוינו IDE ... זכרו שאם יש לכם שאלות לגבי תכנות ארדואינו או אופן השימוש ב- IDE, תוכלו להוריד את קורס HwLibre בחינם ב- PDF.


היה הראשון להגיב

השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.