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
Moin, Nicht direkt fuer den Anfang gedacht, aber da stehen lustige Tipps & Tricks drinnen: Rick Lyons: Streamlining Digital Signal Processing: ISBN: 9780470131572 Gruss WK
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
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.
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
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.
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
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.
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.
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.
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?
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.
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
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.
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
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?
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
Ich würd mich in FIR einlesen. Hochinteressent. Ich hab damals den "coeff calculator" von "mkfisher" benutzt.
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
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.
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"
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.