MCU: ¿qué sucederá si coloco un pin de salida PWM justo al lado de un montón de pines de entrada ADC?

Actualmente estoy considerando un circuito controlado por MCU que hará una variedad de cosas, incluido el accionamiento de algunos motores BLDC y la detección analógica (de sensores de posición, temperaturas y similares).

Los diseñadores del chip que me gustaría usar (un STM32F4, FWIW) han considerado apropiado colocar los siguientes dos pines uno al lado del otro:

  1. El único pin de salida posible para un temporizador que me gustaría usar como salida PWM para uno de los controladores de motor.
  2. TODAS las entradas ADC.

Algunas cositas más:

  • El pin PWM puede funcionar en ciclos de trabajo muy bajos/altos (<1 % a >99 %) a 20 kHz
  • Las señales analógicas de interés oscilan entre ~2 Hz y ~200 kHz, según el tipo de sensor.

Ahora, voy a seguir adelante y postular que poner un pin PWM justo al lado de una entrada ADC es una mala práctica, pero me pregunto:

  • alguien ha probado esto con exito?
  • ¿Cuáles son algunas posibles soluciones de mitigación que permitirían que esto funcione?

Editar:

Así es como se ve la parte de MCU. He resaltado el pin del temporizador ofensivo:

ingrese la descripción de la imagen aquí

¿Puedes publicar tu circuito? o es TS? Puedo afirmar que sus pines PWM adyacentes inducirán algo de EMI/RFI en cualquier pin de entrada cercano. Depende de usted cómo diseñar y maquetar. ¿Qué medidas ha tomado para evitar cualquier emisión y respectiva recepción?
Todavía no hay mucho de un circuito: ST publica una utilidad llamada STM32CubeMX que le permite diseñar una MCU antes de comprometerse con un diseño, que actualmente estoy usando para explorar las alternativas. En caso de que quieras detalles, estoy viendo la serie F4 en paquetes TQFP100/144; la salida TIM8 CH1N se asigna a dos pines cuyas funciones alternativas son ADC y están justo en el medio de la sección del chip donde están todos los pines ADC. No sé qué llevó a los diseñadores a hacer esto (solo puedo suponer que hubo una buena razón que no puedo ver) y estoy debatiendo cambiar a un chip más grande para evitar el problema.
Una cosa que consideré es conectar a tierra los pines adyacentes y ejecutar el seguimiento de PWM a través de una vía lo más cerca posible del pin, moviendo el seguimiento al otro lado de un plano de tierra. De esa manera, solo hay una sección corta que no está protegida y los pines adyacentes no se usan. Esta solución no es ideal: requeriría renunciar a 2 de los 24 pines ADC disponibles, que ya son escasos para esta aplicación. Pero no sé qué tan efectiva sería esta solución, y el diseño es más sensible al tiempo que al costo por ahora.
Publique lo que tenga y lo que le interese usar y sobre lo que haga preguntas.
Invocar ruido en las entradas del ADC es lo que necesita para que funcione el sobremuestreo. Si no estás haciendo eso, entonces evita el ruido.
Lo más importante es asegurarse de que la corriente de retorno de pwm se ejecute justo debajo del seguimiento (y, por supuesto, no debería haber ningún timbre, así que acortarlo o terminarlo). Entonces no afectará al ADC.
@GregoryKornblum, no estoy seguro de que eso sea cierto. La ruta de la corriente de retorno de una señal de alta frecuencia es una consideración importante, pero eso no afecta el acoplamiento a un conductor cercano. Se seguirá produciendo diafonía.
Bien. Usualmente uso la regla de diseño de espacio libre mínimo que reduce la diafonía magnética. El acoplamiento capacitivo no parece ser una preocupación aquí. Pero sí, tienes razón, se debe evitar el acoplamiento magnético.

Respuestas (3)

De hecho, ha identificado un problema legítimo de diafonía. Estrictamente hablando, la magnitud de acoplamiento de la diafonía no es una función de la frecuencia de la señal. Es una función de qué tan rápido va la señal de alto a bajo o de bajo a alto. Incluso una señal PWM de 1 Hz se acoplaría a una línea cercana durante los flancos de subida y bajada. Obviamente, para su señal de 20 kHz, sucede 40 000 veces por segundo, lo que sin duda puede ser un problema. Como punto de interés académico, una buena señal de onda sinusoidal suave no inducirá tanta diafonía como una onda cuadrada con la misma frecuencia.

Además del tiempo de subida y bajada de los bordes de la onda cuadrada, la diafonía también es una función de la distancia entre las trazas de la señal, la distancia que recorren las dos trazas juntas y su distancia por encima de su plano de referencia.

Dado que el pin PWM y el pin ADC están físicamente uno al lado del otro, sus rastros estarán muy cerca durante cierto tiempo y no hay nada que pueda hacer al respecto. Obviamente, cualquier método para separar los dos rastros lo antes posible ayudará. También puede reducir el efecto de acoplamiento asegurándose de que el plano de referencia esté muy cerca. En una PCB, eso significa usar una placa de 4 capas (o más) para que un plano de tierra se pueda colocar a no más de un espesor de preimpregnado (generalmente solo unas pocas milésimas de pulgada). En una placa de 2 capas, el plano de tierra será el lado opuesto de la placa, que normalmente está a 63 mils de distancia y es muy malo para la diafonía.

Hay una muy buena calculadora en línea gratuita llamada Saturn PCB Design Toolkit que le permitirá aproximar la magnitud de la diafonía. Puede tener una idea de qué tan mal se volverá la diafonía en función de su diseño. No puede conocer el tiempo de transición sin conocer la fuerza de la unidad del controlador de salida y la impedancia exacta de la traza conectada al pin PWM, pero puede usar algo como 10 ns más o menos como una aproximación conservadora.

Si se necesita una precisión muy alta en las lecturas del ADC y la magnitud de la diafonía calculada es demasiado alta, quizás lo mejor que se puede hacer es elegir otra MCU. Hay toneladas más disponibles del mismo fabricante, por lo que debería ser trivial encontrar uno con un pin PWM y ADC separados entre sí. Si hay alguna razón por la que debe usar esa MCU específica, entonces tendrá que determinar con cuánta diafonía puede vivir y diseñar para eso.

Aceptado por el tratamiento más completo sobre el tema. ¡Gracias por tomarte el tiempo, @Dan Laks!

¡Me sorprende que nadie aquí haya mencionado nada sobre el nivel de impedancia en las líneas ADC! Obviamente, es más fácil perturbar una línea de alta impedancia en una entrada que perturbar una línea de baja impedancia. Si sus sensores tienen salidas de alta impedancia, recomendaría amortiguar su voltaje de salida localmente (cerca del sensor). Si sus sensores tienen salidas de baja impedancia de salida, es posible que no sea necesario el almacenamiento en búfer.

También podría considerar almacenar en búfer las señales del sensor de todos modos a una distancia corta de la MCU y asegurarse de que las señales permanezcan "limpias". Luego diríjalos a las entradas del ADC.

Dependiendo de qué tan buena sea la herramienta de diseño (suponiendo un diseño), un anillo de protección alrededor de la entrada ADC también podría ser beneficioso.
@PeterSmith, ¿podría dar un ejemplo de esto? Actualmente, la única forma en que puedo pensar en implementar un anillo de protección es conectar a tierra los pines adyacentes y luego verter GND sobre ellos. La combinación de esto con una vía muy cercana al pin PWM para llevar la señal al otro lado de la placa (y al otro lado de un plano de tierra) completa el diseño. Pero me gustaría evitar esto si es posible, ya que ambos son pines ADC y escasean en mi diseño tal como está.
Prepararé algo por la mañana.
Minimice la longitud de la pista paralela cercana volviendo a colocar el PWM o el ADC debajo del STM e inmediatamente pasando al otro lado de la placa. Tomaría el PWM ya que es el más ruidoso y no podría importarme el ruido proveniente del propio chip.

Debe establecer la velocidad GPIO en el valor más bajo para tener un tiempo de subida y bajada más largo. Esto debería ayudar con el problema de la diafonía. Esta diafonía es inductiva, si su línea PWM no es una línea de baja impedancia, no debería tener ningún problema.

Si bien este es un enfoque interesante en general, en mi caso específico, la sincronización del borde es importante debido al potencial disparo en el controlador del motor al que se dirige esta señal PWM. Me gustaría evitar cualquier cosa que cree posibles problemas de sincronización de ese tipo (dejo una nota aquí para los que vienen después de mí).
Bien, entonces deberías mantener el tiempo de subida y bajada más tiempo. Debido a la baja frecuencia (20 KHz), deberías tener un sobreimpulso o subimpulso muy pequeño.