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


von Walter T. (nicolas)


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)


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)


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)


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)


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)


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)


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 (. (Gast)


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)


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)


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

Beitrag #6531384 wurde von einem Moderator gelöscht.
Beitrag #6534067 wurde von einem Moderator gelöscht.
von Audiomann (Gast)


Lesenswert?

Dergute W. schrieb:
> Dessen Grenzfrequenz waere dann irgendwo eher bei 0.25
> oder 0.5 und damit die Pole deutlich gemuetlicher weiter weg vom
> Einheitskreis.

Wie könnte man einem alten Analog-OPA erklären, was das bedeutet, wenn 
besagte Punkte "zu nah am Einheitskreis" sind?

von Walter T. (nicolas)


Lesenswert?

Bei einem rein passiven Filter kann das nicht vorkommen.

Bei einem aktiven Filter wäre das allgemeiner dass die Gegenkopplung 
unwirksam wird, also kurz vor der Mitkopplung steht.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Unter Missachtung des roten Textes mein Senf fuer Opas dazu:
Audiomann schrieb:
> Wie könnte man einem alten Analog-OPA erklären, was das bedeutet, wenn
> besagte Punkte "zu nah am Einheitskreis" sind?

Das ist so aehnlich, wie wenn du bei einem Audion die Rueckkopplung 
aufdrehst, damit der Sender lauter wird, aber du schon etwas tatterich 
bist, daher die Rueckkopplung immer mal wieder zu weit gedreht wird, so 
dass das Audion dann und wann "pfeift".
Das tatteriche am Digitalfilter kommt durch die Rundungsfehler, die man 
halt bei endlicher Genauigkeit unweigerlich bei jeder Rechenoperation 
haben kann.

@nicolas: ist aus dem Ding, was du bauen wolltest, was geworden?

Gruss
WK

: Bearbeitet durch User
von Christoph M. (mchris)


Lesenswert?

Audimann
>Wie könnte man einem alten Analog-OPA erklären, was das bedeutet, wenn
>besagte Punkte "zu nah am Einheitskreis" sind?

Hier gibt's ein schönes online IIR-Filter Design Tool:

http://jaggedplanet.com/iir/iir-explorer.asp

Damit kannst du ein wenig spielen und im "Pole-Zero-Plot" die Polstellen 
am Einheitskreis beobachten.

von Walter T. (nicolas)


Lesenswert?

Dergute W. schrieb:
> @nicolas: ist aus dem Ding, was du bauen wolltest, was geworden?

Das funktioniert seit Jahr und Tag recht zuverlässig. Leider habe ich 
die Doku etwas vernachlässigt, und nur handschriftliche Aufzeichnungen. 
Damit könnte ich spontan gar nicht sagen, welches Filter ich am Ende 
verwendet habe.

Falls irgendwem in den letzten eineinhalb Jahren noch guter Lesestoff zu 
dem Thema über den Weg gelaufen ist, bin ich dennoch auch immer noch 
interessiert. Es ist ja nicht so, als würde das Thema ranzig.

: Bearbeitet durch User
von Nathan der Weise (Gast)


Lesenswert?

Christoph M. schrieb:
> Hier gibt's ein schönes online IIR-Filter Design Tool:

Leider helfen solche tools nicht, ein passendes Filter für seine 
Anwendung überhaupt auszuwählen.

Wann beispielsweise  nimmt man ein solches IIR und wann ein FIR für die 
Ratendezimierung?

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Nathan der Weise schrieb:
> Wann beispielsweise  nimmt man ein solches IIR und wann ein FIR für die
> Ratendezimierung?

Erlaubt ist, was gefaellt.
Dem Filter ist's scheissegal, wie's aufgebaut ist. Wenn du dezimieren 
willst, brauchst du halt einen Tief/Bandpass, damit durch die Dezimation 
das Abtasttheorem nicht (zu sehr) verletzt wird. Fertig.
Wie du das Filter realisierst, ist dein Privatvergnuegen - bzw. wird 
durch andere Gegebenheiten definiert.

Gruss
WK

von Pepe the Rightwing AntiVaxxer (Gast)


Lesenswert?

Ich würd mich in FIR einlesen.
Hochinteressent.
Ich hab damals den "coeff calculator" von "mkfisher" benutzt.

von Olf (Gast)


Lesenswert?

Pepe the Rightwing AntiVaxxer schrieb:
> coeff calculator" von "mkfisher

Link?

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Olf schrieb:
> Pepe the Rightwing AntiVaxxer schrieb:
>> coeff calculator" von "mkfisher
>
> Link?

Ich glaube, Link und dessen Author sind schon lange tot. iirc war das 
ein Onlinerechner fuer Parks/McClellanfilter.
Aehnliche Ergebnisse liefern Matlab / GNUOctave mit den funktionen 
remez() oder auch firls() oder sonst einer dir genehmen 
Filterapproximation.

Gruss
WK

von c-hater (Gast)


Lesenswert?

Walter T. schrieb:

> 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 Signal muss also tiefpassgefiltert und dezimiert werden, möglichst
> ohne dass jeweils zuviele Abtastwerte zwischengespeichert werden müssen.

Nö, das ist SCHWACHSINN. Und zwar konzeptioneller Schwachsinn. Das 
Problem des Konzepts steckt hier:

> eine (fixe) Abtastfrequenz von f_Sample = 10 kHz.

Ändere das Konzept und du wirst feststellen können, dass du überhaupt 
keine aufwendigen digitalen Filter benötigst, sondern maximal was 
primitives wie ein gleitendes Mittel.

von Elektroniker (Gast)


Lesenswert?

c-hater schrieb:
> Nö, das ist SCHWACHSINN.

DER TON UND DIE PERSONEN IN DIESEM FORUM WERDEN IMMER SCHLIMMER!

Warum hälst du Depp "c-hater" nicht einfach den Mund, wenn du keine 
Ahnung hast?

Drehzahlmessung erfordert eine sehr genaue und schnelle Dezimation und 
das vor allem nicht mit irgendeinem Filter wie dem gleitenden 
Mittelwert.

Eine Abtastung am Ausgang mit 20 Hz ermöglicht gerade eine minimale 
Messperiode von 50ms und eine maximale von vielleicht 100ms bis 150ms.

Da kommen bei der geringsten Drehzahl 450 pulse rein, was ohne weiteres 
Prozessieren nur eine Drehzahlgenauigkeit von 0,2-0,3% ermöglicht und 
dies nur, wenn der Filter keine Fehler induziert. Damit sind kurze oder 
sehr geringe Beschleunigungen nur auf Prozente genau zu ermitteln, was 
für eine Regelung z.B. schon einmal zu ungenau ist!

Umgekehrt müssen bei der höchsten Drehzahl Pulse mit > 1MHz verarbeitet 
werden. Das geht sinnvoll nur digital und erfordert eine tiefe 
Dezimation.

Schnell und tief ist nicht so einfach zu machen!

Bevor du also irgendwas als "Schwachsinn" einstufst, nur weil du zu 
dämlich bist, das Konzept und die Randbedingungen zu erfassen, solltest 
Du einfach mal weiterklicken und auf facebook schreiben. Da sind noch 
mehr solche ungebildeten und selbstherrlichen Affen wie du, die so 
argumentieren wie du!

Wer etwas lernen möchte zu dem Thema, kann sich da ja mal antun:
Beitrag "CIC-Filter für Halbierung der Abtastrate"

von Walter T. (nicolas)


Lesenswert?

Ich habe volles Verständnis dafür, dass man bei diesem Thema die 
professionelle Distanz verliert und es absolut unvermeidbar ist, dass 
die Emotionen irgendwann hochkochen.

von T.U.Darmstadt (Gast)


Lesenswert?

Walter T. schrieb:
> Ich habe volles Verständnis dafür, dass man bei diesem Thema die
> professionelle Distanz verliert

Beim Thema Rate Decimation und Filterung?

Elektroniker schrieb:
> Umgekehrt müssen bei der höchsten Drehzahl Pulse mit > 1MHz verarbeitet
> werden. Das geht sinnvoll nur digital und erfordert eine tiefe
> Dezimation.
Der TE hat aber nur 10kHz, wenn ich das richtig verstehe. Da würde ich 
doch die Frage stellen wie das von statten gehen soll.

Solche Drehimpulsgeber liefern in aller Regel ein A+B(+C)-Signal welches 
Flankenauswertung erfordert (inklusive Entprellung wenn man Pech hat). 
Mit 6000 UP/M wird das bei der Auflösung schon knapp.

Dergute W. schrieb:
> Onlinerechner fuer Parks/McClellanfilter.
Den gibt es aber noch!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.