Deja de parpadear LD1 en STM32F4 Discovery

Tengo un sistema que construí usando un ADC ADS1263 de 32 bits que mide pequeños biopotenciales sin mucha amplificación (por una variedad de razones que no se discuten): un amplificador de instrumentación de muy bajo ruido con una ganancia de 8 y un ruido realmente bajo. amplificador operacional para suministrar un Vref para manejar el sesgo.

En un momento, todo parecía ir a la perfección, especialmente antes de construir mi PCB de 4 capas, y luego apareció un problema.

En aras de una implementación rápida, se hicieron algunos compromisos, el más importante fue que acabo de montar una placa Discovery directamente en mi placa principal.

El sistema escupe uart a una PC a través de un cable USB FTDI montado como un puerto COM virtual (para ahorrarme tiempo en la elaboración de mi propia pila USB hasta una versión posterior, ¡ja!). El cable FTDI también trae Vusb a la placa. Pasa por un convertidor de CC a CC de 5 V a 6 V (aislado), que luego se regula nuevamente a 5 V y luego a 3 V con LDO. Los 5V alimentan mi Discovery Board, con energía y conexión a tierra a través de cuentas de ferrita en el frente de la placa. El UART pasa por un aislador bidireccional y luego vuelve al lado de alimentación USB.

Bueno, parece que mi lado analógico funciona bien, pero no puedo ver los biopotenciales en un osciloscopio, ya que son demasiado pequeños, incluso después de mi ganancia de 8. Necesito probarlos con el de 32 bits. ADC para poder verlos.

Estoy teniendo una oscilación funky con un período en los segundos que me ha tenido trepando por las paredes antes de la tarde de hoy. La entrada se acorta para generar esta muestra (la amplitud es de 32 bits con signo en un rango de 5 V, y el eje y es el número de muestras a 2400 Hz):ingrese la descripción de la imagen aquí

Parece dramático y, de hecho, es problemático en mi escenario, pero la magnitud de esa onda cuadrada corresponde a aproximadamente 90uV en la entrada del ADC (ganancia PGA = 32) y aproximadamente 11uV en la entrada de mi amplificador. Hasta el día de hoy, he estado buscando problemas de conexión a tierra, etc., y por mi vida no pude averiguar qué podría estar sucediendo en esa escala de tiempo que podría estar causando esto. A pesar de que estoy filtrando, consideré que si tenía cosas malas en el suelo, tal vez estaba creando un alias, y este fue el resultado.

En cualquier caso, durante la programación y después, el problema pareció desaparecer. Esto me confundió. Pensé que proporcionar energía a la placa a través de Vusb no aislado podría haber solucionado el problema. Resultó que estaba equivocado.

Luego, a última hora de esta tarde, noté que LD1 en mi Discovery Board parpadeaba en rojo exactamente en sincronía con mi onda cuadrada. ¡Hurra! Cuando inserto el cable USB para programarlo, el parpadeo se detuvo y se volvió rojo fijo, supongo que cuando el ST-Link integrado se resolvió y la onda cuadrada desapareció. Cuando quito ese cable USB, la luz permanece fija y no se ve ninguna onda cuadrada.

Entonces, parece que ese LED parpadeante o algo más que sucede en el ST-Link está causando algunos microvoltios de hundimiento en alguna parte.

Supongo que a la larga, realmente debería hacer que mi esquema de energía sea a prueba de balas, pero a corto plazo realmente me gustaría hacer que la onda cuadrada desaparezca al deshacerme del consumo de corriente que presumiblemente la está causando. Me encantaría algún consejo sobre cómo deshabilitar de forma reversible el ST-Link, o forzarlo a que se apague por un momento. Tal vez solo engañarlo para que piense que se ha enumerado, manteniendo el LED encendido, está bien. El mejor escenario posible es que puedo hacer esto desde la parte SUPERIOR del tablero Discovery, ya que ese es mi acceso sin desmontar.

Si la acción es irreversible, probablemente pueda vivir con eso. Mataría una placa para asegurarme de que puedo continuar con esto, y tal vez la programaría con otro ST-Link, o simplemente me convencería de que el problema está resuelto y luego terminaría la programación y seguiría reemplazando la placa.

Por cierto, ¡parece un microvoltio de ruido referido a la entrada con mis entradas en cortocircuito!
Esos chips TI ADC generalmente vienen con un diseño de referencia (en DK). En mi opinión, se requiere un diseño limpio con GND analógico y digital separados.
@TurboJ: seguí el diseño de referencia de TI con bastante precisión. En general, mi rendimiento de ruido parece excelente y mi piso de ruido está bastante cerca de la clasificación de ruido del amplificador de instrumentación. La oscilación vista tiene un período de aproximadamente 0,5 segundos. Sospecho que no es un problema de tierra, sino una caída de energía en algún lugar cuando el consumo de corriente cambia en 40 mA más o menos para este LED macizo. Es difícil encontrar cuándo los cambios pueden ser del orden de 10uV.
¿Has probado simplemente quitando el LED? No creo que sea necesario para el funcionamiento del ST-Link.
@Arsenal No lo he probado todavía. Si no obtengo una sugerencia mejor, ese será el paso 1, después de echar un vistazo al esquema solo para asegurarme de que está bien. Probablemente sea más fácil tirar de una resistencia limitadora de corriente, ya que podría hacerlo con la punta de la pinza Weller muy rápido. Por supuesto, esto supone que el problema es el LED, pero podría ser otra cosa en el proceso de enumeración.
@Arsenal parece que tirar de R4 lo haría, ¡y todavía tendría el LED verde para decirme que la programación está funcionando!
Noto que la línea de ID en el conector USB está atada baja. ¿Dejar que flotar arreglaría esto?
La línea ID es para la identificación USB OTG (host/dispositivo), por lo que no creo que eso marque una gran diferencia allí.
@Arsenal Me preguntaba por qué un dispositivo USB estaría activo buscando un host, y esperaba que fuera porque era un hardware configurado como un host OTG
Sin un esquema, es difícil decirlo, pero esperaría que la perla de ferrita en su tierra regrese del descubrimiento para cambiar 0v de esta manera. ¿Has probado a cortocircuitarlo? ¿Tienes todo pasando por eso?
Las perlas de ferrita son de baja resistencia en CC y el regulador está en el lado analógico. Dicho esto, estoy usando el dac en el descubrimiento para la compensación, lo que puede ser el origen del problema. Corté las cuentas y no sirvió de nada.

Respuestas (1)

Después de darme cuenta de que había muy pocas esperanzas más allá de mostrar el ST-link con un código mejorado, saqué R4, deshabilité la parte roja de LD1 mientras aún tenía la luz verde para confirmar la programación, y el problema desapareció.

ingrese la descripción de la imagen aquí

El ruido parece dramático, pero eso es aproximadamente 2 uV referido a la entrada, simplemente el doble de mi ideal teórico dado mi conjunto de chips analógicos, y ni siquiera me he molestado en tener en cuenta el ruido de Johnson en la resistencia de protección del paciente de 500K en mi electrodo de referencia activado. Además, todavía no he realizado ningún filtrado de paso alto, que será necesario para las señales EMG que necesito recopilar, por lo que cualquier 60Hz debería desaparecer.

Algunas lecciones aprendidas.
1- hay una opacidad en el diseño de ADC de alta resolución que no había previsto. El equipo de banco estándar no está a la altura del trabajo de buscar caídas de 100 uV. Ciertamente, comience con un diseño de fuente de alimentación a prueba de balas que pueda, porque es un oso depurarlo más tarde.

2- Hazlo bien, o hazlo de nuevo. En retrospectiva, la elección de usar un DAC integrado no tenía mucho sentido. Debería haber pensado más en dónde elegí aislar Vusb. Habría tenido mucho más sentido mantener el Discovery en el lado Vusb y usar un DAC externo en lugar del STM32F407 en el chip DAC. En lugar de aislar la comunicación UART, debería haber aislado las comunicaciones SPI y haber mantenido TODAS las cosas analógicas en mi propia placa, aisladas. Esto no solo tiene más sentido, sino que habría evitado por completo el problema en cuestión. Caí en algunas opciones de diseño divertidas debido a la necesidad de velocidad y al conocimiento de que esto solo sería un prototipo completamente funcional y no una versión final. Tuve suerte, porque ahora tengo ese prototipo en pleno funcionamiento, pero eso estaba lejos de ser algo seguro.