DAC Modell, Probleme mit dem Gain error %FSR

OP #7593587
Lesenswert?
• ▲
▼

Hallo zusammen,

ich versuche gerade, ein einfaches DAC Modell zu bauen, um es in Monte Carlo Analysen zu verwenden. Es sollen folgende Eigenschaften unterstützt werden

  • Resolution
  • Vref
  • Offset error
  • gain error

Ich habe insbesondere mit dem Gain Error Probleme. Ich schreibe mal ein paar Definitionen. Die meisten Infos stammen aus https://e2e.ti.com/blogs_/b/analogwire/posts/dac-essentials-the-pursuit-of-perfection und https://www.infineon.com/dgdl/ap3212111-ADC-Measurement-v11.pdf?fileId=db3a304318f3fe2901191955cd3c2de3

Annahmen, Auflösung = 8 bit, kein Rauschen, kein INL, keine Temperaturabhängigkeit. Vref = V+ = 3V3, V- = GND = 0V

  • N = Auflösung = 8 Bit
  • LSB = gain = Steigung der Kennlinie = eine "Kodierstufe": FSR/2^N = 12.89 mV/code
  • FSR = Full scale range: Vref = 3.3 V
  • FS = Full scale = maximal ausgebbare Spannung bei DAC_MAX: FSR-LSB = 3.287 V
  • DAC_MAX = maximaler dac code: 2^N-1 = 255

Ich denke soweit sollte es passen.

Jetzt steht z.B. im DB von Analog Devices https://www.analog.com/media/en/technical-documentation/data-sheets/ad5673r-5677r.pdf

  • offsetErr = Offset Error max = +/- 2 mV
  • gainErr = Gain Error max = +/- 0.12 %FSR

Ich würde sagen, die Ausgangskennlinie des DAC kann dann so beschrieben werden:

vOut = dacIn*(gain + gainErr/100*FSR) + offsetErr

vOut ist dann die ausgegebene Spannung am DAC Pin, dacIn ist quasi der code = der DAC Register Wert.

Aber: Irgendwas passt nicht. Angenommen ich möchte den code 16=2^4 ausgeben, der in einer idealen Spannung von 206.25 mV (16*LSB) resultieren würde, dann wäre mit offset Fehler vOut=206.25 mV +/- 2 mV.

Aber der gainErr wäre +/-0.12/100*3.3 = +/-3.96 mV und damit ja schon im 1/10 Wertebereich wie der gain von 12.89 mV/code.

Der Fehler wäre dann also entweder 16*(gain + 3.96) +/-2 mV = 269 +/- 2 mV oder 16*(gain - 3.96) +/- 2 mV = 143 +/-2 2mV.

Das sind ja gigantische Fehler, das kann ich mir nicht vorstellen.

Habe ich bei der Umrechnung des gain errors in %FSR einen Fehler gemacht? Muss das nochmal durch 2^N oder so geteilt werden?

Vielen Dank!

Edit: Könnte es sein, dass es

vOut = dacIn*(gain*(1 + gainErr/100*FSR)) + offsetErr

sein muss, also der gainErr noch mit dem gain multipliziert werden muss?

#7596593
Lesenswert?
• ▲
▼

Vielleicht mal Figure 9 ankucken. Der Gain Error ist nicht je LSB sondern gesamt.

Aber was soll Monte Carlo da bringen? Vergleich wie sich die Ergebnisse zwischen 100 DAC unterscheiden? Für das Verhalten eines einzelnen DAC wärs völliger Käse weil der Gain error sich nicht zufällig verteilt sondern grob deterministisch. Auch zwischen unterschiedlichen Devices verläuft der vmtl. Eher ähnlich, wenn auch nicht weiter spezifiziert.

OP #7606572
Lesenswert?
• ▲
▼

Purzel H. schrieb:

Was soll die Simulation zeigen ? Gain Error bedeutet, dass der Gain einen Fehler aufweist. Im Sinne von Ausgangssignal = ((Code x Refererenz x Gain)/ 2^N) + Offset

Genau, der Fehler kann aber in %Full Scale oder auch anders angegeben sein. Wie würdest in deiner Formel den gain error mit einbauen? Wo würdest du die Klammern setzen?

Stephan schrieb:

Vielleicht mal Figure 9 ankucken. Der Gain Error ist nicht je LSB sondern gesamt.

Genau, er ist in %Full Scale. Figure 9 ist was anderes, das ist der total unadjusted error. In der Tabelle 3 gibt es drei Werte, die in %FSR angegeben sind, Gain error, full-scale error, und total unadjusted error. FSR sind 3.3V. Angenommen, ich betrachte nur den gain error, wie komme ich zum Gesamtfehler?

Es ist ja nicht einfach gain = ideal gain + gain error %FSR

Aber was soll Monte Carlo da bringen? Vergleich wie sich die Ergebnisse zwischen 100 DAC unterscheiden? Für das Verhalten eines einzelnen DAC wärs völliger Käse weil der Gain error sich nicht zufällig verteilt sondern grob deterministisch. Auch zwischen unterschiedlichen Devices verläuft der vmtl. Eher ähnlich, wenn auch nicht weiter spezifiziert.

Ich möchte gucken, wie stark sich der Ausgang verändert, wenn ich gain und offset gemäß des Datenblattes variiere. Und ja, wir sprechen über viele tausende DAC.

Danke euch!

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.