es geht um Messdatenerfassung mit AD-Wandler. AD7705 ist ein 16bit-Wandler (Sigma-Delta) mit SPI, PGA (gain 1-128), Buffer und Multiplexer für 2 differentielle Kanäle. Bei 2.5V-Referenz Eingangssignale können z.B. 0-2.5V und herunter bis 0-20mV erfasst werden (Datenblatt S.1). Bei ausgeschaltetem Buffer sind Signale von 100mV unter GND bis 30mV über VDD möglich. Bei eingeschaltetem Buffer geht der Bereich von 50mV über GND bis 1.5V unter VDD (Datenblatt S.5). Der Leckstrom der Analogeingänge beträgt max 1nA (Datenblatt S.5). Eingesetzt wurde ein Modul AD7705 (China) mit 2.5V Referenz, 4.9152MHz Quarz und Beschaltung der Differenzeingänge mit 10k Serienwiderstand und 100n als Filter. Der 10k nach Masse wurde entfernt. Der negative Eingang liegt auf GND. AD7705 hat eine interne CPU für Kalibrierung Zeroscale, Fullscale. Die interne Kalibrierung wird nach Init Register durchgeführt. Das Filter ist auf 50Hz gestellt. An Eingang hängt 200k nach Uref=2.5V und ggf. ein Einstellwiderstand nach Masse. Zu den Messergebnissen: Mit Buffer aktiv ergeben sich Abweichungen vom erwarteten Spannungswert im Bereich 13-400 LSB. Bei 0V wird 13 angezeigt und bei 0.8V 20573 statt erwartet 20971. Durch Entfernen des Einstellwiderstands wird der Eingang nach 2.5V gezogen. Statt erwartet 65535 wird 65290 angezeigt. Die Abweichung über den gesamten Bereich erscheint nicht sonderlich konstant: 0V -> statt 0 13 -> 13 LSB zu viel 0.01V -> statt 262 40 -> 222 LSB zu wenig 0.05V -> statt 1311 1071 -> 240 LSB zu wenig 0.1V -> statt 2621 2365 -> 256 LSB zu wenig 0.2V -> statt 5243 4964 -> 279 LSB zu wenig 0.4V -> statt 10486 10165 -> 321 LSB zu wenig 0.8V -> statt 20971 20573 -> 398 LSB zu wenig Mit Buffer deaktiv ergeben sich folgende Werte: 0V -> statt 0 0 -> 0 LSB zu wenig 0.01V -> statt 262 258 -> 4 LSB zu wenig 0.05V -> statt 1311 1297 -> 14 LSB zu wenig 0.1V -> statt 2621 2594 -> 27 LSB zu wenig 0.2V -> statt 5243 5188 -> 55 LSB zu wenig 0.4V -> statt 10486 10378 -> 108 LSB zu wenig 0.8V -> statt 20971 20759 -> 212 LSB zu wenig Bei Buffer deaktiv tritt bei 2.404V Eingangsspannung ein Stromfluss von 0.575uA in den AIN1+ Pin auf. 62388 wird angezeigt. Bei 2.364V Eingangsspannung fließen 0.56uA. 61335 wird angezeigt. Fazit: Es scheint nicht möglich mit der eingebauten Kalibrierung und Buffer brauchbare Abweichungen zu erreichen. Zudem reicht der Bereich nicht mehr ganz nach unten. Ohne Buffer wird der Eingang durch das rasche Umladen des internen 7pF-Caps belastet. Die Abweichungen erscheinen jedoch geringer. Es scheint nicht so einfach brauchbare Ergebnisse trotz der internen Kalibrierung zu erreichen. Wie sind Eure Erfahrungen?
Mit welchem Messgerät hast du deine Spannungen gemessen?
dummschwaetzer schrieb: > Mit welchem Messgerät hast du deine Spannungen gemessen? mit Keithley 197 im 2V-Bereich. Eingangswiderstand >1 GOhm.
dummschwaetzer schrieb: > Mit welchem Messgerät hast du deine Spannungen gemessen? das sollte egal sein. Denn der Wert der am Messgerät angezeigt wird sollte (falls das Messgerät selbst linear ist) auch so am Ausgang des Wandlers erscheinen. Ich habe nicht überprüft wie linear das integrierende Messgerät selbst ist.
Zeichne das doch mal auf. Dann berechne GAIN und OFFSET und zieh das ab. Dann siehst du, obs was mit Nichtlinearität hat. d.h. erst mal die Fehler 1. Ordnung betrachten. Bei der ersten Messung sieht mein Augenintegral einen GAIN und einen OFFSET, bei der zweiten nur noch einen GAIN-Fehler. Ins Blaue fantasiert: Dein Buffer hat einen "saftigen" Offset (Messung 1). KÖNNTE mit einem GAIN überlagert sein. Bei Messung 2 könnte es etwas mit der Refernz haben, das macht einen GAIN-Fehler. Jetzt tät ich mal die Referenz messen, ist sie in spec? Wenn nein, wer korrigiert den dadurch entstehenden Fehler? Hat die Referenzquelle ausreichend Bandbreite, um den ADC zu speisen`? Ich sach mal, 16Bit, das ist hinzubekommen. Aber es ist kein Spaziergang mehr. Also auch mal den Aufbau bereinigen, und mögliche Massschleifen etcpp bedenken. Tipp: Wer 16Bit haben will, kauft nicht beim Chinesen. Denn der spart am Buffer (Messung1) und an der Referenz (Messung 2).
Hmm schrieb: > Zeichne das doch mal auf. Danke für den Hinweis, mache ich. > Bei der ersten Messung sieht mein Augenintegral einen GAIN und einen > OFFSET, bei der zweiten nur noch einen GAIN-Fehler. bei beiden Messungen lief die gleiche interne Kalibrierung ab. Mir ist unklar wie das intern gemacht wird, denn es wird ja der Nullpunkt ermittelt und mit Buffer ist das wohl schwer denn da ist der Nullpunkt ja nicht messbar(?). Laut Datenblatt kann geht Buffer nicht unter 50mV. > Jetzt tät ich mal die Referenz messen, ist sie in spec? gemessen hatte ich 2.52V an der Referenzdiode LM285-2.5. Das liegt in der Spec dieser Diode. > Wenn nein, wer korrigiert den dadurch entstehenden Fehler? bei der Kalibrierung wird die Referenz miteinbezogen bei der Full-Scale-Kalibrierung. > Hat die Referenzquelle ausreichend Bandbreite, um den ADC zu speisen? Die Ref-Diode wird mit 1k versorgt. Bei 5V fließen rechnerisch 2.5mA. Der Ref-Eingang am Wandler sollte statisch wenig belasten. Im Datenblatt S.5/6 steht Analog-Inputs/Reference-Inputs. Also wohl 1nA Strombelastung und ggf. auch dynamische Belastung durch den Sampling C. An der Referenz liegt lt. Plan ein 1uF. Da könnte man ggf. noch etwas hinzufügen. > Tipp: > Wer 16Bit haben will, kauft nicht beim Chinesen. Denn der spart am > Buffer (Messung1) und an der Referenz (Messung 2). der Buffer ist chip-intern. Das Chip ist eine China-Kopie des AD7705 mit demselben Datenblatt. Die Referenz könnte man durch ADR03 ersetzen. Laut Datenblatt http://www.ti.com/lit/ds/symlink/lm385-2.5.pdf kann die Referenzdiode von 20μA-20mA arbeiten. 2.52V liegt gut in der Spec. Ein 100nF ist laut Plan nicht dran. Nur ein 1uF. Ein Aufbau mit dem Original-AD7705 würde eher nicht auf die winzige China-Platine passen. Leider habe ich keine Vergleichsdaten.
Also dein Baustein kann nur interne Fehler kalibrieren. Offensichtlich gehört dazu nicht der Offset des Buffers. Der ist also schwirig zu verwenden, wenn dich der Offset stört. Ich würde folgendes tun: Was den GAIN durch VREF angeht: Ich würde jetzt hergehen, und die Referenz GENAU messen, also auf 4 oder 5 Stellen. Daraus berechnest du dir einen Korrekturfaktor für deine Messwerte, und korrigierst sie. Wenn es dann passt, hast du die Quelle gefunden - Fehler in VREF. Kannst du herausrechnen. Wenn nicht, musst du weitersuchen. Lies auch die Drift deiner Referenz nach. Ist sie relevant groß? Wenn ja, dann hast du ein Problem... Was den Offset angeht: Wegkalibrieren oder Buffer weglassen. Wegen Temperaturdrift musst du zyklisch rekalibrieren. Kannst du z.B. tun, indem du den ADC auf VREF/11 schaltest und den Fehler misst. 0V kannst du nicht nehmen - das kann ja dein Buffer nicht.
Sorry für Doppelpost: Nachdem ich mir jetzt doch mal das Datenblatt für die Refernz gesehen habe, wird mir einiges klar. Die Referenz ist Mist. Eine 2%-Referenz mit 20ppm Drift bei einem 16-Bit-ADC ist eine Frechheit. Das tut nicht mal für 8 Bit, außer für sehr niedrige Ansprüche.
Hmm schrieb: > Eine 2%-Referenz mit 20ppm Drift > ... > Das tut nicht mal für 8 Bit, außer für sehr niedrige Ansprüche. Schön gemeckert, aber bleib mal auf dem Teppich!
Hmm schrieb: > Also dein Baustein kann nur interne Fehler kalibrieren. es ist auch möglich externe Fehler zu korrigieren. Dazu gibt es ein Hinweisblatt. Mann muss dann jedoch die Endpunkte brauchbar zur Verfügung stellen. Eben das ist leider nicht so einfach. Den Punkt mit VREF kann man ggf. zur Verfügung stellen. Zumindest bei einem Versuchsaufbau. Der Full-Scale-Abgleich wäre so möglich. Ein größeres Problem könnte der Zero-Abgleich sein. Dazu müsste man den Buffer abschalten, denn mit Buffer ein geht das nicht. Der Buffer reicht nicht bis ganz nach unten. Zudem ist bei Messung mit Buffer der untere Bereich nichtlinear. Erst ab ~80-100mV wird das brauchbar. > Offensichtlich > gehört dazu nicht der Offset des Buffers. Der ist also schwirig zu > verwenden, wenn dich der Offset stört. ja. Sieht so aus. > Ich würde folgendes tun: vielen Dank für die Hinweise. ich tausche gerade die Referenz gegen ADR03. Mal sehen was dann passiert. > Was den Offset angeht: > Wegkalibrieren oder Buffer weglassen. Buffer weglassen ist denkbar. Nur muss dann ein Buffer vor den Eingang. Sonst verfälscht wohl der Eingangsstrom die Messung der nicht so niederohmigen Quelle. Das ist doch wohl der Sinn des Buffers? > Wegen Temperaturdrift musst du > zyklisch rekalibrieren. ja. Das ist anzunehmen. > Kannst du z.B. tun, indem du den ADC auf VREF/11 schaltest und den > Fehler misst. Du meinst Vref herunterteilen und dann messen? > 0V kannst du nicht nehmen - das kann ja dein Buffer nicht. ja. Es ist leider gar nicht so einfach mit diesen Teilen eine hochohmigere Spannung brauchbar zu messen.
Hmm schrieb: > Eine 2%-Referenz mit 20ppm Drift bei einem 16-Bit-ADC ist eine > Frechheit. Natürlich ist das auch eine Preisfrage. Das AD7705-Modul mit Wandler, Referenz, Quarz und PCB etc. kostet ~2.-. Die ADR03-Referenz kostet mehr. Ein AD7705 ist eher nicht unter 10.- zu haben. 20ppm Drift ist natürlich nicht top. Übliche 1%-Widerstände haben +-100ppm. Da sind 200ppm möglich wenn man Pech hat. Diskret ist also nicht so einfach. Es gibt solide teure AD-Wandler mit integrierten Referenzen mit 10-15ppm: AD7605-4 (>17€) hat typisch ±10ppm/°C laut Datenblatt S.4: http://www.analog.com/media/en/technical-documentation/data-sheets/AD7605-4.pdf AD7616-P (>19€) hat typisch +-2ppm (max. +-15ppm) laut Datenblatt S.4: http://www.analog.com/media/en/technical-documentation/data-sheets/AD7616-P.pdf. Es gibt 3ppm-Referenzen wie ADR03. Darunter wird es schwieriger. http://cds.linear.com/docs/de/press-release/LT6657-DE.pdf "Linear Technology präsentiert die driftärmste Bandgap-Spannungsreferenz der Welt: max. 1,5ppm/°C und nur 0,5ppmSS Rauschen" "<30ppm Langzeitdrift und 35ppm thermische Hysterese."
Das ist kompletter Mist. Ein AD7705 macht vielleicht 100 Sample/s fuer 10$, eine 7605 macht 300k Samples fuer 21$. Wenn man an einen 7705 eine ADR391 fuer 2 $ verbaut ist man dabei.
Sapperlot W. schrieb: > eine 7605 macht 300k Samples fuer 21$. das mag ja so sein. Es ging hier nicht um die Samples/s - sondern um die Drift der Referenz. Und da sind +-10ppm eben laut Datenblatt auch nur Faktor 2 besser als die billige Referenz auf dem China-Modul.
Sapperlot W. schrieb: > ADR391 fuer 2 $ Danke für den Hinweis. Das sind +-9ppm/°C. Bei Mouser steht 1.83+19%.
Hmm schrieb: > Zeichne das doch mal auf. Hier sind ein paar Bilder die die Abweichung in LSB vom Idealwert mit oder ohne Buffer zeigen. Es gibt große Unterschiede zwischen LM285-2.5 (Diode mit 2.5mA vorgespannt) als Referenz und ADR03. Mit Buffer sieht man Linearitätsprobleme im unteren Spannungsbereich bis ~90mV. Danach liegen die Werte bis 0.8V recht gut auf einer Linie. Der obere Punkt liegt jedoch nicht mehr auf der Linie - warum auch immer. Das ist der Punkt wo das Eingangssignal Vref erreicht. Mit LM285 als Referenz steigt die Linie der Abweichung nahezu linear an. Mit ADR03 als Referenz ist kaum ein Anstieg zu sehen. Das Gain wurde offenbar zuverlässiger bestimmt obwohl die Referenz lt. Datenblatt kaum belastet wird. Ohne Buffer ist die Abweichung sehr gut linear bis 0.8V ohne sichtbare Probleme im unteren Bereich. Dies gilt für beide Referenzen. Bei ADR03 ist die Abweichung deutlich kleiner, der automatische Abgleich klappt damit also besser. Ein Offset bei 0 ist ohne Buffer nicht zu erkennen (~0.33LSB).
Matthias W. schrieb: > Hmm schrieb: >> Zeichne das doch mal auf. Schön. Wie aus dem Lehrbuch :-) Man sieht: Mit Buffer: - Headroom-Problem (auch ein Rail2Rail-OPV kann nahe an 0V oder VCC keinen Strom liefern) - DC-Offset : Buffer hat Offsetspannung Ohne Buffer: - Kein Offset / Headroom-Problem - Fehler linear (=GAIN -> Referenz ist falsch) Wie man das repariert: Besorg dir eine driftstabile Referenz und mach einen GAIN-Abgleich. 1LSB sind 15ppm (bedingt durch die Auflösung deines ADC). Eine 20ppm/°C-Referenz ist daher suboptimal. Den Offset kann man abgleichen, allerdings wird er driften. Kleine Spannungen (und möglicherweise große - falls VCC=VREF!) kann man mit Buffer nicht messen. aber man kann den Buffer ja ausmachen. Aus meiner Sicht ruiniert die müllige Referenz das Modul für viele Anwendungen (außer vielleicht Audio).
Hmm schrieb: > Schön. Wie aus dem Lehrbuch :-) Danke ! > - Headroom-Problem (auch ein Rail2Rail-OPV kann nahe an 0V oder VCC > keinen Strom liefern) dies ist mir nicht so klar, denn der Bereich des ADC geht ja nur bis 2.5V und versorgt wird der ADC mit 5V. Da sind also 2.5V Luft. Das sollte doch als Headroom reichen? > Wie man das repariert: > Besorg dir eine driftstabile Referenz und mach einen GAIN-Abgleich. die ADR03 ist mit 3ppm recht gut und nun bereits verbaut. Den automatischen Abgleich habe ich gemacht - siehe oben. Du meinst noch einen extra Abgleich? Das Thema Auslesen und Schreiben der 24bit-Kalibrationswerte habe ich bisher nicht gemacht. > Den Offset kann man abgleichen, allerdings wird er driften. Kleine > Spannungen (und möglicherweise große - falls VCC=VREF!) kann man mit > Buffer nicht messen. aber man kann den Buffer ja ausmachen. ja. Es könnte sein daß ein Buffer nötig wird weil ohne Buffer die kapazitive Belastung des Eingangswiderstands von 200kOhm zu groß wird. Sonst wäre es ohne Buffer sinnvoller. Ich habe auch einen AD7714 im DIL-Gehäuse. Den könnte ich auch ausprobieren. Eine Platine dazu fehlt jedoch noch.
Matthias W. schrieb: > Hmm schrieb: >> Schön. Wie aus dem Lehrbuch :-) > > Danke ! > >> - Headroom-Problem (auch ein Rail2Rail-OPV kann nahe an 0V oder VCC >> keinen Strom liefern) > > dies ist mir nicht so klar, denn der Bereich des ADC geht ja nur bis > 2.5V und versorgt wird der ADC mit 5V. Da sind also 2.5V Luft. Das > sollte doch als Headroom reichen? Oben schon , unten nicht. Bei GND gibt es das gleiche Problem. Sieht man ja. >> Wie man das repariert: >> Besorg dir eine driftstabile Referenz und mach einen GAIN-Abgleich. > > die ADR03 ist mit 3ppm recht gut und nun bereits verbaut. Den > automatischen Abgleich habe ich gemacht - siehe oben. Du meinst noch > einen extra Abgleich? > > Das Thema Auslesen und Schreiben der 24bit-Kalibrationswerte habe ich > bisher nicht gemacht. Ja, einen eigenen. Hilft nicht. Beim GAIN-Abgleich ist blöd, dass man das nicht automatisch machen kann... >> Den Offset kann man abgleichen, allerdings wird er driften. Kleine >> Spannungen (und möglicherweise große - falls VCC=VREF!) kann man mit >> Buffer nicht messen. aber man kann den Buffer ja ausmachen. > > ja. Es könnte sein daß ein Buffer nötig wird weil ohne Buffer die > kapazitive Belastung des Eingangswiderstands von 200kOhm zu groß wird. > > Sonst wäre es ohne Buffer sinnvoller. Ich habe auch einen AD7714 im > DIL-Gehäuse. Den könnte ich auch ausprobieren. Eine Platine dazu fehlt > jedoch noch. Ich würde zunächst schauen, wie die Offsetdrift bei dem internen OPV angegeben ist. 200kOhm ist vermtutlich schon zu viel, da müsste man im Datenblatt schaun, was der ADC wirklich benötigt. In Summe kann man sagen, dass man sowas besser selber aufbaut. Dann kann man solche Schwächen gleich von vornherein ausmerzen. Dazu kommt, dass das Layout bei einem 16-Bit-ADC nicht ganz unwichtig ist (z.B. Masseführung), da hätte ich bei solchen Modulen auch meine Zweifel...
Hmm schrieb: > 200kOhm ist vermtutlich schon zu viel, da müsste man im Datenblatt > schaun, was der ADC wirklich benötigt. da ist nicht so sehr viel angegeben. Es steht typ. 1nA Leckstrom da. Zudem ist klar daß der ADC 7pF über 7k mit hoher Geschwindigkeit (abhängig von der Wandlungsrate) zwischen AIN+ und AIN- hin- und herlädt. Je weiter nun AIN+ und AIN- auseinanderliegen - was besonders bei hohen Widerstandswerten des Thermistors der Fall ist (also bei niedrigen Temperaturen) umso größer wird das Mess-Problem (wo der Buffer ggf. helfen könnte wenn er brauchbar und einfach kalibrierbar wäre). Bei hohen Temperaturen wird der Effekt verschwinden aus 2 Gründen: + der Thermistorwiderstand wird recht niederohmig (~4.9k bei 110°C) + die Spannung wird recht klein und so auch die Differenzspannung Problematisch ist also das Verhalten bei niedrigeren Temperaturen. Dabei wirkt der 200k nach Vref und der Widerstand nach Masse (z.B. 326k bei 0°C).
Hmm schrieb: > In Summe kann man sagen, dass man sowas besser selber aufbaut. ja. Das kann Sinn machen. Nur brauche ich mehr Platz als die Chinesen. Der AD7705 (SO16W) ist größer als der TM7705 (SO16). Aus Handlinggründen verwende ich keine SMD kleiner 0805. Damit wird die Platine ggf. größer, aber sicher wohl besser.
Hmm schrieb: > Beim GAIN-Abgleich ist blöd, dass man > das nicht automatisch machen kann... Das klingt aufwendig. Der interne Abgleich dient zum Ausgleich temperaturabhängiger Drift im Baustein. Man muss diesen daher gelegentlich durchführen. Diesem Ergebnis ist dann der andere Effekt brauchbar zu überlagern.
Hmm schrieb: > Bei GND gibt es das gleiche Problem. Sieht man > ja. so weit unten braucht man den Buffer jedoch nicht. Da ist der Thermistor niederohmig genug und zudem der Unterschied zwischen AIN+ und AIN- klein genug um auf den Buffer verzichten zu können. Der Buffer ist eher oben wichtig. Da muss der Abgleich dann passen.
Hmm schrieb: > Eine 2%-Referenz mit 20ppm Drift bei einem 16-Bit-ADC... ein weiteres Problem ist der 200k-Widerstand nach Vref. Der Metallfilm-R hat 1% und einen TK von +-100ppm wohl. Bei meinen SMD-Rs 0805 steht +-200ppm. Man sollte daher ggf. auch überlegen wo man bessere und ggf. genauere Widerstände bekommt. Der Thermistor hat ja auch eine Abweichung.
Hallo, sehr spannend ! Über manches denkt man vorher gar nicht so nach. Für jemanden, der nicht löten mag, haben die Chinesen schon was ähnliches fertig (mit ADR03 als Ref). Für erste Versuche und zum Lernen reicht das vielleicht ja. "NEW ADS1256 24bit ADC8 road AD-precision ADC data acquisition module" https://www.ebay.com/itm/NEW-ADS1256-24bit-ADC8-road-AD-precision-ADC-data-acquisition-module-/131902472605 Viele Grüße Herbert
:
Bearbeitet durch User
Herbert K. schrieb: > sehr spannend ! Über manches denkt man vorher gar nicht so nach. ja, da hast Du recht Herbert. Als ich anfing damit hatte ich mir das einfacher vorgestellt. Dann kam eine Menge Frust. > "NEW ADS1256 24bit ADC8 road AD-precision ADC data acquisition module" vielen Dank für den Hinweis. Das sieht interessant aus. Als Eingangswiderstand ist bei Buffer off 150k/PGA angegeben. Bei PGA=1 sind es also 150kOhm. Mit Buffer on steht da 80MOhm bei fDATA≤50Hz. Was letzteres konkret bedeutet müsste man weiter hinten nachlesen. DVDD geht nur bis 3.6V. Daher ist der chip selbst nicht direkt an 5V-IO zu betreiben. Normalerweise wäre daher ein Pegelwandler zu erwarten. Stattdessen gibt es nur Serienwiderstände. Die Referenz ist aufwendig gepuffert. Es kommt dann noch der Offset und die Drift des OPA350 hinzu. Seltsamerweise sieht der Chip in der Mitte wie ein FTDI aus. Das sollte doch der ADC sein? Es gibt hier im Forum auch einen Beitrag: "Probleme mit ADC ADS1256". Es ist nicht immer einfach und schnell Bausteine brauchbar zum Laufen zu bekommen.
Herbert K. schrieb: > "NEW ADS1256 24bit ADC8 road AD-precision ADC data acquisition module" Das Modul ist recht preisgünstig. Laut Datenblatt ist die SPI 5V tolerant. Der Buffer geht zudem angeblich auch bis 0V hinunter. Dafür geht er nur bis VCC-2V nach oben. Für meine Anwendung müsste das reichen. Bei Mouser kostet der ADS1256 um die 11€+19%. Das Original-Eva-Modul ist leider mit ~200.- recht teuer. Wenn das China-Modul gut geht wäre das wirklich eine günstige Möglichkeit. Vielleicht will es jemand testen.
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.