Simulación de un circuito RC: GNU Octave y MATLAB

Un circuito RC es un sistema dinámico relativamente simple y fácil de montar en laboratorio. ¿Cuál es la respuesta dinámica (respuesta transitoria) de un circuito RC ante una señal de onda cuadrada?

Considere el circuito de la siguiente figura:

Circuito RC

La fuente $V_f(t)$ es una señal de onda cuadrada, como la que se muestra a continuación:

Señal de onda cuadrada

Ecuaciones y código en GNU Octave

Vamos a plantear la ecuación diferencial que modela este circuito y luego la resolveremos usando GNU Octave1. Asignamos, por ejemplo, las corrientes de malla y resolvemos por el método de las mallas. Para ello, usamos el siguiente circuito:

Resolución mediante método de las mallas

Las ecuaciones planteadas en función de $I_1$ e $I_2$ son las siguientes, sabiendo que $I_2 = ic$: $$-V_f+R_1I_1+R_2(I_1-i_c) = 0$$ y $$-R_2(I_1-i_c)+V_c = 0.$$ De donde se obtiene $$-V_f+R_1i_c+\dfrac{R_1+R_2}{R_2}V_c = 0.$$ De esta última ecuación se obtiene la ecuación diferencial: $$\dfrac{dVc}{dt} = -\dfrac{(R_1+R_2)}{R_1R_2C}V_c + \dfrac{V_f}{R_1C}$$

Ahora, codifiquemos esta ecuación diferencial (definida por el usuario) en GNU Octave:

Este código se inserta en la función ecdif1:

Note que la fuente está apagada y tiene que ser una señal de onda cuadrada. Entonces, ¿cómo se define ese tipo de fuente en GNU Octave?

La fuente: un sólo período

Definir el primer período de la señal de onda cuadrada es relativamente sencillo:

Veamos una simulación. El programa o guión2 de simulación es el siguiente:

Se tomó $T = \tau$, igual a la constante de tiempo del circuito, es decir, T = 2e-5 para la simulación. Pregunta: ¿por qué la tensión $V_c$ tiende a $-1$ cuando $t$ crece?

Respuesta del circuito RC ante un pulso de pequeña amplitud

¿Qué ocurre si se aumenta $T$, digamos $T = 5\tau$. Vea la siguiente gráfica, ¿qué diferencias aprecia respecto a la gráfica anterior?

Respuesta transitoria del circuito RC ante un pulso de mayor ampltud

¿Por qué estas dos últimas gráficas son diferentes? ¿Qué relación hay entre la frecuencia de la señal de onda cuadrada y la constante de tiempo del sistema $\tau$? ¿$T$ debe ser grande o pequeña respecto a $\tau$ si se quiere ver que la tensión en el condensador se estabiliza?

Observación: En MATLAB se usa ode23:

y la función se define en un archivo ecdif1.m a parte:

La fuente: implementación de una onda cuadrada

Para hacer que automáticamente GNU Octave (o MATLAB®) calcule el valor positivo y negativo de $V_f$, hay que mirar el espacio de un ciclo. Es decir, debemos darnos cuenta que en la primera mitad del ciclo la fuente vale $V_f$ y en la segunda toma el valor $-V_f$ (en este caso +5V y -5V, respectivamente).

Para que GNU Octave genere esta secuencia vamos a emplear la función mod(x,y), la cual genera el resto de la división de $x/y$. Ejemplo: mod(5.5,3) da el valor 2.5. En nuestro caso, mod(t,T) nos genera el resto en el período $T$. La cantidad mod(t,T) es mayor que cero y menor $T$. Entonces, sólo necesitamos saber cuando mod(t,T) es menor que T/2, para asignar el valor positivo Vf a la fuente:

Observación: esta implantación no da resultados válidos si el sistema es no lineal, es inestable o si el orden del sistema es muy grande y presenta raíces muy alejadas entre ellas3.

Veamos la siguiente simulación. Se tomó $T = 2\tau$, es decir, T = 4e-5:

Respuesta de un circuito RC ante una señal de onda cuadrada

¿Qué pasa si disminuimos la frecuencia? Es decir, ¿si aumentamos el período $T$ a $T = 10\tau$? Veamos la respuesta:

Cuando la frecuencia de la onda cuadrada es pequeña relativa a la respuesta del circuito (con constante $RC$)

Códigos en MATLAB

Los siguientes son códigos en MATLAB. Primero simuedif2.m:

El guión anterior llama a la función ecdif2.m:

Pregunta a desarrollar: ¿Cuál sería el código en GNU Octave?

Puede simular este sistema en línea en GNU Octave aquí!

Acerca de Richard Márquez

Ing. de Sistemas con Doctorado en Automática. Enseño circuitos, simulación y teoría de control. Me gusta el modelado de sistemas no lineales y el diseño de leyes de control. Para mi, GNU Octave es un gran herramienta para hacer prototipos y enseñar a pensar.

3 comentarios en “Simulación de un circuito RC: GNU Octave y MATLAB

  1. porfa si pudieras hacerlo mas claro y funcional porque en una de las lineas de codigo aparece un cuadradito
    # senal de onda cuadrada
    Vft = [];
    las graficas me salen muy distinto en Octave
    Como puedo dibujar el circuito y simularlo

    1. Como comentario adicional te puedo decir que hay muchas maneras de simular numéricamente un circuito eléctrico. Depende de cuál es el problema que deseas resolver.

      Saludos, rj

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.