Necesitábamos lectores de termopares aislados para un proyecto de trabajo, así que diseñé una PCB con dos copias del siguiente circuito en una PCB, con las conexiones rotas a un conector JST-XH.
Recibí los PCB (completamente ensamblados), conecté uno a un Arduino y no funcionó. Recibía datos no deseados de los circuitos integrados del termopar, con la temperatura interna reportada como -0.06C, y la temperatura del termopar reportada como un error incluso cuando se adjuntaba una t / c. A veces, la temperatura interna se mostraría como ~ 120C, luego bajaría a -10C, y luego volvería a 0.06C.
Luego cambié al software SPI, y funcionó perfectamente. Mirando la sincronización en el alcance, vi que el software SPI estaba tomando 120 ms para leer los datos (!!!), por lo que asumí que era un problema de sincronización (aunque el aislador IC está especificado para su uso hasta 24 Mbps), y comencé a modificar La biblioteca y el cambio / eliminación de llamadas de demora, tratando de encontrar el punto en que se descompone. Eliminé todos los retrasos, y ahora lo tengo funcionando de manera confiable con una lectura que toma 3 ms. Si configuro el SPI de hardware y lo cronometro a 125Khz, una lectura toma 2 ms, pero sigue fallando.
¿Hay alguna razón obvia por la que el hardware SPI está fallando con este circuito? Si miro las líneas de señal en un osciloscopio todo se ve como lo esperaba (aunque no he descodificado los datos). Si utilizo la misma configuración sin aisladores (es decir, dos módulos de termopar Adafruit) funciona perfectamente a la velocidad de reloj de 4 MHz predeterminada de la biblioteca.
Cualquier puntero muy apreciado, gracias!