ich erzeuge mit einem kleinen Microcontroller PWM Signale so das sie
nach Tiefpassfiltern einen Sinus ergeben. (23 Samels/Periode).
Das Signal aus dem uC sieht etwa so aus:
____-____--_____----___-------___----_____--____-____ +5V
Nun ging ich davon aus das, wenn man einen idealen Tiefpass verwendet,
ein Sinus heraus kommt dessen Gleichanteil bei 2.5V liegt und Vss von
5V hat. (Also von 0V bis 5V)
Mit einem RC-Glied komme ich auch auf meine 2.5V Gleichanteil aber die
Vss stimmt nicht. (Ich habe natürlich die Dämpfung durch das RC-Glied
berücksichtigt).
Ich wollte der Sache auf den Grund gehen und habe mit dem PWM Signal eine
Fourieranalyse durchgeführt, was gar nicht so einfach ist.
Hier komme ich für c0 auf den korrekten Wert von 2.5V und für
c1 (das ist meine gewünschte Grundfrequenz) auf ca. 1.25V (etwas weniger)
was ja einer Sinusschwingung mit Vss von 2.5V entspricht, also der
Hälfte von dem Erwarteten.
Warum ist das so? Kann man das anschaulich erklären oder habe ich mich
verrechnet? Denn wenn ich Oma fragen würde was da nun raus käme würde
Sie 5Vss antworten.
Tschüss
Martin L.
Martin Laabs schrieb:
> Hallo,
>
> ich erzeuge mit einem kleinen Microcontroller PWM Signale so das sie
> nach Tiefpassfiltern einen Sinus ergeben. (23 Samels/Periode).
Was heisst das? Werden pro Periode 23 Bits ausgegeben oder wird das
PWM-Signal mit 23 Werten moduliert und 23 volle PWM-Perioden ausgegeben?
>
> Das Signal aus dem uC sieht etwa so aus:
>
> ____-____--_____----___-------___----_____--____-____ +5V
>
> Nun ging ich davon aus das, wenn man einen idealen Tiefpass verwendet,
> ein Sinus heraus kommt dessen Gleichanteil bei 2.5V liegt und Vss von
> 5V hat. (Also von 0V bis 5V)
> Mit einem RC-Glied komme ich auch auf meine 2.5V Gleichanteil aber die
> Vss stimmt nicht. (Ich habe natürlich die Dämpfung durch das RC-Glied
> berücksichtigt).
PWM-Frequenz? (s.o.), Zeitkonstante?
Du solltest Du das PWM-Signal an dein Filter anpassen, die Berechnung der
auszugebenden Digitalwerte unter Berücksichtigung der Filtereigenschaften
vornehmen. Die grösste Steigung des Signals (Nulldurchgang) wird durch das
Filter bestimmt.
Gruss Udo
Das sieht aber seltsam aus... Als erstes würde ich es mal so ändern, daß
z.B. für den (Momentan-) Wert 1/2 sowas kommt:
_-_-_-_-_-_
anstatt
_____------
Also die Modulationsfrequenz möglichst hoch wählen bei gleichem Mittelwert.
Sonst passt der Tiefpass - Filter ja nicht mehr - weil das Signal sehr
niedrige Frequenzen beinhaltet...
Johannes
Du solltest Delta-Sigma-Modulation verwenden.
(siehe Posting von Martin Laabs)
So wie dein Signal hier aussieht liegen die Modulations-
freqenz fm und deine Signalfrequenz fs (die des Sinus)
viel zu nah beieinander.
Bei DSM sollte je nach Anwendung fm>100*fs sein, bei PWM noch höher.
Bei deiner Skizze les ich Faktor 7 ab.
An deinem Modulator-Ausgang hängt ein Tiefpaß, der nun die
Modulationsfrequenz unterdrücken soll (hohe Dämpfung),
dein Sinus-Signal aber durchlassen soll (keine Dämpfung).
Die Grenzfrequenz des Filters muß zwischen beiden liegen.
Liegen beide Frequenzen nah beieinander brauchst du ein
sehr steiles Filter -> viel zu aufwendig.
> Ich wollte der Sache auf den Grund gehen und habe mit dem PWM Signal eine
> Fourieranalyse durchgeführt, was gar nicht so einfach ist.
> Hier komme ich für c0 auf den korrekten Wert von 2.5V und für
> c1 (das ist meine gewünschte Grundfrequenz) auf ca. 1.25V (etwas weniger)
> was ja einer Sinusschwingung mit Vss von 2.5V entspricht, also der
> Hälfte von dem Erwarteten.
Deine Grundfrequenz wird noch stark vom Tiefpaß gedämpft.
Hendrik vdH
> Du solltest Delta-Sigma-Modulation verwenden.
Naja. Ich verwende einen Atmel und fast-PWM. Bei 4MHz und 256Bit
Auflösung bekomme ich höchstens 22 Samples/Periode hin weil
ich 700Hz Sinus möchte.
> So wie dein Signal hier aussieht liegen die Modulations-
> freqenz fm und deine Signalfrequenz fs (die des Sinus)
> viel zu nah beieinander.
Naja. 700Hz zu 15kHz sind sicher noch akzeptabel zumal ich das Signal
nur als Mithörton eines Telegrafiegenerators verwende.
> Bei DSM sollte je nach Anwendung fm>100*fs sein, bei PWM noch höher.
> Bei deiner Skizze les ich Faktor 7 ab.
Meien Skizze ist nicht ganz Maßstabsgerecht, sollte nur das
System verdeutlichen.
> An deinem Modulator-Ausgang hängt ein Tiefpaß, der nun die
> Modulationsfrequenz unterdrücken soll (hohe Dämpfung),
> dein Sinus-Signal aber durchlassen soll (keine Dämpfung).
Ja, hab ich schon gemacht.
> Deine Grundfrequenz wird noch stark vom Tiefpaß gedämpft.
Jaja. Das hatte ich schon berücksichtigt. Ich habe jetzt
nochmal gemessen:
Fquarz=4Mhz
Fpwm=Fc/255=15.686kHz
Fpwm/700Hz = 22.4
Ich verwende jetzt 22 Samples und komme auf 680Hz. Delta Sigmal mach
ich nicht weil ich sonst eine Tabelle von 256Bytes brauche und es
die 22 auch tun da es mir auf die exakte Frequenz nicht drauf ankommt.
Danach kommt ein Tiefpass aus 1.8kOhm und 100nF (f_3db=880Hz).
Der hat bei den 713Hz eine "Verstärkung" von 0.78.
Was heraus kommt ist ein Sinus mit 3.8Vss. Das ist ziemlich fast
5V*0.78.
Da muss ich mich beim ersten mal vermessen haben weil es da nicht
stimmte und ich annahm das die 700Hz nur mit 2.5V im Spektrum
des PWM Signales vorhanden sind.
Nun hat meine Fourieranalyse aber ergeben das c1 nur 0.25 ist,
theoretisch also nach dem Tiefpass nur 1.9V raus kommen müssten.
Tschüss
Martin L.
Der Verlust (das was an 5Vpp fehlt, also 50%) ist die Energie, die
in deine Oberwellen (Klirr) geht.
Siehe magic sinewaves auf www.tinaja.com .
--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
> Der Verlust (das was an 5Vpp fehlt, also 50%) ist die Energie, die
> in deine Oberwellen (Klirr) geht.
Nein. Das glaube ich nicht weil ich alles Integrieren könnte (mit
Nullinie bei 2.5V) und was Sinusähnliches heraus bekommen würde.
Leider sind gerade die Akkus von meinem Taschenrechner alle, sonst
würde ich sicherlich den Fehler finden.
Ich glaube es geht in den Oberwellen viel weniger als 50% der
Energie verlohren.
> Siehe magic sinewaves auf www.tinaja.com .
Das ist sehr lustig. Leider kann man dort keinen Offset mit rein
rechnen lassen womit es für mich nicht taugt.
"Martin Laabs" <98ma...@gmx.de> schrieb im Newsbeitrag
news:36i3i9F...@individual.net...
das mit dem Taschenrechner ist ja richtig ein Brüller :-). Den brauchst Du
nicht, nur Bleistift und Papier. Ich hab das mal verfolgt und bin der
Meinung, daß Du alles richtig gemacht hast und nichts mehr zu ändern
brauchst.
Der Fehler, den Du suchst, muß in Deiner Fourieranalyse liegen. Auf den 1.
Blick ist PWM eine Phasenmodulation und damit ziemlich kompliziert, auf den
2. Blick wieder sehr einfach. Die Fourierreihe einer PWM kannste in
Mathematik-Lexika nachschlagen, hier ist erstmal nur der Signalanteil nach
der Tiefpaßfilterung:
u(t)=h/2*(1+sin(omega*t))
mit:
phi_signal(t)=sin(omega*t) =modulierte Phase
h=5V
omega= Signalfrequenz
Das ist alles. Das h soll die Höhe des Rechteckimpulses sein. Die
harmonischen Komponenten hast Du schon herausgefiltert und h ist dann der
Vss-Wert Deines Sinus, also stimmt alles. Falls Du die Herleitung nicht
nachvollziehen kannst, könnte ich die Fourierreihe detailliert posten.
Bei Audio-PWM-Verstärkern hat man natürlich noch die Bessel-Spektren drin,
da müßte man beim Filter noch was machen, aber hier wird das wohl nicht das
Problem sein.
mfg. Winfried
> das mit dem Taschenrechner ist ja richtig ein Brüller :-). Den brauchst Du
> nicht, nur Bleistift und Papier.
Darauf habe ich fast gewartet :-)
> 2. Blick wieder sehr einfach. Die Fourierreihe einer PWM kannste in
> Mathematik-Lexika nachschlagen
In welchem steht das denn drinn? Und wie wird diese verallgemeinert?
Ich habe in meiner Formelsammlung nur Rechteck.
Und die Fourieranalyse von meinem PWM Spektrum muss man in 22
einzelne Integrale aufteilen was man natürlich per Hand machen
kann aber du holst dein Wasser ja auch nicht mehr mit Schöpfeinern
aus dem Brunnen. (Oder gibt es den ultimativen Trick dazu?)
> Vss-Wert Deines Sinus, also stimmt alles. Falls Du die Herleitung nicht
> nachvollziehen kannst, könnte ich die Fourierreihe detailliert posten.
Ja, Das wäre sehr nett weil mich auch die 2. und 3. Harmonische
interessiert. So rein vom Gefühl würde ich die als sehr klein
abschätzen. Auch wäre ich an der generischen Fourierreihe für
beliebige PWM Signal interessiert. (Auch wenn ich gerade stark
am überlegen bin ob man das für beliebige Funktionen Integrallos
schreiben kann)
Tschüss
Martin L.
Hi!
>Ich wollte der Sache auf den Grund gehen und habe mit dem PWM Signal eine
>Fourieranalyse durchgeführt, was gar nicht so einfach ist.
>Hier komme ich für c0 auf den korrekten Wert von 2.5V und für
>c1 (das ist meine gewünschte Grundfrequenz) auf ca. 1.25V (etwas weniger)
>was ja einer Sinusschwingung mit Vss von 2.5V entspricht, also der
>Hälfte von dem Erwarteten.
Mach mal ne FFT von einem reinen Sinus, um die Ausgabe Deiner
FFT-Funktion (Real? Komplex? Amplitude? Energie?) zu verstehen.
Oft normiert die FFT so, daß je die Hälfte der Energie im positiven
Frequenzband (was Du Dir anschaust) und im negativen Frequenzband
(Spiegelfrequenz, was Du Dir wahrscheinlich nicht anschaust) liegt -
damit die Energieerhaltung stimmt. Bei DC hingegen fallen +0Hz und
-0Hz zusammen, drum bekommst Du _da_ auch Deine 2,5V angezeigt.
Gruß,
Michael.
> Mach mal ne FFT von einem reinen Sinus, um die Ausgabe Deiner
> FFT-Funktion (Real? Komplex? Amplitude? Energie?) zu verstehen.
Komplexe Amplitude.
> Oft normiert die FFT so, daß je die Hälfte der Energie im positiven
> Frequenzband (was Du Dir anschaust) und im negativen Frequenzband
> (Spiegelfrequenz, was Du Dir wahrscheinlich nicht anschaust) liegt -
Super, genau ins schwarze getroffen. Danke. Jetzt stimmt das gemessene
mit dem berechneten überein.
Tschüss
Martin L.
[....]
> > 2. Blick wieder sehr einfach. Die Fourierreihe einer PWM kannste in
> > Mathematik-Lexika nachschlagen
>
> In welchem steht das denn drinn? Und wie wird diese verallgemeinert?
> Ich habe in meiner Formelsammlung nur Rechteck.
ich habe hier:
Bartsch
Taschenbuch mathematischer Formeln
Harry Deutsch-Verl. 3. Auflage
Schon etwas verstaubt :-), im sicher allseits bekannten Bronstein vom
gleichen Verlag steht dieser Fall nicht drin, ist nicht so ausführlich,
dafür extrem theoretisch.
> Und die Fourieranalyse von meinem PWM Spektrum muss man in 22
> einzelne Integrale aufteilen was man natürlich per Hand machen
> kann aber du holst dein Wasser ja auch nicht mehr mit Schöpfeinern
> aus dem Brunnen. (Oder gibt es den ultimativen Trick dazu?)
>
Ich hab die Koeffizienten nicht selbst berechnet, sondern nur die Reihe
nachgeschlagen. Die Berechnung sieht auch nicht so schwierig aus, Symmetrie
1. Art, gerade Funktion, also nur 1 Integral für die Cosinus-Koeffizienten,
danach müßte das Bildungsgesetz der Reihe sichtbar sein.
> > Vss-Wert Deines Sinus, also stimmt alles. Falls Du die Herleitung nicht
> > nachvollziehen kannst, könnte ich die Fourierreihe detailliert posten.
>
Die PWM läßt sich IMHO so definieren: h ist die Höhe den Impulses, 2*phi die
Breite symmetrisch zu 0. Man braucht nur von x = 0 bis phi zu integrieren,
danach ist die Funktion 0. X ist erstmal eine allgemeine Abszisse. Das
Ergebnis sieht dann so aus:
f(x)=(2*h/pi ) * ( phi/2 + (sin(phi)/1)*cos(x) + (sin(2*phi)/2)*cos(2*x) +
(sin(3*phi)/3)*cos(3*x) + .......)
phi kann von 0 bis pi gehen
Achte auf die Klammern. Bis jetzt müßte es noch nachvollziehbar sein, Du
kannst aber sehen, daß die Reihe nicht schnell abnimmt, leider nur linear:
Als Hüllkurve im Spektrum steckt wieder mal die bekannte si(x)-Funktion
drin. Jetzt führe ich die Zeit ein und moduliere phi:
x= omegat*t
omegat= Abtast- oder Trägerfrequenz
phi(t) = (pi/2) * (1+sin(omegas*t) ) = modulierte Phase
omegas = Signalfrequenz
Da setzen wir in die Fourierreihe ein, brechen aber nach dem linearem Glied
ab:
f(t)=(h/2) * (1+sin(omegas*t) )
Wenn ich mich nicht vertan habe, müßte das jetzt so stimmen. Wir haben es
hier mit einer ganz normalen Phasenmodulation zu tun, die allseits bekannt
ist. Die Fourierkoeffizienten habe ich reell gelassen, weil ich
unanschauliche Komplikationen wie negative Frequenzen weglassen wollte. Die
sind nur in der Nachrichtentechnik notwendig, wenn man analytische
I/Q-Signale verarbeiten möchte. Das ist hier aber nicht sinnvoll.
> Ja, Das wäre sehr nett weil mich auch die 2. und 3. Harmonische
> interessiert. So rein vom Gefühl würde ich die als sehr klein
> abschätzen. Auch wäre ich an der generischen Fourierreihe für
> beliebige PWM Signal interessiert. (Auch wenn ich gerade stark
> am überlegen bin ob man das für beliebige Funktionen Integrallos
> schreiben kann)
>
Da oben ist schon die allgemeine Darstellung im reelen Zeitbereich. Die
Harmonischen nehmen aber nicht besonders schnell ab. Als modulierendes
Signal haben wir nur eine Sinus-Funktion genommen, selbst da wird das
Spektrum schon sehr kompliziert. Das 2. Glied der Fourerierreihe enthält
(sin(phi(t))/1)*cos(omegat*t)
und dieser Ausdruck hat schon ein unendlich breites Spektrum, das mit der
Bessel-Reihe beschrieben werden kann. Diese Reihe ist aber aufwendig zu
berechnen, sie ragt natürlich in den Signalbereich rein. Das kann man nur
durch Erhöhung der Abtastfrequenz oder Verkleinern des Phasenhubs
verringern, falls nötig. Wenn Du als Signal eine kompliziertere Funktion
aufmodulierst, überlagern sich dann gemäß Signalpektrum für jede Linie deren
Besselspektren und es wird entsprechend kompliziert. Das Ganze wiederholt
sich dann auch noch bei den Vielfachen der Abtastfrequenz.
>
mfg. Winfried
Hallo Winfried,
> Die PWM läßt sich IMHO so definieren: h ist die Höhe den Impulses, 2*phi die
> Breite symmetrisch zu 0. Man braucht nur von x = 0 bis phi zu integrieren,
> danach ist die Funktion 0. X ist erstmal eine allgemeine Abszisse. Das
> Ergebnis sieht dann so aus:
>
> f(x)=(2*h/pi ) * ( phi/2 + (sin(phi)/1)*cos(x) + (sin(2*phi)/2)*cos(2*x) +
> (sin(3*phi)/3)*cos(3*x) + .......)
Ich habe jetzt etwas über dieser Reihe gebrütet, bin mir aber noch
nicht ganz schlüssig ob sie wirklich ein PWM Signal darstellt.
Denn erst einmal ist es ja eine Fourierreihe, setzt also eine Periode
vorraus die nur dann gegeben ist wenn phi=const. ist.
Das ist es aber nicht mehr wenn man es mit einem Nutzsignal moduliert.
Da es diese Reihen extrem schwer zu überschauen sind habe ich mir
erst mal die Originalfunktion erdacht:
f_o(x)=1/2*(h*(sign(2*phi-mod(x+phi,2*PI))+1)
Die Periode wird aus dem Term mod(x+phi,2*PI) bestimmt und man erkennt
das diese bei variablem phi nicht mehr konstant ist.
> Du kannst aber sehen, daß die Reihe nicht schnell abnimmt, leider nur
> linear.
Wobei das ja nur meine Trägerfrequenz ist, die mich nicht weiter stört
weil sie weit genug von der Nutzfrequenz entfernt sein sollte.
> drin. Jetzt führe ich die Zeit ein und moduliere phi:
Und genau das ist IMHO nicht zulässig weil man dann zwar etwas
rausbekommt aber das nicht das PWM ist wie es der uC erzeugt.
Bei diesem ist naemlich der Abstand zwischen zwei Impulsen (entweder
steigende oder fallende Flanke, je nach Einstellung) konstant weil
der Zähler ja immer von 0 bis 255 zählt und dann von vorn anfänge.
> Da setzen wir in die Fourierreihe ein, brechen aber nach dem linearem Glied
> ab:
> f(t)=(h/2) * (1+sin(omegas*t) )
Das erste Glied ist doch der Gleichanteil. Warum ist der hier von
t abhängig obwohl er von der Anschauung h/2 sein sollte?
Oder habe ich dich da nicht richtig verstanden?
Und auch alle weiteren Fourierkoeffizienten sind von t abhängig was
doch nicht sein sollte. Es ist jetzt keine Fourierreihe mehr und ich
weis nicht ob man jetzt noch auf die Spektren schliessen darf.
Ich habe meinen Ansatz so gewählt das ich die PWM Koeffizienten k(n)
zwischen 0 und 1 variiere und dann folgendes Integral aufstelle:
Int_{n}_{n+k(n)}( 1*e^(j*2*PI/p*k*x) )
Wobei k der gewünschte Fourierkoffezientgrad ist und p die Periode, bei den
PWM Koeffizieten von 0..1 also die Anzahl der Samples/Periode.
In meinem Fall ist die Periode also 22 weil ich 22 Samples/Periode
erzeuge.
Jetzt muss ich nur noch eine Summe der Integrale bilden indem ich
n von 0 bis p laufen lasse und habe mein Spektrum.
Ich hoffe du verstehst jetzt warum ich meinen Taschenrechner bei diesen
Aufgaben nicht missen möchte .-)
Tschüss
Martin L.
"Martin Laabs" <98ma...@gmx.de> schrieb im Newsbeitrag
news:36potbF...@individual.net...
> "Winfried Salomon" <wsal...@t-online.de> wrote:
>
> Hallo Winfried,
>
> > Die PWM läßt sich IMHO so definieren: h ist die Höhe den Impulses, 2*phi
die
> > Breite symmetrisch zu 0. Man braucht nur von x = 0 bis phi zu
integrieren,
> > danach ist die Funktion 0. X ist erstmal eine allgemeine Abszisse. Das
> > Ergebnis sieht dann so aus:
> >
> > f(x)=(2*h/pi ) * ( phi/2 + (sin(phi)/1)*cos(x) +
(sin(2*phi)/2)*cos(2*x) +
> > (sin(3*phi)/3)*cos(3*x) + .......)
>
> Ich habe jetzt etwas über dieser Reihe gebrütet, bin mir aber noch
> nicht ganz schlüssig ob sie wirklich ein PWM Signal darstellt.
> Denn erst einmal ist es ja eine Fourierreihe, setzt also eine Periode
> vorraus die nur dann gegeben ist wenn phi=const. ist.
Du machst aber jetzt ein schwieriges Problem draus, laß es doch so, es
funktioniert doch :-).
> Das ist es aber nicht mehr wenn man es mit einem Nutzsignal moduliert.
> Da es diese Reihen extrem schwer zu überschauen sind habe ich mir
> erst mal die Originalfunktion erdacht:
>
> f_o(x)=1/2*(h*(sign(2*phi-mod(x+phi,2*PI))+1)
>
> Die Periode wird aus dem Term mod(x+phi,2*PI) bestimmt und man erkennt
> das diese bei variablem phi nicht mehr konstant ist.
>
Ich komm jetzt nicht dahinter was die Gleichung genau macht, mod() ist mir
bekannt, aber bei sign() fehlt doch das 2. Argument? Welche
Programmiersprache ist denn das? Ich weiß nur, daß in Fortran das Vorzeichen
des 2. Arguments das des 1. Arguments bestimmt und das ist dann
x1=sign(x1,x2). Oder sollte das sin() heißen? Aber nein, mit der sign()
Funktion machst Du den Rechteck denke ich mal. Da fehlt doch 1 Klammer zu,
aber wo, ganz rechts? Sign(1,x2) würde hier Sinn machen, aber zum
Verständnis muß ich hier zuviel raten. Wenn das auf Deinem uC läuft, wird es
sicher funktionieren. Ich finde im Moment meinen Kernigham/Ritchie nicht
;-).
> > Du kannst aber sehen, daß die Reihe nicht schnell abnimmt, leider nur
> > linear.
>
> Wobei das ja nur meine Trägerfrequenz ist, die mich nicht weiter stört
> weil sie weit genug von der Nutzfrequenz entfernt sein sollte.
>
> > drin. Jetzt führe ich die Zeit ein und moduliere phi:
>
> Und genau das ist IMHO nicht zulässig weil man dann zwar etwas
> rausbekommt aber das nicht das PWM ist wie es der uC erzeugt.
> Bei diesem ist naemlich der Abstand zwischen zwei Impulsen (entweder
> steigende oder fallende Flanke, je nach Einstellung) konstant weil
> der Zähler ja immer von 0 bis 255 zählt und dann von vorn anfänge.
>
Ok, Du hast recht, ich hab es mir leicht gemacht und den einfachsten
symmetrischen Fall angenommen. Also hab ich mir mal die Mühe gemacht, die
Fourierkoeffizienten für Deinen Fall auszurechnen. Der Puls mit Höhe h fängt
jetzt bei 0 an und geht bis phi, wobei phi maximal 2*pi betragen darf,
danach wiederholt es sich periodisch nach n*2*pi. Dann ist die Reihe
komplizierter:
Gleichanteil:
---------------
a0/2=h*phi/(2*pi)
Cosinus-Koeff. an:
------------------------
an=(h/pi) * (sin(n*phi))/n
Sinus-Koeff. bn:
--------------------
bn=(h/pi) * ( 1 - cos(n*phi) ) / n
oder auch:
bn=(h/pi) * ( (sin(n*phi/2))**2 ) / n
Wenn wir jetzt wieder phi modulieren mit:
phi(t)= (1+sin(omegas*t))*pi
und das in den ersten Term der Fourierreihe a0/2 einsetzen, alles andere
aber wegfiltern, kommt das raus:
f(t) = (h/2) * ( 1+sin(omegas*t) )
also dasselbe wie vorher, die von Dir gewünschte Zeitfunktion. Die
Phasenmodulation ist immer noch da, nur deutlich komplizierter und mit
sin-Quadrat. Für das Stör-Spektrum wird sich aber nicht grundsätzlich was
ändern, außer daß es wahrscheinlich noch etwas mehr Energie enthält.
> > Da setzen wir in die Fourierreihe ein, brechen aber nach dem linearem
Glied
> > ab:
> > f(t)=(h/2) * (1+sin(omegas*t) )
>
> Das erste Glied ist doch der Gleichanteil. Warum ist der hier von
> t abhängig obwohl er von der Anschauung h/2 sein sollte?
> Oder habe ich dich da nicht richtig verstanden?
>
Der 1. Term der Fourierreihe ist doch Dein gefilterter Sinus oder jede
beliebige Funktion, die Dein Tiefpaß noch durchläßt, also was hinten
rauskommt.
> Und auch alle weiteren Fourierkoeffizienten sind von t abhängig was
> doch nicht sein sollte. Es ist jetzt keine Fourierreihe mehr und ich
> weis nicht ob man jetzt noch auf die Spektren schliessen darf.
>
> Ich habe meinen Ansatz so gewählt das ich die PWM Koeffizienten k(n)
> zwischen 0 und 1 variiere und dann folgendes Integral aufstelle:
>
>
> Int_{n}_{n+k(n)}( 1*e^(j*2*PI/p*k*x) )
>
> Wobei k der gewünschte Fourierkoffezientgrad ist und p die Periode, bei
den
> PWM Koeffizieten von 0..1 also die Anzahl der Samples/Periode.
> In meinem Fall ist die Periode also 22 weil ich 22 Samples/Periode
> erzeuge.
> Jetzt muss ich nur noch eine Summe der Integrale bilden indem ich
> n von 0 bis p laufen lasse und habe mein Spektrum.
>
Ich weiß nicht genau, was Du da machst, berechnest Du das Fourier-Integral
über 1 Periode des Sinus? Aber wo ist der? Aber dann hast Du das gleiche
Problem wie ich, Deine modulierte Rechteckfolge ist nicht periodisch und Du
mußt das Integral also von - bis + unendlich erstrecken, das berechnete
Spektrum ist dann kontinuierlich.
Aber im Prinzip weiß ich was Du meinst. Ich mußte auch erst scharf darüber
nachdenken wie das mit der Fourierreihe einer nichtperiodischen Funktion
ist. Mal angenommen, die unmodulierte Rechteckfolge besteht aus starr
gekoppelten harmonischen Oszillatoren nach der Fourierreihe, dann ist es
egal, ob ich nur die Grundwelle phasenmoduliere, die Harmonischen machen die
Bewegung sofort mit. Bei Frequenzvervielfachung wird ja auch der Phasenhub
mit vervielfacht, egal ob mit Fourier oder ohne. Das Spektrum ist aber kein
Fourier-Spektrum mehr, auch nicht bei einem einzigen Sinus, sondern IMHO ein
Bessel-Spektrum. Das ist natürlich keine exakte mathematische Begründung,
aber ich fürchte, die schafft hier sowieso keiner.
> Ich hoffe du verstehst jetzt warum ich meinen Taschenrechner bei diesen
> Aufgaben nicht missen möchte .-)
>
Dafür ist Deine GHz-CPU doch viel besser geeignet, jag doch Deine Funktion
einfach schnell abgetastet durch 'ne FFT mit sagen wir mal 2**20 Punkten,
dahinter noch 'ne Fensterung mit geeigneter Funktion wegen Leakage-Effekt
und Du siehst alles hochaufgelöst wie auf dem Spektrumanalyzer.
mfg. Winfried
"Martin Laabs" <98ma...@gmx.de> schrieb im Newsbeitrag
news:36potbF...@individual.net...
> "Winfried Salomon" <wsal...@t-online.de> wrote:
>
> Hallo Winfried,
>
> > Die PWM läßt sich IMHO so definieren: h ist die Höhe den Impulses, 2*phi
die
> > Breite symmetrisch zu 0. Man braucht nur von x = 0 bis phi zu
integrieren,
> > danach ist die Funktion 0. X ist erstmal eine allgemeine Abszisse. Das
> > Ergebnis sieht dann so aus:
> >
> > f(x)=(2*h/pi ) * ( phi/2 + (sin(phi)/1)*cos(x) +
(sin(2*phi)/2)*cos(2*x) +
> > (sin(3*phi)/3)*cos(3*x) + .......)
>
> Ich habe jetzt etwas über dieser Reihe gebrütet, bin mir aber noch
> nicht ganz schlüssig ob sie wirklich ein PWM Signal darstellt.
> Denn erst einmal ist es ja eine Fourierreihe, setzt also eine Periode
> vorraus die nur dann gegeben ist wenn phi=const. ist.
> Das ist es aber nicht mehr wenn man es mit einem Nutzsignal moduliert.
> Da es diese Reihen extrem schwer zu überschauen sind habe ich mir
> erst mal die Originalfunktion erdacht:
>
> f_o(x)=1/2*(h*(sign(2*phi-mod(x+phi,2*PI))+1)
>
> Die Periode wird aus dem Term mod(x+phi,2*PI) bestimmt und man erkennt
> das diese bei variablem phi nicht mehr konstant ist.
>
also mir hat das keine Ruhe gelassen und habe das grade auf meinem 3.2 GHz
Home-Rechenzentrum ;-) numerisch durchgespielt, geht manchmal nicht ohne.
Deine obige Gleichung habe ich etwas modifiziert, damit sie mit meiner
modulierten Fourierreihe übereinstimmt.
f_o(x)=(h/2) * (sign(1,phi-mod(x,2*PI))+1)
Deine Sign()-Funktion hat bei mir nicht funktioniert, aber so geht es jetzt,
war verdammt schwer das hinzukriegen. Sie kann hier nur +-1 werden, so ist
die Syntax gemeint, falls Du 'ne andere Programmiersprache als ich benutzt.
Als Fourierreihe habe ich die modifizierte aus der Parallelmail benutzt, da
war noch 1 kleiner Fehler drin:
oder auch:
bn=(h/pi) * 2 * ( (sin(n*phi/2))**2 ) / n
die 2 als Faktor fehlte. Dann habe ich die Funktionen mit Deinen Werten
berechnet, 2**10 Stützwerte mit 1 MHz Abtastfrequenz genommen und grafisch
dargestellt. Bei der Fourierreihe habe ich n=1000 gewählt, weil sie nicht
schnell konvergiert. Die beiden Zeitfunktionen sind praktisch identisch und
die Unterschiede werden mit größerem n noch kleiner. Damit konnte ich
numerisch nachweisen, daß ich die Phase in einer Fourierreihe modulieren
darf, ohne die Zeitfunktion zu verfälschen. Das ist analytisch IMHO sehr
schwer zu schaffen, vielleicht kann man es doch als Überlagerung
periodischer Funktionen betrachten. Deshalb bin ich fast sicher, daß man das
auch mit der Amplitude machen kann. Mal sehen, ob ich mir das Spektrum auch
mal ansehe, das ist etwas mehr Aufwand. Man bekommt dann vielleicht einen
Eindruck, was bei der heute oft eingesetzten PWM für Störungen zu erwarten
sind.
mfg. Winfried
Hallo Winfried,
> also mir hat das keine Ruhe gelassen und habe das grade auf meinem 3.2 GHz
> Home-Rechenzentrum ;-) numerisch durchgespielt, geht manchmal nicht ohne.
Mir hat es auch keine Ruhe gelassen und ich wollte schon gestern
Nacht antworten. Ich habe so gegen 11 Uhr angefangen und als ich 2Uhr
noch immer nicht fertig war habe ich es auf heute früh verschoben.
> Deine Sign()-Funktion hat bei mir nicht funktioniert, aber so geht es jetzt,
> war verdammt schwer das hinzukriegen. Sie kann hier nur +-1 werden, so ist
> die Syntax gemeint, falls Du 'ne andere Programmiersprache als ich benutzt.
In Maple, Derive und Gnuplot ist sign folgend definiert:
sign(x)=1 für x>0
sing(x)=-1 für x<0
sing(x)=0 für x=0, machmal auch undefiniert
> die Unterschiede werden mit größerem n noch kleiner. Damit konnte ich
> numerisch nachweisen, daß ich die Phase in einer Fourierreihe modulieren
> darf, ohne die Zeitfunktion zu verfälschen.
Ich glaube da habe ich ein Gegenbeispiel dafür. Aber das liegt an
der PWM Generation im uC selbst.
> Das ist analytisch IMHO sehr
> schwer zu schaffen, vielleicht kann man es doch als Überlagerung
> periodischer Funktionen betrachten.
Im uC wird ein Zähler (z) so lange um Eins erhöht wird bis er TOP
erreicht hat. Danach zählt wird so lange Eins abgezogen bis er 0
erreicht wird um dann wieder Eins zu addieren usw. In einem Diagramm
würde es folgend
aussehen: (TOP=10)
http://rcswww.urz.tu-dresden.de/~s8606710/1.png
{Hier immer die gnuplot Befehlt falls jemand sich das nochmal
ansehen will wenn die Bilder wieder gelöscht sind:
z(x)=int(abs(x))%20<10?abs(x)-int(abs(x)/10)*10:10*int((abs(x)+10)/10)-abs(x);
plot [0:50] z(x)}
Jetzt gibt es einen Komperator der den Zähler mit dem Wert in COMP
vergleicht. Ist COMP > z wird der Ausgang auf 1 geschaltet, wenn
COMP <z auf 0.
Für TOP=10 und COMP=3.
http://rcswww.urz.tu-dresden.de/~s8606710/2.png
{plot [x=0:50] z(x), z(x)<3?10:0 with steps}
Wie man in auf den Bildern sehen kann sind die Impulseabstände
periodisch. Die "Symetrieachse" ist dort wo der Zähler den
Maixmalwert (TOP) erreicht.
So weit stimmt alles mit der Fourierreihe überein.
Nun haben wir aber eine Funktion die den Wert COMP verändert,
in dem vorletzen Posting von dir wäre das so als wenn man PHI
von t abhängig macht.
Im uC wirt der Wert COMP immer erst dann geändert wenn der
Zähler z TOP erreicht hat.
Genau das ist aber bei der von dir vorgeschlagenen Fourierreihe nicht der
Fall. Um es auch visuell zu verdeutlichen muss der Wert COMP
zwischen dem ersten Vergleich (z > COMP >= Ausgang=1) und dem zweiten
Vergleich (z < COMP => Ausgang=0) relativ stark abweichen.
Sonst sieht man es u.U. nicht auf dem Plot.
Ich werde jetzt als Modulationssignal folgende Funktion verwenden:
http://rcswww.urz.tu-dresden.de/~s8606710/3.png
{sawtooth(h,w,x)=(abs(x)-int(abs(x)/w)*w)/w*h
mod(x)=(sawtooth(3.1,25,x))**2
plot [0:50] mod(x)}
Der Wert von COMP ist dann in dem folgenden Bild die grüne
Linie, ähnlich wie in einer sample and hold Schaltung für
einen ADC:
http://rcswww.urz.tu-dresden.de/~s8606710/4.png
{smod(x)=mod(int((x+10.)/20.)*10.)
plot [0:100] mod(x),smod(x), z(x);}
Ein so moduliertes PWM Signal müsste so aussehen:
(das rote)
http://rcswww.urz.tu-dresden.de/~s8606710/5.png
{set samples 1000
plot [0:100] z(x)<smod(x)?0:-2 with steps, smod(x) with steps, z(x) with steps}
Wenn man nun das Phi bzw. bei mir das COMP nicht festhält sondern
als Funktion laufen lässt entsteht folgendes:
http://rcswww.urz.tu-dresden.de/~s8606710/6.png
{plot [0:100] z(x)<mod(x)?0:-2 with steps, mod(x) with steps, z(x) with steps}
Im Vergleich:
(Oben das richtige, unten das falsche)
http://rcswww.urz.tu-dresden.de/~s8606710/7.png
{plot [0:100] z(x)<mod(x)?0:-2 with steps, z(x)<smod(x)?2:0.1 with steps}
Dazu im Vergleich die Fourierreihe mit der Höhe 2 und er Periode
20, wie du sie vorgeschlagen hattest.
(Nur mit cos-Termen weil ich das Beispiel hier auch Symetrisch zur
y-Achse entwickelt habe).
f(x)=phi/5+sum(4/(k*PI)*sin(k*phi*PI/10) * cos(2*pi/20 * k*x),k,1,10)
mit phi=mod(x)
Und das letze Bild: unten die ideal falsche Funktion und oben die
Foueriereihe mit n=10 (mehr macht gnuplot gerade nicht mit). Man erkennt
aber schon, dass das mit n->unendlich gleich wird.
http://rcswww.urz.tu-dresden.de/~s8606710/8.png
{plot [0:100] mod(x)/5+( 4./(1.*pi)*sin(1.*mod(x)*pi/10) *
cos(2.*pi/20.*1.*x))+( 4./(2.*pi)*sin(2.*mod(x)*pi/10) *
cos(2.*pi/20.*2.*x))+( 4./(3.*pi)*sin(3.*mod(x)*pi/10) *
cos(2.*pi/20.*3.*x))+( 4./(4.*pi)*sin(4.*mod(x)*pi/10) *
cos(2.*pi/20.*4.*x))+( 4./(5.*pi)*sin(5.*mod(x)*pi/10) *
cos(2.*pi/20.*5.*x))+( 4./(6.*pi)*sin(6.*mod(x)*pi/10) *
cos(2.*pi/20.*6.*x))+( 4./(7.*pi)*sin(7.*mod(x)*pi/10) *
cos(2.*pi/20.*7.*x))+( 4./(8.*pi)*sin(8.*mod(x)*pi/10) *
cos(2.*pi/20.*8.*x))+( 4./(9.*pi)*sin(9.*mod(x)*pi/10) *
cos(2.*pi/20.*9.*x))+( 4./(10.*pi)*sin(10.*mod(x)*pi/10) *
cos(2.*pi/20.*10.*x)), z(x)<mod(x)?0:-2 with steps }
Es ist also durch dieses "sample and hold" von phi möglich,
dass sich kleine Spikes einschleichen und die Impulse nicht
mehr Symetrisch sind. (Symetrieachse bei z=TOP)
Wenn man viele PWM-Pulse pro Signalperiode hat mag das nicht
ins Gewicht fallen. Aber bei wenigen, und bei mir sind es ja nur
22, kann ich mir vorstellen das es nicht zu vernachlässigende
Fehler produziert.
Tschüss
Martin L.
> Mir hat es auch keine Ruhe gelassen und ich wollte schon gestern
> Nacht antworten. Ich habe so gegen 11 Uhr angefangen und als ich 2Uhr
> noch immer nicht fertig war habe ich es auf heute früh verschoben.
>
das Thema wird ja jetzt doch ziemlich kompliziert, da ich berufstätig bin,
kann ich das nur Abends machen, das kann dann auch etwas dauern.
> > Deine Sign()-Funktion hat bei mir nicht funktioniert, aber so geht es
jetzt,
> > war verdammt schwer das hinzukriegen. Sie kann hier nur +-1 werden, so
ist
> > die Syntax gemeint, falls Du 'ne andere Programmiersprache als ich
benutzt.
>
> In Maple, Derive und Gnuplot ist sign folgend definiert:
>
> sign(x)=1 für x>0
> sing(x)=-1 für x<0
> sing(x)=0 für x=0, machmal auch undefiniert
>
Scheint sozusagen 'ne Untermenge von Fortran zu sein, dort ist es
allgemeiner definiert und auch für 0, dann ist es positiv. Das Problem das
ich hatte war, Dein Beispiel enthielt 2 Fehler und anstatt es ganz neu zu
machen, hab ich alles Mögliche probiert und kam nicht dahinter, was Deine
Gleichung bedeuten sollte. Aber nun geht's ja.
> > die Unterschiede werden mit größerem n noch kleiner. Damit konnte ich
> > numerisch nachweisen, daß ich die Phase in einer Fourierreihe modulieren
> > darf, ohne die Zeitfunktion zu verfälschen.
>
Grade eben hab ich die 2. unsymmetrische Fourierreihe getestet, indem ich
Pulsbreite, -höhe und -frequenz nachträglich gleichzeitig moduliert habe mit
jeweils unterschiedlichen Frequenzen. Das Ergebnis war, sie konvergiert
immer noch präzise, man darf das also machen. Dieser Punkt war mir für das
grundsätzliche Verständnis wichtig, denn das wage ich jetzt für beliebige
Fourierreihen zu verallgemeinern und vom mathematischen Standpunkt ist das
IMHO garnicht so eindeutig vorherzusagen.
Das Spektrum für den von Dir angegeben unsymmetrischen Fall habe ich mir
auch noch mit einer 2**19 FFT mit Abtastfrequenz 10 MHz angesehen, sehr
interessant. Bis 10 KHz Störungen unter 70 dB, darüber dann steil ansteigend
erst um 15 KHz herum ein Spektrum, das einer Phasenmodulation gleicht,
darüber dann alles wild überlappend und mit der Schaltung kannst Du
lückenlos bis in den UKW-Bereich alles stören :-). Allerdings ist das
Spektrum anscheinend insgesamt um 3 dB nach unten gerutscht, muß mir das
nochmal in Ruhe ansehen.
Na ja, 'ne 2**19 FFT treibt den Rechner schon an die Grenze, Matlab würde da
schon bald schlappmachen, also ein guter Spektrumanalyzer ist dem Rechner
doch IMHO deutlich vorzuziehen.
> Ich glaube da habe ich ein Gegenbeispiel dafür. Aber das liegt an
> der PWM Generation im uC selbst.
>
Tja, mein Beispiel war ideal "analog" und was jetzt kommt, sind die
Niederungen der Praxis mit den vielen komplizierten Zusatzeffekten, vor
allem weil Du es "digital" machst. Ich versuche mal zu verstehen was Du
meinst, könnte aber sein, daß ich das erst später gründlich betrachten kann.
> Im uC wird ein Zähler (z) so lange um Eins erhöht wird bis er TOP
> erreicht hat. Danach zählt wird so lange Eins abgezogen bis er 0
> erreicht wird um dann wieder Eins zu addieren usw. In einem Diagramm
> würde es folgend
> aussehen: (TOP=10)
>
> http://rcswww.urz.tu-dresden.de/~s8606710/1.png
> {Hier immer die gnuplot Befehlt falls jemand sich das nochmal
> ansehen will wenn die Bilder wieder gelöscht sind:
>
>
z(x)=int(abs(x))%20<10?abs(x)-int(abs(x)/10)*10:10*int((abs(x)+10)/10)-abs(x
);
> plot [0:50] z(x)}
>
Ist soweit klar, GNU-Plot habe ich auch, sogar als Windows-Programm, aber
der Einfachheit halber lasse ich die Grafik mit Matlab anzeigen. Das
Testprogramm habe ich auch in GNU-Fortran geschrieben, also alles kostenlose
Software und läuft auch auf anderen Plattformen.
>
> Jetzt gibt es einen Komperator der den Zähler mit dem Wert in COMP
> vergleicht. Ist COMP > z wird der Ausgang auf 1 geschaltet, wenn
> COMP <z auf 0.
> Für TOP=10 und COMP=3.
>
> http://rcswww.urz.tu-dresden.de/~s8606710/2.png
> {plot [x=0:50] z(x), z(x)<3?10:0 with steps}
>
> Wie man in auf den Bildern sehen kann sind die Impulseabstände
> periodisch. Die "Symetrieachse" ist dort wo der Zähler den
> Maixmalwert (TOP) erreicht.
>
> So weit stimmt alles mit der Fourierreihe überein.
Das sieht aus wie die 1. Fourierreihe, falls man den Scheitelpunkt bei 0
festlegt. Aber ich glaube das simuliere ich jetzt nicht, weil es an der
Betrachtung nichts mehr ändert, obwohl die beiden Prinzipien etwas
unterschiedlich sind.
> Nun haben wir aber eine Funktion die den Wert COMP verändert,
> in dem vorletzen Posting von dir wäre das so als wenn man PHI
> von t abhängig macht.
>
> Im uC wirt der Wert COMP immer erst dann geändert wenn der
> Zähler z TOP erreicht hat.
>
Oh, das ist schlecht. Wenn ich so darüber nachdenke, fallen mir
Echtzeitprobleme bei einem ARM-RISC-Controller ein, da wurde der AD-Wandler
zuerst mit Takt vom Timer-Interrupt angesteuert. Leider mußten wir
feststellen, daß der so erzeugte Takt unakzeptabel jitterte. Was das in der
Signalverarbeitung bedeutet ist klar, die abgetastete Zeitfunktion wird
nichtharmonisch verzerrt. So ähnlich könnte das hier auch zu sein, bin noch
nicht sicher.
Oha, jetzt muß ich wirklich nachdenken. Das Problem ist ja noch anders. Wenn
ich das jetzt richtig sehe, entspricht Bild 6 der 2. Fourierreihe, falls die
fallende Flanke des Dreiecks durch einen Sprung nach unten ersetzt wird,
vielleicht wäre das sinnvoll?. Das wäre dann die "analoge" Funktion. Jetzt
tastest Du aber ab, die Reaktion kommt dann IMHO exakt 1 Periode später,
scheint aber sonst identisch zu sein. Von Jitter ist da nichts zu sehen,
beide sind exakt identisch bis auf die Verzögerung um 1 Takt. Kannst Du
keinen Sägezahn mit fallender Flanke benutzen?
Aber Du hast einen symmetrischen Dreieck, das macht alles sehr
unübersichtlich. Welcher der beiden Schwellwerte wird denn da benutzt, der
auf der steigenden Flanke? Dieser hat aber auch einen konstanten Abstand von
1 Periode zum rechten Rand des nächsten symmetrischen Impulses in Bild 5.
Das könnte darauf hindeuten, daß auch das jitterfrei geht.
Das ist wieder ein Abtastproblem, dafür hast Du ja den Tiefpaß
davorgeschaltet. Den Fall in Bild 8 habe ich jetzt nicht richtig verstanden,
ist das sozusagen der analoge Komparator?
Wenn Dein Fall mit dem uC Bild 5 entspricht, so müßte man es erstmal
mathematisch so erfassen, daß man eine Fourierreihe daraus entwickeln kann,
da müßte dann die Abtastverzögerung mit eingehen. Falls das geht und die
Reihe auch richtig konvergiert, kannst Du ja die Signalkomponente in der
Reihe sehen. Wenn die richtig ist, müßte alles funktionieren.
So ganz sicher bin ich nicht, ob ich das jetzt alles richtig sehe, im Moment
sind da zuviele Aspekte. Aber der Fall mit dem Sägezahn und der steil
abfallenden Flanke sieht mir im Moment richtig aus. Weitere Überlegungen muß
ich erstmal verschieben.
mfg. Winfried
> das Thema wird ja jetzt doch ziemlich kompliziert, da ich berufstätig bin,
> kann ich das nur Abends machen, das kann dann auch etwas dauern.
Ich habe zwar gearde Vorlesungsfreie Zeit aber scheibe noch
viele Prüfungen so das ich auch nicht allzu viel Zeit habe.
> Grade eben hab ich die 2. unsymmetrische Fourierreihe getestet, indem ich
> Pulsbreite, -höhe und -frequenz nachträglich gleichzeitig moduliert habe mit
> jeweils unterschiedlichen Frequenzen. Das Ergebnis war, sie konvergiert
> immer noch präzise, man darf das also machen.
Ich muss mal kurz rekapitulieren:
Die 1. Fourierreihe war die symetrische, mit nur cos Termen, die
2. Fourierreihe war wie die 1. nur um phi/2 in x-Richtung verschoben.
> Dieser Punkt war mir für das
> grundsätzliche Verständnis wichtig, denn das wage ich jetzt für beliebige
> Fourierreihen zu verallgemeinern und vom mathematischen Standpunkt ist das
> IMHO garnicht so eindeutig vorherzusagen.
Ja. Man müsste mal in de.sci.math nachfragen ob soetwas
generell zulässig ist.
Also ob man eine Fouerierreihe mit einem Parameter aufstellen kann
und diese dann noch korrekt gegen den Funktionswert konvergiert wenn
man den Parameter ändert.
> Das Spektrum für den von Dir angegeben unsymmetrischen Fall habe ich mir
> auch noch mit einer 2**19 FFT mit Abtastfrequenz 10 MHz angesehen, sehr
> interessant. Bis 10 KHz Störungen unter 70 dB, darüber dann steil ansteigend
> erst um 15 KHz herum ein Spektrum, das einer Phasenmodulation gleicht,
Ja, Das habe ich mir auch schon fast gedacht. Wobei es mich interessiert
ob es wirklich ein kontinuierliches Spektrum ist (durch die Modulation)
oder nur ein Linienspektrum ist wie es von der Fouerierreihe gewöhnt ist.
Mit welchem Programm berechnest du denn die FFT? Auch matlab? Ich
mag ja lieber Maple.
> darüber dann alles wild überlappend und mit der Schaltung kannst Du
> lückenlos bis in den UKW-Bereich alles stören :-).
Naja. Wenn man diese Vorhersagen machen wollte müsste man noch die
Flankensteilheit beachten die von den MOS-Transistoren und Kapazitäten
abhängig sind. Ich glaube das wird dann bald unberechenbar.
>> http://rcswww.urz.tu-dresden.de/~s8606710/2.png
> Das sieht aus wie die 1. Fourierreihe, falls man den Scheitelpunkt bei 0
> festlegt.
Der Scheitelpunkt ist doch bei 0. Oder verstehen wir darunter zwei
verschiedene Sachen?
Diese Funktion (grün) ist doch symetrisch zur y-Achse und somit,
von der Periode und Höhe der Impulse mal abgesehen, genau wie
die 1. Fouerierreihe.
> Oha, jetzt muß ich wirklich nachdenken. Das Problem ist ja noch anders. Wenn
> ich das jetzt richtig sehe, entspricht Bild 6 der 2. Fourierreihe, falls die
> fallende Flanke des Dreiecks durch einen Sprung nach unten ersetzt wird,
> vielleicht wäre das sinnvoll?.
Es wäre die 2. Fourierreihe wenn man die steigende Flanke nur halb so
schnell ansteigen lassen würde und die fallende durch einen Sprung
nach unten. Aber ich habe ja dieses Beispiel nach der 1. Fourierreihe
entwickelt. Evt. mach ich später noch mal einen Plot.
> Das wäre dann die "analoge" Funktion. Jetzt
> tastest Du aber ab, die Reaktion kommt dann IMHO exakt 1 Periode später,
> scheint aber sonst identisch zu sein.
Nein. Am Bild 7 erkennt man z.B. das bei x=80 bei der analogen
Variante (rot) ein Puls mehr da ist.
> Von Jitter ist da nichts zu sehen,
> beide sind exakt identisch bis auf die Verzögerung um 1 Takt. Kannst Du
> keinen Sägezahn mit fallender Flanke benutzen?
Ja, ich werde es später nochmal mit Sägezahn plotten. Aber prinzipiell
müsste es gleich bleiben.
Aber neben dem Jitter erwarte ich in diesem Beispiel eben auch kleine
Spikes die natürlich nur gehäuft auftreten wenn die Modulationsfrequenz
nah an der PWM-Frequenz liegt.
> Aber Du hast einen symmetrischen Dreieck, das macht alles sehr
> unübersichtlich.
Es war auch sehr schwer das zu modelieren. Aber anders konnte ich die
1. Fourierreihe nicht nachbilden.
> Welcher der beiden Schwellwerte wird denn da benutzt, der
> auf der steigenden Flanke?
Ich hatte vergessen noch die Schwellwertfunktion mit rein zu plotten.
http://rcswww.urz.tu-dresden.de/~s8606710/9.png
Hier erkennt man das der Schwellwert (COMP) bei 10+n*20
genommen wird.
> Dieser hat aber auch einen konstanten Abstand von
> 1 Periode zum rechten Rand des nächsten symmetrischen Impulses in Bild 5.
> Das könnte darauf hindeuten, daß auch das jitterfrei geht.
Auf was bezogen Jitterfrei? Wenn das digitale PWM Jitterfrei ist
hat das analoge einen Phasenfehler der Proportional zu
mod(x+p)-mod(x) ist wenn mod(x) die Modulationsfunktion ist.
(Einfach mal so hingeschrieben ohne es zu überprüfen)
> Das ist wieder ein Abtastproblem, dafür hast Du ja den Tiefpaß
> davorgeschaltet. Den Fall in Bild 8 habe ich jetzt nicht richtig verstanden,
> ist das sozusagen der analoge Komparator?
Ja. Bild 6 (nicht 8) ist die Analoge Variante und Bild 7 zeigt
den direkten Vergleich zwischen Analog und Digital.
> Wenn Dein Fall mit dem uC Bild 5 entspricht, so müßte man es erstmal
> mathematisch so erfassen, daß man eine Fourierreihe daraus entwickeln kann,
> da müßte dann die Abtastverzögerung mit eingehen. Falls das geht und die
> Reihe auch richtig konvergiert, kannst Du ja die Signalkomponente in der
> Reihe sehen. Wenn die richtig ist, müßte alles funktionieren.
Genau. Bild 5 ist mit Digital. Aber mit verzögert geh ich nicht ganz
mit weil das Modulationssignal/funktion ja diskret ist.
> So ganz sicher bin ich nicht, ob ich das jetzt alles richtig sehe, im Moment
> sind da zuviele Aspekte. Aber der Fall mit dem Sägezahn und der steil
> abfallenden Flanke sieht mir im Moment richtig aus. Weitere Überlegungen muß
> ich erstmal verschieben.
Ja, ich werde auch noch etwas grübeln und es nochmal mit der
Sägezahnfunktion plotten. Ich muss mal sehen ob ich ein Programm finde
mit dem ich eine FFT von einer Funktion machen kann.
Tschüss
Martin L.
> > Grade eben hab ich die 2. unsymmetrische Fourierreihe getestet, indem
ich
> > Pulsbreite, -höhe und -frequenz nachträglich gleichzeitig moduliert habe
mit
> > jeweils unterschiedlichen Frequenzen. Das Ergebnis war, sie konvergiert
> > immer noch präzise, man darf das also machen.
>
> Ich muss mal kurz rekapitulieren:
> Die 1. Fourierreihe war die symetrische, mit nur cos Termen, die
> 2. Fourierreihe war wie die 1. nur um phi/2 in x-Richtung verschoben.
>
ich versuche das auch mal etwas zusammenzufassen, um nicht den Überblick zu
verlieren, weil dieses Thema in der Komplexität IMHO schon an die Grenze
dessen stößt, was man in einer Newsgroup diskutieren kann.
Wie mir jetzt klargeworden ist, stellen beide Fourierreihen den Fall einer
analogen Schaltung dar, bei der ein Komparator eine Signalspannung (in
diesem Fall Sinus) mit einem symmetrischen Dreieck oder unsymmetrischen
Sägezahn vergleicht. Ich habe den symmetrischen Fall jetzt auch im
Zeitbereich modelliert, was recht schwierig war, auch dort exakte
Übereinstimmung mit Fourierreihe. Deshalb gehe ich im Moment davon aus, daß
die ersten Aussagen alle richtig waren für diese "analogen" Fälle.
> > Dieser Punkt war mir für das
> > grundsätzliche Verständnis wichtig, denn das wage ich jetzt für
beliebige
> > Fourierreihen zu verallgemeinern und vom mathematischen Standpunkt ist
das
> > IMHO garnicht so eindeutig vorherzusagen.
>
> Ja. Man müsste mal in de.sci.math nachfragen ob soetwas
> generell zulässig ist.
> Also ob man eine Fouerierreihe mit einem Parameter aufstellen kann
> und diese dann noch korrekt gegen den Funktionswert konvergiert wenn
> man den Parameter ändert.
>
Im Moment bin ich eher wieder vorsichtig. Amplitude und Frequenz zu
modulieren müßte IMHO immer gehen, aber jeden beliebigen Parameter zu
modulieren, ist überhaupt nicht zu überschauen. Ich habe nur die
Integrationsgrenzen moduliert und das funktioniert nachweislich. Falls da
aber noch weiter Abhängigkeiten drinstecken sollten, überschaue ich das so
nicht. Im Grunde habe ich beim Aufstellen der Reihen nicht großartig
nachgedacht und wundere mich nachträglich, daß das alles so paßt :-).
Man könnte sicher in de.sci.math nachfragen, aber der Fall von beliebigen
Parametern könnte zu einer sehr schwierigen Diskussion führen, weiß nicht,
ob man das durchhalten könnte.
> > Das Spektrum für den von Dir angegeben unsymmetrischen Fall habe ich mir
> > auch noch mit einer 2**19 FFT mit Abtastfrequenz 10 MHz angesehen, sehr
> > interessant. Bis 10 KHz Störungen unter 70 dB, darüber dann steil
ansteigend
> > erst um 15 KHz herum ein Spektrum, das einer Phasenmodulation gleicht,
>
> Ja, Das habe ich mir auch schon fast gedacht. Wobei es mich interessiert
> ob es wirklich ein kontinuierliches Spektrum ist (durch die Modulation)
> oder nur ein Linienspektrum ist wie es von der Fouerierreihe gewöhnt ist.
> Mit welchem Programm berechnest du denn die FFT? Auch matlab? Ich
> mag ja lieber Maple.
>
Ich habe jetzt beide "analogen" Fälle durch eine 2**22 FFT gejagt, wobei ich
da allmählich an Grenzen stoße, z.B. ist das ASCII-File für die
Zeitfunktionen da schon ca. 370 MB groß und Matlab brauch schon einige
Minuten, nur um es für die grafische Darstellung zu laden.
Die Spektren sind trotz Modulation ein Linienspektrum, wobei die
Bessel-Linien im symmetrischen Fall den doppelten Abstand haben, zumindest
sieht es also störungsfreier aus. Aus der FFT könnte man natürlich alles wie
S/N herausrechnen, ich habe erstmal abgeschätzt, wie hoch Du mit der
Signalfrequenz bei 70 dB Störabstand gehen kannst, das sind ungefähr 1.8
KHz, also hast Du noch Reserve. Das Abtasttheorem gilt hier auch, aber
deutlich scharfer, Du mußt noch weit unter der halben Impulsfrequenz
bleiben.
Um diese Spektren mit einer Dynamik von ca. 100 dB darzustellen und die
Linien aufzulösen, muß ich im Vergleich zu einem Spektrumanalyzer schon
gigantische Rechnerleistung auffahren.
Die FFT führe ich mit einem Fortran-Programm durch, einem 32 Bit Compiler
der DJGPP-Distribution, der setzt das intern nach C um glaube ich. Das
FFT-Programm funktioniert nach Cooley-Tukey und scheint im Vergleich zu
anderen am schnellsten zu sein, ist aus einem Buch. Es schien ursprünglich
nicht ganz fehlerfrei zu sein, im Moment macht es aber das was ich will und
habe es schon öfters mit Erfolg eingesetzt. Um den Leakage-Effekt zu
verringern, hab ich das Spektrum mit einem Kaiser-Bessel-Fenster gefaltet
mit Nebenzipfeldämpung hier bei 120 dB. Das habe ich selbst geschrieben, nur
die sehr schwer zu programmierende Bessel-Funktion habe ich aus der glaube
ich freien NSWC-Bibliothek entnommen, die fand ich an der UNI Stuttgart per
FTP. Das ist natürlich alles Fortran77, ob es das in C gibt, entzieht sich
meiner Kenntnis, bin da nirgends fündig geworden. Zwar ist C jetzt in Mode,
aber programmiert wird ja wohl mittlerweile nicht mehr, bestenfalls
grafische Oberflächen per Mausklick zusammengenagelt. Es gibt auch
Bibliotheken an UNIs, die sind meist für LINUX oder so, nur frei für rein
wissenschaftliche Zwecke, nur scheint die mittlerweile keiner mehr zu
benutzen, wie man mir im Rechenzentrum sagte.
Mit Matlab kannst Du das auch machen, ich benutze es nur für die grafische
Ausgabe, weil ich in GNU-Plot den Zoom per Maus nicht habe. Nur ist Matlab
sehr teuer und ich selbst finde es besser, kostenlose eigene GNU-Programme
zu haben. Wir hatten letztens Probleme bei Matlab, den Kanal einer
OFDM-Modulation per FFT zu berechnen, da gab es RAM-Probleme und der
Algorithmus schien mir nicht gut zu sein, das Ergebnis blieb zweifelhaft.
Wenn Du das selbst machst, kann Dir das nicht passieren, wenn Du es kannst
;-).
> > darüber dann alles wild überlappend und mit der Schaltung kannst Du
> > lückenlos bis in den UKW-Bereich alles stören :-).
>
> Naja. Wenn man diese Vorhersagen machen wollte müsste man noch die
> Flankensteilheit beachten die von den MOS-Transistoren und Kapazitäten
> abhängig sind. Ich glaube das wird dann bald unberechenbar.
>
Das ist nicht so schwierig, man würde dann natürlich einen
Schaltungssimulator wie SPICE benutzen, der kann glaube ich sogar das
Spektrum berechnen, die Qualität weiß ich jetzt nicht. Man könnte auch
nachträglich eine FFT der Zeitfunktion durchführen, ich sehe da keine
grundsätzlichen Probleme. Aber hier wäre der Aufwand übertrieben.
>
> >> http://rcswww.urz.tu-dresden.de/~s8606710/2.png
>
> > Das sieht aus wie die 1. Fourierreihe, falls man den Scheitelpunkt bei 0
> > festlegt.
>
> Der Scheitelpunkt ist doch bei 0. Oder verstehen wir darunter zwei
> verschiedene Sachen?
> Diese Funktion (grün) ist doch symetrisch zur y-Achse und somit,
> von der Periode und Höhe der Impulse mal abgesehen, genau wie
> die 1. Fouerierreihe.
>
Ok, der untere Scheitelpunkt ist hier wohl richtig, kann sein daß ich mich
vertan hatte.
> > Oha, jetzt muß ich wirklich nachdenken. Das Problem ist ja noch anders.
Wenn
> > ich das jetzt richtig sehe, entspricht Bild 6 der 2. Fourierreihe, falls
die
> > fallende Flanke des Dreiecks durch einen Sprung nach unten ersetzt wird,
> > vielleicht wäre das sinnvoll?.
>
> Es wäre die 2. Fourierreihe wenn man die steigende Flanke nur halb so
> schnell ansteigen lassen würde und die fallende durch einen Sprung
> nach unten. Aber ich habe ja dieses Beispiel nach der 1. Fourierreihe
> entwickelt. Evt. mach ich später noch mal einen Plot.
>
Wenn ich das jetzt richtig verstanden habe, fallen die 2. Fourierreihe der
"analogen" Lösung mit Deiner uC-Realisierung zusammen, damit wäre dieser
Fall schonmal eine sinnvolle Lösung.
>
> > Das wäre dann die "analoge" Funktion. Jetzt
> > tastest Du aber ab, die Reaktion kommt dann IMHO exakt 1 Periode später,
> > scheint aber sonst identisch zu sein.
>
> Nein. Am Bild 7 erkennt man z.B. das bei x=80 bei der analogen
> Variante (rot) ein Puls mehr da ist.
>
Moment. Bild 6 war jetzt die analoge symmetrische Variante, in Bild 7 ist
die rot und das grüne die uC-Funktion? Daß die Funktionen in Bild 7 sich
unterscheiden ist klar, denn die digitale symmetrische Variante ist
komplizierter zu betrachten und anders.
Der Impuls bei der analogen symmetrischen Variante ensteht IMHO dadurch, daß
Du das Abtastheorem verletzt. Du mußt das Signalspektrum hier auf 1.8 KHz
begrenzen, sonst entstehen schwer zu überschauende Effekte, Du hast aber
einen spektral unbegrenzten Exponentialimpuls benutzt, das ist nicht
zulässig. Diese grundsätzlichen Aspekte der Signaltheorie müssen wir evtl.
noch etwas vertiefen, falls Du da Probleme siehst.
> > Von Jitter ist da nichts zu sehen,
> > beide sind exakt identisch bis auf die Verzögerung um 1 Takt. Kannst Du
> > keinen Sägezahn mit fallender Flanke benutzen?
>
> Ja, ich werde es später nochmal mit Sägezahn plotten. Aber prinzipiell
> müsste es gleich bleiben.
> Aber neben dem Jitter erwarte ich in diesem Beispiel eben auch kleine
> Spikes die natürlich nur gehäuft auftreten wenn die Modulationsfrequenz
> nah an der PWM-Frequenz liegt.
>
Wenn Du das Abtastheorem nicht verletzt, müßten im 2. unsymmetrischen Fall
analoge und digitale Variante identisch sein, bis auf einen delay. Leider
weiß ich immer noch nicht genau, was Dein uC macht, deshalb wüßte ich kein
richtiges Modell dafür.
> > Aber Du hast einen symmetrischen Dreieck, das macht alles sehr
> > unübersichtlich.
>
> Es war auch sehr schwer das zu modelieren. Aber anders konnte ich die
> 1. Fourierreihe nicht nachbilden.
>
Das war auch schwer, hat aber dann doch gut funktioniert und die Annahmen
bestätigt.
> > Welcher der beiden Schwellwerte wird denn da benutzt, der
> > auf der steigenden Flanke?
>
> Ich hatte vergessen noch die Schwellwertfunktion mit rein zu plotten.
>
> http://rcswww.urz.tu-dresden.de/~s8606710/9.png
>
> Hier erkennt man das der Schwellwert (COMP) bei 10+n*20
> genommen wird.
>
In Bild 9 verstehe ich die Entstehung der violetten Abtastwerte nicht. Pro
Periode sind auf der fallenden und dann steigenden Flanke des Dreieck
Abtastungen möglich, wird nur der steigende genommen? In der Grafik kann ich
diesen Zusammenhang nicht erkennen. Aus diesem Grunde versteh ich die
Funktionsweise Deines uC nicht richtig, das müßten wir erstmal klären, um es
weiter zu analysieren.
> > Dieser hat aber auch einen konstanten Abstand von
> > 1 Periode zum rechten Rand des nächsten symmetrischen Impulses in Bild
5.
> > Das könnte darauf hindeuten, daß auch das jitterfrei geht.
>
> Auf was bezogen Jitterfrei? Wenn das digitale PWM Jitterfrei ist
> hat das analoge einen Phasenfehler der Proportional zu
> mod(x+p)-mod(x) ist wenn mod(x) die Modulationsfunktion ist.
> (Einfach mal so hingeschrieben ohne es zu überprüfen)
>
Die Betrachtung als Abtastsystem finde ich hier sehr kompliziert. Die
analoge symmetrische Variante, die jetzt eigentlich klar ist, tastet
nichtperiodisch ab, trotzdem klappt alles wie gewünscht. Mit Jitter meine
ich hier eine Abweichung der Abtastfunktion von der gewünschten bezüglich
Zeit. Die Auswirkung wäre in der FFT sofort zu sehen, das Signal, in meinem
Fall Sinus, würde zerlaufen, tut es hier aber nicht.
Die digitale symmetrische Variante, deren Funktionsweise mir noch nicht ganz
klar ist, tastet periodisch zur Pulsfrequenz ab. Aber da ich nicht weiß, wo
genau abgetastet wird, kann ich noch nicht erkennen, ob Dein Abtastzeitpunkt
hier auch vom Signal abhängt und mit welchen Auswirkungen. Meine Vermutung
war, daß nur der steigende Wert abgetastet wird, dieser wird am nächsten
Maximalwert des Dreieck ausgegeben und damit funktioniert auch diese
Variante jitterfrei und richtig. Es könnte also wirklich so sein, daß von
Anfang an alles richtig war und Deine Probleme woanders liegen, in der
Interpretation der Signalverarbeitung.
Aber um sicherzugehen, weil es unüberschaubar wird, würde ich das jetzt mit
'ner großen FFT testen. Bei der digitalen symmetrischen Variante halte ich
das Aufstellen einer Fourierreihe wie eingangs fast für unmöglich, weil das
abgetastete Signal selbst schon als Fourierreihe vorliegt. Hier wird der
Rechner IMHO also mal wirklich zum 1. Mal nötig, aber sicher kein
Taschenrechner, sondern schon gleich 'ne Power-Workstation :-)
> > Das ist wieder ein Abtastproblem, dafür hast Du ja den Tiefpaß
> > davorgeschaltet. Den Fall in Bild 8 habe ich jetzt nicht richtig
verstanden,
> > ist das sozusagen der analoge Komparator?
>
> Ja. Bild 6 (nicht 8) ist die Analoge Variante und Bild 7 zeigt
> den direkten Vergleich zwischen Analog und Digital.
>
Ok, scheint mit meinem Verständnis übereinzustimmen. Das mit dem
Abtasttheorem sollten wir noch getrennt klären.
>
> > Wenn Dein Fall mit dem uC Bild 5 entspricht, so müßte man es erstmal
> > mathematisch so erfassen, daß man eine Fourierreihe daraus entwickeln
kann,
> > da müßte dann die Abtastverzögerung mit eingehen. Falls das geht und die
> > Reihe auch richtig konvergiert, kannst Du ja die Signalkomponente in der
> > Reihe sehen. Wenn die richtig ist, müßte alles funktionieren.
>
> Genau. Bild 5 ist mit Digital. Aber mit verzögert geh ich nicht ganz
> mit weil das Modulationssignal/funktion ja diskret ist.
>
Du müßtest nochmal erklären, wie die abgetasteten Schwellwerte in Bild 9,
violette Kurve, entstehen. Daraus könnte man dann ein Modell der
Zeitfunktion bilden und mit 'ner FFT die Rekonstruierbarkeit des Signal
einfach ausrechnen, alles andere ist IMHO zu aufwendig.
>
> Ja, ich werde auch noch etwas grübeln und es nochmal mit der
> Sägezahnfunktion plotten. Ich muss mal sehen ob ich ein Programm finde
> mit dem ich eine FFT von einer Funktion machen kann.
>
In der NSWC-Fortran-Library sind etliche FFT-Routinen drin, habe sie aber
noch nicht eingesetzt. Aber falls Du Dich nicht in die GNU-Compiler
einarbeiten willst, wäre Matlab wohl die schnellste Lösung.
mfg. Winfried
ich habe die Sache mit dem Spektrum der PWM vorläufig zum Abschluß
gebracht, mich hat das einfach mal interessiert. Die Spektren der beiden
uC-Varianten habe ich mir auch angeschaut.
>Ich muss mal kurz rekapitulieren:
>Die 1. Fourierreihe war die symetrische, mit nur cos Termen, die
>2. Fourierreihe war wie die 1. nur um phi/2 in x-Richtung verschoben.
>
>
>
Die beiden "analogen" Fälle funktionieren sehr gut, das Signal (Sinus)
läßt sich ideal rekonstruiren laut Spektrum. Am besten insgesamt sieht
die "analoge" symmetrische Lösung aus.
Bei der Untersuchung der uC-Lösungen habe ich mal Realisierungen
angenommen, die ich aus Deiner Beschreibung geschlußfolgert habe aber
nicht weiß, ob sie wirklich stimmen. Der unsymmetrische Fall ist hier
wie erwartet jitterfrei identisch mit der "analogen" Lösung, bis auf
eine Verzögerung der Abtastung um 1 Pulsperiode.
Der symmetrische "digitale" Fall jedoch hat hier den befürchteten Jitter
in der Abtastung, sodaß das Signal grundsätzlich verbeult wird. Der
Klirrfaktor liegt bei 700 Hz Sinus ca. bei 1% und steigt mit der
Frequenz steil an. Die Modellierung war wirklich sehr schwierig, aber
ich wollte das mal wissen, kann aber einen Fehler nicht ausschließen.
Falls ich keinen Fehler gemacht haben sollte, ist diese Lösung wegen des
Jitters nicht zu empfehlen. Den Grund für den Jitter habe ich noch nicht
vollständig verstanden, aber die FFT zeigt mir das an.
>Ja, ich werde auch noch etwas grübeln und es nochmal mit der
>Sägezahnfunktion plotten. Ich muss mal sehen ob ich ein Programm finde
>mit dem ich eine FFT von einer Funktion machen kann.
>
>
>
>
Auf jeden Fall hat diese Untersuchung viel für das Verständnis der PWM
gebracht, es ist nicht so einfach wie man zuerst glaubt. Falls Du das
auch weiter untersuchen möchtest und kein Programm für die FFT findest,
dann sag mal Bescheid, da läßt sich bestimmt was machen.
mfg. Winfried
Das ist nett. Ich schreibe jetzt gleich eine Prüfung und konnte
deswegen das Problem nicht weiter untersuchen.
> Die beiden "analogen" Fälle funktionieren sehr gut, das Signal (Sinus)
> läßt sich ideal rekonstruiren laut Spektrum. Am besten insgesamt sieht
> die "analoge" symmetrische Lösung aus.
Warum ist sieht das Spektrum mit der symmetrischen Fourierreihe besser
(was ist besser?) aus als mit der unsymetrischen? Es müsste doch
das selbe raus kommen.
> Bei der Untersuchung der uC-Lösungen habe ich mal Realisierungen
> angenommen, die ich aus Deiner Beschreibung geschlußfolgert habe aber
> nicht weiß, ob sie wirklich stimmen. Der unsymmetrische Fall ist hier
> wie erwartet jitterfrei identisch mit der "analogen" Lösung, bis auf
> eine Verzögerung der Abtastung um 1 Pulsperiode.
Moment. Das verstehe ich noch nicht ganz. Welches Signal ist
jetzt bei dir das Original und welches die Kopie?
Also welches ist zu welchem mit Jitter behaftet?
> Der symmetrische "digitale" Fall jedoch hat hier den befürchteten Jitter
> in der Abtastung, sodaß das Signal grundsätzlich verbeult wird. Der
> Klirrfaktor liegt bei 700 Hz Sinus ca. bei 1% und steigt mit der
> Frequenz steil an. Die Modellierung war wirklich sehr schwierig, aber
> ich wollte das mal wissen, kann aber einen Fehler nicht ausschließen.
Was ist jetzt für dich der symmetrisch Fall? Den den ich in meinen
Plots benutzt habe?
D.h. auch wenn ich einen idealen Tiefpass hätte würde ich keinen
reinen Sinus heraus bekommen?
> Auf jeden Fall hat diese Untersuchung viel für das Verständnis der PWM
> gebracht, es ist nicht so einfach wie man zuerst glaubt. Falls Du das
> auch weiter untersuchen möchtest und kein Programm für die FFT findest,
> dann sag mal Bescheid, da läßt sich bestimmt was machen.
Wenn ich mal wieder etwas mehr Zeit habe würde ich das alles gerne mal
solide aufschreiben. Wir haben nämlich bei der digitalen Variante
noch nicht beachtet das sich der Zähler nicht kontinuierliche sonder
Diskret ändert, man also höchstwarscheinlich noch mehr Jitter in das
Signal bekommt.
Weiter wäre es auch sehr interessant wie die Funktion Klirrfaktor
in Abhängigkeit von Modulationsfrequenz/Trägerfrequenz lautet.
Ich habe noch nie mit Fortran gearbeitet. Aber wenn es für mathematische
Algorithmen besser als C geeignet ist wäre es auch eine Überlegung wert sich
das mal anzueignen. An dem FFT Programm wäre ich durchaus interessiert
so es auch für mich, der es ja nicht geschrieben hat, benutzbar ist.
Tschüss
Martin L.
> Das ist nett. Ich schreibe jetzt gleich eine Prüfung und konnte
> deswegen das Problem nicht weiter untersuchen.
>
viel Erfolg! Bei mir spielt die Zeit keine Rolle, es ist eine Untersuchung
so nebenbei.
> > Die beiden "analogen" Fälle funktionieren sehr gut, das Signal (Sinus)
> > läßt sich ideal rekonstruiren laut Spektrum. Am besten insgesamt sieht
> > die "analoge" symmetrische Lösung aus.
>
> Warum ist sieht das Spektrum mit der symmetrischen Fourierreihe besser
> (was ist besser?) aus als mit der unsymetrischen? Es müsste doch
> das selbe raus kommen.
>
Nein, die beiden eingangs aufgeführten Fourierreihen sind keineswegs gleich,
deren Spektren auch nicht. Die Zeitfunktionen sind doch anders definiert,
warum sollten die gleich sein? Das rekonstruierte Signal am Ausgang ist
wieder gleich, weil das das Ziel der PWM war. Die symmetrische Fourierreihe
hat ja nur cos-Koeffizienten und die Hälfte der Linien im Spektrum.
> > Bei der Untersuchung der uC-Lösungen habe ich mal Realisierungen
> > angenommen, die ich aus Deiner Beschreibung geschlußfolgert habe aber
> > nicht weiß, ob sie wirklich stimmen. Der unsymmetrische Fall ist hier
> > wie erwartet jitterfrei identisch mit der "analogen" Lösung, bis auf
> > eine Verzögerung der Abtastung um 1 Pulsperiode.
>
> Moment. Das verstehe ich noch nicht ganz. Welches Signal ist
> jetzt bei dir das Original und welches die Kopie?
> Also welches ist zu welchem mit Jitter behaftet?
>
Die analoge unsymmetrische Variante (2. Fourierreihe) ist identisch mit dem
Fall, daß bei Deiner uC-Lösung die fallende Flanke des Dreieck senkrecht
abfällt, also Sägezahn. In beiden Fällen tritt kein Jitter auf, das Signal
wird nicht verzerrt und läßt sich ideal rekonstruieren. Das mit dem Jitter
ist hier schwer zu erklären, weil es von der üblichen Definition bei einem
AD-Wandler abweicht. Die Abtastung ist hier weder periodisch noch
äquidistant, das macht es so schwierig. Deshalb benutze ich als Kriterium
das Spektrum der FFT, bei der der Sinus unverfälscht zu sehen sein muß. Das
ist in 3 Fällen auch so, also fehlerfreie Funktion.
>
> > Der symmetrische "digitale" Fall jedoch hat hier den befürchteten Jitter
> > in der Abtastung, sodaß das Signal grundsätzlich verbeult wird. Der
> > Klirrfaktor liegt bei 700 Hz Sinus ca. bei 1% und steigt mit der
> > Frequenz steil an. Die Modellierung war wirklich sehr schwierig, aber
> > ich wollte das mal wissen, kann aber einen Fehler nicht ausschließen.
>
> Was ist jetzt für dich der symmetrisch Fall? Den den ich in meinen
> Plots benutzt habe?
> D.h. auch wenn ich einen idealen Tiefpass hätte würde ich keinen
> reinen Sinus heraus bekommen?
>
Ja genau, das was in Bild 9 zu sehen ist. In Bild 7 ist das die grüne
Funktion, die verzerrt das Signal, die rote nicht.
> > Auf jeden Fall hat diese Untersuchung viel für das Verständnis der PWM
> > gebracht, es ist nicht so einfach wie man zuerst glaubt. Falls Du das
> > auch weiter untersuchen möchtest und kein Programm für die FFT findest,
> > dann sag mal Bescheid, da läßt sich bestimmt was machen.
>
> Wenn ich mal wieder etwas mehr Zeit habe würde ich das alles gerne mal
> solide aufschreiben. Wir haben nämlich bei der digitalen Variante
> noch nicht beachtet das sich der Zähler nicht kontinuierliche sonder
> Diskret ändert, man also höchstwarscheinlich noch mehr Jitter in das
> Signal bekommt.
> Weiter wäre es auch sehr interessant wie die Funktion Klirrfaktor
> in Abhängigkeit von Modulationsfrequenz/Trägerfrequenz lautet.
>
Das kommt wie bei allen digitalen Systemen hinzu, das
Quantisierungsrauschen, eine quasi zufällige Funktion, pro Bit Auflösung 6
dB S/N. Wenn Du einen 8-Bit AD-Wandler hast, kommst Du dann schon in den
Bereich der Jitter-Störungen. Dieses Rauschen wird bei der PWM IMHO auch so
zu betrachten sein, das Sinus-Signal muß ja auch von einem AD-Wandler
kommen. Auch das Abtasttheorem gilt hier in verschärfter Form.
Das mit dem Klirrfaktor in Abhängigkeit der Frequenz muß ich mal simulieren.
> Ich habe noch nie mit Fortran gearbeitet. Aber wenn es für mathematische
> Algorithmen besser als C geeignet ist wäre es auch eine Überlegung wert
sich
> das mal anzueignen. An dem FFT Programm wäre ich durchaus interessiert
> so es auch für mich, der es ja nicht geschrieben hat, benutzbar ist.
>
Das geht auch in C, es wird aber z.B. komplex gerechnet, kann man natürlich
ersetzen. Von Fortan nach C umsetzen ist auch nicht so schwer, in der FFT
werden nur komplexe Additionen und Multiplikationen gemacht. Die Frage ist,
ob Du das selbst programmieren willst. Oder ich könnte auch ein kleines
FFT-Programm schreiben, das nur Listen einliest und ausgibt, die Grafik
würde dann in GNU-Plot darstellbar sein.
Ich muß unterbrechen, am Montag erst kann ich das weiter fortsetzen.
mfg. Winfried
Martin Laabs wrote:
>
>Weiter wäre es auch sehr interessant wie die Funktion Klirrfaktor
>in Abhängigkeit von Modulationsfrequenz/Trägerfrequenz lautet.
>
>
>
ich habe mir den Klirrfaktor in Abhängigkeit der Signalfrequenz nochmal
angesehen. Der Zusammenhang scheint leider quadratisch zu sein, d.h. bei
doppelter Signalfrquenz oder halber Pulsfrequenz ist die von mir
betrachtete 1. Oberwelle des Signals 4mal so groß. Das tritt nur bei der
uC-Variante mit symmetrischem Dreieck auf, bei den 3 anderen Varianten
ist keine Verzerrung zu sehen.
Aber wie gesagt, ich bin nicht sicher, ob mein Modell stimmt, muß
sowieso noch einige kleine Bugs beseitigen, da das Programm sozusagen
ein schneller Hack ist. Ich hab einfach ein anderes Programm zur
Untersuchung von Quantisierungs- und Bitfehlern von AD-Wandlern
umgebogen. Natürlich weiß ich nicht mehr genau, was ich damals
eigentlich genau gemacht habe, deshalb ist es auch nicht so ganz leicht ;-).
>Ich habe noch nie mit Fortran gearbeitet. Aber wenn es für mathematische
>Algorithmen besser als C geeignet ist wäre es auch eine Überlegung wert sich
>das mal anzueignen. An dem FFT Programm wäre ich durchaus interessiert
>so es auch für mich, der es ja nicht geschrieben hat, benutzbar ist.
>
>
>
Ich überlege grade,ob ich ein kleines FFT-Programm schreibe, das in der
DOS-Konsole aufgerufen wird und ASCII-Tabellen für die FFT aufruft und
das Spektrum wieder als Tabelle abspeichert. Das wäre eine einfache,
aber effektive Methode, die Länge der FFT hinge nur von Speicher ab. Die
Felder könnte man dynamisch allozieren mit Hilfe von C, da Fortran 77
IMHO nur statischen Speicher verwaltet, das sollte kein Problem sein.
Bei mir war eine 2**22 FFT möglich und die Grenze war noch nicht
erreicht, das ist schon 'ne sehr hohe Auflösung. Kann aber etwas dauern,
da ich auch nicht so viel Zeit habe, vielleicht 'ne Woche oder so.
mfg. Winfried