Nochmal ein neuer Versuch:
Ich arbeite mit dem folgenden 24-bit-ADC, Darstellung im 2er Kompliment.
Hier der ADC:
http://www.hycontek.com/attachments/DataConverters/DS-HY3118_EN.pdf
Der A/D Wandler soll einen Eingangsbereich von 0...3,3V haben (0V =
keine Belastung und 3,3V = maximale Belastung).
Den Schaltplan habe ich genauso wie im Application Circuit aufgebaut
(vgl. Anhang).
Da ich 3,3V als Referenzspannung nutzen möchte, habe ich den internen
LDO auf 3,3V eingestellt und somit den VDDA Pin (wie im Datenblatt) mit
REFP verbunden. Über die Konfigurationsregister habe ich REFP = VDDA und
REFN = VSSA eingestellt, so dass sich ein gewünschter Messbereich von
REFP - REFN = 3,3 V einstellt. Den REFO Pin habe ich über einen 100n
Kond. an GND gelegt. Der ADC arbeitet NUR, wenn ich Enable REFO control
in dem SYS Register enable. Kann mir jemand erklären warum genau das so
ist?
Den ADC und den LDO habe ich natürlich im SYS Register enablet.
Kann mir jemand sonst noch etwas zu der Schaltung sagen? Müßten zur HF
Reduzierung noch 100n Kondensatoren an die AIN1 bzw. AIN2 Leitungen
gehängt werden? In einigen Beispielschaltungen habe ich gesehen, dass in
diese Leitungen auf zwei Serienwiderstände eingefügt sind. Wofür sind
diese gut?
Den ADC Wert kann ich mir mittlerweile anzeigen lassen, wobei ich nur
die ersten 23 Bit nutze (das letzte Bit dient als Output Code Status
Bit).
Der ADC Wert schwankt im Ruhezustand noch ganz schön. Wie kann ich hier
Störungen weiterhin minimieren?
Mit dem internen PGA habe ich auch schon ein bißchen rumexperimentiert.
Natürlich werden die Störungen dadurch nicht kleiner.
Danke für den Input.
Lümmel_01 schrieb:> Der ADC Wert schwankt im Ruhezustand noch ganz schön. Wie kann ich hier> Störungen weiterhin minimieren?
Mach dir mal den Spass und rechne die Temperaturstabilität in PPM aus
die das System, welches gemessen wird, haben müsste damit der ADC-Wert
nicht schwankt wenn sich die Temperatur um ein halbes Grad ändert und
staune. Ich tippe nur ins Blaue und sag mal 0,1 ppm/K.
Da die vier Brückenwiderstände nicht, wie im Schaltbild, in
unmittelbarer Nähe des Wandlers angebracht sind, sondern wahrscheinlich
das volle Programm aus: Klemmstellen, Leitungen usw. mit sich bringen,
ist an dieser Stelle einiges an Sorgfalt von Nöten.
Da können schon mal Filterspulen und zusätzliche Kondensatoren nötig
werden.
Das alles ist aber vom konkreten Aufbau abhängig.
Bei 24 Bit können ganz normale Klemmen, zusammen mit etwas
Luftfeuchtigkeit, schon zum chemischen Element werden.
Schon allein der Gedanke, an etwas Brummspannung, kann Dir die letzten
10 Bit durcheinander bringen.
Und noch ein paar Nettigkeiten.
Stimmen denn die obigen Überlegungen mit dem Aufbau überein?
Kann mir Jemand erklären, warum der ADC nur arbeitet, wenn ich den REFO
control im SYS Register Enable? Was genau hat es damit auf sich?
Mit einem Gain von 1 (also OGA disablet) schwankt der ADC-Wert im nicht
belasteten Fall enorm, bei Belastung sowieso. Wenn ich den PGA enable
natürlich noch mehr.
Ich habe zwischen AIN1 und AIN2 100n (wie im Datasheet) verbaut.
Macht es weiterhin Sinn einen Kondensator zwischen die analogen
Leitungen und GND zu schalten? Weiss Jemand etwas über die
Serienwiderstände?
Ein weiterer Punkt wäre das Auslesen des ADCs. Ich verwerfe das LSB des
24-Bit ADC (dies ist ja das Status Bit) und lass mir die 23 Bit als
Integer anzeigen. Dies müßte korrekt sein. gel?
Also hat der 24 Bit ADC im Prinzip nur eine Auflösung von 23 bit?
Lümmel_01 schrieb:> schwankt der ADC-Wert im nicht> belasteten Fall enorm, bei Belastung sowieso
Was meinst Du eigentlich mit Belastung? Da ist doch nur die Brücke dran.
Und die verändert sich doch nicht extrem.
also erstmal wird dein Wert j aintern im ADC so berechnet:
3,3V / 2^24(bit) = 196,7 nV da ist es normal dass er mal um ca. 3000
counts, wenn nicht mehr Rauschen kann, je nach Aufbau und genutztem PGA
( normalerweise schwankt er bei PGA=1 weniger als bei höheren Werten).
Das nur um dir mal ein paar Hausmarken zu geben.
Was du mit dem letzten bit willst verstehe ich nicht, steht dazu etwas
im Datenblatt, ich habe das nicht gelesen, wenn du das selber so
bestimmst verstehe ich es noch weniger :)
Die positive Brueckenspannung darf natuerlich nicht die Speisung sein,
sondern sollte eine Referenz sein.
Und die Brueckenspeisung und die ADC-Referenzanschluesse duerfen nur an
der Bruecke zusammen sein
Vielen Dank schon mal für die Antworten.
Der gelesene ADC Wert wird im ADO Register zurückgegeben (siehe Anhang).
Das High Byte und Mittel Byte beinhalten jeweils 8 bit, das Low Byte
jedoch nur 7, da das letzte Bit als Code Status Bit interpretiert wird.
Ich habe das so verstanden, dass dieses 1 ist wenn das Register
erfolgreich gelesen würde.
Deswegen habe ich mit 3,3V / (2^23) = 0,39 uV gerechnet. Ist dies eine
falsche Annahme?
hm da kannst du recht haben, ich hab nur im Datenblatt überflogen ENB
ist 20bit, da würde es schon passen, wenn die einfach das LSB als Status
nehmen, so genau kann man das wegen Temperaturbauteiltoleranzen sowieso
nicht real benutzen, aber genau weiss ich das nicht.
Und noch kurz nur falls es dir nicht klar ist, wenn deine Referenzspg.
nicht stabil sind schwankt dein gewandelter ADC Wert natürlich immer
genau mit derselben Toleranz mit.
In der Praxis benutze ich entweder Referenzen, zB 2,5V oder meine ADCs
besitzen interne Referenzen, aber die Versorgungsspannung benutze ich
ungern oder garnicht, weil da meistens dann doch ein Schaltrippel drauf
sein kann, außer man regelt eben alles linear, das musst du dann wissen
bzw muss die Schaltung eben zeigen.
Danke wiederum für die hilfreichen Kommentare!
sdf schrieb:> hm da kannst du recht haben, ich hab nur im Datenblatt überflogen> ENB> ist 20bit
Was genau bedeutet ENB 20bit? Habe da im Datenblatt nix gefunden.
23 Bit ADC auslesen müßte passen.
> In der Praxis benutze ich entweder Referenzen..
Als Referenzspannung nutze ich ja die 3,3V des internen LDOs. Diese
greife ich an VDDA ab und führe sie zum REFP Pin. Ich habe also keine
externe Referenz und nutze auch nicht die Versorgungsspannung.
Habe leider die Schaltung hier nur auf dem Steckbrett. Deswegen kurz die
Erläuterung. Die Schaltung ist ähnlich dem obigen Application Circuit
aufgebaut.
Ich habe keine Brückenschaltung, sondern einen DMS. Das Prinzip sollte
jedoch dasselbe sein:
DMS:
+VCC, GND, SIG+ -> AIN1, SIG- -> AIN2
ADC:
VDDA an REFP (also 3,3V an REFP), VDDA und REFP über 100n an GND, REFN
und VSS natürlich an GND, REFO über 100n an GND.
Das müßte also prinzipiell genauso wie oben im Application circuit
dargetellt funktioren! Oder nicht?
Nochmal die Frage: Jemand eine Ahnung warum der ADC nur veränderliche
Werte ausliest, wenn ich den Voltage Reference Output enable? Das ist
mir nach wie vor unerklärlich
Steckbrett ... alles klar. Ein solcher ADC benoetigt eine Leiterplatte
mit groesster Aufmerksamkeit auf die Verlegung der Verbindungen,
speziell GND.
Toll dass es bisher so gut ging. Nochmals, mit Leiterplatte.
ENB heisst effective number of bits. Dh soviele Bits sind im besten Fall
brauchbar. ..im besten Fall brauchbar, mit optimaler Leiterplatte.
Lümmel_01 schrieb:> Habe leider die Schaltung hier nur auf dem Steckbrett.
Autsch, und das bei 23 bit…das wird ja schon bei 16 bit nix damit da nix
zappelt und du willst es auf 23 bit bringen? Also ich fände ja jetzt
interessant wofür du 23 bit brauchst. However, auf dem Steckbrett kannst
du locker die ersten 10 bits in die Tonne treten.
Lümmel_01 schrieb:> Als Referenzspannung nutze ich ja die 3,3V des internen LDOs.
Der hat im Bereich von -40 °C bis +85°C nur eine Temperaturstabilität
von 50 ppm/K (Datenblatt Seite 17). Soll deine Schaltung im Bereich von
20 °C bis 30 °C eingesetzt werden bräuchte deine Referenz aber für 23
bit (alternativ 16 bit) eine Temperaturstabilität von 0.006 ppm/K (0.763
ppm/K @ 16 bit). Das ist praktisch nicht errreichbar (mir ist keine
Referenzquelle bekannt, die so Temperaturstabil ist). Sorgst du dafür,
dass deine Schaltung auf einer Temperatur von z.B. 20 °C bis 20.5 °C
bleibt muss deine Referenz immer noch eine Stabilität von 0.119 ppm/K
(15.259 ppm/K @ 16 bit) aufweisen. Das ist zumindest für 16 bit leicht
erreichbar.
Du siehst, die Wahl der Referenz ist enorm von den Randbedingungen
abhängig und schon die alleine hat enormen Einfluss auf die Stabilität
des ADC-Wertes (man muss hier praktisch die Temperatur des ADCs konstant
halten unabhängig von den Umgebungsbedingungen wenn man 23 bit nutzen
will). Dann kommen auch noch so Sachen wie Rauschen am Eingang hinzu und
die Temperaturstabilität des "Messobjekts" am Eingang. Was stellst du
dir denn vor wie stabil es sein sollte?
OK, wow.
Erstmal vielen Dank für die Antworten. Habe dann noch diverse Fragen.
1. Im Datenblatt steht effective Number of bits at 21 bit and 100nV
sub-variable Signal...
-> d.h. also dass ich die ersten beiden Bits (und das letzte) verwerfen
kann/sollte?
2. Es ist also scheinbar nur der LDO so temperaturabhängig. Was ist wenn
ich eine externe Spannung als SPannungsreferenz benutze. Angenommen ich
habe auf dem Board 3,3V zur Verfügung. Macht es dann Sinn diese 3,3V
über 100n einfach an REFP zu hängen?
Kann man sagen dass um so höher die Auflösung, dass um so ungeeigneter
die internen Referenzen sind? Also wenn hohe Auflösung gefordert ->
externe Referenzpsg. ?
3. Ist die Schaltung prinzipiell wie oben beschrieben in Ordnung (ich
werde hier aber mal einen vernünftigen Schaltplan posten).
4. Bei hoher Auflösung also kein "drum rum kommen" eine LP zu fertigen?
5. Nochmal die Frage: Jemand eine Ahnung warum der ADC nur veränderliche
Werte ausliest, wenn ich den Voltage Reference Output enable?
Vielen Dank für die Mithilfe. So langsam wird die Welt verständlicher :)
Vergleich die interne Referenz mit einer ADR421, bezueglich Genauigkeit,
Offset, Rauschen.
Allenfalls ist man auch mit relativen Resultaten zufrieden ... dann muss
die Referenz nur stabil, und hinreichend rauscharm sein.
Lümmel_01 schrieb:> -> d.h. also dass ich die ersten beiden Bits (und das letzte) verwerfen> kann/sollte?
Die beiden niederwertigsten Bits kannst du getrost wegwerfen.
Wahrscheinlich liegen die mitten im Rauschen (hab jetzt nicht so genau
ins Datenblatt geschaut)
Lümmel_01 schrieb:> Es ist also scheinbar nur der LDO so temperaturabhängig.
Du misst eine Widerstandsbrücke? Neben dem Rauschen der Widerstände
driften auch die Temperaturabhängig. 100 ppm/K ist da nicht unüblich.
Lümmel_01 schrieb:> Was ist wenn> ich eine externe Spannung als SPannungsreferenz benutze. Angenommen ich> habe auf dem Board 3,3V zur Verfügung. Macht es dann Sinn diese 3,3V> über 100n einfach an REFP zu hängen?
Kommt drauf an wie temperaturstabil die Quelle ist.
Lümmel_01 schrieb:> 3. Ist die Schaltung prinzipiell wie oben beschrieben in Ordnung (ich> werde hier aber mal einen vernünftigen Schaltplan posten).
ja klar, im Datenblatt steht in der Regel kein Quatsch.
Lümmel_01 schrieb:> 4. Bei hoher Auflösung also kein "drum rum kommen" eine LP zu fertigen?
Na auf dem Steckbrett kannst du es auf jeden Fall vergessen
Lümmel_01 schrieb:> 5. Nochmal die Frage: Jemand eine Ahnung warum der ADC nur veränderliche> Werte ausliest, wenn ich den Voltage Reference Output enable?
Wie gesagt, ich hab nicht genau ins Datenblatt geschaut aber ohne
Referenzspannung macht es ja keinen Sinn einen ADC-Wert zu bestimmen.
Top, schon mal vielen Dank!
> Wie gesagt, ich hab nicht genau ins Datenblatt geschaut aber ohne> Referenzspannung macht es ja keinen Sinn einen ADC-Wert zu bestimmen.
Also wenn damit die Referenzspannung enablet werden würde, würde es
natürlich Sinn machen! Ich habe es so verstanden, dass hier aber der
REFO (REF Output Pin) enablet wird, an dem 1,2V bzw. 1,5V abgegriffen
werden. Dann würde es nämlich NULL Sinn machen, wenn nur dann der ADC
funktionieren würde????
Ich habe im Anhang mal kurz das Schaltbild hingeschustert, wenn ich die
interne LDO Spannung als Referenz nutzen würde, weil ich in der Tat
überlege eine kleine Platine fertigen zu lassen. Passt das Schaltbild
so? VDDA mit REFP verbunden?
Michael Köhler schrieb:> Vdd musst du aber auch noch anschließen, sonst schauts eng aus mit> der> Kommunikation ;)
:)
VDD natürlich noch.
Für externe Referenzspannung (zum Beispiel VDD = 3,3 V sähe das dann wie
im Anhang aus)?
In beiden Fällen muss VDDA zwingend mit REFP verbunden sein, richtig?
Bin da etwas verwirrt, da man ja auch intern VDDA direkt auf den AD
Wandler geben kann, also REFP eigentlich gar nicht nutzen muss (siehe
Blockdiagramm S. 7).
Ansonsten müßte der Schaltplan für externe Referenz dann so passen?
Welche Variante würdet Ihr bevorzugen?
Nochmal zum REFO:
Mit ENREFO enable ich laut Datenblatt die REFO control. Diese kann ich
ja auf 1,2V oder 1,5V setzen. ich verstehe das so, dass ich darüber
einfach den Output des REFO Pin aktiviere und dann auf 1,2 bzw. 1,5V
setzen kann.
Wenn nach Herrn Köhlers Theorie ich einfach die Referenzspannung damit
enable würde es wiederum Sinn machen
Lümmel_01 schrieb:> Für externe Referenzspannung (zum Beispiel VDD = 3,3 V sähe das dann wie> im Anhang aus)?
Kann man so machen, würde ich aber nicht. Die Referenzspannung sollte
schon eine eigene Referenzquelle sein. So kannst du auch die Interne
benutzen was wahrscheinlich wesentlich sinnvoller, da stabiler, ist.
Lümmel_01 schrieb:> In beiden Fällen muss VDDA zwingend mit REFP verbunden sein, richtig?
Das weiß das Datenblatt aber ich denke nicht dass man den VDDA-Pin mit
dem REFP-Pin verbinden muss denn wie du schon sagst kann man das ja auch
intern im Chip machen.
Lümmel_01 schrieb:> Ansonsten müßte der Schaltplan für externe Referenz dann so passen?
Die Referenzspannungsquelle sollte in dem Fall was separates sein, dass
nicht mit VDD und/oder VDDA verbunden ist. Sonst ist das ziemlich
witzlos.
OK, also VDDA nicht zwingend mit REFP verbinden.
Ich arbeite jetzt erstmal mit der internen 2,4V LDO Spannung und der
geringsten Samplerate von 10sps (was natürlich sehr langsam ist) und
einem Gain von 8.
Hierbei ergeben sich bei der Auslesung schon sehr konstante ADC-Werte.
ich werde mir aber überlegen mir eine eigene LP fertigen zu lassen.
Wenn dann externe Referenzspannung, dann auf keinen Fall
Versorgungsspannung etc. ist abgespeichert.
Wenn jemand noch eine Idee bzgl. des mysteriösen ENREFO hat bin ich
immer offen :)
Ansonsten vielen Dank an Alle und vor allem Herrn Köhler!
Gruss
Die Speisung des DMS muss natuerlich von der Referenz kommen. Die
Referenzeingaenge des ADC werden am DMS an die Bruecke gelegt. Nirgendwo
anders.
An dieser Stelle sollte man sich loesen davon, wie man normalerweise
Schaltschemas zeichnet. GND ist nicht GND.
Zur Kommunikation mit dem Controller muss auch noch der GND verwendet
werden. Und in die Daten & Clock Leitungen zum Controller 100 Ohm
Seriewiderstaende.
OK schon mal vielen Dank.
OK dann war dies bis dato noch ein eklatanter Fehler. Die Speisung des
DMS (also wie im Anhang) unbedingt an REFP (und damit VDDA).
Die "Masse" des DMS hat dann dasselbe potential wie REFN!!! Danke dafür.
So wie im obigen Schaltplan müßte es passen??
> Und in die Daten & Clock Leitungen zum Controller 100 Ohm> Seriewiderstaende.
Wofür sollte das gut sein? Habe gesehen dass in die analogen
Eingangsleitungen des ADC 100 Ohm in Serie geschaltet werden. ? Wofür
sind diese gut?
Siebzehn Zu Fuenfzehn schrieb:> Nee, die 100 Ohm zwischen ADC und Controller nicht zum DMS.> Und RefP und RefN an den DMS
OK die 100Ohm raus. Das leuchtet ein.
REFP ist doch mit +DMS verbunden?? -> REFP an die Brücke gelegt
REFN ebenfalls auf selben Potential wie GND_an am DMS? -> REFN ebenfalls
an die Brücke gelegt?
Wo ist der Denkfehler?
Lümmel_01 schrieb:> Hier sollte dann die finale Version sein.
Ohne einen CKIN wird der ADC wahrscheinlich auch nix machen. Ich
empfehle dir dringend das Datenblatt genau durchzulesen. Das sind zu
viele "Flüchtigkeitsfehler".
EDIT: OK, hab mal kurz ins Datasheet geschaut. Er hat auch einen
Internen RC-Osc. Dann braucht man CKIN doch nicht beschalten. Dennoch
scheint mir dir fehlt ein wenig Grundwissen.
Das stimmt schon. Ich habe auch ausführlich ins Datenblatt geschaut
manche Dinge sind mir aber halt trotzdem nicht ganz klar.
Warum genau benötigt der DMS beispielsweise undbedingt die Referenz als
Speisung?
Warum kann ich hier nicht konstant, sagen wir 3,3V anlegen?
>Warum kann ich hier nicht konstant, sagen wir 3,3V anlegen?
Weil das Messignal proportional zu dieser angelegten Spannung ist. Wenn
die als Speisung um 1% schwankt, was eine Speisung tun darf, aendert das
gemessene Signal auch um 1%. Deswegen nimmt man eine Referenz, die eine
Stabilitaet von beliebig wenig hat.
Es geht nicht nur um die stabilitaet der angelegten spannung, sondern
auch um den Dreck drauf. Rauschen, Spikes, usw. Da ist eine Referenz
einfach besser geeignet
Wenn wir grad dabei sind ... Ein DMS kann je nach Ausfuehrung Strom
ziehen. Die Referenz muss den auch bringen koennen.
Ich hatte auch mal ein hochgenauen ADC (7730). Die Platine haben Profis
gemacht mit niedrigsten Toleranzen. Auf dem Chip wurde noch Oversampling
und Filter eingeschaltet. Trotzdem wurden von dem 24Bit Ergebnis erst
einmal die letzten 6 gelöscht, weil das da nur gerauscht hat.
Und auf einem Steckbrett bekommt man noch mehr Rauschen.
Du kannst also üben, ob die Programmierung klappt. Aber >12 Bit
Genauigkeit würde ich dir nicht geben Das ist ca 1 mV. Und die 12 Bit
hätte man einfacher als mit deinem Chip bekommen.
In meiner Anwendung ging es auch um DMS.
Hacky, vielen Dank für die ausführliche Erklärung!
Und auch an Pitty vielen Dank für den Hinweis.
Zum Testen der Programmierung ist es sicherlich gut geeignet. Register
beschreiben, auslesen etc. funktioniert auf jeden Fall schon einmal
einwandfrei.
Ich werde auf jeden Fall mal eine kleine Platine fertigen lassen.
Habe mir beim Schaltplan nochmal etwas mehr Mühe gegeben, so dass er
hoffentlich besser lesbar ist. Die 100 Ohm Widerstände in der CLOCK und
SDA Leitungen fehlen hier noch.
In meiner derzeitigen Anordnung hab ich definitv (wie von Euch Allen
vermutet) ein Rauschen von mindestens 8 Bit.
Deswegen einfach mal ne LP nach obigen Schaltplan.
Bedankt