Forum: Mikrocontroller und Digitale Elektronik 16Bit ADC steht bis aufs letzte Bit still, kann das sein?


von Layouter (Gast)


Lesenswert?

Ist ein bisschen länger geworden, hoffe es schreckt Euch nicht gleich 
ab.


Salu zusammen

Ich habe hier ein bisschen ein komisches Problem. Meine Schaltung ist 
„zu gut“ g Vielleicht höre ich die Flöhe husten, aber so ganz kann ich 
die Sache einfach nicht glauben und ihr noch weniger vertrauen. Gleich 
vorweg, ich kann das SCM nicht posten, aber ich habe den wichtigen Teil 
denke ich unten gut beschrieben.

Zur Umgebung:
Die Schaltung ist genau 1x vorhanden, habe also kein Vergleichsobjekt an 
welchem ich Messungen anstellen könnte. Ebenso sind Messgeräte 
vorhanden, aber ob die in dieser Grössenordnung noch genau genug sind, 
naaaaaja :o) Und da ich schon genug lang diesen Beruf ausübe bin ich 
beim Messen auch schon so einige Male auf die Schnauze gefallen.

Hardware:
Es handelt sich um zwei Drucksensoren (Freescale MPXH6115 und MPX6400)
MPXH6115 Umgebungsdrucksensor / MPX6400 4Bar Absolut Drucksensor. Da das 
Ausgangssignal ratiometrisch ist, habe ich die Speisung der Sensoren 
über eine +5V Präzisionsquelle von Maxim realisiert. Da ich in der 
Schaltung am Eingang zwingend einen Schaltregler verbauen muss, ist 
diese Spannung (7.5V) die Eingangsspannung der Präzisionsquelle. Sicher 
nicht optimal, aber es ging nicht anders mit vertretbarem Aufwand. 
Natürlich habe ich alle Quellen, wie so üblich in Messsystemen, 
überdimensional abgeblockt. Heisst, es hängen da schon so einige C’s rum 
:o))
Das PCB ist gefräst, 2 Lagen. Ich habe sehr lange als Layouter 
gearbeitet. Denke das PCB ist mir gut gelungen, aber wie so oft bei 
Fräslayouts ist es halt nicht immer 100% optimal. Nur schon ein 
Messsystem auf 2 Lagen zu bauen ist meines Erachtens fragwürdig, vor 
allem wenn es Einzelstücke sind und es jetzt nicht auf jeden Cent 
ankommt.

Der Ausgang der Drucksensoren hängt an 4 OPs (1. OP Impedanzwandler, 2,3 
OP TP-Filter 4. Ordnung (Butterworth / Sallen Key), 4. OP 
Impedanzwandler) Als OPAMP fungiert ein AD8630, 4fach, Single Supply, 
Rail to Rail Zero Offset ) und gehen danach in einen ADC von Analog 
Device (AD7685 Approx, 16Bit no missing code).
Die Filter haben eine Bandbreite von 1kHz (gemessen) daran kann das 
folgende Problem also auch nicht liegen ;o)
Ausgelesen wird der ADC über eine pseudo SPI Schnittstelle mittels eines 
uP. Was ich weiss, die uP Seite sollte nicht das Problem sein (SPI-Bus 
Einstellungen) da diese Routinen seit geraumer Zeit im Einsatz wunderbar 
funktionieren, aber ausschliessen will ich auch das nicht.

Nun zum Problem:
Es ist egal wie schnell ich den ADC „rennen“ lasse, ob ich 1x pro 
Sekunde Sample, oder 10000x. Die Messwerte beider Sensoren stehen bis 
aufs letzte Bit still! Kann machen was ich will, das Teil steht still. 
Habe mir hierzu ein Array gebaut in welchem ich die Messwerte ablege. 
Die Messwerte stimmen sehr genau. Laut unserem Meteorologischen Dienst 
hatte ich 98.16hPa Umgebungsdruck und der eine Sensor zeigte 98.6hPa und 
der andere 99.0…. an.

So, hab ich mir gedacht, 16Bit stillstehen?? Auf einer gefrästen 
Platte?? :o)))) Mit dem Oszi sieht die Sache zwar gut aus, aber da ich 
nur ein Digital Oszi habe ist da halt immer ein gewisses rauschen 
vorhanden. Da kann ich echt nicht sagen ob ich nun was Falsches messe, 
oder ob ich wirklich dieses Rauschen habe. Dies müsste der ADC auf alle 
Fälle registrieren (grösser 1LSB)
Hmmmm, also mal in das Teil reingepustet… In meinem Array sehe ich dann 
wie sich die Messwerte ändern. Dabei habe ich auch aufeinander folgende 
Messwerte. Scheint also kein LSB Problem vorzuliegen. Dachte zuerst das 
z.B. das letzte Bit immer verschluckt wird oder so. Was ich sagen muss, 
bei den ADC’s handelt es sich um Samples von Analog Device. Der Rest der 
Bauelemente wurde über Distis besorgt.

Tja, jeder andere würde sich wohl freuen, aber ich arbeite genug lange 
auf diesem Beruf um bei solchen Sachen nicht in Euphorie auszubrechen, 
sondern eher mal einen Schritt zurück zu treten und mir zu überlegen, ob 
dies nun wirklich sein kann.
Wie würdet Ihr bei der weiteren Fehlersuche vorgehen? Was habe ich nicht 
beachtet? Andere Drücke anlegen, welche referenzierbar sind, wird sehr 
schwierig, da fehlen mir echt die Messmittel.

Über Tipps würde ich mich freuen

Grüessli

Layouter

von Mr. K. (kaktus-)


Lesenswert?

Dein Text ist echt zu lang, und viel unnötiges bla bla.

Wenn deine letzten Bit nicht rauschen, dann vieleicht weil deine max. 
Spannung an den ADCs ereicht ist .

Check doch erst mal deine ADCs.
Nemm ein Poti oder einen Spannungsteiler 50/50 und häng den von dern 
Uref nach gnd und den Mittelanschluss auf deinen ADC Eingang

Wenn ich richtig rechne ist dein höchster ADC Wert Dez. 65536 bei 16 
Bit.

Du mußt also in etwa Dez. 32768 messen.

von Lästermaul (Gast)


Lesenswert?

Nachdem du deinen Text gekürzt hast, könntest du ihn für den zweiten 
Band einreichen.

http://www.amazon.de/SMS-M%C3%A4rchen-Grimm-Co-Zeichen/dp/3939435449

von Ulrich (Gast)


Lesenswert?

Wirklich 16 stabile Bits mit einem Drucksensor zu bekommen ist schon 
ungewöhnlich - zumindest wenn der Bereich einigermaßen voll ausgenutzt 
wird. Wenn man relativ viel Geld ( so > 1000 EUR für den Sensor) 
ausgiebt, kriegt man schon auch sehr gute Sensoren wo die 16 Bit und 
ggf. sogar etwas mehr möglich sind - unmöglich ist das also nicht.

Ein wenigstens grober Test für den Skalenfaktor wäre schon angebracht. 
Da muss nicht super Genau sein, sondern mehr als Test, dass man nicht um 
einen Faktor 2 oder gar 10 daneben liegt.

Kontinuierliche Werte beim AD heißt noch nicht, dass mit irgendwie ein 
paar der unteren Bits verloren gegangen sind. Das sieht man eher am 
Skalenfaktor.

von Layouter (Gast)


Lesenswert?

Salu

Da liegt das Problem nicht, ich weiss schon wie man einen ADC bedient 
;o) Ebenso habe ich natürlich den Output der Sensoren gemessen, nach 
jeder OP Stufe ect. Habe alles auch mit dem Datenblatt verglichen und 
das stimmt.

Gruss

von Bernd (Gast)


Lesenswert?

Merkwürdig.

Denke, dass da eher zuviel Aufwand getrieben wurde.
Also, dass durch die 4 OPs leicht zusätzliche Drift
dazukommen kann.

Überschlagsbetrachtung:

MPX 6115: 46 mV / kPa = 4,6 mV / hPa (früher mBar)

16 Bit bei 5 V entspricht 0,076 mV pro LSB.

Auflösung ca. 1/60 hPa.

Da sollte man IMMER was sehen, schon wenn die Tür
geöffnet/geschlossen wird...

Bei 98 statt bekömmlicheren 980 hPa Umgebungsdruck
könnte man allerdings schon etwas Probleme haben,
Messwerte abzulesen. ;-)
(Wohl ein Fehler in der Dezimalstelle?)

von Layouter (Gast)


Lesenswert?

Ok, der Tipp mit dem Skalenfaktor muss ich mir überlegen und testen. 
Vielen Dank für den Tipp! Was ein bisschen dagegen spricht ist, wenn ich 
das jetzt richtig interpretiere, dass ich zwar zwei Drucksensoren habe, 
aber die natürlich eine ganz andere Skaleneinteilung haben. Sprich der 
eine hat bei Umgebungsdruck ca. 1V, der andere 4V (nagelt mich auf die 
Werte nicht fest). Das würde ja dann eigentlich dagegen sprechen, oder?

Grüessli

von Layouter (Gast)


Lesenswert?

Sorry, Schreibfehler natürlich ;o) Das wäre dann ja schon klar g

von Mr. K. (kaktus-)


Lesenswert?

Wenn deine letzten Bit nicht rauschen, dann vieleicht weil deine max.
Spannung an den ADCs ereicht ist .

Check doch erst mal deine ADCs.
Nemm ein Poti oder einen Spannungsteiler 50/50 und häng den von dern
Uref nach gnd und den Mittelanschluss auf deinen ADC Eingang

Wenn ich richtig rechne ist dein höchster ADC Wert Dez. 65536 bei 16
Bit.

Du mußt also in etwa Dez. 32768 messen.

von Layouter (Gast)


Lesenswert?

@Mr Kaktus

Ich habe Deinen Beitrag schon gelesen, aber daran kanns nicht liegen.

Am 1. ADC liegen, gemessen mit Oszi ca. 4V an und der AD Wert welchen 
ich auslese stimmt mit dem überein.

Am 2. ADC liegen, gemessen mit Oszi ca. 1V an und der AD Wert welchen 
ich auslese stimmt mit dem überein.

Alles bezogen auf +5V Ref von einer Präzisionsquelle.

Gruss

von Mr. K. (kaktus-)


Lesenswert?

Ok, das hört sich soweit gut an. Was ich noch nicht verstanden habe, was 
ist das für ein ADC? ein µC ein ATmel.

Was ist wenn du einen 1k Widerstand nimmst und denn ADC Eingang nach 
Masse belastest? DAnn muss sich doch was ändern?

von Falk B. (falk)


Lesenswert?

@  Layouter (Gast)

>Am 1. ADC liegen, gemessen mit Oszi ca. 4V an und der AD Wert welchen
>ich auslese stimmt mit dem überein.

Und zuckt der Wert, wenn man auf den Sensor klopft? Vielleicht fehlt 
einfach das Sample/Update Signal am ADC und der haut nur einen einmalig 
richtig gemessenen Wert immer wieder raus ;-)

MfG
Falk

von Layouter (Gast)


Lesenswert?

@ Falk

Yep, der zuckt schon :o)) Das ist es ja. Beide Sensoren zucken. Am Abend 
war laut Meteo auch eine kleine Luftdruckänderung, haben beide wunderbar 
gezeigt. Ich weiss eigentlich dass es nicht sein kann und trotzdem seh 
ichs vor mir :o) Tja, werd den Fehler schon noch finden.

Grüessli

von Harald B. (haraldino)


Lesenswert?

Stell doch mal das Layout rein damit wir sehen können was du da 
angerichtet hast! ;- )

von Udo S. (urschmitt)


Lesenswert?

Vieleicht liest du 2mal das high-byte aus?

von Franz (Gast)


Lesenswert?

Udo Schmitt schrieb:
> Vieleicht liest du 2mal das high-byte aus?

LOL, geil...jetzt wird aber auch alles versucht, um das Ergebnis zu 
widerlegen.

Aber stimmt schon - ich baue auch Elektronik für Drucksensoren und da 
einen 100% stabilen Wert (ohne Mittelung o.ä.) zu bekommen ist nahezu 
unmöglich.

von Udo S. (urschmitt)


Lesenswert?

Franz schrieb:
> LOL, geil...jetzt wird aber auch alles versucht, um das Ergebnis zu
> widerlegen.
Hatte ich schon gesehen, copy und paste und vergessen den Registername 
zu ändern. Und dann wundern daß sich die Werte nur etwas sprunghaft 
ändern und ansonsten superstabil stehen.

von Harald B. (haraldino)


Lesenswert?

Ich habs auch gesehen ;)

von Layouter (Gast)


Lesenswert?

So, Problem gelöst...

Hätte ich jetzt nicht gedacht, aber ich hab nun die Samples von Analog 
durch solche vom Distributor ersetzt. Und siehe da: Die letzten Bits 
zappeln nun auch. Programm ect. alles gleich, hab nur die beiden IC 
getauscht.

Jetzt bin ich in 2 Jahren schon 2x mit Samples auf die Schnauze 
gefallen... Jenu, verbuche jetzt das mal als Lehrgeld.

Grüessli

Layouter

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.