Hi, ich habe einen mcp4725 DAC an einem Atmega und dahinter noch einen Opamp um das Ausgangssignal etwas zu verstärken. Das Signal (z.B. Sinus) sieht hübsch aus, aber mir fehlt das Equipment um die Qualität wirklich zu beurteilen. Ist es sinnvoll einen Tiefpass nachzuschalten oder filtert der DAC bereits ausreichend? Falls ich filtern sollte, macht es einen Unterschied, ob ich vor oder nach dem Opamp filtere? Liebe Grüße
MeckerOhm schrieb: > ich habe einen mcp4725 DAC an einem Atmega und dahinter noch einen Opamp > um das Ausgangssignal etwas zu verstärken. Das Signal (z.B. Sinus) sieht > hübsch aus, aber mir fehlt das Equipment um die Qualität wirklich zu > beurteilen. > > Ist es sinnvoll einen Tiefpass nachzuschalten oder filtert der DAC > bereits ausreichend? Falls ich filtern sollte, macht es einen > Unterschied, ob ich vor oder nach dem Opamp filtere? Kuck hier: https://de.wikipedia.org/wiki/Digital-Analog-Umsetzer#Schritte_der_Umsetzung "Eine Annäherung an ein kontinuierliches Ursprungssignal, auf dem ein digitales Signal basieren kann, wird mit einem meist direkt auf den Digital-Analog-Umsetzer folgenden Rekonstruktionsfilter erzielt." Wenn Dir das Signal "hübsch" genug ist (will sagen: deinen Ansprüchen genügt), kannst Dir das Rekonstruktionsfiler sparen. Ob Du vor oder nach dem Verstärker filterst ist (in erster Näherung) egal.
MeckerOhm schrieb: > Ist es sinnvoll einen Tiefpass nachzuschalten oder filtert der DAC > bereits ausreichend? Was soll der DAC filtern? Dein Sinus ist nicht ideal, sondern hat Stufen, die man bei guter Auflösung auch am Scope sehen müsste. Nun kommt es auf die Anwendung an, ob diese relevant sind. Wenn ja, hilft ein Tiefpass. Aaaaber: Wenn sich die Frequenz des Sinus' verändert, erzeugt der Tiefpass eine unerwünschte Verschiebung der Amplitude.
Manfred schrieb: > Was soll der DAC filtern? Im Datenblatt ist eine Settling Time von 6us angegeben. Alleine das sorgt schon dafür, dass das Signal nicht als ideale Treppenfunktion, sondern gefiltert heraus kommt ;-)
Welche Appliaktion hast du? Welche max Sinus-Frequenzen, Spannung usw möchtest du haben?
sorry, meinen Anwendungsfall einzugrenzen, wäre klug gewesen. Es geht um ein Modul in einem modularen Synthesizer. Das Signal kann sowohl LFO, Audio oder ein (quasi-)diskretes Control Voltage sein. Im Grunde ein "general purpose" Modul, falls die Info einigermaßen hilfreich ist. Aber schon mal vielen Dank in die Runde. Ihr habt schon einige Dinge ganz gut für mich erhellt.
MeckerOhm schrieb: > s geht um ein Modul in einem modularen Synthesizer. Das Signal kann > sowohl LFO, Audio oder ein (quasi-)diskretes Control Voltage sein. Im > Grunde ein "general purpose" Modul, falls die Info einigermaßen > hilfreich ist. Wichtig zu wissen ist zunächst mal die Taktfrequenz, mit dem die digitale Daten an den DA-Wandler gelegt werden, sowie die Ausgangsfrequenz des analogen Signales, welchs der DA-Wandler erzeugen soll. Je größer die Taktfrequenz gegenüber der Ausgangsfrequenz ist, desto geringer sind die Anforderungen bezüglich Flankensteilheit und damit Ordnungszahl an das Tiefpassfilter, welches hinter dem DA-Wandler sitzt. Wenn du den DA-Wandler z.B. mit 10us also 100KHz taktest, ist für ein LFO, bzw ein Controllsignal wohl ein einfacher Tiefpass erster Ordnung ausreichend. Für ein Audiosignal, welches ja bis 20KHz reichen kann, wird der Tiefpass wesentlich aufwendiger. Hintergrund Beim DA-Wandeln entstehen Aliasing-Produkte. Das heist es entstehen zusätzlich Mischprodukte von Taktfrequenz - Ausgangsfrequenz und Taktfrequenz + Ausgangsfrequenz. Die Taktfrequenz muss mindestens 2 mal so hoch sein wie die Ausgangsfrequenz. Der Abstand zwischen den beiden Frequenzen Taktfrequenz und Taktfrequenz minus Ausgangsfrequenz( Aliasingfrequenz ) und die Wortbreite des Digitalen DA Signals bestimmt die erforderliche Flankensteilheit des Tiefpasses. Je Bit Wortbreite hat das Signal einen Dynamikumfang von etwa 6db. Das heist bei einen 10 Bit DA wandler müsste das Tiefpassfilter bei dem Abstand zwischen höchster erzeugten Analogfrequenz und Taktfrequenz eine Dämpfung von midestens 10bit * 6db = 60db haben. In unserem Beispiel mit 100KHz Taktfrequenz und höchster Audiofrequenz müsste der Tiefpass bei 20KHz beginnen und bei 100KHz einen Abfall von 60db erzeugen, damit die Aliasingfrequenzen im analogen Signal sicher unterdrückt werden. Bei einen 16Bit DA Wandler währen es 96db. Pro Ordnungsstufe ( also pro Kondensator oder Spule im Tiefpass ) erzeugt der Tiefpass eine Flankensteilheit von 6db/ Oktave oder auch 20db/ Dekade. Die realen Anforderungen an den Tiefpass kannst du dir jetzt selber ausrechnen. Ralph Berres
Mir ist ein Fehler unterlaufen. Ich habe geschrieben Ralph B. schrieb: > In unserem Beispiel mit 100KHz Taktfrequenz und höchster Audiofrequenz > müsste der Tiefpass bei 20KHz beginnen und bei 100KHz einen Abfall von > 60db erzeugen, damit die Aliasingfrequenzen im analogen Signal sicher > unterdrückt werden. es müsste aber heißen In unserem Beispiel mit 100KHz Taktfrequenz und höchster Audiofrequenz > müsste der Tiefpass bei 20KHz beginnen und bei 80KHz einen Abfall von > 60db erzeugen, damit die Aliasingfrequenzen im analogen Signal sicher > unterdrückt werden. Das untere Seitenband geht ja von 100KHz bis 80KHz. Damit Mischprodukte unter der Schwelle bleibt, was der DA Wandler noch auflösen kann muss der Pegel hinter dem Tiefpass schon bei 80KHz soweit abgesenkt sein, damit es nicht zu Aliasing-Produkten kommt. Ralph Berres
Ralph B. schrieb: > Wichtig zu wissen ist zunächst mal die Taktfrequenz, mit dem die > digitale Daten an den DA-Wandler gelegt werden, sowie die > Ausgangsfrequenz des analogen Signales, welchs der DA-Wandler erzeugen > soll. > > Je größer die Taktfrequenz gegenüber der Ausgangsfrequenz ist, desto > geringer sind die Anforderungen bezüglich Flankensteilheit und damit > Ordnungszahl an das Tiefpassfilter, welches hinter dem DA-Wandler sitzt. > > Wenn du den DA-Wandler z.B. mit 10us also 100KHz taktest, ist für ein > LFO, bzw ein Controllsignal wohl ein einfacher Tiefpass erster Ordnung > ausreichend. Mir ist nicht klar, wie man diese Grundlagen auf den MCP4725 anwenden will. Der Stein hat I2C, dem schicke ich einen Wert 0..4095 und der Ausgang bleibt so lange stehen, bis ich einen anderen Wert sende. Ich müsste also für einen Sinus der Frequenz entsprechend in Echtzeit Daten zum MCP senden. Da kommt die Frage auf, wie schnell der µC und I2C-Bus das überhaupt können. Ich habe vor ganz vielen Jahren mal FSK-Signale mit Ringzähler und 1 aus 16 Decoder generiert, da musste ich ganz gewaltig filtern und einen Kompromiß zwischen Signalgüte und unerwünschter Amplitudenmodulation eingehen.
Wenn die Anwendung ein LFO bzw eine sonstige Kontrollspannung in einem Synthesizer ist, dann wird die maximale Signalfrequenz eher im 100Hz Bereich liegen. Ich würde in diesem Fall einfach den anschliessenden Verstärker auf sagen wir Mal 500Hz bandbegrenzen, einfach, weil dann eventuell vorhandene Störungen im höherfrequenten Bereich ausgefiltert werden und jede noch so latente Schwingneigung des Verstärkes unterdrückt wird. Im einfachsten Fall schaltest du zum Rückkopplungswiderstand einen Kondensator parallel. Der Wert kann dann so gewählt werden, dass sich die Grenzfrequenz von 500Hz ergibt.
Manfred schrieb: > Mir ist nicht klar, wie man diese Grundlagen auf den MCP4725 anwenden > will. Der Stein hat I2C, dem schicke ich einen Wert 0..4095 und der > Ausgang bleibt so lange stehen, bis ich einen anderen Wert sende. Dann wäre die Taktfrequenz zwangsläufig maximal 4095 mal der Ausgangsfrequenz. Aber nur dann wenn jede Kurve die ausgegeben wird wirklich immer aus 4095 Stützstellen besteht. bei sagen wir mal 40,95KHz Taktrate der Daten, welche über den I²C-Bus gesendet werden wärem dann maximal ein Sinus mit einer Frequenz von 10Hz möglich. 4,095KHz müssten dann mit 10 Stützstellen auskommen. Das Problem kennt man ja auch vom DDS-Synthesizer. Hier werden aber hohe Frequenzen auch nur durch wenige Stützstellen beschrieben. Die Stützstellen wandern aber dann in der Regel. Andi M. schrieb: > Wenn die Anwendung ein LFO bzw eine sonstige Kontrollspannung in einem > Synthesizer ist, dann wird die maximale Signalfrequenz eher im 100Hz > Bereich liegen. Lesen bildet MeckerOhm schrieb: > Es geht um ein Modul in einem modularen Synthesizer. Das Signal kann > sowohl LFO, Audio oder ein (quasi-)diskretes Control Voltage sein. Er schreibt unter anderem auch von Audiosignal. Das sind garantiert mehr als 100Hz. Wenn er keine Audiofrequenzen wandeln will dann hast du dann recht, wenn die Aktualisierungsrate des DA Wandlers trotzdem um Zehnerpotenzen höher bleibt als die LFO Frequenz. Manfred schrieb: > Ich müsste also für einen Sinus der Frequenz entsprechend in Echtzeit > Daten zum MCP senden. Da kommt die Frage auf, wie schnell der µC und > I2C-Bus das überhaupt können. Das wird nicht nur für den I2C bus schon schnell. Normal überträgt man sowas besser mit einen parallelen Bus, und legt die Daten parallel an. > > Ich habe vor ganz vielen Jahren mal FSK-Signale mit Ringzähler und 1 aus > 16 Decoder generiert, da musste ich ganz gewaltig filtern und einen > Kompromiß zwischen Signalgüte und unerwünschter Amplitudenmodulation > eingehen. Das glaube ich. Ralph Berres
:
Bearbeitet durch User
Um vielleicht meinen Kontext noch mal etwas zurechtzurücken: ich möchte mir ein Experimentiermodul bauen, das mir u.a. "Geräusche" generiert. Das muss kein Hifi-Signal sein oder ein präziser Funktionsgenerator. Einen sauberen Sinus würde ich ich sowieso eher versuchen, analog zu erzeugen. Der Fokus liegt auch eher im Bereich Kontrollspannung und LFO. Z.B. möchte ich komplexere Hüllkurven haben, die mir in analog zu aufwendig wären. Nichtsdestotrotz wüsste ich schon gerne, wie ich's richtig machen würde, speziell bei diesem I2C-Chip.
Ah, ok, das mit dem Audio hatte ich überlesen. Für Audio wäre es wichtig, dass der Wandler mit konstanter Samplerate betrieben wird, sonst ist das Ergebnis nicht wirklich brauchbar. Ein optimales Rekonstruktiosfilter liegt dann wie oben schon beschrieben mit der Grenzfrequenz knapp unter der halben Samplerate und hat entsprechend steile Flanken. Nicht einfach also. Je schlapper die Flanken, je niedriger die nutzbare Grenzfrequenz. Das kann man ggf durch eine höhere samplerate ausgleichen. Der Wandler kann bis 3.4Mhz I2C clock. Bei 12 bit Auflösung wird das I2C Protokoll vermutlich 3 bytes oder 24 bit lang sein. Macht also eine max Samplerate von ca 140khz. Ob ein ATmega das schafft entzieht sich meiner Kenntnis. Aber sicherlich nicht per bitbanging. Wenn das ganze keine HighEnd Qualität haben soll, könnte man die ganze Theorie erst Mal beiseite lassen und dem Bauchgefühl folgen. Z.b. könnte man die Bandbreite per 1st oder 2nd Order Tiefpass auf ca 16kHz begrenzen. Das schneidet alles ab, was man ohnehin nicht hört. Die verbleibenden Störungen durch Aliasing gehören dann eben zum typischen "Sound". Wenn's zu eklig klingt, kann man ggf die Grenzfrequenz noch weiter absenken.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.