mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik SAR ADC erzeugt Spikes während AD Wandlung?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Ingo S. (logikneuling)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Ich versuche zur Zeit, ein analoges Signal zu digitalisieren und das 
ganze einem FPGA zuzuführen, der diese Werte dann zusammen mit weiteren 
von Natur aus digitalen Daten per USB an den Computer sendet.

Der gesamte nicht analoge Teil funktioniert zuverlässig, da hab ich 
glücklicherweise auch etwas Erfahrung mit. Der Analog-Teil jedoch 
bereitet mir noch ziemliche Probleme, ich muss auch gleich dazu sagen, 
ich habe weder das eine noch das andere tatsächlich gelernt...

Beitrag "Re: Hilfe Auslegung low-pass Filter und Verbindung zu ADC" Hier ist der 
aktuelle Stand des Analog 'Front-Ends', die gezeigte Scope Traces sind 
aufgenommen worden, während die AD Wandlung pausiert war.

Sobald ich die AD Wandlung (Mcp3008) jedoch mit 160kHz Sampling Rate 
anstoße, sehe ich auch Spikes und Rauschen synchron zum Sampling auf den 
Eingangssignalen, den GND Leitungen, dem VREF Pin, ja eigentlich 
überall, in der Größenordnung einiger zehn bis zum Teil hundert 
Milllivolt.

Ich dachte anfangs, GND schleifen, die etwas rudimentäre signalführung 
zum Ft232H, die vielen steilen Flanken des fpgas beim Datentransfer (der 
unter anderem auch synchron zum sampling stattfinden würde),... wären 
schuld, aber bei genauer Betrachtung und wenn man den Transfer mal 
anhält, scheint es eher, als wenn die AD Wandlung selbst diese spikes 
hervorrufen würde.

Ist das normal für ein SAR ADC? Sollte man sich diese Signale einfach 
nicht mit einem 350MHz Oszilloskop anschauen (mit BW Limit auf 20MHz 
sieht die Lage deutlich sauberer aus)? Ist der Effekt zu 
vernachlässigen, weil er erst mit/nach der Wandlung auftritt und nicht 
vor dem Zeitpunkt der Wandlung? Oder habe ich vielleicht den Mcp3008 
teil-zerstört - der hat vielleicht auch bereits ein paar Mal für einige 
Sekunden Eingangssignale deutlich unter 0V, vielleicht bis - 1.2V, 
gesehen!

Viele Grüße!

: Bearbeitet durch User
Autor: Mani W. (e-doc)
Datum:

Bewertung
-3 lesenswert
nicht lesenswert
Ingo S. schrieb:
> zusammen mit weiteren
> von Natur aus digitalen Daten

Das wären?

Autor: Ingo S. (logikneuling)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frequenz, Pulsbreite, - dauer,... anderer, von diesem analogen Signal 
unabhängiger Quellen, die Änderung dieser Parameter über kurze, 
mittlere, lange Zeiträume,... Zählwerte Gesamt, gleitende Mittelwerte, 
Summe Pulse nach Trigger,...

All das spielt sich jedoch im 10-200 MHz Bereich ab und hat, meiner 
laienhaften Einschätzung nach, wenig mit der Abtastung dieses 
zusätzlichen, analogen Messwerts zu tun. Die Spikes komprommitieren auch 
nicht den Digitalteil, diese Signale sind robust genug um nach LVTTL 
io-standard sicher erfasst zu werden!

: Bearbeitet durch User
Autor: ths (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Schaltplan des Analogteils wäre deutlich hilfreicher als meterlange 
Prosa.

Betriebsspannungen sauber?

Referenzspannung sauber und ausreichend abgepuffert?

Eingang des ADC über einen OP gepuffert?

Applikationshinweise des ADC-Datenblatts befolgt?

Sternförmige Funktionserde?

Oder womöglich Masselage unter dem Analogteil mit DGND = AGND ???

Autor: ths (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hoppla, hatte den Link übersehen.

Was passiert bei kurzgeschlossenem ADC-Eingang?

Autor: Harlekin (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Beim Messen mit dem Oszilloskop lohnt es sich mit der Anordnung zu 
spielen. Zum Beispiel den GND direkt am VSS des AD-Wandlers anklemmen, 
während man das Eingangssignal misst. Weiter mal nur mit einem Kanal 
messen. Möglicherweise sieht man eine Störung auf einem zweiten Kanal, 
weil diese über den gemeinsamen GND-Anschluss eingekoppelt wird. Unter 
Umständen lässt sich die Störamplitude auch durch das Verändern der 
aufgespannten Schlaufe der Sonde und dem GND-Klemme beeinflussen.

Ein Foto vom Aufbau könnte bei der Beurteilung helfen.

Autor: Harlekin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Harlekin schrieb:
> Zum Beispiel den GND direkt am VSS des AD-Wandlers anklemmen,
> während man das Eingangssignal misst

Eingangssignal am AD-Wandlereingang

Autor: Anja (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Ingo S. schrieb:
> Ist das normal für ein SAR ADC?

Ja, zumindest dann wenn dieser nicht als R2R DAC + Komparator sondern 
als kapazitiver Wandler ausgelegt ist.
Allerdings ist das für heutige Wandler Standard da Kapazitäten mit einem 
definierten Verhältnis wesentlich billiger zu implementieren sind als 
ein R2R Netzwerk. Außerdem hat man gleichzeitig noch ein Sample und Hold 
als Abfallprodukt.
Das Ersatzschaltbild ist im Datenblatt (Figure 4.1).

Gruß Anja

Autor: Ingo S. (logikneuling)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank fuer eure Antworten! Ich versuche mal, so gut es mir 
moeglich ist, darauf einzugehen!

ths schrieb:
> Betriebsspannungen sauber?

Der ADC selbst befindet sich auf diesem FPGA Board, ...

https://www.micro-nova.com/mercury/ (Uebersicht)
https://www.micro-nova.com/s/mercury_schematic.pdf (Schaltplan)

fuer das ich bereits unterschiedliche 5V Versorgungen ausprobiert habe 
(USB3 Port am Notebook, USB Powerbank, 9V 2.5A Netzteil mit 7805, 
Stromversorgung ueber die 5V Rail des FT232H (gibt im Wesentlichen nur 
VUSB weiter, ...) - Erstes Fazit: Das macht alles keinen grossen 
Unterschied.

Ich sehe auf der 5V Leitung des DevBoards unzaehlige Abblock- und 
Pufferkondensatoren, eine Spule, ... Aber ich gebe zu, die GND 
Zugaenglichkeit ist katastrophal (quasi nur ein Pin). Ich bin deshalb 
(so lange ich diesen Aufbau noch auf generelle Machbarkeit evaluiere) 
den Weg gegangen, eine Art GND-Anker oben auf den USB Port aufzuloeten 
und dort alles zu erden (USB Shield ist auf diesem Boaord mit GND 
verbunden).

> Referenzspannung sauber und ausreichend abgepuffert?

kurze Leitung zu 5V, 3.3V (ueber Linearregler), oder etwa 4V mittels 
Batterie, je nach getesteter Referenz, sowie 100nF und 10uF zu GND.

> Eingang des ADC über einen OP gepuffert?

Nicht mit einem zusaetzlichen OP, ich bin davon ausgegangen, dass die 
hinteren beiden der 4 OPs dieses Filter- und Verstaerker-FrontEnds auch 
die Pufferung uebernehmen koennen. Muessen da nochmal zwei Unity-Gain 
OPs hin?

> Applikationshinweise des ADC-Datenblatts befolgt?

Es scheint die zweite Variante der Layout Considerations gewaehlt worden 
zu sein (no analog gnd plane, connect both grounds to Vss).

> Sternförmige Funktionserde?

So gut es geht, alles auf den USB Port des Boards.

> Oder womöglich Masselage unter dem Analogteil mit DGND = AGND ???
s.o., aber bei diesem eng bestueckten Board und ohne PCB Files kann ich 
nicht genau sagen, wie da wo welche Lagen angelegt wurden.

> Was passiert bei kurzgeschlossenem ADC-Eingang?

Gute Frage, das werde ich in der Tat gleich mal testen!

Harlekin schrieb:
> Unter
> Umständen lässt sich die Störamplitude auch durch das Verändern der
> aufgespannten Schlaufe der Sonde und dem GND-Klemme beeinflussen.

Ich muss zugeben, ich habe das Messen mit dieser GND Feder noch nicht 
ganz geblickt - designed man sein Board an entsprechenden Stellen extra 
in einer Art und Weise, dass man dann exakt im richtigen Abstand ein GND 
Via/Kontakt hat? Auf diesem eng bestueckten Board konnte ich jedenfalls 
nur mit der Kabel-GND-Krokoklemme zuverlaessig zu GND kontaktieren, und 
da spielt, wie du schon sagtest, die Lage und Form der Schlaufe eine 
Rolle fuer die Amplitude.

Generell laesst sich sagen, je weiter Probe und Klemme auseinander 
liegen, desto groesser werden auch die Spikes. Aber auch wenn ich mal 
versuche, mit einem spitzen Draht direkt an einem der GND Pins des 
MCP3008 zu messen, sind die noch deutlich sichtbar (~100mV).

> Ein Foto vom Aufbau könnte bei der Beurteilung helfen.

Auf die Gefahr hin, mit dem Verhau hier gelyncht zu werden, anbei ein 
Foto (ist nicht mehr 100% kompatibel zu dem Schaltplan im anderen 
Thread, ich habe so viele kleine Aenderungen wie 
hinzufuegen/aendern/entfernen von Pufferkondensatoren, zusaetzliche R 
zwischen Op2 Out und In gegen Oszillation, ... ausprobiert). Ich habe 
keinerlei Erfahrung mit dem Anfertigen von PCBs, habe aber schnell 
eingesehen, dass dieser Aufbau auf dem Breadboard nur noch viel mehr 
Probleme hervorruft. Deshalb ein Versuch, mit diesem Manhattan-Style ein 
paar der Probleme der Analogwelt zu umgehen. Mit mittelmaessigem Erfolg 
bisher ;-) ...

Anja schrieb:
> Das Ersatzschaltbild ist im Datenblatt (Figure 4.1).

Vielen Dank fuer deine Erlauterung. Ich denke, ich habe gefunden, was du 
meinst. Das bedeutet im Grunde, man toleriert dies, und es ist quasi ein 
Effekt/Resultat der Messung, und weniger etwas, dass die eigentliche 
Messung stoert - wenn mein Eingangssignal fuer die gewaehlte 
Samplingfrequenz entsprechend niedrige Impedanz aufweist? Wenn ich also 
jetzt nicht mit einem zweiten ADC asynchron zu diesem etwas messen 
moechte zu Zeiten, wo der erste aufgrund dieser Implementation diese 
Stoerungen auf GND verursacht, bin ich "fein raus"?

Viele Gruesse,
Ingo

: Bearbeitet durch User
Beitrag #5415188 wurde vom Autor gelöscht.
Autor: Bernhard D. (bdrescher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Referenzspannung sauber und ausreichend abgepuffert?
>
> kurze Leitung zu 5V, 3.3V (ueber Linearregler), oder etwa 4V mittels
> Batterie, je nach getesteter Referenz, sowie 100nF und 10uF zu GND.
>

Ich würde als erstes Versuchen die Referenzspannung richtig zu 
stabilisieren. D.h. die Referenzspannung stark Tiefpassfiltern und dann 
zusätzlich mit einem OPV buffern (Ansatz siehe 
www.ti.com/lit/ml/slyc147/slyc147.pdf Seite 17). Meines Wissens nach 
benötigen vor allem SAR-ADCs einen ausreichend starken niederohmigen 
Treiber am Referenzpin, da sie u.U. viel Ladung entnehmen. Das 
periodische Zu- und Abschalten einer Kapazität löst in Verbindung mit 
einer Induktivität (z.B. 4~nH Bond-draht + PCB ... ) dann Schwingungen 
bzw. Peaks aus. Der OPA350 sollte sich zum Buffern eigentlich anbieten.

>> Eingang des ADC über einen OP gepuffert?
>
> Nicht mit einem zusaetzlichen OP, ich bin davon ausgegangen, dass die
> hinteren beiden der 4 OPs dieses Filter- und Verstaerker-FrontEnds auch
> die Pufferung uebernehmen koennen. Muessen da nochmal zwei Unity-Gain
> OPs hin?
>

Meiner Einschätzung nach sollten die OPs der Filter / Verstaerker 
ausreichen, sofern die Zeitkonstante für das Sampeln nicht verletzt ist. 
Grundsätzlich brauchst du zum korrekten Erfassen eines Datensignals 
durch ein Sample & Hold Glied folgende Bandbreite:
 [1]
n = Auflösung in Bit;
Ts = Settling Zeit des Sample & Hold Glieds

Bei deiner Anwendung ergäbe es für z.B. 160kHz und 10 Bit Genauigkeit 
bereits >300kHz.

Entscheidend ist dafür nun der letzte Buffer vor dem ADC (Verstärker), 
die Länge der Zuleitung zum ADC (Spule) und der ADC-Eingang selbst. Was 
du nun z.B. als Spikes sehen / messen könntest, könnte auch sog. 
Charge-Kickback des ADC sein. Beim Zuschalten des ADC-Eingangs während 
der Sampling Phase kann die interne S&H Kapazität Restladung besitzen, 
welche sich in das treibende Netzwerk entlädt. Aus diesem Grund wird oft 
vor dem ADC selbst ein einfacher RC-Tiefpass genutzt um den OPV ein 
Stückweit zu isolieren. Mein Vorschlag wäre z.B. ein RC-Glied aus 33 Ohm 
und max. 12 nF zu platzieren. Die Kapazität wirkt dabei auch gleich als 
sog. "Charge-Bucket" [2].

Grüße,
Bernhard

PS: Wer zu [1] anderer Meinung ist, der kann mich gerne korrigieren. Ich 
finde die Formel selbst kontraintuitiv, finde aber bis jetzt noch keinen 
Gegenbeweis zu dieser Vorgabe.

[1]
[2] www.ti.com/lit/ml/slyp166/slyp166.pdf

: Bearbeitet durch User
Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast nur ein GND.
Schau mal im Datenblatt. Da wird für den Teil der Messung der 
Blockkondensator auf AGND gelegt.
Datenblatt Figure 6-5.

Vielleicht kannst du da noch was machen.
Wenn im Datenblatt da schon was drauf hin weist, dann kennt Microchip 
das Problem. ;-)
Das schreiben die nicht zum Spaß!

Gruß, Jens

Autor: ths (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zwischen dem OP und dem Eingang des ADC einen passiven Tiefpass 
schalten, bestehend aus einem relativ großen Kondensator und einem 
kleinen Widerstand. Etwa 1 Ohm und 470 nF.

Hat mir in einer vergleichbaren Situation mal weitergeholfen, fiel mir 
leider erst jetzt wieder ein.

Autor: Harlekin (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Ingo S. schrieb:
> designed man sein Board an entsprechenden Stellen extra
> in einer Art und Weise, dass man dann exakt im richtigen Abstand ein GND
> Via/Kontakt hat?
Nein, das habe ich noch nicht gesehen. Oft wird eine Innenlage 
ganzflächig für GND benutzt. Manchmal ist es sinnvoll diese Fläche 
aufzutrennen und nur an einem Punkt zu verbinden. Damit keine Querströme 
empfindliche Schaltungen beeinflussen können.

Ich habe für Rauschmessungen schon Quaxkabel direkt an die Messstellen 
angelötet. Allerdings bilden diese eine wesentlich grössere kapazitive 
Last als eine Sonde. Dies könnte OPV-Ausgänge zum Schwingen bringen. Für 
die GND-Klemme kann man temporär einen Draht an das IC-Beinchen löten.

Siehe Verhalten bei kapazitiver Last: Datenblatt OPA350, Seite 11, 
Figure 21. Small-Signal Overshoot vs Load Capacitance

Im vorliegenden Fall würde ich vor dem Quaxkabel einen Seriewiderstand 
einlöten um dessen Kapazität vom OPV-Ausgang zu entkoppeln. Auf der 
anderen Seite am Eingang des ADC einen RC-Tiefpass einbauen. Dies als 
Versuch die Störung komplett von der selbst gestrickten Leiterplatte 
fernzuhalten.

Der GND-Anschluss oben im Bild und der GND des Quaxkabels unten rechts 
bilden möglicherweise eine GND-Schlaufe.

Autor: Name H. (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der gezeigt Aufbau ist um Groessenordnungen zu schlecht. Kein einziger 
OpAmp hat einen Speisecap.

Sinnvollerweise wuerde man den ADC auch auf dieses Board machen. Wie 
soll denn das Signal von diesem Print zum ADC kommen ?
Jeder GND Stromwechsel von diesem Board erzeugt einen Spike auf dem 
Signal. Da muesste man dann eben mit dem Signal differentiell zum ADC 
fahren. Ein richtiger ADC hat auch einen differentiellen Eingang.

Autor: Ingo S. (logikneuling)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank fuer all eure hilfreichen Antworten, das ist wirklich 
klasse!

Bernhard D. schrieb:
> Ich würde als erstes Versuchen die Referenzspannung richtig zu
> stabilisieren. D.h. die Referenzspannung stark Tiefpassfiltern und dann
> zusätzlich mit einem OPV buffern

Damit bin ich angefangen, zunaechst lediglich mit einem passiven RC 
Tiefpass. Die 5V Seite fuer Vref ist nun voellig stoerungsfrei, waehrend 
auf der anderen Seite zwischen Tiefpass und Vref-Pin immer noch "Chaos" 
zu herrschen scheint. Aktiviere ich aber das 100MHz BW-Limit am Scope, 
sieht das allerdings schon viel besser aus, und mit 20MHz BW-Limit hab 
ich zwei exakt identische Traces voellig ohne Stoerungen. Das muesste 
also schon ein ganz schoen schneller OP sein, wenn der da noch etwas 
Puffern wollte, oder? Werde trotzdem im naechsten Schritt, wenn ich 
wirklich sicher bin, was final Vref sein soll, ueber eine OP-gepufferte 
Referenzspannung nachdenken.

> Aus diesem Grund wird oft
> vor dem ADC selbst ein einfacher RC-Tiefpass genutzt um den OPV ein
> Stückweit zu isolieren. Mein Vorschlag wäre z.B. ein RC-Glied aus 33 Ohm
> und max. 12 nF zu platzieren. Die Kapazität wirkt dabei auch gleich als
> sog. "Charge-Bucket"

Exakt das habe ich getan, die Analog-Platine ist nun nahezu voellig frei 
von Spikes (vorher waren es Amplituden um etwa +-300mV, jetzt kaum noch 
sichtbar um max. +-20mV - und ja, ich bin mir bewusst, das ist 
vermutlich in beiden Faellen nicht die reale Amplitude, denn die Spikes 
sind so kurz, dass sie auf dem Scope nur aus wenigen Datenpunkten 
bestehen).

Ich hatte den Tiefpass vor dem ADC nur so verstanden, dass man damit 
einem Sampling-Alias vorbeugen will, und dachte, ich wuerde das nicht 
wirklich hier brauchen, da die erste Filterstufe ja quasi schon die 
Anpassung an die Sampling-Frequenz beruecksichtigt. Das war lehrreich.

Harlekin schrieb:
> Im vorliegenden Fall würde ich vor dem Quaxkabel einen Seriewiderstand
> einlöten um dessen Kapazität vom OPV-Ausgang zu entkoppeln.

Ich habe die ausgangsseitigen Koaxkabel durch kurze Draehte ersetzt, und 
zusaetzlich OP-seitig 220Ohm Serienwiderstaende eingefuegt. Hat auf den 
ersten Blick nichts verbessert, aber auch nichts verschlechtert. Spielt 
sicherlich aufgrund des niedrigeren Widerstandes vom Tiefpass ein paar 
cm weiter Richtung ADC-Pin auch keine grosse Rolle, aber lass ich 
erstmal drin.

> Der GND-Anschluss oben im Bild und der GND des Quaxkabels unten rechts
> bilden möglicherweise eine GND-Schlaufe.

Den Anschluss habe ich tatsaechlich ganz uebersehen, voellig richtig! 
Ich habe ihn von der Kupferplatine entfernt und auch auf den zentralen 
GND Punkt gesetzt.

Gorch F. schrieb:
> Der gezeigt Aufbau ist um Groessenordnungen zu schlecht. Kein einziger
> OpAmp hat einen Speisecap.

Ich hatte erwaehnt, dass das Bild einen Schnappschuss aus den 
unterschiedlichsten Versuchskonstellationen darstellt, hier nun 
zufaellig einen, in dem keine Speisecaps vorhanden sind. Ich hatte 
darueber hinaus bereits erwaehnt, dass die Ausgangssignale exakt wie 
erwartet aussehen, so lange kein ADC Sampling stattfindet. Ich hatte 
zudem grad tags zuvor aus einer Laune heraus eben diese 
"keine-dedizierte-Speisecaps-Platine (nur 2x100nF und 2x10uF fuer V+ und 
V- fuer alle OPs)" an einen Funktionsgenerator angeschlossen und mal ein 
paar Dinge durchgespielt, um die Funktion dieser OPs besser zu 
verstehen: maximale Slew Rate, Filter-Guete, small- vs. large-signal 
response, Verstaerkungsfaktor, ... und habe dabei (ein bisschen zu 
meinem Erstaunen) festgestellt, dass diese Analog-Welt sich tatsaechlich 
weitestgehend so verhaelt wie es im Datenblatt steht oder zu erwarten 
ist.
Sooo ultraschlecht kann der Aufbau damit eigentlich nicht sein. Nebenbei 
habe ich dort keinerlei Probleme mit dem Fehlen von Speisecaps bemerkt, 
kein Schwingen, kein Overshoot, kein 
langsamer-als-erwartet-Ansprechverhalten, ... Trotzem sind jetzt neben 
den 2x100nF und 2x10uF noch 8 weitere CerCaps a 47nF direkt an jedem V+ 
und V- IC Beinchen gegen Masse: keinerlei sichtbare Veraenderung (nicht 
ohne und nicht waehrend aktivem ADC Sampling), aber nun kann ich diesen 
Punkt auch abhaken.

Gorch F. schrieb:
> Sinnvollerweise wuerde man den ADC auch auf dieses Board machen. Wie
> soll denn das Signal von diesem Print zum ADC kommen ?

Der Punkt, warum ich den Aufbau zu Beginn gerne mit diesen ADC probieren 
wollte, lag ja gerade eben darin begruendet, dass er sich bereits mit 
auf dem kleinen FPGA Board befindet, und super simpel ueber SPI 
angesprochen werden kann. Aber: nicht alles auf einer einzelnen, perfekt 
fuer Analog und Digital angelegten Platine zu haben, ist bestimmt nicht 
ideal. Mal sehen, vielleicht komm ich ja noch an diesen Punkt! Soweit 
bedanke ich mich erstmal fuer die Anregungen.

Gorch F. schrieb:
> Da muesste man dann eben mit dem Signal differentiell zum ADC
> fahren. Ein richtiger ADC hat auch einen differentiellen Eingang.

Ich wollte es nicht unnoetig verkomplizieren, aber ich werde mir das 
einmal ansehen, versuchen zu verstehen, was hier differentiell und 
pseudodifferentiell etc. bedeutet, und darauf achten, dass wenn ich mich 
final fuer einen anderen ADC entscheide, dass der moeglichst nicht nur 
nicht vom Typ SAR ist, sondern auch, dass er vielleicht mehrere Kanaele 
simultan und nicht etwa sequentiell samplen kann (zur Zeit stoert mich 
noch der Sampling-Skew zwischen den zwei Kanaelen), und dass er 
moeglichst auch differentielle Eingaenge besitzt!

Ich bin aber schon mal sehr zufrieden mit all diesen Verbesserungen :)

Ingo

Autor: Bernhard D. (bdrescher)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Hallo Ingo,

es freut mich zu hören, dass sich die Messergebnisse verbessern ließen.

> Bernhard D. schrieb:
>> Ich würde als erstes Versuchen die Referenzspannung richtig zu
>> stabilisieren. D.h. die Referenzspannung stark Tiefpassfiltern und dann
>> zusätzlich mit einem OPV buffern
>
> Damit bin ich angefangen, zunaechst lediglich mit einem passiven RC
> Tiefpass. Die 5V Seite fuer Vref ist nun voellig stoerungsfrei, waehrend
> auf der anderen Seite zwischen Tiefpass und Vref-Pin immer noch "Chaos"
> zu herrschen scheint. Aktiviere ich aber das 100MHz BW-Limit am Scope,
> sieht das allerdings schon viel besser aus, und mit 20MHz BW-Limit hab
> ich zwei exakt identische Traces voellig ohne Stoerungen. Das muesste
> also schon ein ganz schoen schneller OP sein, wenn der da noch etwas
> Puffern wollte, oder? Werde trotzdem im naechsten Schritt, wenn ich
> wirklich sicher bin, was final Vref sein soll, ueber eine OP-gepufferte
> Referenzspannung nachdenken.

Das BW-Limit muss nicht zwangsläufig mit der Bandbreite des OP 
zusammenhängen. Die Belastungen auf einer Referenzspannung kann man sich 
ca. so vorstellen:
1. Bei jedem Samplingvorgang lädt sich die ADC-interne Kapazität über 
ein L-R Pfad innerhalb von T_s/2 auf den Wert der externen 
Pufferkapazität und entnimmt dieser Ladung. Der Einfachheit halber 
nehmen wir an, dass dies vollständig geschieht. Falls die 
Gesamtkapazität ADC-intern 20pF sind und vorher komplett entladen war, 
so ergibt sich (Charge-Sharing):
2. Die Treiberschaltung für die Referenz (in deinem Fall 5V + 
Widerstand) versucht die Ladung nachzuliefern und hat dafür ca. T_s 
Zeit. Je nachdem wie niederohmig dein Treiber ist (dank dem R leider 
hochohmig), dauert die Zeitkonstante, die nötig ist um den Fehler 
dauerhaft (über viele Samplingvorgänge) auf 1/2 LSB zu begrenzen jedoch 
zu lange.

Sprich: mit jedem Samplingvorgang sinkt die Spannung auf der externen 
Kapazität weiter ab und pendelt sich schlussendlich auf einen Wert von 
ca.
 ein. Deshalb siehst du auch eine stabile Spannung. Prüfe mal mit einem 
genauen Multimeter, ob die Spannung bei inaktivem ADC gleich ist mit der 
bei laufendem ADC. Das würde dann für den Einsatz eines OPV als Puffer 
sprechen. Dieser muss gar nichtmal so schnell sein.

Als kleines Versuchsobjekt habe ich dir mal zwei LT-Spice Dateien zu 
Demozwecken angehängt. Bei einem kannst du ca. den Effekt deines 
RC-Tiefpasses am Referenzpin sehen, bei der anderen habe ich nur 2 
parasitäre Spulen hinzugefügt (400pH beim Buffer-C und 10nH zur internen 
Cap). Die Simulation sieht dann schon viel interessanter aus :)


>> Aus diesem Grund wird oft
>> vor dem ADC selbst ein einfacher RC-Tiefpass genutzt um den OPV ein
>> Stückweit zu isolieren. Mein Vorschlag wäre z.B. ein RC-Glied aus 33 Ohm
>> und max. 12 nF zu platzieren. Die Kapazität wirkt dabei auch gleich als
>> sog. "Charge-Bucket"
>
> Exakt das habe ich getan, die Analog-Platine ist nun nahezu voellig frei
> von Spikes (vorher waren es Amplituden um etwa +-300mV, jetzt kaum noch
> sichtbar um max. +-20mV - und ja, ich bin mir bewusst, das ist
> vermutlich in beiden Faellen nicht die reale Amplitude, denn die Spikes
> sind so kurz, dass sie auf dem Scope nur aus wenigen Datenpunkten
> bestehen).

Wie siehts denn direkt am ADC-Pin aus?


Grüße,
Bernhard

Autor: Ingo S. (logikneuling)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernhard D. schrieb:
> Die Belastungen auf einer Referenzspannung kann man sich
> ca. so vorstellen: [...]

Vielen Dank fuer diese ausfuehrliche Erklaerung, und auch fuer die 
Simulationsdateien. Damit muss ich mich auf jeden Fall mal dringend 
naeher auseinandersetzen. Ich hatte mir zu Beginn dieser Bastelei ein 
LTSpice installiert, und auch die entsprechenden OPA350 Spice Modelle 
heruntergeladen, aber ich hab damit nicht einmal einen einfachen Filter 
hinbekommen zu simulieren - hatte schon vermutet, meine ganze LTSpice 
Installation sei vielleicht nicht wirklich lauffaehig. Aber deine .asc 
Dateien laufen problemlos...

Ich vermute, um das genau nachzuvollziehen, was Du beschrieben hast, und 
was das im Endeffekt bedeutet, brauch ich etwas mehr Zeit am Wochenende 
:)

Bernhard D. schrieb:
> Wie siehts denn direkt am ADC-Pin aus?

Ich wuerde sagen, in etwa so "schlecht" wie vorher (genau genommen sieht 
das Muster etwas anders aus, vorher gab es quasi immer ein gleich 
hohes Spike-Paar mit 1us Abstand, nun ist es ein hoher Spike und ein 
niedrigerer Spike - ich will aber nicht ausschließen, das vielleicht 
heute einfach nur die GND-Klemme in einer anderen Schlaufe gelegen 
hat...). Aber ich hatte das nun mehr auf die Funktionsweise des SAR ADCs 
geschoben und vermutet, dass das etwas ist, was ich nicht mehr wirklich 
"aendern" muss. Ich habe mir testweise vom FPGA ein "Sampling-Beginn" 
Signal in der 50MHz Domäne ausgeben lassen, und der erste Spike tritt 
immer kurz nach Sampling-Beginn auf, so dass also noch 4-5us bis zum 
naechsten Sample "Abstand" sind, und sie sind so kurz, dass man sie ja 
kaum erfassen kann. Vielleicht also wirklich nicht wichtig?

Ich hatte dich schon richtig verstanden, den Low-Pass in dieser Richtung 
einzubauen...

Analog-Signal -> R -> C Richtung GND -> ADC Input Pin

... und nicht etwa anders herum, richtig?

Viele Gruesse,
Ingo

Autor: Bernhard D. (bdrescher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ingo,

ja genau so rum. Dass die Spikes auftreten ist bei ADCs ohne 
Eingangsbuffer eig. normal. In wie weit diese jedoch messbar sind und 
sich auf andere Schaltungsteile auswirken können hängt dann von der 
externen Beschaltung ab. Grundsätzlich versucht man mit dem externen 
Buffer / RC Glied die Auswirkungen am Ende der Samplingphase auf < 1/2 
LSB, besser < 1/4 LSB zu beschränken. Dabei ist ein möglichst 
niederohmiger Treiber nicht immer sinnvoll, da durch parasitäre Effekte 
entstandenen Schwingungen oft nur resistiv gedämpft werden können.
Um die Auswirkungen der Spikes auf den ADC zu testen würde ich folgendes 
Empfehlen:
1. Verschiedene DC-Pegel sampeln und prüfen, ob in den ersten Werten der 
aufgenommenen Daten irgend ein Muster zu erkennen ist (siehe z.B. 
Einschwingvorgang auf der Referenz). Am besten je einmal nahe GND, bei 
Vref/2 und nahe Vref.
2. Sinussignal sampeln. Wenn es machbar ist einen hochreinen Sinus an 
den ADC-Eingang zu bringen hast du mit relativ einfachen Mitteln die 
Möglichkeit die Datenblatt-Angaben mit deiner Performance abzugleichen. 
Hierfür bieten sich dann Histogramm-Test (INL/DNL) [1][2] oder eine 
einfache FFT Aufnahme, ggbfs. mit Fensterung[3], für Rauschen + 
Harmonische an.

Mit 2. werden die Chips im CV und Produktionstest geprüft und bieten 
eigentlich die beste Aussagekraft über die korrekte Funktionsfähigkeit 
des ADC.

Als Randnotiz: Bezgl. Referenzbuffering eignet sich recht gut auch der 
AD8031 von Analog Devices. Diesen haben wir in der Firma empirisch als 
den besten Buffer von vielen für einen ~200kSps 16Bit SAR ADC bestimmen 
können, was [4] unterstreicht.

Grüße,
Bernhard

[1] 
https://www.edn.com/design/integrated-circuit-design/4363979/Compute-a-histogram-in-an-FPGA-with-one-clock
[2] https://www.maximintegrated.com/en/app-notes/index.mvp/id/2085
[3] 
https://www.edn.com/electronics-news/4383713/Windowing-Functions-Improve-FFT-Results-Part-I
[4] 
http://www.analog.com/en/analog-dialogue/articles/precision-successive-approximation-adcs.html

Autor: Ingo S. (logikneuling)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast wirklich eine Wahnsinnsgeduld mit mir :)

Bernhard D. schrieb:
> Grundsätzlich versucht man mit dem externen
> Buffer / RC Glied die Auswirkungen am Ende der Samplingphase auf < 1/2
> LSB, besser < 1/4 LSB zu beschränken.

Ich nutze und exportiere zur Zeit nur die oberen 8-Bit des MCP3008, aber 
das soll natuerlich nicht so bleiben, und spaetestens wenn ich auch die 
Daten der unteren Bits verarbeite, werde ich auch evaluieren muessen, ob 
die Stoerungen denn moeglicherweise groesser als 1/2 LSB sind. Danke 
fuer die Ausfuehrungen, wie ich das am Besten bewerkstelligen kann!

Bernhard D. schrieb:
> Wenn es machbar ist einen hochreinen Sinus an
> den ADC-Eingang zu bringen hast du mit relativ einfachen Mitteln die
> Möglichkeit die Datenblatt-Angaben mit deiner Performance abzugleichen.

Ich werde mal ausfindig machen, was mir so an Instrumentation zur 
Verfuegung steht!

Bernhard D. schrieb:
> Als Randnotiz: Bezgl. Referenzbuffering eignet sich recht gut auch der
> AD8031 von Analog Devices. Diesen haben wir in der Firma empirisch als
> den besten Buffer von vielen für einen ~200kSps 16Bit SAR ADC bestimmen
> können, was [4] unterstreicht.

Das sieht ja nicht zu kompliziert aus, diesen 5/8-Beiner mit seiner 
begnuegsamen Beschaltung noch unterzubringen. Danke fuer die Empfehlung!

Der Vollstaendigkeit halber, und weil Prosa ja nicht halb so 
aussagekraeftig ist, habe ich auch noch mal ein paar Scope-Bilder 
angehaengt.

Ch1 (gelb): Signal vor der Analog-Frontend
Ch2 (tuerkis): Signal zwischen OP4 und dem Lowpass nahe des ADC-Pins 
(26x Gain)
Ch3 (rot): Signal hinter dem Lowpass, direkt am ADC-Pin
Ch4 (blau): FPGA-Signal, Sampling-Phase waehrend HIGH

1: kein Sampling, kein USB Transfer -> keine hochfrequenten 
Spikessichtbar

2: Sampling mit 160kHz, kein USB Transfer -> minimale Spikes auf dem 
Rohsignal und zwischen OP4 und Lowpass; deutliche Spikes direkt am 
ADC-Pin

3: Zoom-In von 2

4: Sampling mit 160kHz, USB Transfer nur in den Sampling-freien 
Intervallen gestattet, gleiche Zoom-Stufe wie 3 -> Die Uebertragung 
mittels FT232H erzeugt ein minimales weiteres Artifakt auf allen 
Kanaelen, aber hier werden ja auch 10 FPGA Ausgaenge auf einmal 
geschaltet (Output-Driver stehen schon auf 4mA max, QUIET-I/O Setting, 
daher die leicht verschliffene Flanke auf Ch4)

5: weitere Vergroesserung von 3, direkt auf die Sampling-Beginn Flanke

6: aehnlich 5, aber mit 20MHz BW-Limit auf allen Kanaelen aktiviert

7: aehnlich 2, aber mit 20MHz BW-Limit auf allen Kanaelen aktiviert

---

Quintessenz fuer mich ist soweit, ich denke mit dem aktuellen Aufbau 
kann ich erst einmal anfangen, eure Tipps haben mir sehr geholfen dabei!

Viele Gruesse,
Ingo

Autor: Bernhard D. (bdrescher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ingo,

das ganze sieht meiner Meinung nach von der analogen Seite aus glaubhaft 
und bis auf weiteres i.O. aus. Nur das Übersprechen der digitalen Seite 
auf die Analoge ist sehr unschön. Nachdem die +5V direkt über USB 
versorgt werden, denke ich wirst du die nur mit Mühe schön sauber 
bekommen. I.d.R. sind die verwendeten DCDC Regler und die Länge des 
Kabels kontraproduktiv für eine Sauber +5V Versorgung. Was evtl. helfen 
könnte wären Ferrite (kleine Drosselspulen) für jeden analogen 
Teilnehmer und größere Stützkondensatoren mitsamt Sternförmigem 
Leitungsanschluss der digitalen Teilnehmer. Das wäre dann aber eine 
Aufgabe falls du dir deine eigene Platine layoutest ;)
Problematisch wird das ganze erst, wenn die Glitches bis zum Ende der 
Sampling-Phase nicht ausgeklungen sind, was bei dir aber der Fall zu 
sein scheint.

Ich wünsche dir dann erstmal viel Spaß und eine lehrreiche Debugging 
Zeit ;) Die Themen Histogram und FFT sind übrigens auch eine gute 
Möglichkeit am Ende Auto-Kalibrierung, bzw. Self-Tests vorzunehmen. Für 
10Bit Genauigkeit und 1kHz Geschwindigkeit könnten hierfür sogar recht 
billige DDS-Chips von Analog Devices reichen (+ evtl. Bandpassfilterung) 
(erhältlich als Dev-Board über den freundlichen Fernost-Shop deines 
Vertrauens).

Grüße,
Bernhard

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.