AVR Tiefpassfilter

electroicsplanet home electroicsplanet pagetree Elektronik Forum electroicsplanet pagetree AVR Tiefpassfilter

Elektronik Forum
AVR Tiefpassfilter
Author: Finn 11.08.2016-09:04
Ein Digitales Tiefpassfilter lässt sich durch verändern einiger Programmparameter einfacher anpassen als ein diskretes RC Filter umzulöten. Deshalb will ich ein Tiefpassfilter für meinem AVR programmieren.

Wie würded ihr das angehen? Ist das einfach machbar? Danke für Tips und auch danke noch für das AVT Tutorial auf dieser Website.

Finn

Re: AVR Tiefpassfilter
Author: Oliver 12.08.2016-16:06
Auf einem AVR mit eingebauten AD-Wandlern ist das ja relativ einfach machbar, die Rückwandlung könnte über einen Port und R2R-Netzwerk erfolgen. Digitale Filter sind allerdings nicht trivial und können sich "zickig" (im Sinne von instabil) anstellen. Es gibt dicke Bücher hierzu, ein Wikipedia-Artikel könnte auch weiterhelfen:

https://de.wikipedia.org/wiki/Digitales_Filter

Weiterhin scheint es ein Tool älteren Datums zu geben, dass bei vorgegebenen Parametern auch gleich C-Code ausspuckt. Hierzu liegen mir aber keine Erfahrungen vor.

http://www.winfilter.20m.com/

Viel Spaß
Oliver

Re: AVR Tiefpassfilter
Author: Simba 12.08.2016-17:26
Hi Finn

Willst du die gefilterten Werte denn wieder als Analogwert ausgeben? Oder werden sie im AVR weiterverwendet?

Soll dein Tiefpassfilter eines im Stil eines gleitenden Mittelwertfilters sein? Oder was für eine Filterung schwebt dir genau vor?

Gruss
Simba

Re: AVR Tiefpassfilter

Re: AVR Tiefpassfilter
Author: Finn 15.08.2016-17:57
Danke für die Links!!

Die Werte sollen im AVR drinnen bleiben. Ich muss sie nicht mit einem DAC wieder sichtbar machen. Und ja, es sollte gleitend sein. Es soll einfach ein RC Tiefpassfilter ersetzen.

Re: AVR Tiefpassfilter
Author: Roman 16.08.2016-14:59
Willst du ein Filter in der Form von

S1+S2+S3+S4/4
S2+S3+S4+S5/4
S3+S4+S5+S6/4
usw. ?


Dann versuchs mal mit:


//---------C code --------------

unsigned long mittelwert = 0;

mittelwert = ((mittelwert << filterparameter) - mittelwert + lastADCSample) >> filterparameter;

//---------C code---------------

Das ADC Sample müsstest du natürlich noch vom ADC holen.

Der Filterparameter dimensioniert dir die Rauschunterdrückung. Der Mittelwert wird hier mit 2^parameter multipliziert. Dann wird der Mittelwert ein mal abgezogen und ein mal der neue Wert dazugezählt. Anschliesend wird wieder durch 2^parameter dividiert.


Das ist eine ganz gut bruchbare Tiefpassfilterung für deinen AVR und ein gleitendes Mittelwertfilter. Das Schöne ist, dass du ohne Multiplikation und Division auskommst.

Gruss
Lars

Re: AVR Tiefpassfilter
Author: Oliver 17.08.2016-16:56
Wenn es nicht nur gleitender Mittelwert sein soll: Ein brauchbares Projekt wird hier beschrieben:

http://www.mikrocontroller.net/articles/Digitalfilter_mit_ATmega

Gruss
Oliver

Re: AVR Tiefpassfilter

Antwort schreiben
Name:

Betreff:

Spamschutz, Welche Farbe hat ein rotes Herz?

Beitrag:

Elektronik Forum
          
Grundlagen Spannungsteiler Widerstandsreihen Widerstandsfarbcode Farbcode Quiz Servos Standard Transistoren Steckerbelegungen Elektronik Bücher EMV Lektion 1 Elektronik Forum
Schaltungssammlung CD Laser ersetzen Servo Hacking Meine Roboter
ATmega8 ADC ATmega8 Timer0 ATmega8 Timer1 ATmega8 Ext. Int. ATmega16 Timer0 ATmega16 Timer1 ATmega16 ADC ATmega16 Ext. Int. ATmega32 Timer0 ATmega32 Timer1 ATmega32 ADC ATmega32 Ext. Int. AVR Tutorial C
Feedback Würfelaugen