martes, 30 de noviembre de 2021

Solución de ecuación diferencial ordinaria, circuito RL con fuente de CD

Solución con ODE de Scilab

ODE (Ordinary Differential Equation Solver) es una rutina para resolver ecuaciones diferenciales ordinarias de esta manera usted puede dar solución rápida a una Ecuación diferencial que se encuentre despejada debidamente.

En este ejemplo veremos como dar solución a una ecuación diferencial ordinaria cuando se alimenta un circuito RL en serie con una fuente de tensión de directa donde se estudiarán dos casos prácticos, uno sencillo donde únicamente se plasma la EDO y el otro será necesario usar una estrategia distinta usando un poco de programación propia de Scilab.

Caso 1 : Circuito RL Serie con fuente de corriente directa, conectar

En la figura 1 se muestra un circuito RL en serie conectado a una batería de 10V (E), el valor de la resistencia ® e inductancia (L) son de 20 Ω y 0.6H respectivamente. Este circuito al cerrar el interruptor la corriente empezará a fluir y se incrementará hasta llegar a una corriente constante a lo largo del tiempo por este motivo se establece un tiempo final de simulación.

RL_CD_CLOSE

La EDO (Ecuación Diferencial Ordinaria) del circuito es :

$$ \large E=Ri+L\frac{di}{dt} $$

Dejando libre la derivada de la corriente con respecto al tiempo se obtiene :
$$ \large \frac{di}{dt}=\frac{E-Ri}{L} $$

Ahora bien, necesitamos plasmar las condiciones iniciales que son :

  • Al cerrar el interruptor la corriente iniciará su recorrido en la malla, por lo tanto la corriente inicial es cero.
  • El tiempo inicial es cero de esta manera al cerrar el interruptor empezará a correr el tiempo.
  • El tiempo final será necesario para finalizar la simulación del circuito, usaremos 0.5 segundos.

El siguiente código describe la función que contiene la ecuación diferencial ordinaria y las condiciones iniciales.

function ydot=EcuDif(t, y)
    L=0.6;
    R=20;
    E=10;
    ydot=(E-R*y)/L 
endfunction

t0=0.0;
t=0:0.001:0.5;
y = ode(y0,t0,t,EcuDif); 
scf(1)
plot(t,y','-')
legend('I[A]')
xlabel('Tiempo (Segundos)','fontsize',2)
ylabel('Corriente [Amperios]','fontsize',2)
title('Corriente circuito RL con fuente de CD','fontsize',2)
xgrid

Finalmente se obtiene la figura 1 que se muestra a continuación :

RL_CD_CLOSE

Caso 2: Circuito RL Serie con fuente de corriente directa, desconectar

En la figura 2 se muestra un circuito RL en serie conectado a una batería de 10V (E), el valor de la resistencia ® e inductancia (L) son de 20 Ω y 0.6H respectivamente. Este circuito en particular ha alcanzado su corriente nominal pero el interruptor se abre de esta manera la corriente empezará a disminuir drásticamente hasta ser igual a cero.

La EDO (Ecuación Diferencial Ordinaria) del circuito es :

$$ \large E=Ri+L\frac{di}{dt} $$

Dejando libre la derivada de la corriente con respecto al tiempo se obtiene :
$$ \large \frac{di}{dt}=\frac{E-Ri}{L} $$

Ahora bien, necesitamos plasmar las condiciones iniciales que son :

  • Al abrir el interruptor la corriente descenderá en la malla, por lo tanto la corriente al final será cero.
  • El tiempo inicial es cero de esta manera al abrir el interruptor empezará a correr el tiempo.
  • El momento cuando se abrirá el interruptor, usaremos 0.2 segundos.
  • El tiempo final será necesario para finalizar la simulación del circuito, usaremos 0.5 segundos.

El siguiente código describe la función que contiene la ecuación diferencial ordinaria y las condiciones iniciales.

function ydot=EcuDiff(t, y)
    L=0.6;
    R=20;
    E=10;
    if t<0.2 then
        E=10;
        ydot=(E-R*y)/L       
    else
        E=0;
        ydot=(E-R*y)/L 
    end
    
endfunction

t0=0.0;
t=0:0.001:0.5;

for i=1:max(size(t))
    
    if t(i)<0.2 then
        y0=0.5
        y(i) = ode(y0,t0,t(i),EcuDiff);        
    else
        y0=0
        y(i) = ode(y0,t0,t(i),EcuDiff); 
    end
    
end   
scf(1)
plot(t,y','-')
legend('I[A]')
xlabel('Tiempo (Segundos)','fontsize',2)
ylabel('Corriente [Amperios]','fontsize',2)
title('Corriente circuito RL con fuente de CD','fontsize',2)
xgrid

Finalmente se obtiene la figura 2 que se muestra a continuación :

RL_CD_OPEN

Explicación del Caso 2

La simulación de este segundo caso es un poco complicada debido a que necesitamos programar ciertas condiciones. La función de la ecuación diferencial debe poseer una condición importante, la desconexión del interruptor, entonces usamos la condición if.

La condición es sencilla cuando se conoce el tiempo en le momento que abre el interruptor en nuestro caso 0.2 segundos. Después de ese tiempo la tensión será cero por lo tanto se coloca de nuevo la ecuación diferencial con esta nueva tensión.

function ydot=EcuDiff(t, y)
    L=0.6;
    R=20;
    E=10;
    //Tiempo de apertura
    if t<0.2 then
        E=10;
        ydot=(E-R*y)/L 
    //Depués de la apertura del interruptor    
    else
        E=0;
        ydot=(E-R*y)/L 
    end
    
endfunction

Para poder correr esta condición usaremos el ciclo for de esta manera se plantea la misma condición, lo importante aquí es analizar la cantidad de muestras por lo tanto necesitamos del ciclo for, finalmente las variables van cambiando conforme corre el tiempo siendo necesario actualizarlas y para realizar esto en Scilab usamos y(i) donde i es un número del total de muestras. La misma situación se plantea con el tiempo debido a que va cambiando y te preguntarás por qué no usamos t(i) ni y(i) en la función donde definimos la ecuación diferencial; la respuesta es muy sencilla, actualizamos el tiempo fuera de la función y no dentro haciendo el trabajo de la simulación mucho más sencillo.

for i=1:max(size(t))
    
    if t(i)<0.2 then
        y0=0.5
        y(i) = ode(y0,t0,t(i),EcuDiff);        
    else
        y0=0
        y(i) = ode(y0,t0,t(i),EcuDiff); 
    end
    
end 

Licencia Creative Commons