Simulación iterativa del filtro de paso bajo RC, se requiere una corrección extraña

1

Para comprender mejor cómo funcionan los simuladores iterativos, como circuitJS para un ejemplo, decidí utilizar un filtro de paso bajo RC simple.

El voltaje en el que estoy interesado es el que se encuentra en el condensador, se puede calcular con la siguiente fórmula:

\ $ V_C = V_ {E} (1-e ^ {- \ frac {t} {RC}}) \ $

O puede ser aproximado por este algoritmo ... que he codificado juntos:

VC = 0;
for(int i=0;i<N;++i){
  VC += time_step*(VE-VC)/(R*C);
}

time_step sería el tiempo en segundos entre las actualizaciones del simulador. Con este algoritmo, t es el producto de time_step y N . Es un simple filtro LP digital de primer orden.

Así que implementé ese algoritmo en las hojas de Google para ver qué tan bueno era. Y fue bastante correcto.

Estossonlosdatosqueseutilizaron:

Comopuedesver,noesunajusteperfecto.

Sinembargo,simodificoelalgoritmounpocoaesto:

VC=0;for(inti=0;i<N;++i){VC+=alpha*time_step*(VE-VC)/(R*C);}

yestablezcaalfaen0,824,queprovienedelarelaciónentreelvalorcorrectoyelvaloriterativoent=10µs.Entoncesobtengounacoincidenciaperfectacon0errores.

Calculéalfa=0.824de\$\frac{RC}{\text{time_base}}(1-e^{\frac{-\text{time_base}}{RC}})\$conR=25,C=1,time_base=10

¿Porquénecesitoagregaresamultiplicacióndecorrección" alpha " cuando estoy iterando?

Información adicional: a medida que time_base se reduce a 0, alfa va a 1. En otras palabras, a medida que paso a través de pasos cada vez más finos en el tiempo, menor será el error.

    
pregunta Harry Svensson

2 respuestas

4

Básicamente estás integrando numéricamente la ecuación diferencial

\ $ \ frac {dV_c} {dt} = \ frac {V_e-V_c} {RC} \ $

utilizando una aproximación de primer orden a la derivada, es decir, establecer dt en time_step, esto tiene una precisión limitada. Se vuelve exacto, como anotó, al reducir el paso de tiempo a cero. Alternativamente, podría usar una aproximación de orden superior, si investiga algunos de esos encontrará de dónde podría provenir ese factor de escalado.

    
respondido por el jramsay42
0

La clave es el error de cuantificación.

Si elige dt = 1% de la expectativa T, el error V resultante en T es 0.07%

Puede usar una hoja de cálculo simple con resultados correctos usando constantes para dt, R, C, Vcc y calcular Ic, Vc desde;

Ic = (Vcc-Vc) / R
dV = Ic * dt / C

Vc (t) = dV (t) + Vc (t-1)

Por supuesto, podría haber utilizado la exponencial correcta con la misma facilidad. Podría haber promediado la corriente con el valor anterior, pero solo lo puse en un paso y calculé dV y lo agregué al valor anterior, por lo que hay un error de latencia pero un pequeño enuf para el trabajo del gobierno. (no alfa)

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas