Forum: Digitale Signalverarbeitung / DSP / Machine Learning Rate Decimation / Tiefpassfilter


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Walter T. (nicolas)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe ein konkretes Problem und würde es gern als Gelegenheit nutzen, 
mich auch etwas mehr in das Themengebiet "digitale Filter" 
einzuarbeiten. Also suche ich Lesestoff fürs Wochenende.

Das Ganze wird auch auf einer normalen MCU (mit FPU) und nicht auf einem 
DSP implementert, aber ich gehe momentan davon aus, dass trotzdem hier 
besser passt.

Das konkrete Problem: Ich will einen Drehzahlmesser bauen. Der 
angepeilte Bereich ist 5....6000 U/min. Ich habe einen Drehgeber mit 
1600 Pulsen/Umdrehung und eine (fixe) Abtastfrequenz von f_Sample = 10 
kHz. Fürs Endergebnis ist es OK, wenn ich eine Update-Frequenz f_Update 
= 10...20 Hz erreiche. Pefekt wäre eine Genauigkeit von ±0.5 U/min im 
stationären Zustand.

Das bedeutet: Im untersten Drehzahlbereich habe ich alle 75 
Abtastschritte einen Zählwert von 1, bei der höchsten Drehzahl maximal 
einen Zählwert von 24.

Das Signal muss also tiefpassgefiltert und dezimiert werden, möglichst 
ohne dass jeweils zuviele Abtastwerte zwischengespeichert werden müssen.

Mein erster naiver Versuch (Biquadratisches Filter, Q = 0.7, f_cutoff = 
5 Hz, und wegwerfen aller Werte außerhalb f_Update) erfüllt zufällig 
schon das obengenannte Gütekriterium, aber jetzt interessiert mich 
natürlich, wie weit ich mit der Grenzfrequenz/Einschwingzeit nach 
oben/unten gehen kann.

Wer kennt geeigneten Lesestoff zum Entwurf digitaler Filter, bei dem 
auch praktische Aspekte wie Dezimierungsfilter, Gütekriterien und 
echtzeitfähige Filter nicht zu kurz kommen?

: Bearbeitet durch User
von Dergute W. (derguteweka)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

Nicht direkt fuer den Anfang gedacht, aber da stehen lustige Tipps & 
Tricks drinnen:

Rick Lyons: Streamlining Digital Signal Processing:
ISBN: 9780470131572

Gruss
WK

von Walter T. (nicolas)


Bewertung
0 lesenswert
nicht lesenswert
Dergute W. schrieb:
> Nicht direkt fuer den Anfang gedacht,

Ich glaube das trifft es recht gut. Das sieht interessant aus (es 
scheint eine Art Festschrift zu sein), ist aber momentan weit jenseits 
meines Horizonts. Ich suche eher etwas mit Lehrbuchcharakter.

: Bearbeitet durch User
von Jan K. (jan_k)


Bewertung
0 lesenswert
nicht lesenswert
Wenn es um Grundlagen geht, eignet sich doch gut ein Grundlagenbuch ;) 
Ggf. auch auf Deutsch, ist manchmal doch angenehmer zu lesen, besonders 
am WE.

Ich habe keine konkrete Empfehlung, die ich in letzter Zeit selbst 
gelesen hätte. Bei Springer gibts aber viel:

https://www.springer.com/de/book/9783519161219 und unten in der "Wir 
empfehlen" Sektion gucken.
Das verlinkte Buch ist alt, das macht aber gar nichts, die Grundlagen 
sind dieselben. Von den Kapitelüberschriften sind viele interessante 
Sachen dabei und ausreichend Lesestoff für die nächsten WE.

Ich glaube nicht, dass du ein Spezialbuch brauchst, das auf konkrete 
Implementationstricks und numerische Feinheiten in deiner 
Controllerarchitektur oder so eingeht.


Ich prophezeihe hier einfach mal, dass du mit einer leicht optimierten 
Standardimplementation, wie sie z.B. CMSIS-DSP für alle Cortex-M0 
Controller (mit und ohne FPU) anbietet, vollkommen ausreichende 
Performance bekommst.
https://github.com/ARM-software/CMSIS_5/tree/develop/CMSIS/DSP und 
https://www.keil.com/pack/doc/CMSIS/DSP/html/index.html.

Ich glaube sogar, dass die naive Implementation nach 
https://en.wikipedia.org/wiki/Digital_biquad_filter#Transposed_Direct_form_2 
in einer MCU mit FPU ebenso ausreicht.

Es ist einfacher geworden als früher - die Rechenleistung der kleinen 
Viecher ist brutal.

von Dergute W. (derguteweka)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

Walter T. schrieb:
> Ich suche eher etwas mit Lehrbuchcharakter.

Da wuerde ich dann vom selben Author (Hm, ich sollte mal anfragen, ob 
ich fuer die Werbung Geld kassieren kann) empfehlen: Understanding 
Digital Signal Processing : isbn  0137027419
Da ist so einleitendes "Blabla", Fouriertransf., FIR/IIR-Filter etc. 
bla. grundlegend ausgewalzt. Halt auch in Englisch.

Hier kann man auch dann und wann fuendig werden:
https://www.dsprelated.com/

Gruss
WK

von W.S. (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Dergute W. schrieb:
> https://www.dsprelated.com/

Du willst dem TO doch wohl nicht eben diese Opi-Seite empfehlen? Dort 
tummeln sich nur Leute, von denen man garantiert keine Hilfe kriegt.

Stattdessen geben sich diese Burschen gegenseitig virtuelles Bier aus...

Ich rate eher dazu:
The Scientist and Engineer's Guide to Digital Signal Processing
By Steven W. Smith, Ph.D.

und das ist als PDF bei http://www.dspguide.com/ herunterladbar.

W.S.

von Dergute W. (derguteweka)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

W.S. schrieb:
> Du willst dem TO doch wohl nicht eben diese Opi-Seite empfehlen?

Doch will ich. Die "Opis" dort schreiben dann und wann Artikel, die mich 
(und vielleicht auch andere, dich wohl eher weniger) interessieren.

Gruss
WK

von Tobias N. (technick2)


Bewertung
0 lesenswert
nicht lesenswert
W.S. schrieb:
> Du willst dem TO doch wohl nicht eben diese Opi-Seite empfehlen? Dort

Ha, Ha, "Opi-Seite". gut gesagt.

Walter T. schrieb:
> normalen MCU (mit FPU)

Was ist den leistungstechnisch "normal" bei einer MCU?

Soetwas ist eine Aufgabe für einen FIR-Filter.

von Walter T. (nicolas)


Bewertung
0 lesenswert
nicht lesenswert
Tobias N. schrieb:
> Was ist den leistungstechnisch "normal" bei einer MCU?

Dass sich die übliche Vorgehensweise von einem DSP unterscheidet.

Tobias N. schrieb:
> Soetwas ist eine Aufgabe für einen FIR-Filter.

Hier zum Beispiel. Ein FIR würde ich auf einer general-purpose-MCU 
lieber vermeiden wollen, insbesondere bei großen Teilungsverhältnissen. 
400 Bytes RAM (bei einem Teilungsverhältnis von 100) nur für diese 
relativ einfache Nebenaufgabe vorzusehen erscheint mir massiv 
unverhältnismäßig.

Also ist der solide Kompromiss zwischen einfachem "heruntersamplen" und 
dem 100 Speicherplätzen tiefen FIR gefragt.

von Dergute W. (derguteweka)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

Tobias N. schrieb:
> Soetwas ist eine Aufgabe für einen FIR-Filter.

Wenn man jungdynamischer Huepfer ist und kein DSP-Opi, dann kann man das 
so sehen.
Mit einem grossen FIR laesst sich halt ziemlich viel erschlagen. Aber 
dann hat man halt ein grosses FIR am Hals.
Halt wie ein "8er Duebel" fuer den Heimwerker. Damit geht fast alles. 
Die Frage ist nur: Koennt' es nicht eine spezifischere, auf den 
Anwendungsfall besser zugeschnittene Loesung geben.

Fuer den konreten Fall hier, wenn nicht so viele Werte gespeichert 
werden sollen, dann sind IIR Filter vielleicht nicht die schlechteste 
Wahl. Bloed halt, wenn man einen TP mit sehr niedriger Grenzfrequenz 
braucht, wie das halt der Fall ist, wenn man z.b. eine Dezimation um 
einen grossen Faktor machen will. Wenn man z.b. hier um den Faktor 1024 
dezimieren will, dann waere dazu ein Tiefpass mit 1/1024* fAbtast/2 
noetig. Das als IIR hat dann die Pole ziemlich unangenehm nah' am 
Einheitskreis - koennte also potentiell numerische Probleme machen.
Von daher, und weil oft grosse Dezimationsverhaeltnisse besser ueber 
mehrere Stufen erreicht werden, wuerd' ich in diesem speziellen Fall 
erstmal mit einem CIC eine Dezimation um vielleicht 256 oder 512 machen 
und danach noch ein Cauerfilter 2. Ordnung fuer die restliche 2 bzw. 4 
fache Dezimation. Dessen Grenzfrequenz waere dann irgendwo eher bei 0.25 
oder 0.5 und damit die Pole deutlich gemuetlicher weiter weg vom 
Einheitskreis. Mit dem "cauer'schen Passbandripple" koennte man auch den 
CIC Frequenzgang im Durchlass wieder etwas begradigen (wenn einem da die 
2. Ordnung reicht).

Gibt sicher auch noch viel andere Moeglichkeiten, jede mit ihren eigenen 
"Features".

Gruss
WK

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.

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