El muestreo de tiempo equivalente (ETS) es un truco para medir las señales de alta frecuencia cuando puede suponer la señal que está midiendo. El supuesto es que la señal que está muestreando es una señal repetitiva (es decir, una onda sinusoidal u otra señal de "constante de tiempo").
Para hacer esto de manera casera, necesita un medio para disparar de manera precisa y repetitiva en algún lugar fijo (su punto de activación), demorar durante un tiempo variable y luego comenzar y adquirir ADC a intervalos fijos.
El disparo se puede hacer con un comparador rápido y una referencia precisa. Si su referencia precisa es una salida DAC filtrada o estable, entonces tiene un punto de activación controlado por software ingenioso (aunque simplista). Alimente la salida del comparador en una entrada de captura de "temporizador de inicio" en su microcontrolador. La idea es hacer que el temporizador de su microcontrolador comience a contar en el instante en que se dispara el comparador. Cuando el temporizador se desborda, comienza una captura de ADC y se detiene (hasta que le diga que vigile el evento nuevamente).
Si está utilizando una rutina de interrupción o bucle estrecho (es decir, un software) para detectar cuándo expira el temporizador para iniciar su captura ADC, puede experimentar cierta inestabilidad, ya que llevará un tiempo variable detectar que el temporizador es hecho. Si puede, establezca la interrupción del temporizador para iniciar la transferencia ADC automáticamente. Esto es posible en numerosos microcontroladores.
Si aún no lo has adivinado, estarás ajustando el valor de inicio del temporizador para darte una "pausa" variable antes de comenzar el ciclo de muestreo. En esencia, estará "cruzando" la forma de onda repetitiva.
Ahora para el ADC. Para simplificar, supongamos que muestreará lo más rápido posible en todo momento. (Hablaré sobre las alternativas a continuación). Lo que esto significa es que tan pronto como finalice el ADC, le dirá que comience de nuevo. Ahora, algunos microcontroladores son mejores en esto que otros; Si puede DMA los resultados de su ADC y reiniciar automáticamente, esta es su mejor opción. De lo contrario, tendrá OTRA fuente de jitter en su ETS: el retraso entre una interrupción completa del ADC (o el sondeo que detecta la finalización), el almacenamiento de la muestra y el inicio de otra captura.
Existe tu sistema básico. pseudocódigo:
volatile int adc_count;
/* assumes you can't use DMA to drive the ADC */
void adc_interrupt(void)
{
store_value();
if(--adc_count) {
start_adc();
}
}
do {
int offset;
offset = 0; /* offset from trigger to first ADC sample */
do {
adc_count = 256; /* arbitrary, how many samples per trigger */
load_timer(offset); /* set timer value */
arm_timer(); /* timer will now start when the trigger occurs */
} while(adc_count);
offset += 10; /* arbitrary, how much to "move over" each trigger */
} while(offset < 100); /* arbitrary, how many triggers to use for an ETS capture */
Cosas bastante sencillas, pero como mencioné, debe diseñar el código y seleccionar un microcontrolador que le permita tener la menor fluctuación de fase posible. Esto significa que desea un microcontrolador que pueda configurarse de manera que se pueda iniciar una interrupción del temporizador y la captura de ADC, y que un evento de ADC completo pueda resultados de DMA (y reiniciar el ADC). Si su microcontrolador no puede hacer esto, tendrá un poco de inestabilidad en su muestreo y la forma de onda capturada puede verse un poco "apagada" ya que los puntos de muestra no estarán a intervalos uniformemente espaciados.
Ahora, ¿qué pasa si no desea muestrear lo más rápido posible? Desearía que la interrupción del ADC inicie un segundo temporizador que espere la cantidad de tiempo que desea tener entre las muestras y que la interrupción de ese segundo temporizador inicie nuevamente el ADC. Si está haciendo esto, debe tener en cuenta que esta es otra fuente de inestabilidad si tiene que usar una rutina de interrupción o sondeo (es decir, software) para detectar e iniciar los periféricos.
En pocas palabras, eso es ETS.