Anwendungsfälle für einen externen ADC

9

Die meisten Mikrocontroller (uC) haben einen Analog-Digital-Wandler (ADC) als Teil ihres Peripheriesatzes, was phänomenal ist, da dies zwei Komponenten in einem einzigen Paket integriert. Diese ADCs werden normalerweise auch registrierungsabgebildet, wodurch die Daten schnell und einfach extrahiert werden können.

Trotz dieser engen Integration können Sie weiterhin externe ADCs erwerben. Ich kann mehrere Fälle für diese sehen:

  • Der ADC muss vom uC isoliert werden.
  • Die Bittiefe der ADC-Abtastwerte muss höher sein als der ADC des uC.
  • Die zu erfassende Spannung ist weit vom Mikrocontroller entfernt und lange analoge Leitungen sind nicht akzeptabel.
  • Die zu erfassende Spannung befindet sich in einer rauen Umgebung, die nicht für die uC geeignet ist.
  • Der externe ADC tastet viel schneller ab als der ADC des uC.
  • Die Referenzspannung für einige Proben ist anders als für andere und erfordert mehrere Vref-Pins (und damit mehrere externe ADCs).
  • Das aktuelle uC verfügt nicht über genügend ADC-Kanäle und die Kosten für das Einsetzen eines neuen uC sind unerschwinglich.
  • Der externe ADC verbraucht weniger Strom als der ADC des uC (ich würde ein Beispiel brauchen, um es zu glauben).
  • Die ADC-Kanäle müssen gleichzeitig abgetastet werden (seltenes Szenario).
  • Die Kosten für die Programmierung der Firmware zur Herstellungszeit überwiegen die Kosten für das teurere ADC-Teil (unwahrscheinlich).
  • Die Leiterplatte hat Platzbeschränkungen und es kann keine uC passen (unwahrscheinlich).

Das ist alles schön und gut, aber was mir seltsam vorkommt, ist, dass externe ADCs normalerweise etwas teurer sind als ihre uC-Gegenstücke, aber eine gleichwertige Funktionalität bieten. Zum Beispiel können Sie ein EFM32Z-Teil mit einem 12-Bit-1-Msps-ADC (mit interner Referenz) für etwa 1 US-Dollar oder einen entsprechenden 12-Bit-200-Ksp-ADC für etwa 3,50 US-Dollar (gleiche Geschwindigkeiten (ish), relativ gleiche Leistungszahlen usw.) und erwerben Führen Sie dieselbe Aufgabe aus (Extrahieren von ADC-Daten).

Dann stellt sich die Frage: Gibt es zwingende Gründe, warum ein Ingenieur einen externen ADC dem ADC eines uC vorziehen würde, wenn dieser die gleiche Funktionalität ausführen kann?

TRISAbits
quelle
1
Gleichzeitiges Abtasten ist in einigen Anwendungsbereichen, wie beispielsweise der Signalverarbeitung, ein recht häufiges Szenario.
Jason R

Antworten:

12

Wenn der interne ADC Ihres Mikrocontrollers den Auftrag ausführt, den Sie benötigen, sind keine externen ADCs erforderlich. Aber das ist nicht der, auf den sie abzielen.

Sie haben die meisten Gründe für einen externen ADC behandelt, aber es gibt noch einige weitere, und meiner Meinung nach sind dies einige der wichtigsten Gründe:

  1. Sie benötigen eine andere Stichprobentechnologie - zum Beispiel ist der interne ADC SAR, aber Sie müssen Delta Sigma ausführen.
  2. Der interne ADC ist, da er intern ist und denselben Chip wie die Haupt-MCU verwendet, niemals 100% frei vom Rauschen der übrigen MCU, sodass ein externer ADC extrem rauscharm sein könnte
  3. Ihr Mikrocontroller / SoC / FPGA Ihrer Wahl hat keinen ADC. Die beiden letzteren sind am wahrscheinlichsten - die meisten gängigen SoCs und FPGAs haben überhaupt keinen ADC. Ja, Sie können solche bekommen, aber viele nicht. Sie fügen also eine externe hinzu.

Nehmen Sie für Punkt 3 zum Beispiel den Raspberry Pi. Da überhaupt kein ADC verfügbar ist, müssen Sie einen externen hinzufügen, um überhaupt analoge Arbeiten ausführen zu können.

Majenko
quelle
Das ist interessant. Wenn es um Rauschen geht, anstatt dasselbe zu bezahlen, um einen externen ADC zu erhalten, würde das gleiche Ergebnis erzielt werden, indem ein uC-ADC mit höherer Bittiefe erhalten und die niedrigstwertigen Bits des abgetasteten Ergebnisses ignoriert werden (dies setzt offensichtlich voraus, dass die zusätzliche Konvertierungszeit von Die zusätzlichen Bits sind kein behindernder Faktor.
TRISAbits
3
Die nachträgliche Signalverarbeitung kann nur bei Rauschen von Prozessen helfen, die unabhängig vom Abtastzeitpunkt sind (und somit zu "zufälligem" Rauschen beitragen). Ein Großteil des Rauschens in einem Prozessorsystem ist auf Schwankungen der Stromversorgung und der Bodenbelastung zurückzuführen, die etwas mit dem Abtastprozess synchronisiert sind. Die einzige Möglichkeit, dies zu vermeiden, besteht darin, dass der ADC seine eigenen abgetrennten Versorgungsschienen verwendet. Beachten Sie, dass keine vollständige Isolation erforderlich ist, da viele ADCs problemlos 100 mV zwischen analogem und digitalem VDD / VSS tolerieren können.
Supercat
9

Weitere Gründe für einen externen ADC:

  1. Viele externe ADC-Teile enthalten Differenzeingänge, während die eingebauten Wandler der Mikrocontroller dies häufig nicht tun. In Fällen, in denen Eingänge viel Gleichtaktrauschen aufweisen, kann dies sehr wichtig sein.

  2. Viele externe ADC-Teile enthalten eine Verstärkerstufe vor dem Wandler selbst, wodurch der Wandler ein hochohmiges Signal direkt messen kann. Bei vielen Mikrocontrollern kann das Abtasten eines Eingangssignals dieses stören. Abhängig von der Art des Eingangssignals kann dies die für genaue Messungen erforderliche Erfassungszeit erheblich verlängern.

  3. Selbst wenn ein interner ADC zwölf Bit breit ist, bedeutet dies im Allgemeinen nicht, dass er in 4096 Messwerte auf einen Teil genau benötigt. Ein typischer externer ADC hat häufig bessere Spezifikationen als ein interner, selbst wenn beide die gleiche angekündigte Bittiefe haben.

Die Integration eines ADC in einen Mikrocontroller ist einfach. Die Integration eines guten ADC ist viel schwieriger. Ratet mal, was häufiger vorkommt.

Superkatze
quelle
1
SAR-ADCs leiden ein wenig unter Ladungsinjektion, da das momentane Verbinden des Abtastkondensator-Arrays mit dem Eingang die Messung stört. Wenn sich die Eingangsquelle nicht schnell genug erholt, führt dies zu Messfehlern. Eine höhere Auflösung erfordert normalerweise eine größere interne Abtastkapazität. Die Delta-Sigma-Auflösung hängt nur von der Erweiterung eines digitalen Zählers ab. (Obwohl gute hochauflösende INL / DNL-Spezifikationen nicht trivial zu erreichen sind.)
MarkU
@supercat: Ich hatte noch nie eine Verstärkerstufe als Teil der Konvertierung in Betracht gezogen. Dies eröffnet interessante Möglichkeiten zur Schaltungsabtastung.
TRISAbits
2
@ MarkU: Ich habe das Problem der Ladungsinjektion in einigen Schaltkreisen beobachtet. Seltsamerweise scheinen einige Konverter zu versuchen, den Eingang auf den vorherigen abgetasteten Wert aufzuladen (von dem zuletzt abgetasteten Eingang), andere versuchen, ihn auf Null aufzuladen, und mindestens einer schien ihn willkürlich ("zufällig") auf einen höheren Wert aufzuladen oder niedrigere Spannung, die ich ziemlich nervig fand. Ich verstehe nicht, warum ein Teil Letzteres tun würde; Selbst wenn es auf etwas aufgeladen werden müsste, wäre ein konsequentes Aufladen auf Null besser als auf einen "zufälligen" Wert.
Supercat
4

Ein weiterer Grund für die Existenz einiger externer ADCs: Sie gibt es schon viel länger als Mikros mit internen ADCs und wurden für viele Produkte entwickelt. Möglicherweise 20 oder 30 Jahre länger. (Wahrscheinlich nicht der Fall für den verknüpften SOIC-Teil, obwohl es sich möglicherweise um eine modernisierte, geschrumpfte Variante eines klassischen Teils handelt.)

Wenn der ADC keine hervorragende Auflösung, Genauigkeit oder Geschwindigkeit hat und dennoch einen Premiumpreis erzielt, kann dies der Grund sein.

Selbst für neue Designs ist es möglicherweise vorzuziehen, gut funktionierende Blöcke wiederzuverwenden, anstatt ein neueres Teil neu zu konstruieren (selbst wenn die resultierende Integration die Stücklistenkosten senkt). Dieses Reengineering kann teuer sein. das Test- und behördliche Genehmigungsverfahren, umso mehr.

Wenn Sie jetzt bei Null anfangen und Ihr gewählter Mikrocontroller über genügend ADC-Kanäle verfügt, die Ihren Anforderungen entsprechen, gilt keiner der oben genannten Punkte.

Brian Drummond
quelle
2

Mir ist klar, dass dies eine sehr alte Frage ist, aber diese Frage diskutieren wir intern ziemlich häufig.

Sie haben Recht, es wäre ungewöhnlich, einen externen ADC zu wählen, wenn die externe Version genau funktional gleichwertig wäre. Nach meiner Erfahrung haben kostengünstige Mikros jedoch normalerweise ziemlich miese ADCs mit Temperaturdrift, geringer Bitanzahl (10 - 12 Bit) und Rauschen von VCC (in einigen Fällen +/- 20 mV) ... obwohl das Gegenteil der Fall sein kann. .. Sie können den Rauschabstand verbessern, wenn Sie zu viel abtasten und Rauschen vorhanden ist. Bei unseren Produktentwicklungsaktivitäten ist es ziemlich selten, dass unsere Auswahl an MCU auf der Qualität des darin enthaltenen ADC basiert. Normalerweise geht es mehr um Toolchain, Kosten, vorhandene Firmware usw. Die internen ADCs beschränken sich normalerweise auf unkritische Aufgaben wie das Lesen der Batteriespannung.

Bei verschiedenen Mikros kann es auch Probleme mit gemeinsam genutzten Timern geben, die für schnelle Abtastzeiten monopolisiert werden müssen, aber andere Dinge in der MCU (serielle Software-Ports, ISRs usw.) stören, wenn sie für den ADC monopolisiert werden.

Was ist VREF? Wenn Sie VCC als Referenz in der Firmware verwenden, kann dieser Wert während des Betriebs ziemlich dramatisch schwanken, selbst wenn Sie auf das "echte" VCC kalibrieren. Wenn Sie ein an Bord befindliches Hochstromgerät (Radio, WLAN, MCU usw.) mit hohem transienten Stromverbrauch haben, kann der VCC während einer Übertragung auf 4,8 Volt sinken, und wenn Ihre Probe während dieses Fensters auftritt, konvertieren Sie den 0-1023 naiv ADC-Lesewert auf Spannung mit ADC_VAL / 1023 * 5.0 - Sie haben satte 200 mV Genauigkeit verloren. Oder wenn Sie verschiedene Stromversorgungsmodi haben (USB, Wandwarze, Batterie) - VCC an der MCU kann sich ändern (insbesondere bei USB). Externe ADCs (auch bei gleicher Bitanzahl) können unter schwankenden VCC-Bedingungen eine solide interne Vref liefern.

Die Auflösung ist ziemlich wichtig. Ich stelle mir vor, dass es in der realen Welt eine Verwendung für eine Auflösung von 10-12 Bit gibt, aber für jede Art von realer Anwendung (Gasdetektion, akustische Messung, Beschleunigungsmessermessung, präzise Temperaturmessung usw.) sind normalerweise 16 Bit die minimale Auflösung, um ein angemessenes Signal-Rausch-Verhältnis und Auflösungseigenschaften zu erzielen. Selbst eine wirklich schöne 32-Bit-MCU wie Atmels SAMD ist auf interne 12-Bit-ADCs beschränkt.

Taktjitter ist ebenfalls ein Problem, und es gibt auch einige inhärente Ungenauigkeiten, wenn andere 8-Bit-Mikros erforderlich sind, um einen 12-Bit-Messwert bereitzustellen, und mindestens 2 Taktzyklen erforderlich sind, um einen 12-Bit-Wert zu manipulieren, was möglicherweise nicht der Fall ist mit einem externen ADC (da sie interne Oszillatoren haben können).

Es gibt auch Zeiten, in denen die physische Nähe zu Ihrem Schallkopf und die Isolierung von der MCU wichtig sind. Einige sehr empfindliche Wandler benötigen ihre eigene konditionierte Leistung, isolierte Masseebenen und extrem empfindliche Transimpedanz-Chopper-Verstärker mit 0,01% Passiv.

Manchmal gibt es jedoch zwingende Gründe für die Verwendung der internen ADCs. DMA ist ein Grund ... die Abtastrate ist ein anderer. Die einfache Überabtastung ist eine andere. Die Anbindung externer ADCs mit hohen Datenraten kann viele wertvolle gemultiplexte E / A-Pins verschlingen und zu einem komplizierteren Design führen. Außerdem sind viele der von uns verwendeten ADCs I2C-basiert, sodass die Abtastrate durch die I2C-Busgeschwindigkeit sehr begrenzt ist. Selbst bei 1 MBit / s dauert ein 16-Bit-Lesevorgang schmerzhaft lange.

ElDuderino
quelle
Das ist ein ausgezeichneter Einblick! Im Laufe der Jahre (und meiner Erfahrung) musste ich zustimmen: Interne MCU-ADCs können ziemlich mies sein.
TRISAbits