Medición de compensación de VPP y CC de una señal de 1 Hz - 1 MHz usando MCU

Necesito medir el voltaje pico a pico y la compensación de CC de una onda sinusoidal/triangular de 1 Hz a 1 MHz. La amplitud de las señales varía entre 0 y 2Vpp y el offset puede variar entre -2v y +5v. Usaré un Atmega16 para hacer el A/D. El Atmega16 tiene un ADC de 10 bits de 8 canales con una frecuencia de muestreo de 50-200 KHz a una resolución de 10 bits. Obviamente, tomar múltiples muestras para el ciclo está fuera de discusión.

Lo que estaba pensando hacer era muestrear dos versiones diferentes de la señal, por ejemplo, conectar la señal a un detector de pico negativo y un rectificador de precisión y conectar las salidas de esos circuitos a dos canales ADC diferentes y luego del resultado de estas conversiones (es decir, el negativo y picos positivos) calcule la compensación de vpp y DC. Obviamente, las señales deberán escalarse y cambiarse de nivel antes de aplicarse al controlador.

No estoy muy seguro de si esto funcionará en absoluto, debe haber una manera mucho más simple y sofisticada de hacer esto que no he pensado.

¿Qué tan rápido cambia la compensación de CC? O mejor aún, ¿qué tan rápido necesita saber si la compensación de CC ha cambiado? Si usa una tapa realmente grande, podría medir un voltaje de CC, pero cambiaría lentamente en comparación con la señal.
No he hecho ningún cálculo, pero probablemente sería suficiente actualizar la lectura de compensación de CC cada 200-500 ms.

Respuestas (2)

Varias formas de medir el voltaje pico a pico con una MCU:

  • submuestreo: Muestra directamente con un ADC, aunque sepa que está obteniendo menos de una muestra por ciclo de la señal. Esto requiere (a) que la señal se repita una y otra vez sobre la misma forma de onda, y que cualquier cambio en ese patrón ocurra con relativa lentitud, y (b) la parte real de muestreo y retención del ADC tenga un ancho de banda lo suficientemente alto, aunque solo obtener una muestra una vez cada pocos ciclos de la señal, y (c) el instante de muestreo exacto del muestreo y retención no siempre llega al mismo punto en la señal repetida, sino que se desplaza a lo largo de él, alcanzando finalmente el pico más alto y luego el valle más bajo de la señal. (A menudo, esta deriva ocurre sin que tenga que hacer nada, pero para garantizar que siempre funcionará, es posible que deba bajarsu frecuencia de muestreo con algunas señales). Los osciloscopios digitales de alta velocidad suelen utilizar esta técnica de submuestreo para inspeccionar señales de frecuencia sorprendentemente alta.

  • use el detector de pico máximo y el detector de valle mínimo para mantener los voltajes máximo y mínimo en los capacitores de muestreo durante el tiempo suficiente para que pueda muestrearlos. Use una resistencia en cada capacitor con una constante de tiempo RC "lo suficientemente larga" para que el cambio en el voltaje del máximo real a su muestra de ADC sea insignificante, o use un transistor en cada capacitor para restablecer el voltaje inmediatamente después de que lo muestree. Si puede estimar la caída de voltaje del diodo en el software, el hardware más simple es un detector de pico de diodo-capacitor-resistencia y un detector de valle de diodo-capacitor-resistencia ... pero usar un detector de pico de precisión de amplificador operacional en lugar de un solo diodo puede ser más simple que tratar de estimar la caída de voltaje del diodo.

  • use un capacitor de bloqueo de CC, seguido de un diodo a tierra (para sujetar el voltaje mínimo a 0) y un diodo a un capacitor de muestreo de detección de pico. El voltaje en ese capacitor le da directamente el voltaje de pico a pico. De alguna manera estime y compense las caídas de voltaje del diodo en el software, o use amplificadores operacionales para compensarlas en el hardware, similar al detector de picos.

  • use un mezclador de frecuencia (multiplicador analógico) para cambiar las señales de alta frecuencia a una frecuencia más fácil de manejar dentro de la capacidad de su ADC. (Al igual que el submuestreo, esto supone que la señal se repite una y otra vez en la misma forma de onda, y cualquier cambio en ese patrón ocurre con relativa lentitud).

No estoy seguro de por qué quieres un rectificador de precisión. Supongo que realmente quiso decir "detector de pico de precisión" (que ciertamente es casi el mismo circuito).

Un filtro RC con una constante de tiempo RC larga le dará el voltaje promedio de la señal. Como dice pingswept, probablemente sea mejor usar una frecuencia de corte fija (para la detección de pico, detección de valle y detección de promedio) para manejar las frecuencias altas con circuitos analógicos y manejar las frecuencias bajas en el software.

Siempre que la MCU esté muestreando el voltaje pico más alto y el voltaje valle más bajo, considere también reportar el voltaje medio entre los dos; esto no siempre es el mismo que el voltaje promedio real de la señal.

Creo que está tomando el enfoque correcto al dividir la señal y medir cada parámetro por separado.

Primero, mide el voltaje de compensación de CC mediante el filtrado de paso bajo de la señal y alimentando la salida al A/D. Debido a que la señal oscila en un rango de frecuencias tan amplio, necesitará un filtro con una frecuencia de corte adaptable o tendrá que soportar un retraso prolongado en sus lecturas. Es posible que pueda hacer algo inteligente filtrando la señal lo suficiente en el hardware para reducirla a 20 kHz más o menos; entonces podría calcular el valor promedio en el software.

(No creo que acelere su respuesta, pero podría ser más fácil que construir un filtro con una frecuencia de corte cambiante, lo cual no es trivial).

Luego, vas tras la amplitud. Cambias de nivel, rectificas y escalas el voltaje de entrada para que abarque el rango del Atmega16 A/D. Podrías hacer esto con dos amplificadores operacionales rápidos y un rectificador. Creo que el orden es importante, o al menos debe tener cuidado con el voltaje al que se refiere su rectificador.

¿Qué pasa con la detección del pico negativo en lugar de la compensación de CC, ya que esto no se complicaría por problemas de respuesta de frecuencia? Para rectificar el cambio de escala y nivel, ¿sería lo suficientemente rápido el TL072?
La detección de picos negativos podría funcionar igual de bien. Me preocuparía un poco el tiempo de encendido del diodo: a 1 MHz, un diodo grande tardará varios ciclos en encenderse. Por supuesto, debe usar un diodo pequeño, pero no estoy seguro de qué tan rápido se vuelven. Si puede cambiar los nanosegundos, lo que creo que es probable para una señal de baja potencia, debería funcionar bien.
Con respecto a la velocidad de TL072, creo que serán lo suficientemente rápidos. Su producto de ancho de banda de ganancia (GBW) aparece en 3 MHz, lo que significa que a 1 MHz, solo puede obtener una ganancia de 3. Probablemente solo necesite una ganancia de 2, por lo que, en teoría, está bien. Si puede obtener algo fácilmente, podría probar algo más rápido, como un LT1056 (GBW de 6,5 MHz). Pero si esto es solo por diversión, para la escuela o lo que sea, los TL072 deberían funcionar.
Tengo algunos diodos de señal diferentes, así que haré algunas pruebas con respecto a la velocidad.
El LT1056 parece difícil de encontrar y bastante caro, creo que tengo algunos NE5534 (GBW "típicos" de 10 MHz) que puedo usar si es necesario; de lo contrario, probablemente me quede con los TL072, ya que el proyecto no es solo para producción.
Sospecho que en la práctica, el TL072 funcionará bien. Si realmente hace que la cosa funcione principalmente, puede actualizar los amplificadores operacionales para mejorar su rendimiento en el extremo superior.
Exactamente lo que estaba pensando, lo probaré en la placa antes de comprometerme con algo, así que...