J'ai un ADC 14 bits . Cependant, en regardant la fiche technique (voir le tableau 2 à la page 5), le nombre effectif de bits (ENOB) est toujours inférieur à 12 bits.
Pourquoi mon DAC prétend-il être un ADC 14 bits alors qu'il n'a qu'une précision de 12 bits? Quel est l'intérêt d'avoir deux bits supplémentaires s'ils n'ont pas de sens?
Réponses:
Vous avez été embobiné!
Le 14 bits parle de marketing, et le matériel vous le donne également, alors ils diront que vous n'avez rien à redire. Juste au-dessus d'ENOB dans la fiche technique, il donne les nombres SINAD (Signal to Noise and Distortion). C'est 72 dB, et 1 bit correspond à un niveau de 6 dB, de sorte que 72 dB est en effet 12 bits. Les 2 bits les plus bas sont du bruit.
Il est possible de récupérer des données inférieures au bruit de fond, mais elles nécessitent une très bonne corrélation, ce qui signifie qu'elles doivent être très prévisibles.
la source
Supposons que l'on souhaite mesurer une tension stable aussi précisément que possible, en utilisant un CAN qui retournera une valeur de 8 bits pour chaque mesure. Supposons en outre que l'ADC est spécifié afin qu'un code de N soit nominalement retourné pour des tensions comprises entre (N-0,5) / 100 et (N + 0,5) / 100 volts (ainsi, par exemple, un code de 47 représenterait nominalement quelque chose entre 0,465 et 0,475 volts). Que devrait-on souhaiter avoir la sortie ADC si alimenté une tension de régime permanent de 0,47183 volts précisément?
Si l'ADC sort toujours la valeur qui représente la plage définie ci-dessus dans laquelle l'entrée se situe (47 dans ce cas), alors quel que soit le nombre de lectures que l'on prend, la valeur semblera être 47. La résolution de quelque chose de plus fin que cela serait impossible.
Supposons plutôt que l'ADC ait été construit de telle sorte qu'une valeur aléatoire de "tramage" distribuée linéairement de -0,5 à +0,5 soit ajoutée à chaque lecture avant de la convertir en un entier? Dans ce scénario, une tension de 47,183 volts retournerait une lecture de 48, environ 18,3% du temps, et une valeur de 47 les 81,7% restants. Si l'on calcule la moyenne de 10 000 lectures, il faut s'attendre à ce qu'elle soit d'environ 47,183. En raison du caractère aléatoire, il peut être légèrement supérieur ou inférieur, mais il devrait être assez proche. Notez que si l'on prend suffisamment de lectures, on peut atteindre un niveau arbitraire de précision attendue, bien que chaque bit supplémentaire nécessite plus que doubler le nombre de lectures.
Ajouter précisément un LSB de tramage à distribution linéaire serait un très bon comportement pour un ADC. Malheureusement, la mise en œuvre d'un tel comportement n'est pas facile. Si le tramage n'est pas distribué linéairement, ou si son amplitude n'est pas précisément un LSB, la quantité de précision réelle que l'on pourrait obtenir de la moyenne serait gravement limitée, quel que soit le nombre d'échantillons utilisés. Si au lieu d'ajouter un LSB d'aléatoire distribué linéairement, on ajoute plusieurs LSB valant, atteindre un niveau de précision donné nécessitera plus de lectures que ce qui serait requis en utilisant l'aléa idéal d'un LSB, mais la limite ultime de la précision qui peut être atteinte en prenant un nombre arbitraire de lectures sera beaucoup moins sensible aux imperfections de la source de tramage.
Notez que dans certaines applications, il est préférable d'utiliser un ADC qui n'efface pas son résultat. Cela est particulièrement vrai dans les circonstances où l'on est plus intéressé par l'observation des changements dans les valeurs ADC que dans les valeurs précises elles-mêmes. S'il est plus important de résoudre rapidement la différence entre une augmentation de +3 unité / échantillon et une augmentation de +5 unité / échantillon que de savoir si une tension de régime permanent est précisément de 13,2 ou 13,4 unités, un ADC sans tramage peut être meilleur qu'un un tramage. D'un autre côté, l'utilisation d'un ADC de tramage peut être utile si l'on veut mesurer les choses plus précisément qu'une simple lecture ne le permet.
la source
Leçon bonus: vous obtenez vraiment 14 bits de précision , mais seulement 12 bits de précision .
la source
Une mise en garde supplémentaire ... parfois, vous voulez vraiment du hasard .
Par exemple:
Dans les applications cryptographiques (sécurité / authenticité), un pur caractère aléatoire "non devinable" est requis. L'utilisation des LSB d'un convertisseur (ceux situés sous le plancher de bruit) est un moyen rapide de générer des nombres purement aléatoires.
Lorsque le matériel ADC est disponible à d'autres fins (capteurs et similaires), c'est un moyen rapide et facile de créer une communication sécurisée. Vous pouvez améliorer l'effet en maximisant le gain sur l'amplificateur d'entrée si disponible (de nombreux MCU offrent une telle fonctionnalité) et en flottant l'entrée.
Le caractère aléatoire de l'ADC dérive principalement de deux principes physiques: le bruit de quantification et le bruit thermique.
Ces effets ont un seuil au niveau macroscopique. Par exemple, les nombres suffisamment éloignés de la frontière de bits n'ont pas besoin d'être arrondis et ne subissent donc aucune erreur de quantification ou caractère aléatoire. Le bruit thermique n'affecte pas les bits les plus significatifs de la conversion dans la plupart des scénarios.
Par extension, vous pouvez voir que la variation des paramètres de conversion (temps d'échantillonnage, profondeur, taux, tension de référence) affectera le changement du caractère aléatoire des résultats en déplaçant le seuil de caractère aléatoire (soit en l'augmentant en l'augmentant, soit en le diminuant en l'abaissant le seuil) ). Un effet similaire est obtenu en faisant varier les paramètres environnementaux / du système (température, alimentation, etc.).
Cela dit, de nombreux générateurs de nombres aléatoires commerciaux réussis s'appuient sur cette technique car les effets extérieurs ne font que réduire le caractère aléatoire - ils ne l'éliminent en aucun cas (physiquement impossible).
Vous pouvez compenser une réduction du caractère aléatoire en effectuant plus de conversions et en ajoutant les résultats. Ce processus d'extension de bits (concaténation des bits faibles des conversions successives) est utilisé dans les dongles STM32 Nucleo, le FST-01 (y compris NeuG 1.0), la famille d'appareils Grang de LE Tech et bien d'autres.
Les appareils Grang génèrent des bits en convertissant à plus de 400 millions de conversions par seconde (1 bit par conversion). Si vous effectuez suffisamment de conversions, vous pouvez garantir un caractère aléatoire élevé, même face aux conditions environnementales.
la source