Warum verwenden ADCs 10 Bit statt 8 oder 16?

Warum liefern die meisten ADCs, wie die auf dem Arduino , eine 10-Bit-Auflösung anstelle von 8 oder 16 Bit?

Es scheint nur seltsam, dass sie nicht den Standarddatengrößen entsprechen, insbesondere bei integrierten.

Die Bedenken beziehen sich nicht auf die Datenbreite. Wahrscheinlicher auf die erforderliche Auflösung und die Kosten.
Warum sollten sie "Standarddatengrößen" entsprechen?

Antworten (7)

Es gibt kein größeres technisches Problem bei der Erweiterung eines SAR-ADC (sukzessive Approximation), um 16 Bit zu konvertieren, aber das Problem ist, dass Sie anfangen, das Grundrauschen des analogen Front-Ends zu sehen. Dies führt bei Kunden tendenziell zu Panik, weil sie sehen, wie die ADC-Codes herumspringen, und nicht immer erkennen, dass sie auf eine Abweichung von mehreren zehn Mikrovolt blicken.

Unter der Annahme einer Referenzspannung von 5,00 V und eines 10-Bit-ADC repräsentiert das LSB eine Spannung von 4,88 mV (5 V × 2 –10 ). Für einen 16-Bit-ADC mit einer Referenz von 5,00 V würde die LSB-Spannung 76 µV betragen.

Die Stromversorgung in einem digitalen System beträgt jedoch nicht genau 5,00 V, sie wird normalerweise in einem Bereich von 4,75 V bis 5,25 V angegeben. Immer wenn im Mikrocontroller ein vorübergehendes Schaltereignis auftritt, gibt es einen kleinen Stromimpuls, der die Versorgung verursacht Spannungen zu zucken. Wenn das LSB bei etwa 5 mV liegt, können Sie es vielleicht gerade noch sehen, aber bei 76 µV ist es schwer, dieses Rauschen nicht zu sehen.

Sobald Sie den 12-Bit-ADC überschritten haben, benötigen Sie tatsächlich eine analoge Spannungsreferenz, anstatt nur die digitale Stromversorgung zu verwenden. Das kostet also etwas mehr. Um die besten Ergebnisse zu erzielen, sollte diese Spannungsreferenz tatsächlich ein separater Chip mit eigenen Stromleitungen sein und idealerweise von den heißen / rauschenden digitalen Schaltkreisen entfernt sein.

Wenn Sie möchten, dass ein 16-Bit-ADC schöne stabile Messwerte liefert, benötigen Sie eine sehr, sehr saubere Referenzspannung und eine thermische Kontrolle und halten Sie ihn vorzugsweise weit entfernt von schnell schaltenden digitalen Signalen ... also integrieren Sie einen 16-Bit-SAR auf derselbe Chip wie ein Mikrocontroller, würde den Zweck dieser zusätzlichen Bits tatsächlich zunichte machen. Sie würden nur zufälliges Rauschen auf diesen zusätzlichen Bits messen.

Es gibt Kundenanwendungen, die ADCs mit höherer Auflösung verwenden. Die Firma, in der ich arbeite, stellt einige davon her. Automatisierte Testgeräte (ATE), medizinischer Ultraschall und bestimmte andere spezialisierte Arten von Kunden verwenden hochauflösende ADCs, in einigen Fällen 18- oder sogar 24-Bit.

Das Produktionstesten eines hochauflösenden ADC ist zeitaufwändig (und daher teuer). Kunden, die diese Art von Leistung benötigen, zahlen einen Aufpreis für einen externen Standalone-ADC, nicht für die billigen SAR-Typen, die in viele moderne Mikrocontroller eingebaut sind.

Dann gibt es Hochgeschwindigkeitsanwendungen wie Radar- oder Digital-Sampling-Oszilloskope, die mit 100 MHz oder schnelleren Raten abtasten müssen – bei diesen Geschwindigkeiten können Sie sich glücklich schätzen, 8 aussagekräftige Bits zu erhalten.

Meine erste Erfahrung mit ADCs war genau das Gegenteil. Ich war sehr überrascht zu sehen, dass das unterste Bit nicht ein wenig schwankte.
Entgegen der Intuition kann es beim Versuch, Niederfrequenz- oder DC-Signale zu messen, tatsächlich BESSER sein, ein System mit ausreichend analogem Rauschen zu haben, um das untere Bit für alle Eingangssignale fluktuieren zu lassen. Das Rauschen kann durch Mittelwertbildung reduziert werden, aber wenn Ihr ADC bei einem Wert feststeckt, wird das Ergebnis nicht verbessert, egal wie viel Sie mitteln.
Mit moderner Technologie können Sie 8 sinnvolle Bits zu Preisen von mehreren zehn GSPs kaufen. :)

Kompromiss zwischen Auflösung und Kosten.

8 Bits ergeben 2 8 = 256 Kombinationen, von denen 0 eine ist, wobei 0 bis 255 als mögliche digitale Werte verbleiben. Das reicht für viele Anwendungen nicht aus. Jedes zusätzliche Bit verdoppelt die Auflösung und 10-Bit ergibt 1024 Schritte, was für die meisten Projektsachen gut genug ist. Industrielle Systeme verwenden möglicherweise 12-Bit für eine noch bessere Auflösung.

Hochauflösende ADCs erfordern engere Toleranzen und sind teurer in der Herstellung.

Habe ich nicht mehrere Millionen 14-Bit-ADCs in meiner Kamera?
@HagenvonEitzen: Nein. Eine Kamera hat keinen ADC pro Pixel, sondern liest ihre Pixel einzeln aus. (Obwohl es möglicherweise mehr als einen ADC für den gesamten Sensor gibt, um ihn zu beschleunigen).
Normalerweise liest eine Kamera zeilenweise aus, also haben Sie ein paar tausend ADCs. In einer Situation mit hoher Verstärkung (hoher ISO in einer dunklen Umgebung) können Sie die individuelle Variation von Verstärker/ADC-Paaren in Form von Linien sehen, die über das Bild laufen.
@Mark Und als weiterer Effekt dieses Zeilenscannens können Bilder von Objekten in Hochgeschwindigkeitsbewegung den Rolling-Shutter-Effekt erzeugen .

Eine Reihe guter und gültiger Punkte wurde bereits vorgebracht. Ich habe im Laufe der Jahre ausgiebig 8-, 10-, 12- und 16-Bit-ADCs verwendet, und es ist heutzutage ziemlich einfach, 16 Bit mit einer Wandlungszeit von 4 oder 5 Mikrosekunden zu erreichen (bessere sind verfügbar, ich werde mich an das halten, was praktikabel ist). für die meisten Menschen zu verwenden), in einem eigenständigen Chip. Aber dieses enthält ein Präzisionsleiternetzwerk, das oft Dünnschichtwiderstände verwendet, und verschiedene hochspezialisierte analoge Designtechniken. (Es gibt auch fast immer irgendwo in der Schaltung eines Präzisions-ADC einen Bedarf an Hochleistungs-Bipolartransistoren, aber alle modernen Mikrocontroller sind CMOS, daher gibt es zahlreiche zusätzliche Herstellungsschritte, um alles mit guter analoger Genauigkeit und kombinierter CMOS-Logik herzustellen. ) Ein guter ADC kostet auch mehr als die meisten Mikrocontroller! Nicht so einfach zu machen,

Denken Sie zum Beispiel an den TI ADS8509, dessen Vorgänger, der ADS7509, nicht ganz so schnell, ich an vielen Stellen in einem großen und wichtigen Projekt eingesetzt habe.

http://www.ti.com/lit/ds/symlink/ads8509.pdf

Es ist ziemlich banal nach heutigen Maßstäben. Seine internen Designmerkmale sind jedoch nicht mit dem billigen Herstellungsprozess für Mikrocontroller kompatibel. Und es kostet über 15,72 $, mehr als die meisten Mikrocontroller. Ich habe sie in Form von nackten Halbleiterchips verwendet, die in hermetische Metalldosen-Hybride integriert sind, mit sorgfältig entworfenen Unterstützungsschaltungen, und haben wirklich kaum mehr als 1 LSB pp Rauschen bekommen, also kann es gemacht werden, wenn Sie wissen, was Sie tun, und die Ressourcen haben, einschließlich des Budgets. Aber Sie werden niemals ein so geringes Rauschen in oder um einen Mikrocontroller herum sehen.

Das Hauptproblem besteht, wie mindestens eine Person erklärt hat, darin, dass das Rauschen auf der digitalen Versorgungsschiene den ADC direkt beeinflusst. Jetzt können Sie das umgehen, indem Sie eine gute externe Spannungsreferenz verwenden, wo dafür ein Pin vorgesehen ist, aber Sie müssen in der Lage sein, dasselbe auch mit der Masse zu tun. Und diese Pins müssen auf wenige hundert mV von der digitalen Versorgung und Masse begrenzt werden, sonst explodiert das Ding. Plus natürlich interne Rauschkopplung innerhalb des Siliziums, von der Logik, Zustandsänderungen auf komplexe Weise bei der Taktfrequenz, und schlimmer noch, von den E / A-Pins, von denen einige 10 mA ansteuern und schalten können, wenn Sie möchten habe sie bis ans Limit belastet. Lärm, Lärm und noch mehr Lärm...

Der Teil, den ich zitiert habe (und Google nach billigeren, schnelleren oder anderen, tauschen Sie Flexibilität gegen Kosten aus) verfügt über eine SPI-Schnittstelle, sodass er problemlos EXTERN für einen Mikrocontroller mit eigener lokaler Grundebene, Filterung usw. verwendet werden kann. Dann , mit Vorsicht, es wird Ihnen wirklich 16 Bit geben.

Früher war es ziemlich schwierig, mehr als etwa 10 rauschfreie Bits aus einem 12-Bit-ADC herauszuholen, und befindet sich immer noch in einer schmutzigen Umgebung, z mehr oder weniger an diesem Vorsatz fest und wird es wahrscheinlich für immer bleiben. Aber TI hat einen externen 32-Bit-Chip. Habe weder auf das Datenblatt noch auf die Kosten geschaut...

Wenn Sie absolute Genauigkeit opfern können (dh der Skalierungsfaktor kann um 5 % oder mehr abweichen, ganz zu schweigen von DC-Offset und seiner Drift mit Zeit und Temperatur, aber die Linearität wird ausgezeichnet sein), ist ein ADC in Audioqualität möglicherweise das Richtige für Sie. Sie haben mindestens 16 Bit und sind für den Massenmarkt konzipiert, also oft preiswert, aber erwarten Sie nicht, einen in einem Präzisionsinstrument zu verwenden, das DC-Signale auf +/- 0,1% messen muss.

Du kannst nicht alles auf einmal haben. Es ist alles eine Frage dessen, was am wichtigsten ist. Präzision, Rauschen, Langzeitdrift, Geschwindigkeit, Kosten, Leistung, Schnittstellentyp (seriell oder parallel) usw. Außerdem möchten Sie möglicherweise mehrere Kanäle multiplexen, benötigen also eine schnelle Sprungantwortzeit, was viele Sigma-Delta-ADCs ausschließt ansonsten sehr gute eigenschaften.

Bei der Auswahl eines ADC. Google ist wie immer Ihr Freund. Es gibt viele Artikel und Anwendungshinweise von TI, Linear, National und verschiedenen anderen Halbleiterherstellern. Achten Sie immer darauf, was die Datenblätter Ihnen nicht sagen, und prüfen Sie, welche Parameter ihre Konkurrenten hervorheben.

Aber wenn Sie alles auf Ihrem Mikrocontroller-Chip haben wollen, planen Sie nicht, mehr als 10 Bit (wahrscheinlich 9 nutzbar, LSB-verrauscht) in Ihren Projekten zu verwenden. Und planen Sie eine separate analoge Referenz und Masse ein, wenn Ihr Chip dies zulässt. Auf diese Weise verschwenden Sie keine Zeit.

8-Bit-ADCs sind wegen der 0,49-%-Schritte schrecklich zu verwenden - davon habe ich genug gesehen. Arduino, das für Hobbyelektronik entwickelt wurde, verwendet viermal so viele Schritte, also nahe an 0,1 %, was nahe am erreichbaren Signal-Rausch-Verhältnis (plus Brummen) liegt, das von herkömmlichen Operationsverstärker- oder Transistorsensorschaltungen erwartet wird. Besseres als das würde für selbstgebaute Elektronik in Hobbyqualität verschwendet werden, und schlimmeres als das wäre zu sprunghaft und schrecklich.

Während 16-Bit-ADC im Handel erhältlich sind, brauchen sie länger zum Einschwingen, währenddessen sich das Brummen oder Rauschen verschoben hat, sodass Sie keine bessere Messung erhalten und es langsamer ist.

Dass Arduinos für Hobbyelektronik entwickelt wurde, hat nichts mit der Anzahl der verfügbaren Adc-Bits im On-Chip-AdC eines Atmel uC zu tun. Es mag eine geeignete Tiefe für den Hobbygebrauch sein, aber es ist so konzipiert, dass es eine gute Größe für viele professionelle Nicht-Arduino-Anwendungen hat

Wenn ein ADC eine Umwandlung durchführt, liefert er einen digitalen (quantisierten) Wert für das kontinuierliche analoge Signal. Da der digitale Wert zum Zeitpunkt der Wandlung nicht exakt dem analogen Wert entspricht, kann die Differenz als additives Rauschen betrachtet werden. Je höher die Auflösung des ADC ist, desto näher liegt der Digitalwert am Analogwert. Mit anderen Worten, wir verbessern das Signal-zu-Quantisierungsrauschverhältnis (SQNR), indem wir die Bits des ADC erhöhen. Daher ist ein 10-Bit-ADC besser als ein 8-Bit-ADC (um etwa 12 dB).

Die Verwendung von 16-Bit-A/D ist in Bezug auf SQNR besser. Allerdings sind sie teurer. Und in vielen Anwendungen bietet der 10-Bit-ADC genügend erforderliches SQNR.

Als allgemeine Regel sollten Sie die Anzahl der Bits in Ihrem Coveter so wählen, dass Ihr Quantisierungsschritt etwas oder so unter dem (analogen) Grundrauschen des Systems liegt.

Die Verwendung von mehr Bits und damit einen Quantisierungsschritt weiter unterhalb des Grundrauschens führt zu einer sehr geringen Verbesserung der Gesamtrauschleistung, verbraucht jedoch mehr Silizium, verlängert entweder die Konvertierungszeit oder erfordert, dass die Interna Ihres Konverters schneller laufen (und daher lauter sind).

Weniger Bits zu verwenden und daher einen Quantisierungsschritt über dem Grundrauschen zu haben, ist im Allgemeinen schlecht. Dies bedeutet, dass Sie die Leistung der analogen Schaltung verschwenden und in einigen Fällen systematische Fehler erzeugen können, die nicht durch Mittelwertbildung entfernt werden können (manchmal fügen Designer einem System absichtlich Rauschen hinzu, um systematische Fehler aufgrund von Quantisierung zu vermeiden).

Der Unterschied zwischen 8 Bit und 16 Bit ist RIESIG. Ersteres endet mit einem zu großen Quantisierungsschritt, sogar in Systemen mit ziemlich schlechtem Rauschverhalten. Letzteres wird auf jedem System verschwendet, das nicht über ein sehr sorgfältiges analoges Design verfügt. Es überrascht also nicht, dass Mikrocontroller irgendwo dazwischen landen.

Beachten Sie, dass die Leute oft von „Quantisierungsrauschen“ sprechen, aber es ist wichtig, sich daran zu erinnern, dass das Konzept des „Quantisierungsrauschens“ ein vereinfachtes Modell der Realität ist, das unter bestimmten Umständen zusammenbricht.

Die häufigste Verwendung von ADCs liegt wohl im Bereich der Tonverarbeitung (VoIP, CD-Musik usw.). Musik interessiert hier nicht, da dafür 16 Bit benötigt werden. Aber VoIP ist es, was den Low-Bit-ADC-Markt antreibt. VoIP verwendet normalerweise Kompandierung, die aus einem 12-Bit-Eingangssignal einen 8-Bit-komprimierten PCM-Code erzeugt. Die Eingabe für den Komprimierungsschritt muss mehr Bits haben - normalerweise können 12 oder manchmal 10 ausreichen (Sie können immer die niedrigsten zwei Bits fälschen).

Infolgedessen ist die Nachfrage nach 8-Bit-ADCs sehr gering, aber ADCs mit höheren Bits sind sehr gefragt und daher billig erhältlich. Arduino würde wahrscheinlich Komponenten verwenden, die billig und allgegenwärtig sind.