1 puntos por GN⁺ 2025-10-16 | 1 comentarios | Compartir por WhatsApp
  • El módulo ADS1115 ADC de bajo costo ofrece funciones casi idénticas a las especificaciones oficiales
  • La función de amplificador de ganancia programable permite una alta precisión de medición incluso en rangos de voltaje muy pequeños
  • En algunas placas económicas se confirmaron casos de error en velocidad de medición y precisión
  • Al aplicar un algoritmo de calibración simple, es posible obtener resultados bastante precisos
  • Es posible que las piezas baratas sean defectuosas o copias, pero para un uso básico no presentan grandes problemas

Experimento de rendimiento real del ADS1115 ADC de bajo costo

Resumen

  • En trabajos embebidos normalmente se usa el ADC (convertidor analógico-digital) integrado en el microcontrolador
  • El ADC integrado es barato y rápido, pero su número efectivo de bits (ENOB) real suele estar en el nivel de 8~9 bits
  • Recientemente se hizo una prueba del módulo ADS1115 de Texas Instruments(TI)
  • El ADS1115 es un ADC externo que ofrece una precisión de hasta 16 bits

Características principales del ADS1115

  • Su función de ampliación de rango dinámico permite medir voltajes pequeños con hasta 20 veces más detalle
  • Mediante el amplificador de ganancia programable (PGA), el rango total de medición puede ajustarse de ±6.144 V a ±0.256 V
    • El LSB mínimo es de aproximadamente 7.8 μV (0.256 V ÷ 32768), por lo que puede detectar cambios muy pequeños
    • En comparación, un ADC integrado típico en un microcontrolador (con referencia de 3.3V y 9 ENOB) tiene un paso de unos 6mV, por lo que la resolución es muy superior
  • Usa una referencia de voltaje interna, lo que representa una ventaja frente a MCU como el RP2040, que requieren una referencia analógica externa

Tema de precio y entorno de pruebas

  • El ADS1115 muestra una gran variación de precio: alrededor de $4 en Digikey para cantidades de 1,000 unidades, y $0.60 en LCSC
  • Se compró en Amazon una placa breakout ADS1115 a $2.97 por unidad (probablemente con la pieza de $0.60)
  • También se planea comparar con una placa cara (original) de Adafruit

Proceso de prueba real

  • Se probó la placa económica usando I²CMini y una fuente de voltaje DC de precisión

  • Puntos principales a revisar:

    • si funciona tal como indican las especificaciones
    • o si en realidad se vende otra pieza más barata haciéndola pasar por un ADS1115
  • Resultados de la prueba

    • El funcionamiento básico, la salida de 16 bits, el amplificador de ganancia programable y las distintas velocidades de muestreo coincidieron en general con la hoja de datos de TI
    • En modo diferencial, al conectar la entrada siempre medía 0; con una entrada de 2.5V medía correctamente; y al invertir la polaridad entregaba el valor opuesto, por lo que no hubo problemas en el funcionamiento básico

Precisión de medición y errores

  • Data Rate (velocidad de muestreo): según la especificación de TI, se permite una variación dentro de ±10%
    • En modo 8 SPS, tres placas funcionaron un poco más lento, entre 6.5~7 SPS
    • Una placa funcionó con un timing completamente incorrecto, a 300 SPS, y fue excluida de las pruebas posteriores
  • Al medir un voltaje de precisión (2.50067V), la salida fue de 2.4883V, lo que produjo un error de unos 12mV/0.5% (mayor que la especificación oficial de TI)
  • Al aplicar en el microcontrolador un algoritmo de calibración lineal simple, el error mejoró hasta quedar dentro de 10 μV

Conclusión

  • Se estima que piezas defectuosas o por debajo de las especificaciones frente al producto original llegaron a canales de distribución hobby de bajo costo
  • Aun así, en lo básico permite mediciones bastante precisas, y con una calibración por software no presenta grandes problemas para uso real
  • Se planea conseguir después una placa original de alto precio para volver a probarla bajo las mismas condiciones

Cierre

  • El ADS1115 económico ofrece una relación precio-rendimiento bastante destacable
  • Si se añade una calibración simple a nivel de hardware/firmware, es posible asegurar una precisión práctica
  • Conviene prestar atención al punto de compra y al control de calidad por posibles problemas de defectos

1 comentarios

 
GN⁺ 2025-10-16
Opiniones de Hacker News
  • Si lijas tanto la pieza barata como la original con lija fina y luego las limpias con isopropanol antes de ponerlas bajo un microscopio óptico, compararlas se vuelve fácil; ni siquiera hace falta llegar a marcas identificables o a las capas metálicas para ver de inmediato similitudes y diferencias estructurales en el die del chip. Las piezas clonadas suelen mostrar grandes diferencias en nodo tecnológico, arquitectura, tamaño del chip, etc., porque normalmente solo imitan la funcionalidad. Recomiendo este método de desmontaje de baja tecnología con lija, y comparto imágenes relacionadas (imagen 1 / imagen 2)

    • He hecho este tipo de trabajo varias veces, sobre todo para resolver disputas sobre el origen de componentes. La mayoría de los encapsulados epóxicos se quitan rápido disolviéndolos en ácido sulfúrico/nítrico hirviendo. En mi experiencia, la mayoría de los casos son simple relabeling, cambio de bin, o encubrimiento evidente de piezas que no pasaron QC, muchas veces en muestras. También hay un video de ejemplo de hace algunos años (enlace al video)

    • No necesariamente tiene que ser un clon; como dijo el autor original, también hay muchos casos en que productos que fueron marcados como fuera de especificación durante el proceso de fabricación se reempaquetan y se envían a la cadena normal de distribución.

    • Si aquí hubiera alguna función de etiquetas, este sería justo el tipo de tema que le encantaría a Ken Shirriff; recomiendo ver su blog (righto.com).

  • No estoy de acuerdo con la afirmación de que "es barato y relativamente rápido, pero la calidad no es muy buena, y aunque especifique salida de 12/16 bits, el número efectivo de bits (ENOB) anda por 8~9". En un MCU moderno, si se toman precauciones como suministrar una referencia de voltaje externa estable y apagar subsistemas innecesarios dentro del chip, es totalmente posible obtener más de 10 bits de ENOB. Claro, un ADC integrado no rinde igual que un ADC independiente, pero en la práctica sirve para el 90% de los casos de uso de ADC. Si se necesitan más bits, hace falta poner más esfuerzo en el diseño, pero en el texto no se menciona nada sobre la fuente de alimentación usada por el autor, ni sobre ruido del MCU o manejo de RFI. Así que es difícil saber si realmente era un IC falsificado con malas especificaciones o si el entorno de prueba tenía mucho ruido.

    • Se pueden obtener resultados interesantes usando dos GPIO en una topología sigma-delta de primer orden con dos resistencias externas, un capacitor y la histéresis desactivada. Usándolo con un RP2040 y alimentación LDO para medición diferencial —un canal siguiendo solo el ruido del umbral— obtuve 16 ENOB a 1 kHz, y aún más ENOB en DC. Es muy importante evitar actividad periódica dentro del chip; por ejemplo, hay que usar sleep en intervalos aleatorios para dispersar el espectro, y pude usar USB con ruido por debajo de -100 dB. Aún no he probado la precisión en DC, pero usando canales GPIO similares parece suficientemente bueno para usos no críticos y de baja precisión, como sensado de líneas CC o joysticks analógicos.

    • Ambos pueden tener razón. El autor original quizá hablaba representando solo a los MCU baratos, mientras que quien comentó probablemente tenía en mente MCU de gama más alta. El ADC de 12 bits del RP2350 tiene 9.2 ENOB según especificación. Al decimar múltiples muestras podría subir, pero la hoja de datos respalda la afirmación del autor (enlace a la documentación oficial de Raspberry Pi). El CH32V003, que es un MCU aún más barato, tiene peor desempeño de ADC. En cambio, también hay MCU como la serie STM32H7, cuyos ADC de 16 bits logran 13+ ENOB. Pero el H7 cuesta más de 10 veces que el RP2350, así que quienes experimentan no suelen usarlo mucho (nota de aplicación del ADC del STM32H7).

    • Probé varias placas de desarrollo STM32F103 con un multímetro Siglent SDM3055 y una fuente Siglent SPD330X. El ADC SAR de 12 bits del chip se veía muy afectado por el layout y el diseño de la placa. Incluso la peor muestra daba 10 bits, y la mejor mostraba un efecto cercano a 12 bits. Eso fue sin ajustes especiales de software. El rendimiento sí tendía a caer cuando había comunicaciones activas, pero fuera de eso no hubo efectos de ruido especialmente notables.

    • Planeaba usar un ADS1115 (real) en un proyecto, pero al final elegí un STM32g071. Era más barato, en ese momento era más fácil de conseguir y además más flexible. En los ADC recientes de las series STM32g/h hay claramente menos riesgos de hardware/software que en la vieja familia f103.

    • Solo quería señalar que, cuando en ese párrafo se dice que "el ADC del microcontrolador tiene un rango fijo de 3.3V, así que 9 ENOB equivalen a una diferencia de unos 6mV", suena como si todos los MCU carecieran de una referencia de voltaje independiente. Pero hay muchos MCU, incluidos algunos de NXP, que sí soportan referencias de voltaje programables integradas.

  • Sobre la opinión de que "los componentes baratos suelen ser copias excelentes o productos fallidos que no pasaron QC y terminaron en la cadena de distribución", la mayoría de los chips falsificados que yo he visto eran casos hechos en ghost shift —producción secreta fuera del horario laboral formal—, pero TI fabrica internamente todos sus productos analógicos, así que me parece poco probable que se trate de ghost shift o de piezas reprobadas por QC. Personalmente creo más probable que sea un ADS1015 relabelado.

    • En mi caso, las falsificaciones que me afectaron —FDTI, clones de STM32, etc.— eran en su mayoría copias hechas directamente. A diferencia de excedentes, ghost shift o reempaque de piezas defectuosas, esto parece pasar más seguido en digital y señal mixta. Como referencia, los chips clon de STM32 tienen flash en stack die, porque no pueden fabricar el proceso flash y entonces lo apilan por separado; por eso, al lijar el encapsulado aparece un juego extra de bonding wires. También se puede usar ese bus para saltarse la protección de lectura.

    • Soy quien escribió el artículo, y yo también sé que se ha reportado el caso de ADS1015 relabelados como ADS1115. Si hubiera sido un ADS1015, la salida se habría truncado a 12 bits, pero las piezas que probé sí daban claramente un readout de 16 bits.

  • Me interesa todo el tema y el contexto alrededor de los ADC. En la práctica solo los he usado a baja velocidad. Empecé con un MCP3208 (SPI), usándolo con 8 canales y 100K muestras/s, pero se me quedó corto y necesité un ADC más rápido, así que cambié a un ADS7953. Tenía 16 canales y era 10 veces más rápido, así que el rendimiento era claramente mejor. Eso sí, programarlo era más difícil, y para alcanzar la velocidad máxima hay que escanear las entradas en un orden predeterminado. Para mí estos chips se sienten como autos: el ADS7953 es como un superauto y el MCP3208 como un Toyota sencillo. También me interesa la historia industrial: cómo se fueron posicionando estos distintos chips ADC en el mercado, qué tanto se usan, etc.

    • Una vez vi en CERN un proyecto con ADC de 12 bits funcionando a decenas de GHz de muestreo. El secreto era, simplemente, el paralelismo. Duplicaban múltiples unidades SAR de 12 bits que operaban en el rango de MHz y distribuían la señal con un gran multiplexor analógico en round robin. Eso requiere una cantidad enorme de área de chip, pero permite alcanzar esas velocidades. Además de esos métodos extremos, también se usan ADC flash (wiki de ADC flash) o ADC multislope para precisión (tutorial de ADC multislope). También me interesan su historia y anécdotas.

    • También quisiera mencionar el AD9226. Es de un solo canal, pero de 12 bits y hasta 65MSa/s. Compré uno por unos $12 en AliExpress y lo usé para experimentar con decodificación por software de video analógico. Cuando lo usé alrededor de 8 bits y 20MSa/s con una Raspberry Pi Zero y el periférico SMI, el cuello de botella, inesperadamente, fue la transferencia de datos. Como referencia, aquí está el uso de SMI (enlace a iosoft.blog).

    • En mi mundo, 100K muestras/s ya es una velocidad increíblemente alta. En programas PLC, llevar el estándar de 2K muestras/s a 10K ya se considera, en la práctica, un rendimiento muy alto.

    • Los ADC ultrarrápidos son demasiado complicados para manejarlos directamente con un microcontrolador; eso suele ser territorio de FPGA. Hay que recibir los datos del ADC directamente con la FPGA y convertirlos para que el MCU pueda manejarlos fácilmente por un bus paralelo, y como las transferencias ultrarrápidas requieren muchos pines, bastante procesamiento manual y DMA, en la práctica se siente difícil.

  • A diferencia de la afirmación de que "un ADC de 12~16 bits tiene unos 8~9 ENOB", el método de conversión de 1 bit usado en SACD —con varios millones de muestras por segundo— logra un rango dinámico de 120 dB y un ancho de banda de ~100 kHz. El CD (PCM de 16 bits) se queda en 96 dB y 20 kHz. Desde el punto de vista de la complejidad del hardware analógico, un convertidor de 1 bit/bitstream es mucho más simple. Que los ADC de 16 bits sean baratos también tiene que ver con producción a gran escala. En realidad, sustituir profundidad de bits por velocidad de muestreo es una idea bastante atractiva. Es parecido a cómo SSAA en gráficos 3D obtiene información de alta frecuencia muestreando más píxeles (wiki de DAC de 1 bit, wiki de Direct Stream Digital).

  • Un ADC de $3 no es barato; los ADC realmente baratos son los integrados en MCU económicos. TI también vende a propósito AES/ADC limitados a 10/12 bits a bajo precio, aunque su linealidad real puede ser de más de 16 bits. La diferencia de costo de producción entre piezas defectuosas y buenas es casi nula. Si el proceso semiconductor es el mismo y el diseño es sólido, un ADC barato no necesariamente tiene peor rendimiento.

  • LCSC puede ser barato porque compra directamente en grandes volúmenes a TI y otros, y vende con márgenes bajos. Sí he visto chips clon en LCSC, pero la mayoría se venden con otra marca.

    • He pedido muchos componentes en LCSC y nunca he tenido un problema grande.
  • Un precio bajo no significa necesariamente mala calidad. Si no se requiere una alta velocidad de muestreo, los ADC de alta precisión son relativamente fáciles de implementar gracias a técnicas de procesamiento de señal, y métodos como delta-sigma o ADC de rampa pueden hacer mediciones de alta precisión con un circuito sample-and-hold y un solo bit. Eso sí, requieren tiempo. Si lo que quieres es un ADC flash de 16 bits a 100MHz, puede salir tan caro que casi habría que hipotecar la casa.

  • La mayoría de las empresas tienen políticas de precios por región. Por ejemplo, mi suscripción de Spotify cuesta alrededor del 60% del precio en Estados Unidos. La industria electrónica también tiene listas de precios específicas para China. Además, el precio oficial listado en Occidente no es más que un techo máximo; en la práctica, incluso para proyectos pequeños, si contactas directamente a ventas puedes conseguir descuentos.

  • En realidad, un ADC de $3 no es un componente tan barato, y en países con costos de fabricación bajos puede comprarse mucho más barato. Al final, lo importante es que el producto funcione correctamente en la prueba de fábrica y que pase las condiciones que exija el banco de pruebas por producto; en la práctica, con eso suele bastar.

    • En placas con decenas o cientos de componentes, una pieza de $3 muchas veces resulta ser de las más caras. Si intentas despachar el producto final a $20, esa diferencia pesa muchísimo. Además, si puedes confiar en los datos del fabricante, también puedes diseñar equipos de prueba mucho más simples y baratos. Por ejemplo, puedes hacer pruebas de durabilidad a largo plazo solo sobre algunas muestras —termografía, cámara ambiental, entradas repetidas, etc.— y si TI garantiza de -40 a +125 grados, entonces puedes confiar en la mayoría de las condiciones de borde. No puedes probar el 100% de todas las placas en un entorno real, pero sí es importante al menos encender y probar una vez cada función principal mediante pruebas en placa. Aun así, eso tampoco significa verificar directamente todas las especificaciones reales.