Interferencia en la lectura de ADC (STM32F4)

0

Estoy usando el ADC de un STM32F4DISCOVERY para muestrear una señal. Los valores muestreados se escriben directamente en el DAC. Probé esto y funcionó absolutamente bien, tal como lo esperaba.

Ahora quería controlar la aplicación a través de una interfaz web. Después de agregar el código para la interfaz de Ethernet, la señal muestreada es desordenada. Vea la imagen de abajo. (Cuando solo uso el DAC para generar una señal del software, esta onda no está presente, por lo que debe estar relacionada con ADC)

Elniveldelaseñaldeentradacambiademodoqueseencuentraentre0y3V.Estaseñalsevecomoyoesperaría.(Notengounafotodeesto)

Cuandovinculolaentradaa0V,laseñalmuestreadaseparecealaimagendeabajo.

Parece que la ondulación se agrega al pin ADC por el código de Ethernet. ¿Podría una señal en un cierto puerto IO ensuciarse con otras señales en ese puerto?

Comosemuestraenlaimagendearriba,elADCestáconectadoalPuertoC,Pin2.TambiénestánconectadosalPuertoC:ETH_RXD0,ETH_RXD1yETH_MDC.SospechoqueunadeestasseñalespuedealterarlalecturadelADC,yaquelaseñalpareceperfectamentenormalsinelcódigoEthernet.

¿Alguienmáshatenidoalgúnproblemaasí?

Editar:Algunainformaciónextra:

LaseñaldeentradaprovienedeunafuentedeCAde60Hz,veaelesquemaacontinuación.

Esto se ejecuta a través de un transformador, luego se cambia de nivel y se deja de amplificar. Al realizar la prueba, omito el transformador y uso un generador de señales para generar la señal (60Hz, 20Vp-p). Esta es la señal de entrada de la primera imagen!

Además, puedo producir una señal limpia y ordenada desde una tabla de consulta con solo el DAC, el DAC funciona bien (no hay interferencias en la salida del DAC).

La señal de entrada se muestrea a 50 kHz. Si el temporizador se ejecuta de manera irregular, no importa, ya que tiene que escribir el valor ADC de ese momento en particular en el DAC. Si el temporizador se interrumpió varias veces por segundo y, digamos, solo se ejecuta a 48 kHz o 40 kHz para el caso. Esto todavía produciría una onda sinusoidal decente. Al menos no explicará las oscilaciones en la salida.

Cuando depuro el código, veo el valor, leo desde el ADC, cambiando arriba y abajo cuando vinculo la entrada a cero.

Intentaré algunas de las sugerencias en las respuestas más tarde hoy.

    
pregunta Matthijs

2 respuestas

2

Todos los DAC requieren una referencia de voltaje o corriente. La referencia puede ser suministrada por un chip externo, o incorporarse al DAC.

Aquí hay una cosa que debe verificar: ¿Su referencia está oscilando?

Las causas de oscilación de referencia incluyen:

  1. no utiliza un condensador de filtro que un fabricante recomienda en la salida de referencia de DAC con referencias integradas

    1.1 no utiliza un condensador de filtro que un fabricante recomienda en una salida de referencia externa

  2. utilizando un condensador de filtro con el ESR incorrecto (resistencia equivalente en serie) - consulte la hoja de datos de la referencia
  3. oscilación en un circuito de amplificador operacional que "amortigua" la referencia debido a una carga capacitiva o error de diseño.

    3.1 No se utiliza un circuito de "búfer" de amplificador operacional cuando se requiere uno. ¿Está sacando demasiada corriente de la referencia?

  4. Ruido excesivo en cualquier fuente de alimentación (intente encender su circuito con la combinación adecuada de baterías)

No parece un problema de interferencia digital porque la perturbación parece ser muy constante y no hay "picos" u otras discontinuidades en la forma de onda. Para estar seguro, mida la frecuencia de la perturbación y encuentre una interferencia que varíe en la misma frecuencia o una lectura o escritura en el puerto de E / S que ocurra en la misma frecuencia

    
respondido por el user39588
0

Tienes todos los ases, por lo que solo dispersaré algunas ideas y observaciones: -

  1. Su primera imagen muestra la entrada al ADC y la salida del DAC, probablemente ADC y DAC usan la misma referencia de voltaje, ¿por qué son diferentes sus amplitudes p-p? Si, de hecho, la entrada no está en el pin del ADC, ¡prepárese para abofetearse en la muñeca!
  2. La ondulación del DAC cuando 0V en la entrada: ¿qué frecuencia es y qué frecuencia es su forma de onda de entrada? Además, ¿a qué tasa de muestreo está ejecutando y presumiblemente está haciendo conversiones de ADC 1: 1 a salidas DAC?
  3. Si amplió la traza del alcance del DAC, ¿puede identificar las partes planas que corresponden a muestras individuales? Si puede ver muestras en la traza pero no son planas sino redondeadas como la "ondulación", entonces esto es un problema de ruido externo analógico. .
  4. Su referencia de voltaje: si es externo, es posible que necesite un condensador de 10 uF desde él a tierra analógica.
  5. ¿Dónde está la tierra analógica y dónde están los pines Vcc analógicos en el dispositivo?
  6. ¿Sabe que aunque haya seleccionado la referencia analógica interna en su MCU, es probable que los pines de referencia aún surjan como pines y que necesiten desacoplamiento? No estoy diciendo que definitivamente es posible.
  7. ¿El rizado / ruido desaparece cuando la conexión de Ethernet se desconecta físicamente, es decir, el enchufe que se quitó o los cables que se abrieron (todos ellos)?
  8. "Parece que la ondulación se agrega al pin de ADC por el código de Ethernet". El código no puede agregar una ondulación a un pin de ADC que yo sepa.

Buena suerte y déjanos saber lo que encuentras.

    
respondido por el Andy aka

Lea otras preguntas en las etiquetas