Forum: Mikrocontroller und Digitale Elektronik ADC vs. Oszilloskop: starke Abweichungen


von Alex V. (bastel_alex) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

ich kaue an Folgendem Problem:

Ich habe einen messaufbau mit Si-Photodiode mit TIA, der zyklisch ein 
zeitgemultiplextes optisches signal vermessen soll: Zwei LEDs mit je 2 
Wellenlängen im Infrarotbereich, dann einmal Pause für eine 
Dunkelstrommessung.

Das Photodiodensignal wird von einem ADS1299 Analogfrontend 24Bit AD 
Gewandelt mit 500Sps. Das Data Ready Signal des ADS1299 (active low) ist 
das Zeichen für den Mikrocontroller, auf die nächste Wellenlänge (oder 
aus) zu schalten.
Verwendet werden soll nur jedes zweite sample, da das erste die "dwell 
time" der umgeschalteten photodiodensignale enthält.

Das Problem: Messe ich nun mit dem Oszilloskop parallel am Signalausgang 
der Photodiode deren Signal (und das Data Ready Signal des ADS1299), 
bekomme ich stark abweichende Werte zum ADC Ergebnis.

Die Messungen sind angehängt: Das Balkendiagramm zeit die ADC Werte in 
mV umgerechnet, das Oszibild zeigt in Blau das Photodiodensignal und in 
Gelb die DRDY peaks.

Da es je zwei Messungen pro optischem State (/Wellenlänge) gibt, war in 
der ersten Messung zu erwarten, dass diese Messung "nachhängt", weil sie 
noch die Übergänge der Photodiodenlevels beinhalten. Die jeweils zweite 
Messung, die bei stabilem Level gemacht wird, unterscheidet sich jedoch 
immernoch stark vom Oszisignal. Beispiel:

Dunkelstrom (Messungen Nr. 3, 13, 23): 44mV vs. 28mV.
Maximaler Peak (Messungen Nr. 7,17,27): 393mV vs. 442mV.


Klar ist, dass das Oszi ein viel stärkeres Eingangsrauschen (mV)hat - 
das aber hier nicht den ausschlag geben kann.

Außerdem angemerkt werden muss: Das Photodiodensignal ist derzeit NICHT 
Anti-Alias-Gefiltert (im Design vergessen) - der ADS1299 hat einen 
integrierten Delta-Sigma Wandler, der Oversampled und damit auch 
Aliasing dämpft. Trotzdem fehlt der Filter und ist in der neuen Version 
dabei (fc = 3.2kHz). Kann das Problem hierher kommen?

Letzte Anmerkung: Stelle ich alle LEDs aus und messe nur den 
Dunkelstromwert, ist der korrekt. An der Umrechnung etc. liegt es also 
nicht.

von c-hater (Gast)


Lesenswert?

Alex V. L. schrieb:

> Gewandelt mit 500Sps.

Tatsächlich nur 500 Samples pro Sekunde? Oder fehlt da eventuell eine 
Vielfachen-Kennung?

> Die Messungen sind angehängt: Das Balkendiagramm zeit die ADC Werte in
> mV umgerechnet, das Oszibild zeigt in Blau das Photodiodensignal und in
> Gelb die DRDY peaks.

Also ich kann da nix Gelbes sehen. Aber egal: das Blaue würde ich für 
das Abbild einer Zeitkonstanten halten. Wenn du den Level an den 
Photodioden testweise mal die doppelte Zeit hältst, wird sich das 
vermutlich noch eindrucksvoller darstellen und dann auch erlauben, Tau 
zumindest näherungsweise abzuschätzen.

Wo die Zeitkonstante herkommt, mußt du dann allein herausfinden, dazu 
reichen die gegebenen Informationen nicht. Ich würde mal direkt auf das 
Wandlerprinzip des AD-Wandlers tippen, jedenfalls, wenn wie oben 
vermutet, da ein kleines k fehlt...

> Da es je zwei Messungen pro optischem State (/Wellenlänge) gibt, war in
> der ersten Messung zu erwarten, dass diese Messung "nachhängt", weil sie
> noch die Übergänge der Photodiodenlevels beinhalten. Die jeweils zweite
> Messung, die bei stabilem Level gemacht wird, unterscheidet sich jedoch
> immernoch stark vom Oszisignal.

Und bei doppelter Zeit für die Pegel (oder "optischen States") wäre der 
jeweils dritte Wert wohl schon näher am tatsächlichen und der vierte 
noch näher, wobei die Annäherung immer langsamer erfolgt.

von Klaus (Gast)


Lesenswert?

In solchen Fällen ist es zweckmässig niemals den Schaltplan oder ein 
Foto vom Aufbau zu zeigen.
Ach so! Hast Du ja nicht. Dann bitte ich um Entschuldigung.

von Achim S. (Gast)


Lesenswert?

Filtere dein Oszisignal mal (in Gedanken oder auf dem Computer) mit 
einem 131Hz Tiefpass. Das ist nämlich die Analogbandbreite, die dein ADC 
bei 500S/s hat. Dann sehen die Kurven vielleicht gar nicht mehr so 
unterschiedlich aus.

von AbkErf (Gast)


Lesenswert?

Alex V. L. schrieb:
> Ich habe einen messaufbau mit Si-Photodiode mit TIA, der zyklisch ein

Ab in die Klinik:
http://de.wikipedia.org/wiki/Transitorische_isch%C3%A4mische_Attacke

von Alex V. (bastel_alex) Benutzerseite


Angehängte Dateien:

Lesenswert?

c-hater schrieb:
> Tatsächlich nur 500 Samples pro Sekunde? Oder fehlt da eventuell eine
> Vielfachen-Kennung?

der ADS1299 sampled mit 1.024 MHz, ist ja ein Delta-Sigma Modulator 
drin. On Chip sind dann Decimation filter, die man einstellen kann, in 
meinem Fall so, dass der ADC auf 500SPS dezimiert.

c-hater schrieb:
> Also ich kann da nix Gelbes sehen.

Die sehr feinen haarstriche alle ~2ms müsste man eigentlich grade noch 
sehen können!

Klaus schrieb:
> In solchen Fällen ist es zweckmässig niemals den Schaltplan oder ein
> Foto vom Aufbau zu zeigen.

Ist nicht geschehen weil ich vorenthalten oder leute doof lassen will, 
tatsächlich ist der eigentliche schaltplan 4 dinA4 seiten groß, und auch 
ein ausschnitt hilft nicht, weil er nur die Photodiode mit RC Tiefpass 
und den Eingang vom ADC zeigt... aber bitte, da.

Achim S. schrieb:
> Filtere dein Oszisignal mal (in Gedanken oder auf dem Computer) mit
> einem 131Hz Tiefpass. Das ist nämlich die Analogbandbreite, die dein ADC
> bei 500S/s hat

Wie kommst du/man auf diesen Wert der Analogbandbreite?

Grüße
Alex

von Achim S. (Gast)


Lesenswert?

Alex V. L. schrieb:
> Wie kommst du/man auf diesen Wert der Analogbandbreite?

Aus Tabelle 1-4 im Datenblatt.

"Analogbandbreite" war natürlich nicht wirklich eine gute Wortwahl von 
mir. Wenn du im Analogteil das Abtasttheorem einhältst (bezogen auf die 
Oversampling Rate des ADC), dann sind die 131Hz die Signalbandbreite, 
die nach den digitalen Filtern des ADCs übrig bleibt (bei 500S/s)

von Alex V. (bastel_alex) Benutzerseite


Lesenswert?

Achso, verstehe, danke!
Was ich aber nicht verstehe ist, wieso das eine Auswirkung auf mein 
Signal hat, denn - zumindest jeden zweiten durchlauf - sample ich ja 
einen DC signalpegel!?

von Achim S. (Gast)


Lesenswert?

Alex V. L. schrieb:
> Was ich aber nicht verstehe ist, wieso das eine Auswirkung auf mein
> Signal hat, denn - zumindest jeden zweiten durchlauf - sample ich ja
> einen DC signalpegel!?

Dein Zeitmux springt alle 5ms auf einen neues Signal. Der ADC hat aber 
aufgrund seiner Bandbreite eine Zeitkonstante von 4,8ms. Innerhalb der 
5ms, die die jeweilige Signalquelle konstant anliegt, ist er bei weitem 
noch nicht auf den neuen Wert eingeschwungen.

Delta-Sigma ADCs sind nicht besonders toll für Zeitmultiplex geeignet: 
man schleppt die Vorgeschichte des Signals nach dem Umschalten noch 
lange mit.

von c-hater (Gast)


Lesenswert?

Alex V. L. schrieb:

> Die sehr feinen haarstriche alle ~2ms müsste man eigentlich grade noch
> sehen können!

Nein, kann man nicht. Hier rächt es sich wohl, wenn man unfähig ist, ein 
geeignetes Bildformat für den darzustellenden Inhalt zu wählen.

Für haarfeine gelbe Striche auf weißem Grund ist JPEG jedenfalls ganz 
offensichtlich absolut ungeeignet. Das ist nur gut für Fotos mehr oder 
weniger "natürlicher" Umgebungen, nicht für CGI-Grafiken.

So hast du wenigstens schonmal etwas gelernt. Und das durchaus Witzige 
ist: es handelt sich dabei um ein ganz ähnliches Problem wie das, 
weswegen du eigentlich geposted hast...

von Achim S. (Gast)


Lesenswert?

Achim S. schrieb:
> Der ADC hat aber
> aufgrund seiner Bandbreite eine Zeitkonstante von 4,8ms.

Ups, sorry, verrechnet. Die 131Hz entspechen einer Zeitkonstante von 
1,2ms. Innerhalb der 5ms Zeitscheiben schwingt der Ausgang des ADC also 
grade so halbwegs ein, aber die Verschmierung der Flanken siehst du in 
den ADC-Werten natürlich trotzdem noch.

von Alex V. (bastel_alex) Benutzerseite


Lesenswert?

c-hater schrieb:
> Nein, kann man nicht. Hier rächt es sich wohl, wenn man unfähig ist, ein
> geeignetes Bildformat für den darzustellenden Inhalt zu wählen.

Vielleicht rächt sich auch, wenn man, weil das haten und unterstellen 
einem so viel spaß macht, nicht richtig liest: Die gelben striche sind 
im Bild des Oszis zusammen mit dem blauen verlauf des 
photodiodensignals. Das balkendiagramm (jpg) enthält kein gelb - stimmt. 
Das oszibild wiederum habe ich unkomprimiert hochgeladen (wurde dann 
durch die forensoftware zu png komprimiert).

c-hater schrieb:
> So hast du wenigstens schonmal etwas gelernt. Und das durchaus Witzige
> ist: es handelt sich dabei um ein ganz ähnliches Problem wie das,
> weswegen du eigentlich geposted hast...

Da ich aber verstehe worauf du hinaus wolltest: Trotzdem schöner 
Vergleich!

Achim S. schrieb:
> Dein Zeitmux springt alle 5ms auf einen neues Signal. Der ADC hat aber
> aufgrund seiner Bandbreite eine Zeitkonstante von 4,8ms. Innerhalb der
> 5ms, die die jeweilige Signalquelle konstant anliegt, ist er bei weitem
> noch nicht auf den neuen Wert eingeschwungen.
>
> Delta-Sigma ADCs sind nicht besonders toll für Zeitmultiplex geeignet:
> man schleppt die Vorgeschichte des Signals nach dem Umschalten noch
> lange mit.

Danke Achim für die Erläuterung, jetzt macht alles Sinn!
Da zeigen sich mal wieder die noch vorhandenen Lücken im Wissen. 
Tatsächlich habe ich diese Info (wie genau kommst du denn auf die 
Zeitkonstante von 4.8ms?) aus offensichtlich vorhandener Ignoranz nicht 
mit einbezogen beim Design.
Handelt es sich hier um eine Konstante des Dezimierfilters - und damit 
eine Einstellbare Größe (mögliche sampleraten sind ja 250-16ksps) oder 
so etwas wie die analoge slew rate eines opams, die ich nur im 
datenblatt übersehen habe ...?

Edit: Da du dich verrechnet hattest und immernoch Tabelle 1-4 verwendet 
hast ist die Antwort ja klar ersteres.

: Bearbeitet durch User
von Achim S. (Gast)


Lesenswert?

Alex V. L. schrieb:
> Handelt es sich hier um eine Konstante des Dezimierfilters - und damit
> eine Einstellbare Größe (mögliche sampleraten sind ja 250-16ksps)

Ja, sie kommt durch das Filter, und (wie schon im letzten Beitrag 
korrigiert) hätten die 4,8ms eigentlich 1,2ms sein müssen. Die 
Zeitkonstante skaliert also mit der 1/Samplerate.

Weiter unten im Datenblatt des ADCs findest du noch eine deutlich 
ausführlichere Beschreibung der Filtercharakteristik (ich habe für meine 
Umrechnung von 131Hz auf 1,2ms einfach so getan, als wäre es ein 
RC-Filter erste Ordnung).

von Alex V. (bastel_alex) Benutzerseite


Lesenswert?

Danke, ist gelöst!

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.