Cas d'utilisation pour un ADC externe

9

La plupart des microcontrôleurs (uC) ont un convertisseur analogique-numérique (ADC) dans leur ensemble périphérique, ce qui est phénoménal car il intègre deux composants dans un seul boîtier. Ces ADC sont généralement également mappés par registre, ce qui permet d'extraire les données rapidement et facilement.

Malgré cette intégration étroite, vous pouvez toujours acheter des ADC externes. Je peux voir plusieurs cas pour ceux-ci:

  • L'ADC doit être isolé de l'UC.
  • La profondeur de bits des échantillons ADC doit être supérieure à celle de l'ADC uC.
  • La tension à détecter est loin du microcontrôleur et les longues lignes analogiques ne sont pas acceptables.
  • La tension à détecter est dans un environnement hostile non adapté à l'UC.
  • L'ADC externe échantillonne beaucoup plus rapidement que l'ADC de l'UC.
  • La tension de référence pour certains échantillons est différente de celle d'autres, nécessitant plusieurs broches Vref (et donc plusieurs ADC externes).
  • L'uC actuelle n'a pas assez de canaux ADC et le coût de mise en place d'un nouvel uC est prohibitif.
  • L'ADC externe consomme moins d'énergie que l'ADC de l'UC (j'aurais besoin d'un exemple pour le croire).
  • Les canaux ADC doivent être échantillonnés simultanément (scénario rare).
  • Le coût de programmation du micrologiciel au moment de la fabrication l'emporte sur le coût de la partie ADC la plus chère (peu probable).
  • Le PCB a une contrainte d'espace et aucun uC ne peut s'adapter (peu probable).

Tout cela est bien beau, mais ce qui me semble étrange, c'est que les ADC externes sont généralement un peu plus chers que leurs homologues uC, tout en offrant des fonctionnalités équivalentes. Par exemple, vous pouvez acheter une pièce EFM32Z avec un ADC 12 bits 1 Mps (avec référence interne) pour environ 1 $ , ou vous pouvez acheter un ADC équivalent 12 bits 200 kps pour environ 3,50 $ (mêmes vitesses (ish), mêmes numéros de puissance, etc.) et effectuer la même tâche (extraire les données ADC).

La question devient alors: y a-t-il des raisons impérieuses pour un ingénieur de préférer un ADC externe à l'ADC d'un uC lorsque ce dernier peut exécuter la même fonctionnalité?

TRISAbits
la source
1
L'échantillonnage simultané est en fait un scénario assez courant dans certains espaces d'application, comme le traitement du signal.
Jason R

Réponses:

12

Si l'ADC interne de votre microcontrôleur effectue le travail pour lequel vous en avez besoin, alors non, il n'est pas nécessaire d'avoir des ADC externes. Mais alors, ce n'est pas à qui ils sont destinés.

Vous avez couvert la plupart des raisons d'un ADC externe, mais il y en a quelques autres, et à mon avis, ce sont quelques-unes des raisons les plus importantes:

  1. Vous avez besoin d'une technologie d'échantillonnage différente - par exemple, l'ADC interne est SAR, mais vous devez faire Delta Sigma.
  2. L'ADC interne, car il est interne et partage le même dé que le MCU principal, ne sera jamais à 100% exempt du bruit du reste du MCU, donc un externe serait possible pour faire un bruit ultra faible
  3. Votre microcontrôleur / SoC / FPGA de choix n'a pas d'ADC. Les deux derniers sont très probablement - les SoC et FPGA les plus courants n'ont aucun ADC. Oui, vous pouvez en obtenir d'autres, mais beaucoup ne le font pas. Vous ajoutez donc un externe.

Pour le point 3, prenez le Raspberry Pi par exemple. Cela n'a aucun ADC disponible du tout, vous devez en ajouter un externe pour effectuer n'importe quel travail analogique.

Majenko
la source
Voilà qui est intéressant. En ce qui concerne le bruit, au lieu de payer pour obtenir un ADC externe, le même résultat serait obtenu en obtenant un ADC uC de profondeur de bits plus élevé et en ignorant les bits les moins significatifs du résultat échantillonné (cela suppose évidemment que le temps de conversion supplémentaire de les bits supplémentaires ne sont pas un facteur gênant).
TRISAbits
3
Le traitement du signal après coup ne peut que contribuer au bruit provenant de processus indépendants de la synchronisation de l'échantillon (et donc contribuer au bruit "aléatoire"). Une grande partie du bruit dans un système de processeur sera le résultat de variations de l'alimentation et de la charge au sol qui sont quelque peu synchronisées avec le processus d'échantillonnage; la seule façon de les éviter est de faire en sorte que l'ADC utilise ses propres rails d'alimentation détachés. Notez qu'une isolation complète n'est pas nécessaire, car de nombreux ADC peuvent facilement tolérer environ 100 mV entre les VDD / VSS analogiques et numériques.
supercat
9

Quelques autres raisons de privilégier un ADC externe:

  1. De nombreuses pièces ADC externes incluent des entrées différentielles, contrairement aux convertisseurs intégrés des microcontrôleurs. Dans les cas où les entrées ont beaucoup de bruit en mode commun, cela peut être très important.

  2. De nombreuses pièces ADC externes comprennent un étage amplificateur avant le convertisseur lui-même, permettant ainsi au convertisseur de mesurer directement un signal à haute impédance. Sur de nombreux microcontrôleurs, l'échantillonnage d'un signal d'entrée peut le perturber. Selon la nature du signal d'entrée, cela peut augmenter considérablement le temps d'acquisition nécessaire pour effectuer des mesures précises.

  3. Même si un ADC interne a une largeur de douze bits, cela ne signifie généralement pas qu'il faut des lectures précises à une partie en 4096. Un ADC externe typique aura souvent de meilleures spécifications qu'un ADC interne, même lorsque les deux ont la même profondeur de bits annoncée.

L'intégration d'un ADC sur un microcontrôleur est facile. L'intégration d'un bon ADC est beaucoup plus difficile. Devinez ce qui est plus courant.

supercat
la source
1
Les CAN SAR subissent un peu l'injection de charge, car la connexion momentanée du réseau de condensateurs d'échantillonnage à l'entrée perturbe ce qui est mesuré. Si la source d'entrée ne récupère pas assez rapidement, cela provoque une erreur de mesure. Une résolution plus élevée nécessite généralement une capacité d'échantillonnage interne plus importante. La résolution delta-sigma ne dépend que de l'extension d'un compteur numérique. (Bien que de bonnes spécifications INL / DNL à haute résolution ne soient pas triviales à atteindre.)
MarkU
@supercat: Je n'avais jamais envisagé un étage amplificateur dans le cadre de la conversion. Cela ouvre d'intéressantes pistes d'échantillonnage de circuits.
TRISAbits
2
@MarkU: J'ai observé le problème d'injection de charge dans certains circuits. Curieusement, certains convertisseurs semblent essayer de charger l'entrée vers la valeur échantillonnée précédente (à partir de la dernière entrée échantillonnée), certains tentent de la charger vers zéro, et au moins un semble la charger arbitrairement ("au hasard") vers une valeur supérieure. ou une tension plus basse que je trouvais plutôt ennuyeuse. Je ne comprends pas pourquoi une partie ferait ce dernier; même si elle devait se charger vers quelque chose, une charge vers zéro de manière cohérente serait meilleure que la charge vers une valeur "aléatoire".
supercat
4

Une autre raison de l'existence de certains ADC externes: ils existent depuis bien plus longtemps que les micros avec ADC internes et sont intégrés dans de nombreux produits. Peut-être 20 ou 30 ans de plus. (Probablement pas le cas pour la partie SOIC liée, bien qu'il s'agisse d'une variation modernisée rétrécie d'une partie classique)

Lorsque l'ADC n'a pas une résolution, une précision ou une vitesse stellaires, mais qu'il coûte pourtant un prix élevé, cela peut être la raison.

Même pour les nouvelles conceptions, il peut être préférable de réutiliser des blocs qui fonctionnent bien, plutôt que de réorganiser autour d'une pièce plus récente (même si l'intégration qui en résulte réduit le coût de la nomenclature). Cette réingénierie peut coûter cher; le processus de test et d'approbation réglementaire, encore plus.

Maintenant, si vous partez de zéro et que le microcontrôleur que vous avez choisi possède suffisamment de canaux ADC qui répondent à vos besoins, aucun des éléments ci-dessus ne s'applique.

Brian Drummond
la source
2

Je sais que c'est une très vieille question, mais c'est une question que nous débattons en interne assez fréquemment.

Vous avez raison, il serait inhabituel de choisir un ADC externe si la version externe était exactement équivalente sur le plan fonctionnel. Cependant, selon mon expérience, les micros à faible coût ont généralement des ADC assez moche avec une dérive de température, un faible nombre de bits (10-12 bits) et un bruit de VCC (+/- 20 mV dans certains cas) ... bien que l'inverse puisse être vrai. .. vous pouvez améliorer le S / N si vous suréchantillonnez et avez du bruit. Dans nos activités de développement de produits, il est assez rare de baser notre sélection de MCU sur la qualité de l'ADC présent à l'intérieur. Habituellement, il s'agit davantage de la chaîne d'outils, du coût, du firmware existant, etc. Les ADC internes sont généralement limités à des tâches non critiques telles que la lecture de la tension de la batterie.

Avec divers micros, il peut également y avoir des problèmes avec les temporisateurs partagés qui doivent être monopolisés pour des temps d'échantillonnage rapides, mais qui interfèrent avec d'autres choses dans le MCU (ports série logiciels, ISR, etc.) lorsqu'ils sont monopolisés pour l'ADC.

Aussi, qu'est-ce que VREF? Si vous utilisez VCC comme référence dans le micrologiciel, même si vous calibrez sur le "vrai" VCC, cette valeur peut fluctuer de façon assez spectaculaire pendant les opérations. Si vous avez un appareil à haut courant intégré (radio, wifi, MCU, etc.) avec une grande utilisation de courant transitoire, VCC peut chuter à 4,8 volts pendant une transmission et si votre échantillon se produit pendant cette fenêtre, et vous convertissez naïvement le 0-1023 ADC a lu la valeur à la tension avec ADC_VAL / 1023 * 5.0 - vous avez perdu un énorme 200mV de précision. Ou, si vous avez différents modes d'alimentation (USB, verrue murale, batterie) - le VCC du MCU peut changer (en particulier avec USB). Les ADC externes (même avec le même nombre de bits) peuvent fournir des vref internes solides comme le roc dans des conditions VCC fluctuantes.

La résolution est assez importante. J'imagine qu'il y a une certaine utilité (dans le monde réel) pour une résolution de 10 à 12 bits, mais pour tout type d'application réelle (détection de gaz, mesure acoustique, mesure accélérométrique, mesure de température de précision, etc.) 16 bits est généralement la résolution minimale pour obtenir un rapport signal / bruit et des caractéristiques de résolution adéquats. Même un MCU 32 bits vraiment sympa comme le SAMD d'Atmel est limité aux ADC internes 12 bits.

La gigue d'horloge est également un problème et il existe également une certaine imprécision inhérente lorsque d'autres micros 8 bits sont nécessaires pour fournir une lecture large de 12 bits et qu'il faut au moins 2 cycles d'horloge pour manipuler une valeur de 12 bits, ce qui peut ne pas être vrai avec un ADC externe (car ils peuvent avoir des oscillateurs internes).

Il y a aussi des moments où la proximité physique de votre transducteur et l'isolement du MCU sont importants. Certains transducteurs très sensibles nécessitent leur propre alimentation conditionnée, des plans de masse isolés et des amplificateurs de découpage de transimpédance extrêmement sensibles avec 0,01% passifs.

Parfois, il existe cependant des raisons impérieuses d'utiliser les ADC internes. Le DMA est une raison ... le taux d'échantillonnage en est une autre. La facilité du suréchantillonnage en est un autre. L'interfaçage d'ADC externes à des débits de données élevés peut consommer beaucoup de broches d'E / S multiplexées précieuses et rendre la conception plus compliquée. De plus, de nombreux ADC que nous avons utilisés sont basés sur I2C, donc la fréquence d'échantillonnage est très limitée par la vitesse du bus I2C. Même à 1 Mbits / s, une lecture 16 bits prend beaucoup de temps.

ElDuderino
la source
C'est un excellent aperçu! Comme les années ont passé (et mon expérience a grandi), je devrais être d'accord: les ADC MCU internes peuvent être plutôt moche.
TRISAbits