Es sollen möglichst steilflankige Signale für einen DAC erzeugt werden, die eine variable Grundfrequenz besitzen, aber keine Komponenten oberhalb der Nyquist-Frequenz besitzen. Eine einfache Rampenfunktion mit begrenztem Anstieg und Filterung hat den Nachteil, dass der Filter schon vorher eingreift und trotzdem im Stoppband zu schwach ist. Die Signale sind grundsätzlich Rechtecke / PWM. Der Gedanke war jetzt eine IFFT, die mit höchstens genau der maximalen Frequenz benutzt wird und deren Restkomponenten 0 sind. Das gibt zwar das richtige Signal, ist aber unhandlich, weil die IFFT gerastert ist und nur sprunghaft richtig in die Nähe der Zielfrequenz kommt, wenn ein sweap gefahren wird. Das führt zu einem unakzeptablen Pulsieren in der Oberwellen. Welche Möglichkeiten gäbe es noch?
Markus W. schrieb: > Welche Möglichkeiten gäbe es noch? Was ist das Problem, wenn Du Dir das "Rechteck" aus Sinusschwingungen zusammenbaust und dabei nur die Oberwellen bis zu Deiner Wunschfrequenz berücksichtigst? https://de.wikipedia.org/wiki/Rechteckschwingung#Fouriersynthese
Das ist ja das, was ich probiere. Die FFT hat aber eine bestimmte Taktfrequenz und wenn eine steigende Zielfrequenz (Motor) generiert werden soll, verschiebt sich das Spektrum nach oben. Ich mache das mit linearen Überblendungen der Frequenzen, d.h. das Profil, das den Impuls formt, wird nach oben geschoben. Aber oben muss eine nach der anderen Oberwelle, die jenseits der Grenze ist, wegfallen. Ich habe probiert, auch das mit einem fade auszublenden, komme aber zu praktisch denselben Ergebnissen, wie mit einem normalen Filter. Auch wenn nur die Frequenz der FFT hochgezogen wird und die Relation der Oberwellen konstant bliebe, muss die oberste Welle irgendwie weggeblendet werden. Vielleicht ist linear nicht der richtige Ansatz?
Markus W. schrieb: > Es sollen möglichst steilflankige Signale für einen DAC erzeugt werden, > die eine variable Grundfrequenz besitzen, aber keine Komponenten > oberhalb der Nyquist-Frequenz besitzen. Wirklich für einen DAC?? Oder doch eher für einen ADC?
Klar kannst Du eine iFFT nehmen, warum einfach wenns auch komlpijoziert geht... Besser das was Bernd sagt! Markus W. schrieb: > Aber oben muss eine nach der anderen Oberwelle, die jenseits der Grenze > ist, wegfallen. Wegfallen ist kein Fade, weg ist weg. Du nimmst die Grundschwingung, summierst die Oberwellen in den folgenden Amplituden:
1 | 1 |
2 | 0 |
3 | 0.333333 |
4 | 0 |
5 | 0.2 |
6 | 0 |
7 | 0.142857 |
8 | 0 |
9 | 0.111111 |
10 | 0 |
11 | 0.090909 |
12 | ... |
bis Niquist und dann ist Schluss.
Markus W. schrieb: > Es sollen möglichst steilflankige Signale für einen DAC erzeugt werden, > die eine variable Grundfrequenz besitzen, aber keine Komponenten > oberhalb der Nyquist-Frequenz besitzen. Steile Flanke und keine Oberwellen gibt es nicht. Ich nehme an, du hast einen DAC an dessen Ausgang du misst und eine steile Flanke erwartest. Diese Flanke willst du erreichen in dem du in deinen DAC-Input ein digitales Pattern schickst. Andere Einflußfaktoren wie Bufferung des DACS und Kapazität der Messspitze betrachtest du nicht. Die sind aber bei kurzen Anstiegszeiten wesentlich für das Verschleifen. Ferner wäre eine Frage wie du das Verschleifen feststellen willst, vielleicht lügt dir ja ein Digital-Oszi mit seiner Interpolation ein Verschleifen vor, wo keines ist. Ebenso fehlt eine Angabe zur bitauflösung des DAC und von welchen Anstiegszeiten und Steigungsraten sprechen wir hier überhaupt? IMHO bring so eine diffuse Spezifikation wie "möglichst steilflankig" nur ewige Probleme. Einfach mal einen konkreten Fall durch rechnen (Simulieren), wie hoch darf die Kapazität C am Ausgang höchstens sein um innerhalb von 500 ps von 0 auf 3.3V den Pegel anzuheben? Welche Strom ist dazu nötig (I = dQ/dt)? Wie hoch darf daher der elektrische widerstand höchstens sein?
Hp M. schrieb: > Wirklich für einen DAC?? Natürlich für einen DAC. Das Signal soll ausgegeben werden. Fpgakuechle K. schrieb: > Steile Flanke und keine Oberwellen gibt es nicht. > Ich nehme an, du hast einen DAC an dessen Ausgang du misst und eine > steile Flanke erwartest. Der DAC ist nicht der begrenzende Faktor. Die Bandbreite seines Ausgangs mit Filter und Leistungsverstärker ist um eine Dekade über der Zielfrequenz. Fpgakuechle K. schrieb: > Ferner wäre eine Frage wie du das Verschleifen feststellen willst, > vielleicht lügt dir ja ein Digital-Oszi mit seiner Interpolation Auch das Oszilloskop hat eine ausreichende Bandbreite. Mit 100MHz liegt diese nochmals deutlich über der des DAC. Die Bandlimitierung des Signals hat regelungstechnische Gründe.
no schrieb: > bis Niquist und dann ist Schluss. Wenn ich dein Beispiel betrachte, würde irgendwann die Frequenzkomponenten von 11 dort stehen, wo die Position 12 ist und danach rausfallen müssen. In dem Moment, wo sie rausfällt ist die Signalform schlagartig eine andere auch wenn ihr Beitrag schon recht klein ist. Das verträgt keine Regelung.
Moin, Markus W. schrieb: > In dem Moment, wo sie rausfällt ist die > Signalform schlagartig eine andere auch wenn ihr Beitrag schon recht > klein ist. Das verträgt keine Regelung. Ein typisches: "Wasch' mir den Pelz, aber mach' mich nicht nass"-Problem. Wenn du eben immer die maximale Flankensteilheit haben willst, dann ploppt dir halt die hoechste Harmonische in dem Moment ersatzlos weg, wo sie auch nur ein pHz zu hoch ist. Und in dem Moment wird deine Flankensteilheit wohl stark nachlassen. Kannst vielleicht versuchen, die einzelnen Oberschwingungen so zu gewichten, dass es so aussieht, als waeren sie durch ein sehr steilflankiges Besselfilter durchgepurzelt. Dann verschwinden sie nicht so ploetzlich und trotzdem sollte deine Kurvenform noch halbwegs OK bleiben. Gruss WK
Dergute W. schrieb: > Ein typisches: "Wasch' mir den Pelz, aber mach' mich nicht > nass"-Problem. die Kunst hierbei besteht darin, den Pelz nur feucht zu machen. Die Harmonischen müssen sanft herausgenommen werden. Das sollte eigentlich der shaper machen, der die Koeffizienten der iFFT bestimmt. Benötigt wird ein Fenster, in das die Koeffizientenmatrix hineingedrückt wird. Ich sehe da einen Cosinus ausgehend von der Welle (n-2) bis 0 bei Welle (n-1). Oder anders: Die Faktoren, die die Amplitude der Harmonischen bestimmen, werden nach oben hin nicht nur kleiner, sondern immer mehr kleiner -> Fensterung im Frequenzbereich.
Die Schwierigkeit ist doch grundsätzlich die, dass die Frequenzen nach Fourier gerastert sind. D.h. man kann nicht "eine" Frequenz weglassen, sondern immer nur Bereiche. Wenn das sehr genau sein soll, müsste die FFT-Auflösung erhöht werden. Das ist trotzdem immer endlich. Nach meinem Gefühl müsste es auch gehen, die Frequenzen nur im oberen Bereich zu verdichten, also eine weitere i-FFT zu addieren, die sich um den Bereich kümmert, der ausgeblendet werden soll. Die hätte z.B. 1024 Frequenzen, benutzt aber nur die oberen 64. Die unteren 960 sind alle null und werden erst gar nicht erzeugt. Die Haupt FFT ist 64x gröber und besteht nur aus 16 Frequenzen. Bei der ist der obere Bereich, also die 16 Null. Oder man nimmt 16x gröber und legt die oberen 4 Frequenzen lahm. Dann wären 60 + 64 Frequenzen zu erzeugen. no schrieb: > Klar kannst Du eine iFFT nehmen, warum einfach wenns auch komlpijoziert > geht... Das ist nicht unbedingt "kompliziert", sondern durchaus Standard in der digitalen Frequenzsynthese, besonders für die Erzeugung bandbegrenzter Signale, siehe -> "BLEP": https://ieeexplore.ieee.org/abstract/document/4117934 https://www.ness.music.ed.ac.uk/wp-content/uploads/2016/12/ISMRA2016-48-1.pdf diskret realisiert hier: Digitaler LaPlace-Funktionsgenerator im FPGA
Markus W. schrieb: > Die Signale sind grundsätzlich Rechtecke / PWM. Das Spektrum muss dann eben auf das Frequenzverhalten des Ausgangs und des angeschlossenen Systems angepasst werden. Bei höheren Frequenzen gibt es meistens Phasenverschiebungen durch den Frequenzgang, die zu korrigieren wären. Wenn man das außer Acht lässt, weil das System mit dem Anstieg mitgeht, ergibt sich einfach ein optimiertes Rechteck für das jeweilige Bandlimit. Der erste Ansatz ist das Einfügen der ersten Oberwelle -beim Rechteck die dreifache Frequenz - mit theoretisch Faktor 0,125 gegenüber 1,125 x Grundwelle. Für die f1+f3+f5 gibt es dann Abweichungen, je nach dem, wie flach die Platte sein soll und ob es monoton sein muss.
Der nächste theoretisch optimale Fall wäre 1,2 x f1 + 0,24 * f3 + 0,048 * f5. Allerdings machen immer mehr Oberwellen irgendwann kaum mehr zusätzliche Steilheit und lokal gibt es andersherum auch Bereiche wo sich lokal die Differentiale so überlagern, dass das Maximum schon erreicht ist, ohne dass man das an der höchsten Oberwelle direkt hätte ablesen können.
Dergute W. schrieb: > Kannst vielleicht versuchen, die einzelnen Oberschwingungen so zu > gewichten, dass es so aussieht, als waeren sie durch ein sehr > steilflankiges Besselfilter durchgepurzelt. Dann verschwinden sie nicht > so ploetzlich und trotzdem sollte deine Kurvenform noch halbwegs OK > bleiben. Die Frage wäre, wie die Gewichtung auszusehen hätte. Lässt sich das in eine Formel packen? Jürgen S. schrieb: > Der nächste theoretisch optimale Fall wäre 1,2 x f1 + 0,24 * f3 + 0,048 > * f5. Wie gelangt man zu diesen Faktoren?
Jürgen S. schrieb: > no schrieb: >> Klar kannst Du eine iFFT nehmen, warum einfach wenns auch komlpijoziert >> geht... > Das ist nicht unbedingt "kompliziert", sondern durchaus Standard in der > digitalen Frequenzsynthese, besonders für die Erzeugung bandbegrenzter > Signale, siehe -> "BLEP": Ich möchte nicht behaupten, dass ich hier der Pro wäre, und bin neugierig dazu zu lernen, - aber alles was Du beschreibst ist eine Verkomoplizieung [sic.] der "naiven" Synthese bandlimitierter Wellen durch Addition von Sinusschwinungen: > Die Schwierigkeit ist doch grundsätzlich die, dass die Frequenzen nach > Fourier gerastert sind. D.h. man kann nicht "eine" Frequenz weglassen, > sondern immer nur Bereiche. Wenn das sehr genau sein soll, müsste die > FFT-Auflösung erhöht werden. Das ist trotzdem immer endlich. Bernd schrieb: > Was ist das Problem, wenn Du Dir das "Rechteck" aus Sinusschwingungen > zusammenbaust und dabei nur die Oberwellen bis zu Deiner Wunschfrequenz > berücksichtigst? Eben. Das wurde noch nicht beantwortet. Markus W. schrieb: > no schrieb: >> bis Niquist und dann ist Schluss. > > Wenn ich dein Beispiel betrachte, würde irgendwann die > Frequenzkomponenten von 11 dort stehen, wo die Position 12 ist und > danach rausfallen müssen. In dem Moment, wo sie rausfällt ist die > Signalform schlagartig eine andere auch wenn ihr Beitrag schon recht > klein ist. Das verträgt keine Regelung. Jetzt wird es interessant. Ich denke, alle bereits daraufhin erwähnten Methoden fühern zum Erfolg. Klar ist, dass Du Kompromisse in Deinen Anforderungen machen musst und diese für jeden Parameter definieren musst bzw. die Zusmmenhänge zwischen den Parametern ergründen musst: Markus W. schrieb: > möglichst steilflankige Signale für einen DAC erzeugt werden, > die eine variable Grundfrequenz besitzen, aber keine Komponenten > oberhalb der Nyquist-Frequenz besitzen. > In dem Moment, wo sie rausfällt ist die > Signalform schlagartig eine andere auch wenn ihr Beitrag schon recht > klein ist. Das verträgt keine Regelung. Ich fange mal an zu sammeln: - Samplerate? - Wie steil? - Frequenzumfang des Oszillators? - Max. Geschwindigkeit des Wechsels zwischen max. wie großem Unterschied zweier Frequenzen? - Max. Verformung der Hüllkurve? Jürgen S. schrieb: > Der erste Ansatz [...] die dreifache Frequenz - mit theoretisch Faktor > 0,125 gegenüber 1,125 x Grundwelle. >> Der nächste theoretisch optimale Fall wäre 1,2 x f1 + 0,24 * f3 + 0,048 >> * f5. > Wie gelangt man zu diesen Faktoren? Das würde mich auch interessieren!
no schrieb: > Bernd schrieb: >> Was ist das Problem, wenn Du Dir das "Rechteck" aus Sinusschwingungen >> zusammenbaust > Eben. Das wurde noch nicht beantwortet. Doch, wurde es. Das Problem besteht darin, dass die Frequenzen oben in irgend einer Weise wegfallen müssen. Schlagartig führt zu Sprüngen. Es muss also eine Art von Ausblendung geben. Das ist das, was noch offen war. no schrieb: > - Samplerate? > - Wie steil? > - Frequenzumfang des Oszillators? Welche Samplerate? Das Signal soll auf einen DAC. Der hat eine deutlich höhere Bandbreite als das benötigte Signal und auch dessen anti aliasing Filter am Ausgang. Es gibt also dadurch keine Bandbegrenzung. Praktisches Beispiel: Bandbreite bei Verstärkung 1:1 sind über 20MHz, die Ansteuerung erfolgt mit Pulsen im Bereich <100kHz, Auflösung 100ns.
Markus W. schrieb: > no schrieb: >> Bernd schrieb: >>> Was ist das Problem, wenn Du Dir das "Rechteck" aus Sinusschwingungen >>> zusammenbaust >> Eben. Das wurde noch nicht beantwortet. > Doch, wurde es. Das Problem besteht darin, dass die Frequenzen oben in > irgend einer Weise wegfallen müssen. Schlagartig führt zu Sprüngen. Es > muss also eine Art von Ausblendung geben. Das ist das, was noch offen > war. Ich verstehe es nicht. Wenn das Rechteck aus einzelnen Sinussignalen ( 1 * f1 + 1/3 * f3 + 1/5 * f5 + ...) zusammengebaut wird, dann gibt es keine höheren Frequenzen, die irgendwie ausgeblendet werden müssen oder die schlagartig zu Sprüngen führen. Als Beilage ein Pythonskript, mit dem das jeder durchspielen kann. > Praktisches Beispiel: Bandbreite bei Verstärkung 1:1 sind über 20MHz, > die Ansteuerung erfolgt mit Pulsen im Bereich <100kHz, Auflösung 100ns. Wenn Du die Pulse durch plötzliche Umschaltung zwischen Minimum und Maximum des DACs machst, mußt Du die Bandbreite mit einem eigenen (Software-)Tiefpass begrenzen.
Markus W. schrieb: > Das Problem besteht darin, dass die Frequenzen oben in > irgend einer Weise wegfallen müssen. Schlagartig führt zu Sprüngen. Es > muss also eine Art von Ausblendung geben. Das ist das, was noch offen > war. Ja, aber dafür braucht es keine iFFT (!?), sondern Faktoren für Amplituden der ungeraden Oberwellen, die von dem ideal-steilflankigen Rechteck abweichen, und so zum Ausblenden der Oberwellen bis Niquist führen. Wie die Flanke dieses Ausblendens aussieht, entscheidest Du. Bernd schrieb: > ( 1* f1 + 1/3 * f3 + 1/5 * f5 + ...) > nicht schlagartig zu Sprüngen führen. Doch, bei einem Frequenzwechsel kommen schlagartig neue Oberwellen hinzu oder fallen ohne Auszublenden weg. Daher muss zu Niquist hin der Quotient Null werden. Markus W. schrieb: > Welche Samplerate? > Das Signal soll auf einen DAC. Der hat eine deutlich höhere Bandbreite > als das benötigte Signal und auch dessen anti aliasing Filter am > Ausgang. Es gibt also dadurch keine Bandbegrenzung. > > Praktisches Beispiel: Bandbreite bei Verstärkung 1:1 sind über 20MHz, > die Ansteuerung erfolgt mit Pulsen im Bereich <100kHz, Auflösung 100ns. Warum erwartest Du eine Lösung für Dein Problem, obwohl Du die Anforderungen nicht genau definierst?
no schrieb: > Bernd schrieb: >> ( 1* f1 + 1/3 * f3 + 1/5 * f5 + ...) >> nicht schlagartig zu Sprüngen führen. > > Doch, bei einem Frequenzwechsel kommen schlagartig neue Oberwellen hinzu > oder fallen ohne Auszublenden weg. Daher muss zu Niquist hin der > Quotient Null werden. Natürlich muß die Reihe an geeigneter/gewünschter Stelle abgebrochen werden. Zum Verhalten bei Frequenzwechsel habe ich bisher keine Anforderung gelesen (oder ich habe sie übersehen).
Bernd schrieb: > Ich verstehe es nicht. Wenn das Rechteck aus einzelnen Sinussignalen ( 1 > * f1 + 1/3 * f3 + 1/5 * f5 + ...) zusammengebaut wird, dann gibt es > keine höheren Frequenzen, die irgendwie ausgeblendet werden müssen oder > die schlagartig zu Sprüngen führen. Doch, freilich gibt es die: Bernd schrieb: > Zum Verhalten bei Frequenzwechsel habe ich bisher keine Anforderung > gelesen (oder ich habe sie übersehen). Die Anforderung steht im allerersten Beitrag: Markus W. schrieb: > weil die IFFT gerastert ist und nur sprunghaft richtig in die > Nähe der Zielfrequenz kommt, wenn ein sweap gefahren wird. Das ist innerste Problem der gesamten Thematik. no schrieb: > Ja, aber dafür braucht es keine iFFT (!?), Wie möchtest du denn sonst effektiv und zeitsparend eine Reihe von Oberwellen erzeugen wenn nicht mit inverser FFT, bei der sehr viele Operationen mehrfach genutzt werden. Wir sprechen hier von eventuell sehr langen Pulsen, bei denen wenigstens 10-12 Oberwellen benötigt werden. Das würde bedeuten 10x Sinus bilden oder sie über Multiplikationen punktweise ausrechnen.
Markus W. schrieb: > effektiv und zeitsparend oh da erscheint eine weitere Vorraussetzung! > Wie möchtest du denn sonst Sinus mittels linearer Interpolation aus einer Tabelle auslesen, dann multiplizieren und addieren. Je nachdem wie flexibel das sein muss und wie wenig Zeit Du hast, kannst Du auch die ersten 5 Oberwellen schon fertig addiert aus einer Tabelle auslesen, also Rechenzeit sparen, in dem Du dich nur um die restlichen Oberwellen kümmerst. Ich wage zu behaupten, dass das schneller geht als eine inverse FFT. Außerdem hast Du nicht das Problem der Fenster. Bin mir nicht sicher, ob Du dir wirklich noch Antworten aus dem Thread erhoffst, aber für mich scheint die Lage jetzt so: Der Thread dreht sich im Kreis, während unterschiedliche Lösungen inkl. dem Ausblenden gebracht wurden, Jürgen S. und Andere anscheinend leider ausgestiegen sind, weigerst Du dich die Anforderungen klar zu definieren und so bleibt uns nur der Blick in die Glaskugel, wie es so schön heißt. So gut wie alle Antworten fragen dich nach mehr Infos mit denen Du teilweise stückchenweise raus rückst. Und einerseits, soll das Rechteck "möglichst setilflankig sein" und bis Niquist bandbegrenzt, andererseits sollen die Oberwellen nicht schlagartig raus fallen, und das nicht einzeln und nicht in größerer Anzahl, wie bei einem FFT-Fenster, - was durchaus verständlich ist, wodurch es aber nicht mehr so steilflankig wird, und wofür wie gesagt auch Lösungen genannt wurden, Du aber nicht definieren möchtest, wie steilflakig vs. wie weich die Oberwellen raus genommen werden sollen. Des Weiteren ist dann die Samplerate doch nicht der Flaschenhals, sondern etwas "regelungstechnisches", und die Samplerate sei sogar egal und auch ein Antialiasing-Filter sei vorhanden, wodurch die Frage aufkommt, warum Du von Niquist redest? Was ist für Dich die richtige Antwort auf Deine Frage? Und warum wurde sie nicht genannt?
no schrieb: > oh da erscheint eine weitere Vorraussetzung! Diese Forderung muss man explizit erheben? Entschuldigung, dass ist die Hauptanforderung in allen Projekten. no schrieb: > Ich wage zu behaupten, dass das schneller geht als eine inverse FFT. Was zu beweisen wäre. Die Sinuswerte lassen sich eben nicht in einer Tabelle speichern, da (Anforderung ebenfalls in der Einleitung beschrieben!) die Frequenzen variieren.
Markus W. schrieb: > Die Sinuswerte lassen sich eben nicht in einer Tabelle speichern, da > (Anforderung ebenfalls in der Einleitung beschrieben!) die Frequenzen > variieren. Aber selbsverständlich. Du brauchst im Endeffekt natürlich nur eine Tabelle (je nach Aufwand bis 2PI oder auch nur PI/4), du lässt für jede Ordnung einen Zeiger mit der jeweiligen Momentanfrequenz rotieren, um die momentane Phase zu berechnen, und dann werden nur noch aus der Tabelle die linearen Interpolationen der einzelnen Ordnungen gebildet und aufsummiert. Genau so wurde ein Active Sound Design System im Fahrzeug realisiert mit bis zu 15 in Phase und Amplidude frei wählbaren Ordnungen, die synchron mit der Drehzahl mitliefen. Phase und Amplitude wurden von Sample zu Sample jeweils gemäß Drehzahl, Last und gewünschten Soundprofil angepasst. Das ganze lief auf einem Stellaris Launchpad mit 80 MHz und hat den Prozessor zu etwa 5% ausgelastet.
>Ich möchte nicht behaupten, dass ich hier der Pro wäre, und bin >neugierig dazu zu lernen, >- aber alles was Du beschreibst ist eine Verkomoplizieung [sic.] der >"naiven" Synthese bandlimitierter Wellen durch Addition von >Sinusschwinungen: Die Realisierung mit PolyBLEPs ist sehr einfach: https://www.metafunction.co.uk/post/all-about-digital-oscillators-part-2-blits-bleps Unten der Code, der sich leicht in die FPGA Welt portieren lässt.
Passive Filter sollten MINDESTENS 40dB haben! AUDIO!!! BOXENxVOLUMEN!
malsehen schrieb: > Passive Filter sollten MINDESTENS > 40dB > haben! > AUDIO!!! > BOXENxVOLUMEN! ALLES TUT MIR LEID! Dachte es geht um Goldöhrchen!
Gerhard Z. schrieb: > Aber selbsverständlich. Du brauchst im Endeffekt natürlich nur eine > Tabelle (je nach Aufwand bis 2PI oder auch nur PI/4), du lässt für jede > Ordnung einen Zeiger mit der jeweiligen Momentanfrequenz rotieren, Du sprichst von einer DDS, nehme ich. Ist mir gekläufig, aber: > Genau so wurde ein Active Sound Design System im Fahrzeug realisiert mit > bis zu 15 in Phase und Amplidude frei wählbaren Ordnungen, Was für Autosound taugt, nämlich grobe Phasenfehler durch DDS und hingefummelte Interpolation, taugt in meinem Fall leider nicht. Ich kann auch nach dem DAC nicht mehr Höhen und Spitzen wegfiltern. Bevor der nächste Einwand kommt: Ja der DAC hat einen AA-Filter, der wird aber nicht ausgelastet. Die höchsten Frequenzen, die das System ab kann, liegen tiefer, als Nyqist. (Die DAC-Einheit wurde extra so ausgelegt, dass deren Grenzfrequenz kein show stopper ist). Im Übrigen gewegen wir uns auf geringfügig höheren Frequenzen, als Audio.
Schlechte Idee mit der linearen Interpolation.
Markus W. schrieb: > grobe Phasenfehler durch DDS und > hingefummelte Interpolation > Schlechte Idee mit der linearen Interpolation. Magst du das genauer erläutern? Welche Phasenfehler? Was stört dich an einer Interpolation, wenn Nuquist sogar weit höher als die geforderte Bandbreite liegt?
Jede DDS hat eine begrenzte Auflösung und muss interpoliert werden. Eine lineare ist aber in aller Regel zu simpel. Es entstehen Spektralanteile, die wieder nach unten spiegeln. Außerdem ist der Aufwand mit den vielen Sinus-Berechnungen und Interpolationen sehr schnell höher, als ein aufwändigeres Filtern.
Bernd schrieb: > Ich verstehe es nicht. Wenn das Rechteck aus einzelnen Sinussignalen ( 1 > * f1 + 1/3 * f3 + 1/5 * f5 + ...) zusammengebaut wird, dann gibt es > keine höheren Frequenzen, die irgendwie ausgeblendet werden müssen oder > die schlagartig zu Sprüngen führen. Dir ist bewusst, dass das niemals ein Rechteck gibt, wenn man es abbricht? Und wenn das gewollt ist, dann muss bei steigender Grundfrequenz bei immer niedrigeren Ordnungszahlen abgebrochen werden? Sagen wir Rechteckfrequenz = 100 kHz GF = 1 MHz 100kHz -> Wellen #1 - #9 (900kHz) 110kHz -> Wellen #1 - #9 (990kHz) 111kHz -> Wellen #1 - #9 (999kHz) 112kHz -> Wellen #1 - #7 (784kHz) - #9 fällt raus 140kHz -> Wellen #1 - #7 150kHz -> Wellen #1 - #5 (750kHz) - #7 fällt raus 199kHz -> Wellen #1 - #5 (995kHz) - 200kHz -> Wellen #1 - #3 (600kHz) - #5 fällt raus. (Schade um "Nummer 5 - den mochte ich immer am Liebsten :-)) 333kHz -> Wellen#1 - #3 (999kHz) 334kHz #3 raus und damit Sinus. Ich glaube spätestens ab 150kHz wird das irgendwie ein Problem. Ohne einen Ausklingbereich dürfte das nicht funktionieren. Und ab 300kHz ist das irgendwie Murks. Dazwischen zumindest komisch, weil das Bandende nach unten springt.
Hochfrequenz-Theoretiker schrieb: > Dir ist bewusst, dass das niemals ein Rechteck gibt, wenn man es > abbricht? Ja. Ich habe auch noch keinen DAC gefunden, der ein perfektes Rechteck ausgibt. Das wird immer mehr oder minder trapezförmig, z.T. mit Über- und Unterschwingern. Ich habe es noch nicht geschafft Signale zu erzeugen, deren Anstiegszeit kürzer als 300 ps ist (das Oszi ist mit 85 ps spezifiziert). > Und wenn das gewollt ist, dann muss bei steigender Grundfrequenz bei > immer niedrigeren Ordnungszahlen abgebrochen werden? Ja.
Bernd schrieb: > Ich habe auch noch keinen DAC gefunden, der ein perfektes Rechteck > ausgibt. Das hätte mich auch schwer gewundert. Rechtecke sehen nur Nutzer von bandlimitierten Oszillografen. Und so ist es auch mit der Limitierung des Signals selbst. Was man tun kann, um ein Signal steiler zu bekommen, wäre, die Reflektionen zu kompensieren die es zwangsläufig auch immer gibt. M. W. schrieb: > Bevor der nächste Einwand kommt: Ja der DAC hat einen AA-Filter, der > wird aber nicht ausgelastet. Die höchsten Frequenzen, die das System ab > kann, liegen tiefer, als Nyqist. (Die DAC-Einheit wurde extra so > ausgelegt, dass deren Grenzfrequenz kein show stopper ist). Wenn nicht mehr, als diese spezifische Nyquistfrequenz benötigt wird, dann ist es auch unnötig, den Filter hinter dem DAC deutlich höher auszulegen. Oder was ist der tiefere Sinn?
no schrieb: >>> Der nächste theoretisch optimale Fall wäre 1,2 x f1 + 0,24 * f3 + 0,048 >>> * f5. >> Wie gelangt man zu diesen Faktoren? > Das würde mich auch interessieren! Die Faktoren kommen aus einem Excel, das ich mir mal gebaut habe. Die Formeln kommen aus einer zyklischen, nichtlinearen Optimierung. Kriterien waren ja "steil" und "Rechteck". Ich habe die Anteile der Oberwellen so herausgenommen, dass es keine Überschwinger gibt. Bei der Version mit maximal f3 ist das nicht nötig, weil es nur ein zu optimierendes Maximum gibt. Ich sehe gerade, dass die eine Grafik irgendwie falsch hochgeladen wurde, daher ist die jetzt doppelt. Egal. Beitrag "Re: bandlimitierte Rechtecksignale zielgenau erzeugen" Wenn man diese Betrachtung weglässt, dann kommt man eben zur klassischen Fourier-Analyse mit Überschwingern und der Vorschrift 1/f für die Faktoren.
Gerade gefunden: Wellensynthese aus mehreren Oszillatoren:
Ich mache es jetzt so: Ich bestimme die Frequenz aus der DDS und rechne alle Oberwellen aus, die noch unter die Grenze fallen sowie dessen Amplituden nach Fourier. Dann werden alle so skaliert, daß sie "1" ergeben und auf die IFFT gegeben. Parallel rechne ich dasselbe mit einer Oberwelle mehr. Die Ausgänge der beiden IFFT werden überblendet.
Hochfrequenz-Theoretiker schrieb: > Wenn nicht mehr, als diese spezifische Nyquistfrequenz benötigt wird, > dann ist es auch unnötig, den Filter hinter dem DAC deutlich höher > auszulegen. Doch, ist nötig damit der Filter das Signal nicht bandlimitiert und beinflusst. Die Filtereckfrequenz liegt über der höchsten Oberwelle der Nutzfrequenz und die Abtastfrequenz ist nochmal höher. Der Grund ist der hier: Bernd schrieb: > Ich habe auch noch keinen DAC gefunden, der ein perfektes Rechteck > ausgibt.
M. W. schrieb: > Wir sprechen hier von eventuell sehr langen Pulsen, bei denen wenigstens > 10-12 Oberwellen benötigt werden. Das würde bedeuten 10x Sinus bilden > oder sie über Multiplikationen punktweise ausrechnen. kannst du den Verlauf der Flanken nicht immer gleich lassen und mit der Frequenz nur den Abstand der Flanken ändern? Wenn die Pulse lang sind, sollte doch jede Flanke wie eine bandbegrenzte Sprungantwort aussehen.
du speicherst die Werte für den Spannungsverlauf der Flanke in einer Tabelle. Zuerst gibst du die Werte mit einem festen, von der Ausgangsfrequenz unabhängigen Takt aus. Dann gibst du abhängig von der Periodendauer eine konstante Spannung aus und am Ende fährst du die Flanke mit festem Takt wieder runter
oder so schrieb: > du speicherst die Werte für den Spannungsverlauf der Flanke in einer > Tabelle. Jaja, nur wie sehen die Werte aus?
Wie im parallelen Thema geantwortet, ein COS. Das ist die Funktion mit dem geringensten Oberwellenanteil (da 0!). Man nimmt die COS-Welle mit der Frequenz, die gerade noch zulässig ist.
Jürgen S. schrieb: > ein COS. Das ist die Funktion mit > dem geringensten Oberwellenanteil (da 0!) wenn du nur eine halbe Periode nimmst, dann eine konstante Spannung und dann die 2. Hälfte der Periode, ist der Oberwellenanteil nicht mehr 0. M. W. schrieb: > Jaja, nur wie sehen die Werte aus? du könntest sie mit einer Fouriersynthese berechen, so wie jetzt auch. Berechne z.b. ein Rechteck mit 1/1000 deiner Grenzfrequez mit Anteilen bis zur 999. Oberschwingung. Die Werte der Flanke speicherst du in der Tabelle. Wie hoch ist deine Taktfrequenz? Welche Auflösung hat dein DAC? Wie hoch ist die Grenzfrequenz? Wie ist die minimale Pulsbreite des Ausgangssignals?
oder so schrieb: > wenn du nur eine halbe Periode nimmst, dann eine konstante Spannung und > dann die 2. Hälfte der Periode, ist der Oberwellenanteil nicht mehr 0. Es ging ja darum, wie er seine Ecken in einfacher Weise modellieren könnte, um ins Rechteck zu kommen, als Verbesserung einer einfachen Rampe, die nur in der Steilheit limitiert ist. Natürlich bewirkt der Übergang in den Cosinus aus der 0, sowie aus ihm heraus in das Rechteck eine Unstetigkeit in der 2. Ableitung. Allerdings beseitigt der Cosinus schon einmal die Unstetigkeit in der wichtigen ersten Ableitung und das ist ein wesentlicher Fortschritt. Im Hinblick auf eine totale Stetigkeit aller Oberwellen kommt man um eine echte bandlimitierte Synthese nicht herum. Dahingehend funktioniert auch dein Beispiel nicht, nur die Rampe mit abgespeicherten Punkten zu erzeugen. oder so schrieb: > z.b. ein Rechteck mit 1/1000 deiner Grenzfrequez mit Anteilen > bis zur 999. Oberschwingung. In der detailtreue wird sich das nicht abbilden lassen, weil die Ausläufer der Schwingung weit das Rechteck hineinlaufen müssen, um zu stimmen. Wie das aussieht, wissen wir ja: Pulsresponsefunktion. Damit das korrekt ist, muss dann schon der komplette Rechteckimpuls so laufen und dann sind wir wieder bei der Ausgangsfrage, wie weit man die Oberwellen hochzieht und ab wann man wie ausfadet. Es ware IMO auch maximal die 499. Oberschwingung, weil deren Frequenzen ja mit 2*n laufen.
Ganz dumm gefragt (nach einen halben Jahr): Entspricht die Beschreibung des Problems nicht einem chirp spectrum?
M. W. schrieb: > Ich mache es jetzt so: > > Ich bestimme die Frequenz aus der DDS und rechne alle Oberwellen aus, > die noch unter die Grenze fallen sowie dessen Amplituden nach Fourier. > Dann werden alle so skaliert, daß sie "1" ergeben und auf die IFFT > gegeben. Parallel rechne ich dasselbe mit einer Oberwelle mehr. Die > Ausgänge der beiden IFFT werden überblendet. Klingt nach einer sauberen Lösung. Wie schnell wird überblendet? Ideal, d.h geringste Verzerrung würde wohl eine Überblendungsgeschwindigkeit in der Frequenz der Grundschwingung oder einer Harmonischen bringen!? Oder spielt das keine Rolle? Du überblendest linear?
Mark schrieb: > Entspricht die Beschreibung des Problems nicht einem chirp spectrum? keine Ahnung! Tut sie das? Chirp ist doch ein kontinuierlicher Verlauf. Bei dem Motor-Kontroller ist aber nicht bekannt, welche Frequenz als nächstes kommt. Das geht beliebig - auch rückwaerts! no schrieb: > Klingt nach einer sauberen Lösung. Momentan bin ich zufrieden; > Wie schnell wird überblendet? Kommt auf das Frequenzverhalten an. Es sind +/-50% Fg um die kritische Frequenz herum, z.B. die Oberwellen von 10kHz ... 190kHz, 210kHz ... dann wäre die Problemfrequenz die 210 und die Einblendung beginnt bei 200kHz. D.h. die 190er ist noch voll drin, die 210er gerade komplett weg. Bei 9,9kHz lugt die 210er, die dann einer 21x9,9kHz ist, schon ein wenig hervor, denn ( 207,9 - 200 = 7,9 ) / 9,9 = 80% aus, 20% an -> 0,2. Bei steigender Frequenz z.b: 10,05 kHz wäre die vormalige 190er, die jetzt 190,95 hat die zu glättende. Die hat (200-190,95 = 9,05) / 10.05 = 90% Amplitude. 10,10 kHz hätte eine Oberwelle von 191,9 -> mplitude ~80% und so weiter bis zur 200/19 = 10.5 kHz, bei der die 19te Oberwelle verschwindet. Wenn die Frequenz linear steigt, dann wird auch die überzählige Frequenz linear ausgeblendet. Geht die Frequenz weiter linear hoch, beginnt dann auch die nächste sofort, auszublenden. Die Skalierung habe ich noch nicht im Griff. Die Gesamtamplitude pulst noch ...
Michael W. schrieb: > Es sind +/-50% Fg um die kritische > Frequenz herum, z.B. die Oberwellen von 10kHz ... 190kHz, 210kHz ... > dann wäre die Problemfrequenz die 210 und die Einblendung ... Das habe ich insgesamt 5x durchgelesen und immer noch nicht verstanden. Michael W. schrieb: > Die Skalierung habe ich noch nicht im Griff. Die Gesamtamplitude pulst > noch ... ... auch das ist nicht wirklich einsichtig. Wenn nur die obersten Oberwellen bearbeitet und systematisch ausgeblendet werden, dann hat das keinen Einfluss auf den Rest, ergo darf da im Grunde nichts "pulsen". Kann es sein, dass sich dieser Sachverhalt auf veränderliche Frequenzen bezieht? Dann dürfte die Skalierung nicht funktionieren! Bernd schrieb: > Zum Verhalten bei Frequenzwechsel habe ich bisher keine Anforderung > gelesen (oder ich habe sie übersehen). Laut des ersten Satzes schon, denn: Michael W. schrieb: > Es sollen möglichst steilflankige Signale für einen DAC erzeugt werden, > die eine variable Grundfrequenz besitzen Das scheint mir bei dieser Aufgabe das Grundproblem. Fällt eine Oberwelle raus (egal wie sanft) dann ändert sich der Flächeninhalt unter der Kurve. Bernd schrieb: > Ich habe es noch nicht geschafft Signale zu erzeugen, > deren Anstiegszeit kürzer als 300 ps ist (das Oszi ist mit 85 ps > spezifiziert). Das ist alles eine Frage des Frequenzgenerators und dessen Treiberverhaltens (und auch der Kabel und der Last).
Jürgen S. schrieb: > Ich habe die Anteile der > Oberwellen so herausgenommen, dass es keine Überschwinger gibt. wie würde eine Wellenkombination aussehen, die mit noch mehr Oberwellen läuft? Wie steil geht das, ohne dass es "wellig" wird? Was mir beim Durchlesen noch immer nicht klar ist: Warum lässt sich der Oberwellenanteil nicht einfach durch eine Gerade limitieren, die eine maximale Steilheit hat? Die Anstiegszeit ist direkt mit der Frequenz verknüpft. Bei geringen Nutzfrequenzen sind es breite Rechtecke mit Rampen. Bei höheren Nutzfrequenzen, geht dann eben das Fenster langsam zu, bis zu einem Dreieck.
Dr. Hardware schrieb: > wie würde eine Wellenkombination aussehen, die mit noch mehr Oberwellen > läuft? Wie steil geht das, ohne dass es "wellig" wird? Das geht theoretisch immer weiter, allerdings hat man immer mehr Wendpunkte. Legt man Wert auf Monotonie, wie ich das bei meinen Wellengeneratoren mache, wäre der nächste Wert z.B. sin(x) + 0,215 * sin (3x) + 0,055 (5x) + 0,0085 x (7x). Aus musikalischen Gründen wäre jetzt die 7. Oberwelle nicht sonderlich gewünscht, daher kann man das auch etwas anders machen. Dr. Hardware schrieb: > Warum lässt sich der Oberwellenanteil nicht einfach durch eine Gerade > limitieren, die eine maximale Steilheit hat? Weil man dann nicht so einfach die Wellenamplitude skalieren kann und zudem Übergänge aus den Geraden in die Rampen bekommt mit gewaltigen Oberwellen.
Michael W. schrieb: > oben muss eine nach der anderen Oberwelle, die jenseits der Grenze > ist, wegfallen. Ich habe probiert, auch das mit einem fade auszublenden, > komme aber zu praktisch denselben Ergebnissen, wie mit einem normalen > Filter. Mit welcher Methode, ist hier die Frage. Da gibt es mehrere Ansätze. > Auch wenn nur die Frequenz der FFT hochgezogen wird und die Relation der > Oberwellen konstant bliebe, muss die oberste Welle irgendwie > weggeblendet werden. Hier ist ein Dokument für die artefaktfreie Überblendung von Obertonspektren: https://curdt.home.hdm-stuttgart.de/PDF/Hart.pdf Siehe ab Kapitel "Superposition mehrerer Perioden"
J. S. schrieb: > sin(x) + 0,215 * sin (3x) + 0,055 (5x) + 0,0085 x (7x). Gibt es eine allgemeine Bildungsvorschrift dazu?
Jürgen S. schrieb: > wäre der nächste Wert z.B. was wäre die nächste Iteration zu X hoch 9 - geht das überhaupt? no schrieb: > Sinus mittels linearer Interpolation aus einer Tabelle auslesen, dann > multiplizieren und addieren. Das macht unter Umständen reichlich große Tabellen erforderlich. Sinus berechnen mit Cordic wäre empfehlenswert.
Martin K. schrieb: > Gibt es eine allgemeine Bildungsvorschrift dazu? Eine allgemeine Formel gibt es meines Wissens nicht und kann es IMO auch nicht geben. Man muss ja immer irgendwelche Kriterien applizieren. Natürlich kann man sich auf einige wesentliche Kriterien festlegen und dann eine finden - theoretisch. Der Monotoniefall, wo es keine Krümmung gibt, wäre interessant. Habe ich noch nicht probiert und mir ist auch keine Lösung bekannt. Ich habe aber eine Bildungsformel, die in der Lage ist, die aus dem o.g. Optimierungs-Excel fließende Übergänge zu definieren und zwar anhand der einzublendenden Oberwellen und der jeweiligen Kriterien. Für mich ist z.B. entscheidend, wie sehr das Signal jenseits der völligen Monotonie im oberen Bild abweicht und Überschwinger produziert (siehe Zoomfenster). Diese verletzen ja möglicherweise digitale Grenzen oder wenn man das Signal ausgibt, auch die Bereichsgrenzen von Wandlern und OPs. Das ist bei den industriellen Anwendungen wo ich das benutze, oft wichtig. Andererseits können die Überschwinger auch helfen, eine langsame Schaltung besser auszusteuern. Da muss man dann aber mit den Phasen spielen! Bernd G. schrieb: >> wäre der nächste Wert z.B. > was wäre die nächste Iteration zu X hoch 9 - geht das überhaupt? Sicher geht das. Formulierungen habe ich inzwischen bis einschließlich der 11. Potenz, konzentriere mich aber bei Musik auf die X3 und X5, weil das musikalisch verwertbare Harmonische sind. Eine 7. Oberwelle will niemand hören. Schon die 5. macht bei einigen Akkorden und Harmonien Probleme. Am Ende kommt es auf einen Kompromiss an, wie steil man ansteuern möchte (90% Bereich in grün) und welche Überschwinger zu tolerieren oder gewünscht sind. Das ideale Rechteck mit vollständigen Oberwellen an einem idealen Tiefpass führt auf die Fourier-Koeffizienten.
Martin K. schrieb: > J. S. schrieb: >> sin(x) + 0,215 * sin (3x) + 0,055 (5x) + 0,0085 x (7x). > Gibt es eine allgemeine Bildungsvorschrift dazu? Da kann etwas nicht stimmen. Die Summe müsste 1.0 ergeben.
In der Tat, wenn es genau auf 1.0 laufen soll. Man kann aber die Welligkeit im flachen Bereich berücksichtigen und das dortige Niveau im Mittel auf 1.0 stellen. Das Maximum ist dann etwas über 100%.
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.