Forum: Mikrocontroller und Digitale Elektronik Nicht nachvollziehbares Verhalten von ADC-Werten


von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Guten Tag,

mit der angehängten Schaltung wird ein RTD (derzeit PT100) mittels 
4-Drahtmessung ausgewertet (RTD zwischen PIN 1+2 und 3+4 des 
Connectors).
Grundsätzlich funtkioniert die Auswertung des RTD auch bereits, nur 
erhalte ich nicht die Werte die ich erechnet habe.

Der 24Bit ADC AD7719 gibt am Ausgang IOUT1 den Strom von 200µA aus. 
Dieser durchläuft den Referenzwiderstand um die Referenzspannung zu 
erzeugen. Diese liegt an den entsprechenden PINs des AD7719 auch an.
Um dem Datenblatt des AD7719 gerecht zu werden wird der Eingang AIN2 
mittels des 510Ohm Widerstandes auf ein Level von AGND+100mV angehoben. 
Auch dies ist mittels Messgerät geprüft. Gemessen wird im unipolaren 
bufferd Mode mit einer Range von 320mV (fully differential).

Nun zum eigentlichen Problem. Der ADC liefert einen Messwert zurück der 
einige tausend Schritte entfernt von dem erechneten theoretischem Wert 
liegt. Also statt 1.060.591 wird der Wert 1.050.726 ausgegeben. Dies 
allerdings Konstant. Verändere ich die Temperatur (RTD-Simulator steht 
zur Verfügung) bleibt die Abweichung konstant bei 10.000 Schritten.
Verändere ich den Kondensator C1, ändert sich auch die Abweichung 
massiv. Auch  die Schwankungen werden deutlich größer (Abweichung +- 
Schwankung).
Mit 15pF KerKo habe ich relativ kleine Schwankungen in der Messung. Bei 
470 nF sind diese erheblich größer.
Was sich ebenfalls ändert sind die Abweichungen vom theoretischen Wert. 
Bei 15pF die o.g. ca 10.000 Schritte zu wenig, jedoch akzeptable 
Schwankungen. Bei 220nF sind die Werte fast identisch zu den 
Theoretischen, jedoch die Schwankung zu groß. Bie 470nF passen die Werte 
nicht und die Schwankungen sind viel zu groß.

Ich kann mir grade den Einfluss bzw. die Art des Einflusses vom 
Kondensator nicht erklären.

Vielleicht hat hier ja jemand einen passenden Hinweis für mich.

von HildeK (Gast)


Lesenswert?

Thomas schrieb:
> Ich kann mir grade den Einfluss bzw. die Art des Einflusses vom
> Kondensator nicht erklären.

Ja, das ist auch ein komplexes Thema.
Kurz: der externe Cext wird über den Innenwiderstand der Quelle Ri 
geladen.
Bei jeder AD-Wandlung wird der Samplekondensator Cs auf die anliegende 
Spannung geladen, der dabei eine kleine Menge Ladung aus dem externen 
Kondensator entnimmt. Reicht nun die Zeitkonstante Ri*Cext nicht aus, um 
den Ladungsverlust auszugleichen, ergibt sich eine konstante Ablage. Das 
könnte dein Problem sein, die Größenordnung jedenfalls passt in etwa.
Mögliche Abhilfen:
- Abtastfrequenz langsamer als z.B. 1/(5*Ri*Cext)
- Spannung an Cext mit einem Spannungsfolger puffern

Es gibt dazu vereinzelt Applikationsschriften, ich meine von TI oder 
auch von Analog Devices mal was gesehen zu haben. Leider habe ich keinen 
Link oder einen Titel.

von HildeK (Gast)


Lesenswert?


von Thomas (Gast)


Lesenswert?

Hi,

@HildeK: Danke für die Guten Hinweise, Da werde ich jetzt mal einige 
App-Notes durcharbeiten und ggf. die für mich passenden Lösung hier 
posten.

Gruß

Thomas

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Generell musst du die Masseverhältnisse klären. Im Allgemeinen soll der 
Sternpunkt zwischen AGND und DGND direkt am AD Wandler sein.

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Guten Tag,

vielen dank für die Hinweise bis dato.

Ich habe die AppNotes von Hilde geprüft.
In der Konfiguration des AD7719 habe ich die längste verfügbare 
Konvertierungszeit eingestellt (T_ADC=186,77ms). Weiterhin verwerfe ich 
die ersten 4 Messergebnisse nach einschalten des Messstromes. Will 
meinen erst ab 0,75s werden die Messwerte aufgenommen.  Ändere ich diese 
auf kürzere Zeiten werden die Ergebnisse schlechter, wie es zu erwarten 
war. Leider kann ich im Datenblatt ( 
https://www.analog.com/media/en/technical-documentation/data-sheets/AD7719.pdf 
) des AD7719 keine Info zur internen Kapazität bzw. der internen 
Widerstände finden um die "Ladezeit" zu bestimmen.

Weiterhin habe ich den Hinweis von Matthias berücksichtigt und auch das 
Platinenlayout angepasst. Anbei ein Screenshot des Layouts. Die Flächen 
im Bereich des AD-Wandlers, sowohl Top wie auch Bottom, sind mit GNDA 
verbunden. Diese haben nur eine Verbindung zum GND der restlichen 
Platine (am Pin 25 GNDD). Um "lose Enden" der Flächen zu unterbinden 
habe ich noch einzelne Dukos gesetzt. Es laufen keine Leiterbahnen 
unterhalb des AD7719 hindurch, welche digitale Signale übertragen.

Ist hier noch etwas zu optimieren? Konstruktive Kritik ist erhofft, 
erwünscht und erbeten.

Danke und Gruß

Thomas

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

GND-technisch sieht mir das ganz gut aus.
Was mich bei der Beschaltung irritiert, ist der sehr grosse (220nF) 
Kondensator zwischen AINP und AINN, aber ich gebe zu, das ich das 
Datenblatt jetzt nicht runtergeladen und auch die AppNotes nicht gelesen 
habe. Wenn der C Teil eines RC Tiefpasses ist, fehlen da allerdings noch 
die R - und deine analoge Quelle muss mit dieser kapazitiven Belastung 
klarkommen.

Viele Leute fügen noch kleine Serienwiderstände in die SPI Leitungen ein 
(33-100 Ohm), die als UHF Sperre und als Dämpfung agieren.

: Bearbeitet durch User
von Mario E. (Firma: privat) (marioeduardo)


Lesenswert?

Evtl hilft dir "AD_Practical Analog Design Techniques.pdf" von Analog 
Devices weiter. Das Kapitel, in dem sich Figure 3.35 und f.f. befindet.

lg Mario

von Mario E. (Firma: privat) (marioeduardo)


Lesenswert?

Sorry, nicht von Analog Devices.
Dr. GOOGLE findet es.

Ich denke, daß ich mich auch schon mit so einem Kondensator gespielt 
habe,
habe ihn hinausgeworfen. Erwartest du einen deratigen "Mist" auf den 
Leitungen, daß du so eine Beschaltung brauchst ?

Evtl hilft da - weiß es nicht, nur eine Idee - eine abgschirmte Leitung, 
wo man dann überlegen kann, ob man den Schirm auf Gnd oder Erde legt.

lg Mario

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Mario E. schrieb:
> Erwartest du einen deratigen "Mist" auf den
> Leitungen, daß du so eine Beschaltung brauchst ?

Der TE hatte ja schon im ersten Beitrag erklärt, das er mit dem C 
rumexperimentiert hat, aber ich vermute, das nur das Symptom damit 
bekämpft wurde.
Besser ist es imho, die Speisung bzw. die Referenz für die Brücke sauber 
zu halten, also Pin 4 und Pin 1. Da die Signalübertragung symmetrisch 
erfolgt, sind vom Signal zumindest keine grosse Störungen auf die 
Messtrippe zu erwarten.

: Bearbeitet durch User
von HildeK (Gast)


Lesenswert?

Thomas schrieb:
> In der Konfiguration des AD7719 habe ich die längste verfügbare
> Konvertierungszeit eingestellt (T_ADC=186,77ms).

Vielleicht hast du was missverstanden: ich meinte nicht die 
Konvertierungszeit, sondern die Wartezeit zwischen zwei Samplevorgängen, 
also die Abtastrate. Kann aber sein, dass du das selbe meinst.

Intern wäre nur die Kapazität des Samplekondensators interessant, aber 
nur dann, wenn er direkt die Ladung aus dem externen Kondensator 
entnimmt. Das ist üblich bei den AD-Wandlern, die in µCs eingebaut sind. 
Hier sehe ich zumindest noch einen Buffer im Blockschaltbild, der das 
entkoppelt. Und du hast ja auch den Buffered Mode gewählt, das sollte 
dann doch nicht die Ursache sein.
Auch bez. GND-Führung kann ich mir einen fast konstanten Offset nicht 
erklären, zumal sich bei differentielle Messung nicht mal 
Spannungsabfälle an einem schlechten GND auswirken würden.
Ich fürchte, ich kann nichts weiter zur Klärung beitragen :-(

von Arno H. (arno_h)


Lesenswert?

Hast du mal testweise den Ground-Lift auf 200mV hochgesetzt?
Die Stromquellen sind ja nicht so genau (Initial Tolerance typisch 
+-10%), können die kalibriert werden?
Da erscheinen mir deine 102mV etwas knapp kalkuliert.

Arno

von Thomas (Gast)


Lesenswert?

Guten Tag,

nach eingehender Lektüre der genannten App-notes und den Hinweisen hier 
(vielen Dank dafür), kommt mir der Verdacht ich habe nicht nur ein 
Problem mit dem Kondenasator, sondern auch mit meiner Lookup-Tabelle.

Den Ground-Lift habe ich an einer Platine einmal auf 200mV erhöht, was 
jedoch auch nichts geändert hat. Trotzdem werde ich diese Änderung so 
beibehalten. Rein aus Vorsicht.

Nun zur Lookuptabelle.
In einer Excel-Tabelle habe ich mir aus den Temperaturen(0,01°C 
Schritte) die Widerstandswerten und daraus mittels Formel zur Bestimmung 
des ADC-Codes eine Tabelle gebaut. Die Formel aus dem Datenblatt wage 
ich zu bezweifeln.
Folgende Formel ist dort vermerkt (Seite 33):

Wenn ich diese mit gemessenen Werten (Multimeter) fülle, kommt bei 0°C 
(100Ohm) der ADC-Wert 1057 heraus. (GAIN=8 N=24; GAIN ist so gesetzt, da 
ggf. auch ein PT1000 zum Einsatz kommen kann)
Der ADC liefert jedoch als Ergebnis 1.049.809. Lässt man den Faktor 1024 
in obiger Formel weg, liegt das rechnerische Ergebnis deutlich dichter 
am ADC-Wert (1.082.401).
Habe ich den vermeindlichen Fehler der Formel im DB richtig erkannt?

Diese Formel lässt sich so umstellen, das man direkt mit den 
Widerstandswerten rechnen kann.

Daraus folgt meiner Meinung nach:

Startet man nun in Excel eine Zielwertsuche und setzt den 
Widerstandswert für den RTD fest und lässt den R_ref veränderbar, so 
kommt dort ein Wert heraus der bei ca 12,7kOhm liegt Verändert man die 
Temperatur beispielsweise auf 40°C und bemüht die Zielsuche erneut, 
kommt ein R_Ref von ca 12,1kOhm heraus. Kann es sein das die Genauigkeit 
von Excel hier nicht hinreichend ist ? (15 Stellen)

Aufgrund der Erkenntnisse hieraus habe ich die Referenzspannung 
ebenfalls bei verschiedenen RTD-Widerständen nachgemessen. Auch hier war 
eine Schwankung von ca. 2mV zu erkennen. Darauf habe ich den Strom 
gemessen und festgestellt das dieser konstant ist bei den verschiedenen 
Temperaturen (0 und 40 °C).
Da es sich ja im Grunde um eine Reihenschaltung handelt, kann ich mir 
dies nicht erklären. Auch reichen meiner Meinugn nach die Leckströme des 
Referenzeingangs und des analogen Eingangs nicht aus um diese Schwankung 
zu erklären, zumal der Strom und der Widerstand als Konstant angesehen 
werden können.
Hat jemand hier einen Hinweis für mich warum die Referenzspannung 
schwankt? Bei einem konstanten Strom mit konstantem Widerstand kann ich 
mir dies nicht erklären. Das Multimeter ist hinreichend genau (Fluke 
8846A).

Diese Verhalten habe ich an 2 aufgebauten Platinen nachvollziehen könne.

Grüße und Danke im vorraus

Thomas

von Thomas (Gast)



Lesenswert?

Hallo,

nur falls es jemanden interessiert. Ich habe auf dem steckbrett eine 
Lösung, die anscheinend sauber funktioniert.

Zur Lösugn haben mich 2 App-Notes von TI geführt.
Zum Einem
Four-Wire PT100 Measurement Circuit With Low-Side Reference 
(http://www.ti.com/lit/pdf/sbaa336)
und zum Anderen
RTD Ratiometric Measurements and Filtering Using the ADS1148 and ADS1248 
(http://www.ti.com/lit/an/sbaa201/sbaa201.pdf).
Weiterhin sind in den Dokumenten des ADS1247/1248 weitere interessante 
Dokumente zu diesem Thema.

Grundsätzliche Änderungen waren:
- Einfügen von Serienwiderständen sowohl bei den AIN-Pins wie auch den 
Referenzpins
- Einfügen von Kondensatoren vom Eingangspin zu AGND
- Anpassen aller Werte um abgeglichene Filtereigenschaften zu erhalten
- Erhöhung des Messstroms von 200µA auf 400µA

Im Anhang nochmal ein Screenshot der Schaltung.

Hoffentlich funktioniert das nun auf der gefertigten Platine ebenfalls 
so gut wie auf dem Steckbrett.

Gruß Thomas

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Thomas schrieb:
> Hoffentlich funktioniert das nun auf der gefertigten Platine ebenfalls
> so gut wie auf dem Steckbrett.

Sieht für mich jedenfalls schon gut aus. Als alter HF-ler würde ich noch 
eine Drossel in AVDD einfügen, um mit C3 einen LC Tiefpass zu bilden.

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.