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?
quelle
Antworten:
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:
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.
quelle
Weitere Gründe für einen externen ADC:
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.
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.
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.
quelle
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.
quelle
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.
quelle