www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Dig. Bandpass auf AVR


Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

ich benötige für ein anstehendes Projekt einen Bandpass Filter. 
Ansprüche an Steilheit etc. habe ich eigentlich nicht. Ich möchte nur 
die max. Amplitude in einem Bestimmten Frequenzbereich (ca. 10kHz) 
bestimmen. Am besten wäre es wenn ich ca. jede Millisekunde ein neues 
Ergebnis errechnen könnte. Als Samplingfrequenz würde ich 22kHz 
vorschlagen. 8 Bit würden wahrscheinlich reichen.

Da ich auf dem Gebiet noch recht unerfahren bin... Was meint ihr, ist 
sowas auf einem AVR (z.B. mit 16MHz) möglich? IIR, FIR? viel anderes 
muss ich nicht mehr machen. Oder sollte ich es doch lieber analog 
machen? Oder mit einem digitalen Filter IC, kennt jemand eins?

Wenn ja, wo gibt es gute Beispiele (in C)?


Vielen Dank schonmal, ich hoffe ihr könnt mir helfen

Mike

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das ist ohne Probleme machbar. IIR zweiter Ordnung sollte 
ausreichen, die beiden Polstellen so in der Nähe des Einheitskreises 
platzieren, daß Du mit der Bandbreite des Bandpaß zufrieden bist. Zwei 
Multiplikationen reichen aus, das schafft bei 22kHz selbst der AVR. Wenn 
Du die Mittenfrequenz auf die halbes Abtastfrequenz legst kommt man 
möglicherweise mit einer Multiplikation aus.


Cheers
Detlef

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Detlef,

vielen Dank für deine Antwort.

Ich habe mich etwas undeutlich ausgedrückt. Nur sicherheitshalber 
nochmal: Ich will z.B. einen Bandpass mit Mittenfrequenz von 10kHz haben 
und einer Bandbreite von ca. 1 kHz. und das mit 22kHz vielleicht auch 
etwas mehr samplen. Von dem 1kHz Band würde ich die max. Amplitude 
auswerten. Das ganze am besten jede Millisekunde oder schneller.
Man hätte ja pro Hz ca. 700 CPU Takte... ist ja auch schon einiges :-)

Und das sollte so klappen?


Grüße,

Mike

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wieviel RAM benötigt man... bzw. muss man mit Arrays arbeiten und 
wird dies fließend berechnet?

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Ich habe mich etwas undeutlich ausgedrückt.
Hab ich trotzdem verstanden.

In
Beitrag "IIR Filter mit Matlab"

hab ich mal C-Code (funktionierend !) für nen IIR zweiter Ordnung 
gepostet. So im Prinzip machst Du das, mit dem Unterschied, daß die 
Koeffizienten andere sind und Du nicht in float sondern in integer 
rechnest. Die b Koeffizienten lauten b0=1, b1,b2=0. Die 
Rückkoppelkoeffizienten berechnest Du am besten mit Matlab oder Scilab:

clear
be=0.90;
w=pi*10/11;
fa=poly(be*[exp(-i*w) exp(i*w) ]);
H= abs(freqz(1,fa,11000));
H=H/max(H);
plot(20*log10(H),'.-');
grid


Für den Betrag be=0.90 bekommst Du ungefähr eine 3dB Bandbreite von 
1kHz, die Koeffizienten lauten dann 1.7271 und 0.8100.

>>Und das sollte so klappen?
Yep, 720ticks für rein/raus und 2 Multiplikationen reicht.

>>Und wieviel RAM benötigt man... bzw. muss man mit Arrays arbeiten und
>>wird dies fließend berechnet?
Nix RAM, on the fly fließend rechnen.

Ohne bißchen Verständnis von digitalen Filtern wird das allerdings nix, 
da mal rangehen.

Cheers
Detlef

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!

Ich hatte das alles im Studium. In Matlab simuliert... aber schon wieder 
alles vergessen ;-)

Werde mich demnächst dann einarbeiten. Ohne genaue Kenntnisse ist es 
immer schwierig.

Mike

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.