Análise e simulação de circuitos de média e grande complexidade normalmente são realizadas de forma numérica em softwares do tipo spice apropriados, como: ngspice, ltspice, pspice, etc. Entretanto, circuitos mais simples e gerais podem ser analisados e simulados em softwares CAS de uso geral, como o Scilab, sem maiores dificuldade e até com algumas vantagens.
O circuito
Neste post vamos mostrar como utilizar um software CAS para realizar os cálculos das tensões e correntes em um circuito simples constituído por uma fonte de energia, uma conexão resistiva e uma carga. Ou seja, o circuito tem três partes principais: fonte(Source), conexão resistiva(line) e carga(load). A representação do circuito segue abaixo:

A Source é composta por uma fonte de tensão ideal Vs e uma resistência interna Rs. A Line ou conexão resistiva a carga é representada apenas como uma resistência R_line e visa modelar uma conexão não ideal entre a fonte e a carga. A carga ou Load é representada por uma impedância simples.
Equações
Neste circuito, os principais pontos de interesse são a tensão Vin de saída da fonte após o resistor Rs , a corrente que circula na carga(IL) e a tensão sobre a carga (VL). Fazendo a análise deste circuito “na mão”, chegamos as seguintes equações:
\[
\begin{equation}
V_{in}=\frac{R_{line}+Z_{load}}{R_s+R_{line}+Z_{load}} V_s \quad (Eq.1)
\end{equation}
\]
\[
\begin{equation}
V_{L}=\frac{Z_{load}}{R_s+R_{line}+Z_{load}} V_s \quad (Eq.2)
\end{equation}
\]
\[
\begin{equation}
I_{L}=\frac{V_L}{Z_{load}} \quad (Eq.3)
\end{equation}
\]
Codificação no Scilab
Como o circuito descrito acima, suas variáveis e as equações de 1 à 3 podemos fazer um script para rapidamente calcular os valores em todos os pontos de interesse do circuito. Por exemplo, para um circuito com Vs=220 Vac, Rs=0.1 ohm, R_line=0.1 ohm e Z_load = 100+j ohm, o script segue abaixo:
//No Scilab o número imaginário "i" é representado como %i
//e isso é um pouco inconveniente na área de elétrica já
//que normalmente usamos a letra i para representar corrente.
//Asssim, normalmente eu faço uma declaração de variável do tipo
//j = %i logo no início para não ter que usar %i
//no restante do código.
j=%i
//Funções auxiliares
//Note que o Scilab tem a função polar(.)
//para converte um número complexo em polar
//mas o ângulo é em radianos e normalmente
//há um residuo complexo na parte angular.
function [mag,fase]=pol(x)
fase=atan(imag(x),real(x))*180/(%pi)
mag=sqrt(imag(x)^2+real(x)^2)
endfunction
//Variávias do circuito
Rs=0.1
Vs=220
R_line=0.1
Z_load=100+1*j
//Calculo dos pontos de interesse
Vin=Vs*(R_line+Z_load)/(Rs+R_line+Z_load)
V_L=Vs*(Z_load)/(Rs+R_line+Z_load)
I_L=V_L/Z_load
[Vin_mag,Vin_fase]=pol(Vin)
mprintf("Tensão Vin: \n");
mprintf(" Mag=%f\n",Vin_mag);
mprintf(" Fase=%f °\n",Vin_fase);
[VL_mag,VL_fase]=pol(V_L)
mprintf("Tensão V_L: \n");
mprintf(" Mag=%f\n",VL_mag);
mprintf(" Fase=%f °\n",VL_fase);
[IL_mag,IL_fase]=pol(I_L)
mprintf("Corrente total: \n");
mprintf(" Mag=%f\n",IL_mag);
mprintf(" Fase=%f °\n",IL_fase);
Rodando esse script no Scilab a sua saída é:
Tensão Vin:
Mag=219.780461
Fase=0.000571 °
Tensão V_L:
Mag=219.560922
Fase=0.001144 °
Corrente total:
Mag=2.195499
Fase=-0.571795 °
Note que todas as operações já são realizadas com números complexos e as variáveis de interesse são mostradas com magnitude e fase em graus. Se os parâmetros do circuito forem diferentes, basicamente, só será necessário modificar as variáveis Rs, Vs, R_line e Z_load e reexecutar o script no Scilab para fazer a atualização dos valores. Esse scrip vai funcionar normalmente independentemente de suas variáveis serem reais ou complexas. No código, por exemplo, foi utilizado R_line=0.1. Entretanto, nada impede que R_line seja uma impedância com parte complexa, R_line=0.1+0.1j, ou outro valor qualquer.
Esse script irá calcular de maneiro correta a resposta em regime permanente AC ou DC. Logicamente, que no caso de regime permanente DC não há porque colocar impedâncias em nenhuma parte do circuito. No caso de regime permanente AC a tensão da fonte Vs no exemplo acima tinha magnitude de 220Vac e fase de 0º. Esse é o caso mais comum. Entretanto, também é possível considerar uma fonte Vs com fase diferente de zero, por exemplo com 45 atrasada. Abaixo segue um exemplo deste caso:
//No Scilab o número imaginário "i" é representado como %i
//e isso é um pouco inconveniente na área de elétrica já
//que normalmente usamos a letra i para representar corrente.
//Asssim, normalmente eu faço uma declaração de variável do tipo
//j = %i logo no início para não ter que usar %i
//no restante do código.
j=%i
//Funções auxiliares
//Note que o Scilab tem a função polar(.)
//para converte um número complexo em polar
//mas o ângulo é em radianos e normalmente
//há um residuo complexo na parte angular.
function [mag,fase]=pol(x)
fase=atan(imag(x),real(x))*180/(%pi)
mag=sqrt(imag(x)^2+real(x)^2)
endfunction
//Usado caso seja necessário fazer alguma conversão de mag-fase
//para um número complexo na sua forma retangular.
function [x]=rec(mag,fase)
rel=mag*cos(fase/180*%pi);
img=mag*sin(fase/180*%pi);
x=rel+%i*img
endfunction
//Variávias do circuito
Rs=0.1
Vs=rec(220,-45)
R_line=0.1
Z_load=100+1*j
//Calculo dos pontos de interesse
Vin=Vs*(R_line+Z_load)/(Rs+R_line+Z_load)
V_L=Vs*(Z_load)/(Rs+R_line+Z_load)
I_L=V_L/Z_load
[Vin_mag,Vin_fase]=pol(Vin)
mprintf("Tensão Vin: \n");
mprintf(" Mag=%f\n",Vin_mag);
mprintf(" Fase=%f °\n",Vin_fase);
[VL_mag,VL_fase]=pol(V_L)
mprintf("Tensão V_L: \n");
mprintf(" Mag=%f\n",VL_mag);
mprintf(" Fase=%f °\n",VL_fase);
[IL_mag,IL_fase]=pol(I_L)
mprintf("Corrente total: \n");
mprintf(" Mag=%f\n",IL_mag);
mprintf(" Fase=%f °\n",IL_fase);
Notem que, na realidade, só foi necessário alterar a linha 29. Onde antes tinha Vs=220, agora tem Vs=rec(220,-45). A função “rec” não é padrão do Scilab e foi definida no próprio script. Ela não é realmente necessária, mas é conveniente e ajuda a deixar o código mais legível.
Em outros posts vou abordar simulação de circuitos com impedância em transiente e outros tipos de circuitos mais elaborados com Scilab, mas por hoje é só!
That’s all folks!
Deixe um comentário