# Συζήτηση Κυκλωμάτων > Ψηφιακά Κυκλώματα > Γενικά >  >  low pass filter για αναλογικό σήμα με software

## xmaze

Γειά σας, 

προσπαθώ να βρω έναν μαθηματικό τύπο για να κάνω ένα low pass φίλτρο σε μικροεπεξεργαστή. 
Η εφαρμογή διαβάζει το ADC και απο τα δείγματα που παίρνω έρχονται και κάποια παράσιτα. Ο σκοπός μου είναι να απορρίψω αυτά τα παράσιτα έτσι ώστε να έχω ένα καθαρό σήμα. 
Έχει κανείς καμία πρόταση για το πώς μπορώ να το δημιουργήσω σε C;

----------


## picdev

πρακτικά θα μπορούσες να φτιάξεις μερικά φίλτρα, όπως η νέα τιμή που θα διαβάζεις θα ειναι πχ 80% ενώ θα προσθέτεις και ενα ποσοστό 20% απο τη παλιά.
http://www.microchip.com/forums/m108853.aspx

Ενας άλλος τροπος ειναι το φίλτρο μεταβαλλόμενου μέσου όρου 

αλλά γενικά θα πρέπει η συχνότητα δειγματοληψίας να ειναι διπλάσια απο αυτή του σήματος σου.
Υπάρχουν και πιο δραστικά φίλτρα με μνήμη πχ να παίρνεις 100 δείγματα και να κάνεις bubleshort και ετσι να αποκλείεις ακραίες τιμές

----------


## sabouras

Νομιζω οτι αυτο το μικρο προγραμματάκι θα σε βοηθήσει. 
http://www.winfilter.20m.com/
Παράγει και τον αντίστοιχο κώδικα.

----------

picdev (04-02-17)

----------


## picdev

σαβούρα πολύ ωραίο το προγραμματάκι σου, θα ήθελα να σου κάνω μια ερώτηση σχετιά με τα φίλτρα και τον ΓΤΡ, έκανα και εγώ κάποιες ασκήσεις στα σαε με το ΓΤΡ , 
αλλά στη πράξη στα φίλτρα πως μπορεί να βοηθήσει ?

----------


## SProg

> με τα φίλτρα και τον ΓΤΡ




http://slideplayer.gr/slide/2865930/

----------


## arkoudiaris

βρες την συνάρτηση του φίλτρου σου σε  laplace, μετέτρεψε την στο z (όχι με απευθείας μετατροπή) αλλά με κάποιο είδος ολοκλήρωσης forward, backward, euler, trapezoidal και έπειτα σε διακριτό χρόνο kt, όπου και μπορείς να το υλοποιήσεις στον ελεγκτη σου.

----------


## picdev

αυτό το βιβλίο προσπαθώ να αρχίσω, ειμαι ακόμα στο 1ο κεφάλαιο μέσα στη βδομάδα ελπίζω να μπω σε πρόγραμμα 
https://www.amazon.com/Understanding.../dp/0137027419

----------


## picdev

> βρες την συνάρτηση του φίλτρου σου σε  laplace, μετέτρεψε την στο z (όχι με απευθείας μετατροπή) αλλά με κάποιο είδος ολοκλήρωσης forward, backward, euler, trapezoidal και έπειτα σε διακριτό χρόνο kt, όπου και μπορείς να το υλοποιήσεις στον ελεγκτη σου.



νικο
οταν λες διακριτό χρόνο kt ? να πάρεις τιμές εξόδου-εισοδου για να βρει τον αλγόριθμο ?

----------


## CybEng

Υπάρχει επίσης ένα ωραίο προγραμματάκι για συσκευές Android, το FIR Filter Designer :

http://www.ledin.com/android-fir-filter-designer/

https://play.google.com/store/apps/d...edin.firdesign

Το κύριο χαρακτηριστικό του είναι ότι για τον υπολογισμό των παραμέτρων του φίλτρου χρησιμοποιεί τον δοκιμασμένο αλγόριθμο Parks–McClellan     (  https://en.wikipedia.org/wiki/Parks–...sign_algorithm  ).

Πέρα από τον υπολογισμό του φίλτρου σου παράγει και source code με την υλοποίηση του φίλτρου σε  C/C++, C#, Java & MATLAB/GNU Octave.

Το έχω δοκιμάσει και μπορώ να πω ότι μου έχει λύσει τα χέρια.



Για υπολογισμό φίλτρων  με "περίεργα" χαρακτηριστικά απόκρισης προτείνω το METEOR από τους Steiglitz, Parks, Kaiser.

http://www.nyx.net/~wliu/meteor.zip

https://www.cs.princeton.edu/~ken/meteor.html

https://pdfs.semanticscholar.org/722...10358f07e1.pdf

Το METEOR μπορεί να μην τρέχει μέσα από ωραίο GUI αλλά είναι πραγματικά πανίσχυρο για περίεργα φίλτρα.


Κλείνοντας θα ήθελα να παραθέσω ένα πολύ καλό ιστότοπο που αξίζει να δουν όσοι ενδιαφέρονται για ψηφιακά φίλτρα :

http://iowahills.com/Index.html

----------


## arkoudiaris

> νικο
> οταν λες διακριτό χρόνο kt ? να πάρεις τιμές εξόδου-εισοδου για να βρει τον αλγόριθμο ?



Ποιες τιμές εισόδου κ εξόδου του φίλτρου πρέπει να διατηρεί για την τωρινή τιμη εξόδου του φιτρου.

----------


## xmaze

ωραία όλα αυτά, αλλά δεν έχω ασχοληθεί ποτε και έχω μια απορία, στην δικιά μου περίπτωση που δεν έχω συχνότητες , τί κάνω;

----------


## arkoudiaris

τι εχεις τότε?

Τι συχνότητα 3db έχει το φίλτρο σου?

----------


## xmaze

προσπαθώ να καταλάβω, εφόσον παίρνω ενα δείγμα ADC κάθε 10ms και η τιμή του θα είναι απο 0 εώς 12bit (4096) τότε ποιά θεωρείται συχνότητα και τί magnitude;

----------


## arkoudiaris

τι σήμα έχεις ώς είσοδο? (αν είναι περιοδικό πες συχνότητα, αν δεν είναι περιοδικό πες ελάχιστη απότομη μεταβολή)

από τα δεδομένα που δίνεις τπτ δεν μπορείς να εξάγεις για το σήμα, το μόνο ότι το σήμα πρέπει να χει ελάχιστη περίοδο τουλάχιστον 2χ10ms για να δειγματοληπτείς σωστά

----------


## picdev

γιατι δεν δινεις πληροφορίες για το σημα που θες να μετρήσεις? εβαλες παλμογράφο ? αφού ειναι ac το σήμα πως δεν εχει συχνοτητα?
δεν ειναι περιοδικο?

----------


## xmaze

Η είσοδος είναι μία οθόνη αφής με αντιστάσεις(resistive ) και θέλω να απορρίψω τις απότομες μεταβολές που εμφανίζονται κατα την μέτρηση.

----------


## picdev

Να ξέρεις ότι παίζει και η θερμοκρασία ρόλο και μπορεί και η  υγρασία.
Όταν είχα φτιάξει capacitive touch είχα φτιάξει φίλτρο μεβαλομενου μέσου όρου .
Έχω ένα application της microchip . Πιστεύω ότι είναι το φίλτρο που ταιριάζει στη περίπτωση σου. Αλλιώς χρήσημο ποιήσε  ένα ic

----------


## xmaze

εχω βρει αυτο http://www.micromodeler.com/dsp/

κοιτάω το φίλτρο που μου λες άλλα δεν ξέρω πως να το ρυθμίσω στις σωστές συχνότητες και gain. Μήπως μπορεί κάποιος να βοηθήσει;

----------


## picdev

Το βράδυ θα σου ανεβάσω το AP note και το κώδικα που είχα φτιάξει

----------

