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
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
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 ???
Hoppla, hatte den Link übersehen. Was passiert bei kurzgeschlossenem ADC-Eingang?
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.
Harlekin schrieb: > Zum Beispiel den GND direkt am VSS des AD-Wandlers anklemmen, > während man das Eingangssignal misst Eingangssignal am AD-Wandlereingang
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
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.
>> 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
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
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.
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.
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.
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
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
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
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
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
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
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.