Un ADC à 2,97 $ : jusqu’où peut aller la médiocrité ?
(excamera.substack.com)- Le module ADC ADS1115 low cost offre des fonctions presque identiques aux spécifications officielles
- La fonction d’amplificateur à gain programmable permet d’obtenir une grande précision de mesure même sur de très faibles plages de tension
- Sur certaines cartes bon marché, des écarts de vitesse de mesure et de précision ont été constatés
- L’application d’un algorithme d’étalonnage simple permet d’obtenir des résultats assez précis
- Ces composants peu chers peuvent être des pièces défectueuses ou des copies, mais ils restent globalement utilisables pour un usage de base
Essai des performances réelles d’un ADS1115 low cost
Vue d’ensemble
- En embarqué, on utilise généralement l’ADC (convertisseur analogique-numérique) intégré au microcontrôleur
- Les ADC intégrés sont peu coûteux et rapides, mais leur nombre de bits effectif (ENOB) se situe en pratique autour de 8 à 9 bits
- Un test du module ADS1115 de Texas Instruments (TI) a récemment été réalisé
- L’ADS1115 est un ADC externe offrant une précision allant jusqu’à 16 bits
Principales caractéristiques de l’ADS1115
- Grâce à l’extension de la plage dynamique, il peut mesurer de petites tensions avec une finesse jusqu’à 20 fois supérieure
- Via l’amplificateur à gain programmable (PGA), la plage de mesure complète peut être réglée de ±6,144 V à ±0,256 V
- Le LSB minimal est d’environ 7,8 μV (0,256 V ÷ 32768), ce qui permet de détecter des variations extrêmement faibles
- C’est une résolution très supérieure à celle d’un ADC intégré classique de microcontrôleur (référence 3,3 V, 9 ENOB), dont un pas vaut environ 6 mV
- L’usage d’une référence de tension interne constitue un avantage face à des MCU comme le RP2040, qui nécessitent une référence analogique externe
Enjeu de prix et environnement de test
- Le prix de l’ADS1115 varie fortement : environ 4 $ chez Digikey par lot de 1 000, contre 0,60 $ chez LCSC
- Une carte breakout ADS1115 à 2,97 $ pièce a été achetée sur Amazon (probablement avec un composant à 0,60 $)
- Une carte plus chère (officielle) d’Adafruit doit aussi être achetée pour un test comparatif
Déroulement des tests
-
La carte low cost a été testée avec I²CMini et une source de tension continue de précision
-
Points de vérification principaux :
- vérifier si elle fonctionne conformément aux spécifications
- ou si un autre composant meilleur marché est vendu à tort comme un ADS1115
-
Résultats des tests
- Le fonctionnement de base, la sortie 16 bits, l’amplificateur à gain programmable et les différentes vitesses d’échantillonnage concordent globalement avec la datasheet de TI
- En mode différentiel, lorsque les entrées étaient reliées ensemble, la mesure donnait toujours 0 ; avec une entrée à 2,5 V, la mesure était correcte ; et en inversant la polarité, la sortie prenait la valeur opposée, sans problème de fonctionnement de base
Précision de mesure et erreurs
- Data Rate (vitesse d’échantillonnage) : la spécification TI autorise un écart de ±10 %
- En mode 8 SPS, trois cartes fonctionnaient un peu lentement à 6,5~7 SPS
- Une carte fonctionnait à un rythme totalement erroné de 300 SPS et a été exclue des tests suivants
- Lors de la mesure d’une tension de précision (2,50067 V), la sortie affichait 2,4883 V, soit une erreur d’environ 12 mV / 0,5 % (plus importante que la spécification officielle de TI)
- L’application d’un algorithme d’étalonnage linéaire simple dans le microcontrôleur a permis de ramener l’erreur à moins de 10 μV
Conclusion
- Il est probable que des pièces défectueuses ou sous-spécifiées par rapport aux modèles officiels se retrouvent dans les circuits de distribution low cost pour hobbyistes
- Il reste possible d’obtenir des mesures assez précises en pratique, et avec un simple étalonnage logiciel, cela ne pose pas de problème majeur à l’usage
- Une carte officielle plus chère sera récupérée ultérieurement puis testée de nouveau dans les mêmes conditions
Pour finir
- L’ADS1115 low cost offre un rapport qualité/prix assez remarquable
- Avec un étalonnage simple ajouté au niveau matériel/firmware, il est possible d’obtenir une précision réellement exploitable
- Il faut toutefois prêter attention au vendeur et au contrôle qualité afin d’éviter les problèmes de pièces défectueuses
1 commentaires
Avis Hacker News
Il est facile de comparer des composants bas de gamme et authentiques en les ponçant tous les deux avec du papier abrasif fin, puis en les nettoyant à l’isopropanol avant de les placer sous un microscope optique ; même sans aller jusqu’aux marquages identifiables ou aux couches métalliques, on peut immédiatement voir les similarités et différences structurelles de la puce, et les composants clones montrent en général de grandes différences de nœud technologique, d’architecture, de taille de puce, etc., car ce sont surtout des clones fonctionnels ; je recommande cette méthode de décapsulation low-tech au papier abrasif et je partage aussi des images associées (image 1 / image 2)
J’ai déjà fait ce genre de travail plusieurs fois, surtout pour résoudre des litiges sur la provenance de composants ; la plupart des boîtiers en époxy s’enlèvent rapidement en les dissolvant dans de l’acide sulfurique/nitrique bouillant ; d’après mon expérience, il s’agit le plus souvent de simples réétiquetages, de changements de binning, ou d’un camouflage évident de pièces recalées au contrôle qualité, souvent sur des échantillons ; il existe aussi une vidéo d’exemple d’il y a quelques années (lien vidéo)
Ce n’est pas forcément un clone ; comme le dit l’auteur original, il y a aussi beaucoup de cas où des produits jugés hors spécifications pendant le process de fabrication sont reconditionnés puis injectés dans les circuits de distribution classiques
S’il y avait une fonction de tag ici, ce serait exactement le genre de sujet que Ken Shirriff adorerait ; je recommande son blog (righto.com)
Je ne suis pas d’accord avec l’affirmation selon laquelle « c’est bon marché et relativement rapide, mais d’une qualité assez médiocre, et même pour une sortie annoncée à 12/16 bits, le nombre effectif de bits (ENOB) ne serait que de 8 à 9 » ; avec un MCU moderne, si l’on prend quelques précautions comme fournir une tension de référence externe stable et désactiver les sous-systèmes inutiles de la puce, on peut tout à fait obtenir plus de 10 bits d’ENOB ; bien sûr, un ADC intégré ne sera pas aussi bon qu’un ADC autonome, mais pour 90 % des besoins réels cela suffit ; si l’on veut davantage de bits, il faut soigner davantage la conception, or l’auteur de l’article ne dit rien de son alimentation, du bruit du MCU ou de la gestion des RFI, donc il est difficile de savoir si c’est vraiment un faux CI aux spécifications médiocres ou simplement un montage d’essai très bruité
On peut obtenir des résultats intéressants avec deux GPIO configurés en topologie sigma-delta de premier ordre, deux résistances externes, un condensateur, et l’hystérésis désactivée ; en mesure différentielle avec un RP2040 et une alimentation LDO (un canal servant uniquement à suivre le bruit de seuil), j’ai obtenu 16 ENOB à 1 kHz, et encore plus en DC ; il est très important d’éviter toute activité périodique dans la puce, par exemple en utilisant des mises en veille à intervalles aléatoires pour étaler le spectre ; même l’USB pouvait être utilisé avec un bruit inférieur à -100 dB ; je n’ai pas encore testé la précision DC, mais avec des canaux GPIO similaires cela reste exploitable pour des usages non critiques et peu précis comme la détection sur ligne CC ou des joysticks analogiques
Les deux avis peuvent être vrais ; l’auteur parlait peut-être surtout de MCU très bas de gamme, tandis que le commentateur avait en tête des MCU plus haut de gamme ; l’ADC 12 bits du RP2350 est donné pour 9,2 ENOB dans les specs ; on peut peut-être monter plus haut en décimant après multi-échantillonnage, mais la fiche technique soutient bien l’affirmation de l’auteur (documentation officielle Raspberry Pi) ; le CH32V003, encore moins cher, a un ADC encore pire ; à l’inverse, certains MCU comme la série STM32H7 annoncent plus de 13 ENOB avec un ADC 16 bits ; mais un H7 coûte plus de 10 fois plus cher qu’un RP2350, donc les expérimentateurs les manipulent moins souvent (note d’application ADC STM32H7)
J’ai testé quelques cartes de développement STM32F103 avec un multimètre Siglent SDM3055 et une alimentation Siglent SPD330X ; l’ADC SAR 12 bits de la puce était fortement influencé par le layout et la conception de la carte ; même le pire échantillon donnait 10 bits effectifs, et le meilleur atteignait presque l’effet de 12 bits ; c’était sans réglages logiciels particuliers, et les performances baissaient parfois quand les communications étaient actives, mais sinon je n’ai pas vu d’effet notable d’autres bruits
Je comptais utiliser un (vrai) ADS1115 dans un projet, mais j’ai finalement choisi un STM32g071 ; c’était moins cher, plus facile à obtenir à ce moment-là, et plus flexible ; les ADC récents des séries STM32g/h ont clairement moins de pièges matériels et logiciels que les anciens F103
Je voulais aussi souligner que la phrase « dans ce paragraphe, on dit que les ADC de microcontrôleurs ont une plage fixe de 3,3 V et que 9 ENOB représentent environ 6 mV d’écart », ce qui donne l’impression que tous les MCU sont dépourvus de tension de référence indépendante, alors qu’il existe de nombreux MCU, y compris chez NXP, avec référence interne programmable
À propos de l’idée selon laquelle « les composants bon marché sont en majorité soit d’excellentes copies, soit des pièces recalées au QC qui ont fini dans la chaîne de distribution », la plupart des puces contrefaites que j’ai vues provenaient plutôt de ghost shifts (production clandestine en dehors des heures officielles), mais TI fabrique tous ses produits analogiques en interne, donc je pense qu’il est peu probable qu’il s’agisse de ghost shifts ou de pièces rejetées au contrôle qualité ; personnellement, je pense plutôt à un ADS1015 réétiqueté en ADS1115
Les contrefaçons qui m’ont réellement causé des problèmes (FDTI, clones STM32, etc.) étaient pour la plupart de vraies copies directes ; je rencontre cela plus souvent dans le numérique et le mixte que dans les cas de surstock, ghost shift ou reconditionnement de rebuts ; à noter que les clones STM32 utilisent une flash en stack die, car ils ne peuvent pas fabriquer le process flash et l’empilent donc séparément ; lors du ponçage du boîtier, on voit alors un jeu supplémentaire de bonding wires, et il est possible d’exploiter ce bus pour contourner la protection en lecture
Je suis l’auteur du billet, et je sais moi aussi qu’il a déjà été signalé des cas d’ADS1015 réétiquetés en ADS1115 ; si c’avait été un ADS1015, la sortie se serait arrêtée à 12 bits, mais les composants que j’ai testés produisaient bien une lecture 16 bits
Je m’intéresse aux ADC, à leur contexte et à leur histoire, même si jusqu’ici je ne les ai utilisés qu’à basse vitesse ; j’ai commencé avec le MCP3208 (SPI), 8 canaux, 100 kéchantillons/s, puis comme c’était trop lent j’ai basculé vers l’ADS7953 ; avec 16 canaux et une vitesse 10 fois supérieure, les performances étaient clairement meilleures ; en revanche, la programmation était plus difficile, et la vitesse maximale n’était atteinte qu’en balayant les entrées dans un ordre imposé ; pour moi, ces puces sont comme des voitures : l’ADS7953 ressemble à une supercar, le MCP3208 à une Toyota simple et fiable ; je suis aussi curieux de l’histoire industrielle de ces ADC, de leur place sur le marché et de leur niveau réel d’adoption
J’ai déjà vu à CERN un projet d’ADC 12 bits capable d’atteindre des dizaines de GHz d’échantillonnage ; le secret, c’était tout simplement le parallélisme ; plusieurs unités SAR 12 bits fonctionnant à des vitesses de l’ordre du MHz étaient dupliquées, et un gros multiplexeur analogique distribuait le signal en round-robin ; cela demande énormément de surface silicium, mais permet d’atteindre de très hautes vitesses ; au-delà de ces méthodes extrêmes, on utilise aussi des flash ADC (wiki Flash ADC) ou, pour la précision, des ADC multislope (tutoriel ADC multislope) ; là aussi, l’histoire et les coulisses m’intéressent
Je voudrais aussi mentionner l’AD9226 : un seul canal, mais 12 bits et jusqu’à 65 MSa/s ; je l’ai acheté autour de 12 $ sur AliExpress pour des essais de décodage logiciel de vidéo analogique ; quand je l’utilisais en 8 bits à environ 20 MSa/s avec un Raspberry Pi Zero et le périphérique SMI, le goulot d’étranglement était étonnamment le transfert de données ; à ce sujet, voici comment utiliser ce SMI (lien iosoft.blog)
Dans mon univers, 100 kéchantillons/s est déjà une vitesse énorme ; sur les programmes PLC, faire passer l’échantillonnage standard de 2 kéchantillons/s à 10 kéchantillons/s est déjà considéré comme une performance très élevée en pratique
Les ADC ultra-rapides sont trop difficiles à exploiter directement avec un microcontrôleur, donc on est plutôt dans le domaine des FPGA ; il faut souvent faire entrer les données ADC directement dans le FPGA, puis les convertir vers un bus parallèle plus simple à traiter côté MCU, et comme les transferts ultra-rapides demandent beaucoup de broches, de traitement bas niveau et de DMA, cela devient vite difficile en pratique
Contrairement à l’affirmation selon laquelle « un ADC 12 à 16 bits n’aurait qu’un ENOB de 8 à 9 », la conversion 1 bit utilisée pour le SACD (plusieurs millions d’échantillons par seconde) atteint une plage dynamique de 120 dB et une bande passante d’environ 100 kHz ; le CD (PCM 16 bits) est à 96 dB et 20 kHz ; du point de vue de la complexité du matériel analogique, un convertisseur 1 bit / bitstream est bien plus simple ; si les ADC 16 bits sont bon marché, c’est aussi grâce à la production de masse ; en pratique, remplacer de la profondeur de bits par de la fréquence d’échantillonnage est une idée assez séduisante, un peu comme en 3D quand le SSAA échantillonne davantage de pixels pour récupérer des informations haute fréquence (wiki DAC 1 bit, wiki Direct Stream Digital)
Un ADC à 3 $ n’est pas bon marché ; les vrais ADC low cost sont ceux intégrés aux MCU bas de gamme ; TI vend aussi volontairement des AES/ADC limités à 10/12 bits à bas prix, alors que leur linéarité réelle peut dépasser 16 bits ; la différence de coût de production entre une pièce défectueuse et une bonne pièce est presque nulle ; avec le même process semi-conducteur et une conception robuste, un ADC low cost n’a pas forcément des performances particulièrement mauvaises
LCSC peut être moins cher parce qu’ils achètent en gros directement chez TI et d’autres fournisseurs, puis revendent avec une faible marge ; j’y ai déjà vu des puces clones, mais elles étaient le plus souvent vendues sous une autre marque
Un prix bas ne signifie pas forcément une mauvaise qualité ; les ADC de haute précision sont faciles à réaliser si l’on n’a pas besoin d’une fréquence d’échantillonnage élevée, grâce aux techniques de traitement du signal ; les ADC delta-sigma ou à rampe peuvent faire des mesures très précises avec un circuit de maintien d’échantillon et même un seul bit, à condition d’y consacrer du temps ; en revanche, si vous voulez un flash ADC 16 bits à 100 MHz, il faudra quasiment hypothéquer votre maison
La plupart des entreprises ont des politiques tarifaires régionales ; par exemple, mon abonnement Spotify coûte environ 60 % du prix américain ; l’industrie électronique a elle aussi des listes de prix spécifiques au marché chinois ; au passage, les prix officiels affichés en Occident ne sont qu’un plafond maximal, et même pour de petits projets on peut obtenir des remises en parlant directement au service commercial
En réalité, un ADC à 3 $ n’est pas un composant si bon marché, et dans des pays où les coûts de fabrication sont plus bas, il peut être acheté bien moins cher ; au final, l’important est surtout que le produit fonctionne correctement aux tests en usine, et qu’il passe les conditions définies par le banc de test du produit : dans la pratique, cela suffit souvent