Φίλτρο χαμηλής διέλευσης: όλα όσα πρέπει να γνωρίζετε για αυτό το κύκλωμα

κύκλωμα φίλτρου χαμηλής διέλευσης

Τα πηνία και οι ενισχυτές op σας επιτρέπουν να δημιουργήσετε πολύ ενδιαφέροντα κυκλώματα, όπως τα περίφημα φίλτρα συχνότητας. Αυτά τα φίλτρα έχουν πολλές εφαρμογές στη βιομηχανία ηλεκτρονικών. Όπως συμβαίνει με το φίλτρο χαμηλής διέλευσης, το φίλτρο υψηλής διέλευσης κ.λπ. Είναι ιδιαίτερα ενδιαφέρον για ορισμένες εφαρμογές ήχου, είναι σε θέση να φιλτράρουν θορύβους ή περισσότερους ή λιγότερο σοβαρούς ήχους ανάλογα με τη συχνότητά τους. Επομένως, είναι πολύ χρήσιμα.

Αν θέλετε να μάθετε περισσότερα σχετικά με φίλτρο χαμηλής διέλευσηςκαι άλλα φίλτρα και πώς μπορούν να σας βοηθήσουν στα έργα σας με το Arduino ή το DIY, σας ενθαρρύνω να συνεχίσετε να διαβάζετε ...

Ηλεκτρικά φίλτρα

Όπως υποδηλώνει το όνομά του, ένα φίλτρο είναι ένα κύκλωμα που αποτελείται από μια σειρά πηνίων και πυκνωτών, ακόμη και ορισμένων λειτουργικών ενισχυτών, με σκοπό αφήνοντας μόνο ορισμένα μέρη μιας συχνότητας να περάσουν. Δηλαδή, από ολόκληρο το φάσμα των διαθέσιμων συχνοτήτων, θα φιλτράρουν ένα ή περισσότερα μέρη για να τους εμποδίσουν να περάσουν.

Εάν για παράδειγμα Μιλάμε για το φάσμα που ακούγεται από τον άνθρωπο, το οποίο κυμαίνεται από 20 Hz έως 20 Khz, με φίλτρα που θα μπορούσατε να εξαλείψετε το χαμηλότερο ή το υψηλότερο, για να επιτρέψετε μόνο στους περισσότερους ή λιγότερους ήχους πρίμων / μπάσων. Είναι κάτι που χρησιμοποιούν πολλά συστήματα εγγραφής ή αναπαραγωγής ήχου, όπως μικρόφωνα, ηχεία κ.λπ.

Τύποι

Σύμφωνα με τύπος φίλτρου, ή μάλλον, ανάλογα με τη συχνότητα που μπλοκάρουν ή με αυτήν που αφήνουν, υπάρχουν διαφορετικοί τύποι κυκλωμάτων που είναι:

  • Φίλτρο χαμηλής διέλευσης: ονομάζονται έτσι επειδή είναι εκείνα τα φίλτρα που αφήνουν τις χαμηλότερες συχνότητες να περάσουν και να καταστείλουν ή να μειώσουν το πέρασμα των υψηλότερων συχνοτήτων. Αποτελούνται από ένα ή περισσότερα πηνία (σε σειρά με την τροφοδοσία και το φορτίο), και έναν ή δύο πυκνωτές διακλάδωσης με την τροφοδοσία και το φορτίο. Να θυμάστε ότι το φορτίο θεωρείται ότι είναι η συσκευή που είναι συνδεδεμένη στο φίλτρο και συλλέγει την έξοδο του φίλτρου ... Μέσα σε αυτά τα φίλτρα υπάρχουν επίσης παραλλαγές, όπως L, T και π.
  • Φίλτρο υψηλής διέλευσης: το φίλτρο υψηλής διέλευσης είναι το αντίθετο του χαμηλού περάσματος, σε αυτήν την περίπτωση, αυτό που θα φιλτράρει ή θα περιορίσει είναι το πέρασμα χαμηλής συχνότητας, αφήνοντας τις υψηλότερες συχνότητες να περάσουν. Σε αυτό επενδύονται τα ηλεκτρονικά στοιχεία που το συνθέτουν. Δηλαδή, εδώ οι πυκνωτές θα είναι αυτοί σε σειρά με το τροφοδοτικό και το φορτίο, ενώ τα πηνία θα απομακρύνονται. Υπάρχουν επίσης οι ίδιοι υπότυποι όπως στην περίπτωση των φίλτρων χαμηλής διέλευσης.
  • Φίλτρο διέλευσης ζώνης: Αυτός ο τύπος φίλτρου ασκεί δύο κλειδαριές ρυθμού διέλευσης ζώνης συχνοτήτων. Δηλαδή, ενεργούν τόσο ως φίλτρο χαμηλής διέλευσης όσο και ως φίλτρο υψηλής διέλευσης, σε αντίθεση με τη διέλευση των χαμηλότερων συχνοτήτων και επίσης την υψηλότερη ταυτόχρονα. Με άλλα λόγια, επιτρέπει μόνο τη διέλευση των μεσαίων συχνοτήτων.
  • Φίλτρο ζώνης: είναι ακριβώς το αντίθετο από το προηγούμενο, αυτό που κάνει είναι ότι φιλτράρει το πέρασμα των μεσαίων συχνοτήτων και επιτρέπει μόνο τις χαμηλότερες και υψηλότερες συχνότητες.

Θυμηθείτε αυτό επαγωγές αφήνουν τις χαμηλές συχνότητες και αντιτίθενται στο πέρασμα των υψηλών συχνοτήτων. Αντι αυτου, πυκνωτές αφήνουν τις υψηλές συχνότητες και αντιτίθενται στο πέρασμα των χαμηλών συχνοτήτων.

Θα ήθελα να προσθέσω αυτά τα φίλτρα σε πρακτικό επίπεδο δεν είναι τέλειακαι μπορούν πάντα να περνούν μερικές χαμηλές ή υψηλές συχνότητες που πρέπει να αποκλείσετε. Ωστόσο, κάνουν τη δουλειά τους αρκετά καλά για τις περισσότερες εφαρμογές.

Και τέλος, θα ήθελα επίσης να διευκρινίσω ένα άλλο πράγμα, και αυτό είναι ότι έχετε ακούσει σίγουρα για το Φίλτρα EMA και DEMA. Τα φίλτρα EMA (Exponential Moving Average) επιτρέπουν την εφαρμογή αυτού του τύπου φίλτρων με απλό τρόπο σε ενσωματωμένες συσκευές. Όσο για το DEMA (Double Exponential Moving Average), έχουν ταχύτερη απόκριση από το EMA, διατηρώντας μια καλή καταστολή του θορύβου που θέλετε να αποφύγετε.

Άλφα συντελεστής

El άλφα παράγοντας, το οποίο θα δείτε ότι εμφανίζεται στους κωδικούς Arduino IDE στην επόμενη ενότητα, είναι η παράμετρος που καθορίζει τη συμπεριφορά του εκθετικού φίλτρου. Σχετίζεται με τη συχνότητα αποκοπής:

  • Alpha = 1: που παρέχει σήμα για τη μη φιλτραρισμένη έξοδο.
  • Alpha = 0: η τιμή του φίλτρου θα είναι πάντα 0.
  • Alpha = x: άλλες τιμές μπορούν να λάβουν άλλες αλλαγές στο φίλτρο EMA. Εάν μειώσετε τον παράγοντα Alpha, θα μειώσετε το σήμα συχνότητας που λαμβάνεται περισσότερο και ο χρόνος απόκρισης του συστήματος αυξάνεται επίσης (χρειάζεται περισσότερος χρόνος για τη σταθεροποίηση).

Φίλτρα και Arduino

Λεωφορείο Arduino I2C

Για να χρησιμοποιήσετε αυτά τα φίλτρα, η χρήση βιβλιοθήκης για το Arduino IDE θα κάνει τη δουλειά σας πολύ πιο εύκολη. Μπορείς να χρησιμοποιήσεις το ιδιο.

Πρέπει να γνωρίζετε ότι δεν είναι απαραίτητο να δημιουργήσετε το κύκλωμα φίλτρο υψηλής διέλευσης ή φίλτρο χαμηλής διέλευσης για να το συνδέσετε στην πλακέτα Arduino και να δουλέψετε μαζί του. Παρόλο που μπορείτε να πειραματιστείτε και να δημιουργήσετε αυτά τα είδη απλών φίλτρων, μπορείτε επίσης να δοκιμάσετε πώς θα λειτουργούσε ένα EMA μόνο με τον πίνακα Arduino και έναν απλό κωδικό για το 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);

Παράδειγμα κώδικα για τον τύπο 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 Analog Digital. Χρησιμοποιήστε εύρος 0-5v, διαιρώντας σε εύρη 0-1023. Εάν η τιμή είναι 0v, λαμβάνεται μια ψηφιακή τιμή 0, και αν είναι 5v, το 1023 θα ληφθεί ως τιμή σήματος, το 1v μπορεί να είναι 204m, το 2v θα είναι 408 κ.λπ.

Σας συμβουλεύω να τροποποιήσετε και να πειραματιστείτε με αυτούς τους κωδικούς. Το αποτέλεσμα μπορείτε δείτε πολύ γραφικά χάρη στο Serial Plotter του Arduino IDE ... Να θυμάστε ότι εάν έχετε ερωτήσεις σχετικά με τον προγραμματισμό Arduino ή πώς να χρησιμοποιήσετε το IDE, μπορείτε να κατεβάσετε το δωρεάν μάθημα HwLibre σε μορφή PDF.


Γίνε ο πρώτος που θα σχολιάσει

Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.