Forum: Mikrocontroller und Digitale Elektronik DDS Dimensionierung des RC-Glieds?


von Paul H. (powl)


Lesenswert?

Hi!

Ich würde mir zu Versuchszwecken gerne einen Funktionsgenerator basteln 
der mir Sinusfrequenzen von ka.. 0.1Hz bis ~25khz zur Verfügung stellt.

Nun hab ich aber mal eine Frage an da nachgeschaltete RC-Glied. Muss das 
bei 25khz nicht völlig anders Dimensioniert werden als bei 1Hz? Da 
vergeht ja eine viel längere Zeit zwischen einem Sample als bei 25khz.

Ist es empfehlenswerter für Recheck, Dreieck, Sägezahn und Sinus eher 
ein analoges Funktionsgenerator-IC zu verwenden und einfach einen 
Frequenzzähler als Anzeige zu nehmen?

mfg PoWl

von Tim (Gast)


Lesenswert?

Also die taktrate mit der du von deinem DAC  neue Analogwerte auf den 
Ausgang gibts bleibt ja gleich. Es vergeht also nicht mehr Zeit zwischen 
den Samples. (es sei denn du macht das mit einstellbarer Frequenz). Was 
sich aber aendert, ist der "Sprung" in der Ausgangsspannung. Bei einem 
1Hz Sinus hat sich die Sollausgangsspannung nur wenig zwischen zwei 
Samples geaendet, bei einem 24kHz Sinus schon mehr. D.H. bei hoher 
Frequenz sind die Stufen zwischen den einzelnen Samples deutlicher 
Ausgepraegt. Das wiederum heisst, dass du mehr Oberwellen hast, also 
nicht nur den gewnuenschten Sinus. Bei langsamer Frequenz hast du 
weniger Oberwellen. Das haengt aber auch von der Auflaesung deines DACs 
und der taktfrequenz ab. Bei langsamem Takt kann es sein, dass du 
direkt mehrer bits aendern musst.

Auf diese Fragen mit "empfiehlt sich" kann man immernur sagen: kommt 
drauf an. Willst du nur schnell was machen? Dann ja. Willst du dir nen 
Frequenzgenerator bauen, der Auch komische Signalformen kann, dann bleib 
bei DDS. Bei hohen Frequenzen sind analoge ICs natuerlich besser. Wer 
will schon 30Mhz mit nem DAC machen..

von Paul H. (powl)


Lesenswert?

Wie hast du dein Schema denn gemeint?

> Was sich aber aendert, ist der "Sprung" in der Ausgangsspannung. Bei einem
> 1Hz Sinus hat sich die Sollausgangsspannung nur wenig zwischen zwei
> Samples geaendet, bei einem 24kHz Sinus schon mehr.

Was du meinst, ist also, dass ich eine konstante Samplerate und eine 
hohe Auflösung habe und bei 1Hz diese volle Auflösung ausnutze, was dann 
entsprechend lange dauert, wobei ich bei 24kHz etliche Zwischenschritte 
weglasse und somit eine höhe Frequenz erhalte.

Hm naja wie gesagt, die Frequenz soll variablen einstellbar sein. Also 
die Zeit für ein Sample (bzw. "DDS-Takt") ändert sich. Die Samplerate 
bestimmt die Frequenz und die Stufen sind immer gleich groß (bedingt 
durch die konstante Auflösung des DAC von 8 Bit).

Beim Sinus ist es ja noch so dass es in der Nähe des Scheitelpunkts 
häufiger vorkommt dass sich erst nach mehreren Samples ein Bit ändert.

Im Nulldurchgang beträgt die Steigung des Sinus 1, was bedeutet, dass 
sich bei 8 Bit Auflösung alle 1/256 Perioden die Spannung um eine Stufe 
ändert. Bei 1Hz dauert so eine Periode 1 Sekunde. D.h. ich habe für 
knapp 4ms die gleiche Spannung und bräuchte ein entsprechend langsames 
RC-glied. Bei höheren Frequenzen ist die Zeit zwischen dem Wechsel einer 
Stufe also entsprechend kürzer. Das gleiche RC-Glied wie bei 1Hz würde 
hier meine schöne Wechselspannung bis zur Gleichspannung glattglätten..

Zu Signalformen: Pulse wäre auch interessant um die Impulsantwort von 
Audioanwendungen auszutesten. Oder am PC generierte Signalformen. Ist 
aber eignetlich nur Spielerei und nicht wirklich dringend Notwendig. 
Sägezahl möchte ich aber gerne.

von Tim (Gast)


Lesenswert?

ach so, ich hatte das so verstanden, dass dein Takt konstant ist, und 
die Frequenz des generierten Sinus sich nur aendern soll. Ich 
persoenlich finde es praktischer immer eine hohe Samplerate zu nehmen. 
Das baut sich leicht, musst in deinem uC keine Timerintervalle aendern. 
Was du sagst ist richtig. Bei varialem Takt filter ter Tiefpass mal 
besser, mal schlechter. Da hilft auch ein fester, hoher Takt. Denn die 
Taktfrequenz wird, in welchem Masse auch immer, in deinem Ausgangssignal 
vorkommen. Wenn der Takt hoch ist laesst sich das einfacher filtern.

Signalformen: bedenke, dass du keinen Puls bekommen wirst, wenn du einen 
Filter am Ausgangs hast! Je niedriger die Frequenz des Filters, desto 
weniger bleibt vom Puls uebrig. Du musst immer bedenken, dass alle 
nicht-sinusfoermigen Funktionen Oberwellen jenseits der Grundfrequenz 
haben. Wenn du nur einen Sinus machen willst kannst du den Filter kurz 
oberhalb der Sinusfrequenz ansetzen. Alle anderen Funktionen brauchen da 
mehr Luft nach oben. Sonst sieht so ein Dreieicksignal auch nur noch aus 
wie ein Sinus mit Dellen. Auch von den steilen Flanken eines Saegezahns 
bleibt nach einem Filter nicht mehr viel uebrig. Man kann sich dann 
ueberleben, ob man den Filter nicht weglaesst, um auch schnelle Spruenge 
moeglich zu machen, un dafuer die Aufloesung des DAC erhoeht. So kann 
man dann den Ausgang dem Wunschsignal besser angleichen.

von Paul H. (powl)


Lesenswert?

ok, bei maximaler frequenz von 24kHz kann man eh nicht mehr jeden Punkt 
samplen.. bei 16Mhz Takt hätte ich da nur noch 2,4Takte je Sample

von Paul H. (powl)


Lesenswert?

Das Thema wird doch komplizierter als ich dachte, da hast du Recht das 
gibt Probleme mit dem Timing.

Wenn ich allerdings eine hohe Auflösung verwende, kriege ich Probleme 
mit meinem µC. Der hat nicht soviel Speicher als dass ich da ellenlange 
Sinustabellen einspeichern könnte. Mehr als 10 Bit werden da nicht drin 
sein. Noch dazu soll die Frequenz möglichst fein einstellbar sein. Für < 
100 Hz ist es z.B. Sinnvoll dass die Genaugkeit bis auf 0.5Hz, für <10Hz 
bis auf 0.1Hz runtergeht. Ich bräuchte demnach noch eine Methode um für 
jede beliebige Frequenz zu berechnen, wie viele "Samples" ich ausblende 
um die Periodenlänge zu verkürzen. Zwischen vielen Frequenzen wird es 
dann auch gar keinen Unterschied geben da die Anzahl an ausblendbaren 
Samples durch die Auflösung begrenzt ist.

Wie wäre es, wenn ich einen analogen Funktionsgenerator mit einem DSS 
kombiniere? Als Taktquelle könnte ja ein AVR dienen, somit wär durch den 
die Frequenz eindeutig festgelegt. Eine Analogschaltung könnte aus dem 
Rechtecksignal des AVRs (ist das ein sauberes Rechtecksignal?) dann 
Dreieck und Sinus erzeugen. Allerdings fehlt mir dann immernoch der 
Sägezahn :-(

lg PoWl

von Tim (Gast)


Lesenswert?

Wenn du eine Analogschaltung baust kannst du dir den Saegezahn aus einem 
Integrierer bauen, der eine konstante Spannung integriert. Wenn der eine 
bestimmte spannung erreicht hat schliesst du dann den Kondensator mit 
einem Mosfet kurz und die Integration beginnt von neuem. Jenachdem wie 
dreieckig die Rampe sein soll musst du auch nicht einen INtegriere 
nehmen, sondern kannst einen RC Tiefpass verwenden. Die Spannung ueber 
dem C sieht zu beginn recht rampenfoermig aus.

Eine 25kHz aus einem uC sieh eigentlich recht gut aus. Das ist keine 
Frequenz die der heutigen Technik Probleme machen. Die Flanken sollten 
steil sein. Kann aber sein, dass du etwas ringing bekommst. Haengt aber 
davon ab wie du das aufbaust.

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