Obtención de un valor constante de ADC

-2

Ejecuto un ADC de 10 bits del cual obtengo un número que varía entre +/- 5. Ejemplo: si el valor de ADC es 512, entonces puede variar de cualquier número entre 517 y 507.

No quiero usar ningún mecanismo de filtro porque es computacionalmente intensivo. Solo quiero elegir un número fijo de las últimas 10 mediciones que tenga más frecuencia. Por favor, ayúdame a escribir una función para arriba.

Microcontrolador- InfineonTLE IDE- Keil (c)

    
pregunta litun bls

2 respuestas

1

Este es un filtro IIR de 1 etapa muy simple:

float state = 0;

float filter(float sample)
{
    state = (1 * sample + 0.2 * state)/1.2;

    return state;
}

Puede modificar la respuesta cambiando los coeficientes antes de muestra y estado . No te olvides de ajustar la suma del coeficiente, también.

Para que haya más controles que ajustar, también puedes recordar los estados anteriores, anteriores, etc.,

float states[3] = { 0, 0, 0 };

float filter(float sample)
{
    float latest;

    latest = (1 * sample + 0.2 * states[0] + 0.1 * states[1] + 0.05 * states[2])/1.35;

    states[2] = states[1];
    states[1] = states[0];
    states[0] = latest;

    return latest;
}
    
respondido por el Janka
1

Como este es un sitio de EE, voy a mostrar cómo un filtro digital IIR simple imita a un filtro de paso bajo RC: -

  • Etapa 1: el filtro RC
  • Etapa 2: convierte esto en un filtro de amplificador operacional
  • Etapa 3: reorganiza el circuito del amplificador operacional para convertirlo en un integrador
  • Etapa 4: convierte la etapa 3 en un filtro IIR simple
respondido por el Andy aka

Lea otras preguntas en las etiquetas