Hallo,
ich möchte einen Funktionsgenerator mit einem Mega88 via PWM als DAC und
DDS realisieren.
Um nun das Ausgangssignal von der PWM zu entkoppeln bedarf es ja eines
Tiefpassfilters.
Was ist nun korrekt:
DDS---[Tiefpass]-----[Verstärker]-----o Ausgangssignal
DDS---[Verstärker]-----[Tiefpass]-----o Ausgangssignal
Und warum ?
Danke !
Ich würde auch sagen vorher. Mit dem Verstärker verstärkst du erstmal
alles. Der Aufwand nach dem Verstärker wieder alles zu glätten dürfte
damit höher ausfallen.
Ich versuche mal eine Begründung: Es ist auf jeden Fall vor dem
Verstärker besser, denn der Verstärker könnte eine gezielte
Höhenanhebung haben, wenn er nur endlich schnell ist relativ zum Signal.
Außerdem wird natürlich der unerwünschte Anteil der Schaltfrequenz
stärker auch auf die Versorgungen übertragen. Zusätzlich könnte man auch
am Ausgang noch einmal filtern, aber unerwünschte Signalanteile sollte
man so nah an der Quelle wie möglich dämpfen oder unterdrücken, das
macht die ganze Schaltung "ruhiger", auch was EMV angeht.
zu den obigen begründungen kommt noch hinzu, dass man durch den
verstärker energie hineinpumpt, die dann später durch den filter auf den
müll geworfen wird
ahnungsloser schrieb:> Hallo,> ich möchte einen Funktionsgenerator mit einem Mega88 via PWM als DAC und> DDS realisieren.
Das geht nicht!!! Entweder Du machst eine Signalerzeugung nach dem
DDS-Verfahren oder per PWM - beides geht nicht. Falls Du trotzdem
meinst es so realisieren zu können, dann poste mal ein
Prinzip-/Blockschaltbild, damit man sehen kann, wie Du Dir das gedacht
hattest (als Beispiel - bei DDS brauchst Du zumindest einen Offset-Wert
(bestimmt u.a. die Ausgangsfrequenz), einen 'breiten' Addierer, ein
Signal-Speicher (RAM/ROM), usw. - das ganze dann natürlich graphisch
dargestellt).
> Um nun das Ausgangssignal von der PWM zu entkoppeln bedarf es ja eines> Tiefpassfilters.> Was ist nun korrekt:>> DDS---[Tiefpass]-----[Verstärker]-----o Ausgangssignal>> DDS---[Verstärker]-----[Tiefpass]-----o Ausgangssignal
Was nun die weitere 'Behandlung' eines noch digitalen DDS-Signals
anbelangt, so hängt es davon ab, wo das Signal herkommt.
In Deinem Fall soll es ja wohl ein ATmega88 sein. Wenn man keine Sorge
tragen muss/kann, das dass digitale Ausgangssignal in der (High- und
Low-)Amplitude variiert, dann kann man direkt ein entsprechendes
Tiefpass-Filter nachschalten. Anschließend erfolgt die evtl. nötige
Impedanzwandlung via Verstärker/OpAmp.
Wer lediglich Sinussignale ausgeben möchte, der sollte es evtl. (und
idealerweise) in Betracht ziehen bei Anlog Devices (www.analog.com) nach
fix und fertigen DDS-Chips zu suchen (AD98xx-Serie), die man dann via µC
steuern kann.
Hör mal auf zu schreien! Natürlich geht das. Dem PWM-DAC ist es
schnurzegal woher die Werte stammen.
BTT: Ein klassisches kommt drauf an ist die richtige Antwort.
Brauchst Du eine belastbare Ausgangsspannung? -> Verstärker (z.B. OP)
hinten dran. Damit kannst Du evtl. auch gleich das Filter realisieren.
Wenn das egal ist, kannst den Verstärker auch vorne dran machen, dann
muss er nicht so viel können und ist u.U. einfacher aufzubauen.
Wie so oft fehlen genaue Anforderungen!
Karl schrieb:> Hör mal auf zu schreien! Natürlich geht das. Dem PWM-DAC ist es> schnurzegal woher die Werte stammen.
Ich schreie nicht. Ich stelle lediglich fest, bzw. korrigiere wo nötig.
Beim DDS-Verfahren gibt's keine PWM und schon gar nicht einen ominösen
PWM-DAC! Und wer im Zusammenhang mit DDS auf einmal von einem PWM-DAC
redet scheint möglicherweise (bzw. sogar höchstwahrscheinlich) nicht
genau zu wissen, wie die DDS funzt.
Natürlich ist es auch möglich, dass wir evtl. alle das selbe meinen,
aber einige einfach nicht den richtigen Terminus benutzten.
Eine (beliebige) Signalform via PWM-Signal zu erzeugen ist eine völlig
andere Vorgehensweise als es ein DDS-Generator macht! Wer's nicht
glaubt, sollte sich die Grundlagen/Prinzipien einfach noch mal
anschauen.
Raimund Rabe schrieb:> Karl schrieb:>> Hör mal auf zu schreien! Natürlich geht das. Dem PWM-DAC ist es>> schnurzegal woher die Werte stammen.>> Ich schreie nicht. Ich stelle lediglich fest, bzw. korrigiere wo nötig.>> Beim DDS-Verfahren gibt's keine PWM und schon gar nicht einen ominösen> PWM-DAC! Und wer im Zusammenhang mit DDS auf einmal von einem PWM-DAC> redet scheint möglicherweise (bzw. sogar höchstwahrscheinlich) nicht> genau zu wissen, wie die DDS funzt.
Was geht denn mit dir ab?
Das Verfahren um Wellenformen zu erzeugen(DDS) hat doch nichts mit der
Wandlung nach Analog zu tun. Man kann sogar eine DDS haben und gar
keinen DAC (wenn man die Kurvenform dann in einen Speicher schreibt).
Und "omönis" ist ein PWM-DAC wohl auch kaum!
Hauptsache du weißt, wie die DDS "funzt".
> Eine (beliebige) Signalform via PWM-Signal zu erzeugen ist eine völlig> andere Vorgehensweise als es ein DDS-Generator macht!
Nicht zwangsläufig. Wenn man die PWM Frequenz als Träger benutzt, der
anschließend rausgefiltert wird (Tiefpass), geht das durchaus.
> Wer's nicht> glaubt, sollte sich die Grundlagen/Prinzipien einfach noch mal> anschauen.
Ja, gleichfalls!
Raimund, das geht wirklich. Habe ich selbst schon öfters gemacht.
Ist halt eine billig-Lösung, aber wenn die PWM-Frequenz hoch genug ist,
klappt es ganz gut.
Atmel AVR314 und andere:
Beitrag "Re: Sinus generieren - welcher AVR am besten?"
erst suchen, dann schreiben.
Der Vorteil beim erst-verstärken-dann-filtern ist, dass die Endstufe
digital (Class-D) sein kann und deshalb einen hohen Wirkungsgrad hat.
Thomas B. schrieb:> Erst verstärken, dann filtern.> http://de.wikipedia.org/wiki/Friis-Formel
Ja mei, wer sagt denn, dass Rauschen überhaupt relevant ist. Für mich
sagt die Formel nicht mehr als "nicht unnötig früh abschwächen/filtern".
In der Praxis gibts den Verstärker für den 10-fachen Pegel halt nicht,
oder nicht mit der erforderlichen Anstiegszeit. Der Filter am Ausgang
müsste mit Bauteilen mit deutlich schlechteren Paremetern aufgebaut
werden (und damit lassen sich die Baugruppen nicht mehr verschieben).
Das Ding wird 10x so groß. ...
Für das Anforderungsprofil: frühzeitig filtern, auf jeden Fall vor der
"Endstufe".
Auch noch ein Aspekt: Die Endstufe mit Filter ganz am Ende verteilt jede
Menge HF und versaut dir - in der Praxis - so ziemlich alle Spannungen.
Damit erzeugst du vermutlich mehr Fehler als wenn du die Sache
frühzeitig "langsamm" machst.
Simon K. schrieb:> Raimund Rabe schrieb:>> Karl schrieb:>>> Hör mal auf zu schreien! Natürlich geht das. Dem PWM-DAC ist es>>> schnurzegal woher die Werte stammen.>>>> Ich schreie nicht. Ich stelle lediglich fest, bzw. korrigiere wo nötig.>>>> Beim DDS-Verfahren gibt's keine PWM und schon gar nicht einen ominösen>> PWM-DAC! Und wer im Zusammenhang mit DDS auf einmal von einem PWM-DAC>> redet scheint möglicherweise (bzw. sogar höchstwahrscheinlich) nicht>> genau zu wissen, wie die DDS funzt.> Was geht denn mit dir ab?
Warum sollte mit mir etwas 'abgehen'?!? Ich bin die Ruhe selbst.
Scheinbar im krassen Gegensatz zu anderen. ;-)
> Das Verfahren um Wellenformen zu erzeugen(DDS) hat doch nichts mit der> Wandlung nach Analog zu tun.
Das ist soweit noch korrekt.
> Man kann sogar eine DDS haben und gar> keinen DAC
Auch bis hier habe ich noch kein Problem damit.
> (wenn man die Kurvenform dann in einen Speicher schreibt).
Ab hier gehe ich nicht mehr konform, oder Du hast es anders gemeint?!
Beim DDS liegt die Kurvenform bereits im Speicher (ROM oder meinetwegen
auch RAM) vor. Es wird nicht erst dann in den Speicher geschrieben.
> Und "omönis" ist ein PWM-DAC wohl auch kaum!
Ich weiss schon was du/ihr unter PWM-DAC versteht.
> Hauptsache du weißt, wie die DDS "funzt".
Yip, weis ich! Habe einen mal 'zu Fuss' aufgebaut - noch mit TTL-ALUs
usw.
>> Eine (beliebige) Signalform via PWM-Signal zu erzeugen ist eine völlig>> andere Vorgehensweise als es ein DDS-Generator macht!>> Nicht zwangsläufig. Wenn man die PWM Frequenz als Träger benutzt, der> anschließend rausgefiltert wird (Tiefpass), geht das durchaus.
Nein!
Beim DDS wird fortlaufend ein Phasen-Offset addiert, mit dem man die
spätere Ausgangsfrequenz bestimmt. Die höherwertigen Bits des Addierers
bilden die Adresse für den Kurvenformspeicher, dessen Datenbits auf
einen 'normalen' DAC gehen.
Die Daten im Kurvenformspeicher sind im Allgemeinen keine Signale für
einen PWM-DAC.
Natürlich könnte man jetzt auf die Idee kommen die absoluten
Spannungswerte mit denen der 'normale' DAC gefüttert worden wäre in ein
Puls/Pausen-Verhältnis einer PWM umzuwandeln. Letzteres scheint wohl das
zu sein, was ihr als "PWM-DAC" in Verbindung mit einer DDS benutzt,
vermute ich jetzt mal!?!
Diese Methode würde aber die Kurvenform weiter verschlechtern, bzw. die
obere Grenzfrequenz geht weiter in den 'Keller' oder es ist ein größerer
Filteraufwand nötig.
Also, don't worry, be happy now, eine traditionelle DDS benutzt in
keinem Fall einen PWM-DAC. Bei der Benutzung von µCs und wenn man
externe Hardware vermeiden will/muss, so kann es durchaus sein die
'Krücke' von PWM-DAC zu benutzen.
Mich würde mal die Qualtität (nachweislich) eines so von Euch erzeugten
Signals interessieren. Berauschend dürfte es wohl nicht sein.
>> Wer's nicht>> glaubt, sollte sich die Grundlagen/Prinzipien einfach noch mal>> anschauen.>> Ja, gleichfalls!
q.e.d.???
Das geht schon. In deinem parallel gefütterten DAC arbeitet dieser mit
dem Takt mit der auch der DDS arbeitet synchron. Dein DAC ist zb. 8 Bit
breit = 256 Schritte. Du musst nun um den Vergleich zum "PWM-DAC" fair
zu gestalten diesen "PWM-DAC" natürlich mit weit höherem PWM Takt
betreiben als die DDS benutzt. Dann wird auch ein Schuh draus wenn man
einen Class-D Verstärker damit ansteuert und auf Grund der wesentlich
höheren PWM Frequenz so viel einfacher am Ausgang des
Class-D-Verstärkers wieder filtern kann.
Und ja, den Datenwert den die DDS per Lookuptable ermittelt wird direkt
als Dutycycle der PWM benutzt. Denn dieser Datenwert ist ja in deinem
DAC auch nichts anders als proportional zur Ausgangsspannung nach deinem
DAC. Gleiches gilt für die PWM.
Gruß Hagen
Übrigens hier http://elm-chan.org/works/mxb/report.html wird das
praktisch umgesetzt. Die Ausgänge des AVRs arbeiten defakto als
Class-D-Verstärker und treiben direkt den Lautsprecher. Die Wavetables
sind nur ein andere Name für die DDS. Benutzt wird PWM für den "DAC".
Gruß Hagen
nochwas: höhere dir den Sound dazu an
http://members.jcom.home.ne.jp/felm/mg.mpg Für diesen geringen Aufwand
ist das super und beweist das es so ebenfalls geht.
Gruß Hagen
Hagen schrieb:> Die Ausgänge des AVRs arbeiten defakto als> Class-D-Verstärker und treiben direkt den Lautsprecher.
Ich glaube nicht, dass der TE an einen Class-D-Verstärker gedacht hat.
Die Frage wo gefiltert wird gäbs dann nicht.
Ich möchte mal 5 Anmerkungen hier loswerden:
1. Ich würde das Tiefpassfilter gleich am Ausgang des DAC verbauen.
Dann kommt der Verstärker, davor eventuel noch eine Stufe zur
Amplituden-einstellung und Offset-addition. Am Ausgang des Verstärkers
würde ich vieleicht doch noch so ein ganz kleines Filterchen 1. bis 2.
Ordnung vorsehen, so z.B. aus dem Bauch 10µH & 1nF um
Hochfrequenzrauschen noch ein bischen rauszufiltern.
2. Einige AVR haben doch so eine PLL an Bord um einen 64MHz für den PWM
zu erzeugen. Oder ist das nur den ATtiny25 alleine?
Mit 64MHz für den Timer der die 8-Bit PWM erzeugt müsste sich da doch
eine PWM-Frequenz von 64MHz/256 = 250kHz ergeben.
Mit diesen 250kHz als Taktfrequenz für die DDS sollte die nach Nyquist
höchste darstellbare Frequenz <= 125kHz sein. Das gilt natürlich nur
wenn in der DDS-Look-up-tabelle eine Sinuskurve gespeichert ist.
3. Wenn man die Qualität bei der DDS maximal ausnutzen will, sollte bei
einer angestrebten Grenzfrequenz von 1/3 f_Takt das Tiefpassfilter am
Ausgang des DAC mindestens die selbe Ordnung wie die Bitzahl des DAC
haben.
Also am Ausgang eines 14-Bit DAC's würde ich einen Tiefpass 14.er
Ordnung bauen. Da wird, wenn es ein kommerziell herzustellendes Produckt
ist, die Buchhaltungsabteilung natürlich dazwischen hauen.
4. Wenn man eine DDS hat die mit einer einer bestimmten Taktfrequenz
läuft und ich stelle eine Ausgangsfrequenz von 1/3 f_Takt +0.1Hz ein,
macht das Signal am Ausgang des DAC einen schönen Zappeltanz auf dem
Oszilloskop.
Der Sinus besteht nur noch aus 3 Treppenstufen. Da ich gerade keinen
Versuchsaufbau zur Hand habe, um es zu fotografieren, habe ich es
einfach mal eben aus dem Gedächnis gezeichnet. Die +0.1Hz dienen dazu,
das es auf dem Oszilloskop zappelt.
Man glaubt es kaum, aber es ist tatsächlich möglich diesen Schrott mit
einem Tiefpass höherer Ordnung zu einem Sauberen Sinus zu filtern!
Habe ich schon gemacht, weiss also wovon ich spreche :-)
5. Finde diesen Thread ganz interessant. @ Threadstarter ahnungsloser
(Gast): informiere uns ruhig mal über Projektfortschritte. Auch das eine
oder andere Programmfragment wird hier gerne mal gesehen.:-)
Ich habe mir jetzt gerade die Mühe gemacht, das hier alles zu schreiben,
hat so mindestens eine halbe Stunde gekostet. Aber davon lebt dieses
Forum :-)
@Hagen:
Ja, ist sicher nicht ganz das Schlechteste was man mit dem PWM-DAC
erreichen kann. Für Low- bis Medium Quality sicher brauchbar, für
High-Quality oder als klirrarmen Generator würde ich es mir jedoch
verkneifen diese Methode der Analogspannungsgenerierung (mittels
PWM-DAC) zu benutzen. Bei meinem damals entwickelten Generator gab's
halt höhere Anforderungen. ;-)
Ach ja, und einen Class-D-Verstärker nachzuschalten ist soweit okay.
Probleme (bezüglich Amplitudenstabilität) gibt's nur, wenn die
Betriebsspannung der 'Endstufe' bei unterscheidlichen Lasten mehr oder
weniger zusammenbricht. Natürlich nur, wenn die Class-D-Endstufe keine
Rückkopplung haben sollte und lediglich aus einem reinen
Schaltverstärker (z.B. simple Push-Pull-Anordnung mit zwei Transitoren)
besteht.
Darum ein "JA, kann man machen, aber ..." als (Teil-)Antwort darauf, was
man in welcher Reihenfolge anordnet.
Man muss sich halt immer fragen, was will man erreichen - und manchmal
noch viel wichtiger, mit welchem Aufwand?!?
Raimund Rabe schrieb:> @Hagen:>> Ja, ist sicher nicht ganz das Schlechteste was man mit dem PWM-DAC> erreichen kann. Für Low- bis Medium Quality sicher brauchbar,
Na das hört sich dann schon ganz anders an, als das ursprüngliche 'geht
nicht'
Raimund Rabe schrieb:>> (wenn man die Kurvenform dann in einen Speicher schreibt).>> Ab hier gehe ich nicht mehr konform, oder Du hast es anders gemeint?!> Beim DDS liegt die Kurvenform bereits im Speicher (ROM oder meinetwegen> auch RAM) vor. Es wird nicht erst dann in den Speicher geschrieben.>>> Und "omönis" ist ein PWM-DAC wohl auch kaum!>> Ich weiss schon was du/ihr unter PWM-DAC versteht.
Hehe, was habe ich da geschrieben? "omönis"? :-)
Die Kurvenform muss ja nicht unbedingt aus einem Speicher kommen. Ein
Rechteck oder Dreieck kann ja durchaus auch direkt aus dem
Phasen-Akkumulator gebaut werden.
Was ich meine ist, das Ergebnis der DDS sukzessive in einen Speicher
(zum Beispiel WAVE File) zu schreiben, statt die Daten Real-Time
auszugeben.
DDS selber bezeichnet ja nur das Verfahren mit dem Phasenakkumulator.
Nicht jedoch die Verwendung eines speziellen DACs oder dass die
Wellenform Real-Time ausgegeben werden muss.
>>> Eine (beliebige) Signalform via PWM-Signal zu erzeugen ist eine völlig>>> andere Vorgehensweise als es ein DDS-Generator macht!>>>> Nicht zwangsläufig. Wenn man die PWM Frequenz als Träger benutzt, der>> anschließend rausgefiltert wird (Tiefpass), geht das durchaus.>> Nein!
Doch doch, ich weiß ja auch wie eine DDS (so grob!) funktioniert und du
weißt es auch ;-)
Die DDS selber erzeugt diesen Träger natürlich nicht, das macht dann der
PWM DAC. Zum Beispiel: Man erzeugt mittels DDS einen 1kHz Sinus und gibt
den auf einen PWM DAC mit einer Trägerfrequenz von 100kHz (Das ganze
natürlich eben pulsweitenmoduliert). Wenn man die Trägerfrequenz jetzt
wieder rausfiltert, hat man das 1kHz Sinus Signal (idealerweise
natürlich) wieder zurück.
> Natürlich könnte man jetzt auf die Idee kommen die absoluten> Spannungswerte mit denen der 'normale' DAC gefüttert worden wäre in ein> Puls/Pausen-Verhältnis einer PWM umzuwandeln. Letzteres scheint wohl das> zu sein, was ihr als "PWM-DAC" in Verbindung mit einer DDS benutzt,> vermute ich jetzt mal!?!
Genau darum gehts. Sollte ja auch erlaubt sein, dieses nach wie vor DDS
zu nennen, da das Verfahren "DDS" ja nicht vorschreibt, wie die
Ausgabewerte verwendet werden müssen.
> Diese Methode würde aber die Kurvenform weiter verschlechtern, bzw. die> obere Grenzfrequenz geht weiter in den 'Keller' oder es ist ein größerer> Filteraufwand nötig.
Klar, wie bei einem PWM DAC ist (idR) immer ein Filter zur Unterdrückung
der Trägerfrequenz notwendig (zum Beispiel auch beim Class-D Verstärker.
Zumindest bei langen Lautsprecherstrippen).
> Also, don't worry, be happy now, eine traditionelle DDS benutzt in> keinem Fall einen PWM-DAC.
Muss ja nicht alles traditionell sein :-D
> Bei der Benutzung von µCs und wenn man> externe Hardware vermeiden will/muss, so kann es durchaus sein die> 'Krücke' von PWM-DAC zu benutzen.> Mich würde mal die Qualtität (nachweislich) eines so von Euch erzeugten> Signals interessieren. Berauschend dürfte es wohl nicht sein.
Nanana! Du bist voreingenommen. mit PWM-DACs kann man durchaus hohe
Signalqualitäten erreichen. Wie gesagt, schau dir einen Class-D
Audioverstärker an. Die Teile sind in der letzten Zeit extrem populär
geworden. Teilweise extrem geringe Klirrfaktoren und das bei extrem viel
besserem Wirkungsgrad(!).
Wichtig dabei ist, dass die Trägerfrequenz möglichst weit über der
maximalen Signalfrequenz liegt. Dann kann der Filter sehr gut realisiert
werden.
@Simon K.:
Na dann sind wir ja doch langsam 'alle' auf dem selben 'Nenner' - hehe.
Bzgl. Class-D kann ich nur sagen: Habe ich ebenfalls schon gemacht, d.h.
zwar nicht bei "A" angefangen, sondern bei "T" wie "Tripath", aber auch
ich bin von der Effizienz überzeugt. Der Klirrfaktor ist ausgesprochen
gut, was bei dieser Art der PWM auch nicht verwundert - d.h. ohne feste
Frequenz, sondern Spread-Spectrum, weil, abhängig vom Tripath-Chip, es
sich dynamisch zw. 600kHz und bis zu 1,2MHz bewegt, abhängig vom
eingespeisten Musiksignal.
Aber bedenkt man, dass man für eine Audiobandbreite von 20kHz einen Takt
von bis zu 1,2MHz hat, so ergibt sich daraus ein Faktor von immerhin 60.
Für "Shannon" reicht ja schon der Faktor von >=2. Und die meisten
Class-D-Endstufen kommen auch nur in seltenen Fällen in die Region der
600kHz - viele 'krebsen' bei nur 200...300kHz rum, um die Schaltverluste
klein zu halten. Entsprechend fallen (leider) auch die Klirrfaktoren
aus.
Nun, bei meinem DDS-Generator von damals, waren 100kHz obere
Grenzfrequenz gefordert und der Ref.-Takt lag bei genau 2^24
(=16.777.216Hz). Dadurch hätte man dann kein extrem Steilflankiges
Filter benötigt, um die Grundfrequenz aus dem Nutzsignal zu entfernen.
Für einen 'sauberen' Sinus habe ich dann aber besser gefiltert als
eigentlich notwendig gewesen wäre. Wer weiss wozu man es eines Tages
gebrauchen kann. ;-)
Wei auch immer - jeder verfolgt halt gern seine eigene Philosophie und
beim DDS-Generator verkneife ich mir aus Performance-Gründen den
PWM-DAC. Für einen 'Poor-Man'-Generator der möglichst wenig externe
Peripherie benötigt ist der PWM-DAC sicherlich eine sehr gute
Alternative. ;-)
Ich bin also nicht wirklich voreingenommen, sondern vielleicht ein wenig
'festgefahren'. :-))