Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 

Repository files navigation

⚡ Simulação de Circuitos RLC Paralelo

Disciplina de Eletricidade e Circuitos para computação I

Esse foi um projeto desenvolvido por discentes do curso de Engenharia da Computação da Universidade Federal da Paraíba, curso este que pertence ao Centro de Informática, localizado na Rua dos Escoteiros S/N - Mangabeira - João Pessoa - Paraíba - Brasil. O programa decorrente do desenvolvimento do código foi empregado com o objetivo de permitir ao docente, utilizando de métodos avaliativos, calcular e atribuir as respectivas notas dos participiantes do projeto.

🔋 Autores:

🔋 Docente:

  • ⚡ Mardson Freitas de Amorim

360_F_477196087_Sopm1X0RnYmYYNHbJwiFTMhxGPcnki0S

🎯 Objetivo:

O objetivo proposto foi desenvolver um programa em Linguagem C1 para apresentar , no terminal, os resultados da resposta natural de circuitos RLC em paralelo. Isto é, um circuito de segunda ordem que possui um resistor equivalente, um capacitor equivalente e um indutor equivalente após uma mudança no estado inicial ( carga forçada ) do circuito. As tensões dos componentes serão equivalentes para todo e qualquer t > 0, considerando t = 0 como o instante em que ocorre a mudança do circuto inicial para a equivalência com a resposta natural.2

O programa deve receber os seguintes dados de entrada:

  • Os valores dos componentes e suas respectivas cargas iniciais, sendo fornecidas opções para a escolha das unidades:
    • R -> Resistência equivalente
    • L -> Indutância equivalente
    • C -> Capacitância equivalente
    • vC(t=0) -> Tensão inicial no capacitor equivalente
    • iL(t=0) -> Corrente inicial no indutor equivalente

O programa deve fornecer os seguintes dados de saída:

  • Nome(s) do(s) autor(es)
  • Valores de σ (Sigma, representa a Frequência Neperiana), ω0 (Ômega 0, representa a Frequência de Ressonância)
  • Tipo de circuito e seus respectivos valores específicos, sendo eles:
    • Circuito Superamortecido -> s1, s2, A1 e A2
    • Circuito Criticamente Amortecido -> A1 e A2
    • Circuito Subamortecido -> ωd (Ômega d), B1 e B2
  • Valores de tm (Tempo de Tensão Máxima ou Mínima) e v(tm) (Valor da tensão Máxima ou Mínima)

Todas as entradas e saídas devem obedecer o padrão estabelecido pelo S.I.3.

Para a padronização das respostas, as condições iniciais para o circuito têm as seguintes notações:

Captura de tela 2024-10-16 220340

⚙️ Documentação

Conforme as informações relatadas na seção (Objetivo)[#dart-objetivo-1], a complexidade do programa está nos cálculos a partir das fórmulas vistas na disciplina. Com base nisso, a documentação aqui apresentada dá ênfase a essa complexidade, relevando algumas nuances presentes no código.

🧮 Dependências

Este projeto foi desenvolvido utilizando apenas funcionalidades da biblioteca padrão da Linguagem C34, ou seja, nenhuma biblioteca externa foi incluída no código.

  • <stdio.h>: Usada para operações matemáticas de entrada e saída, como leitura de dados do teclado (scanf) e escrita de dados na tela (printf).

    • Implementação: Em interações direta com um usuário, via terminal.
  • <math.h>: Utilizada para realizar operações matemáticas complexas, como funções trigonométricas (sin, cos), exponenciais (exp) e logarítmicas (log).

    • Implementação: Essencial nos cálculos incluídos na proposta do programa, como o cálculo da frequência de ressonância, permitindo a análise precisa do comportamento do circuito.

📊 Fórmulas

Todas as fórmulas utilizadas foram deduzidas a partir da análise das equações fundamentais com valores literais, ou seja, as variáveis (paramâmetros como coeficientes e constantes, tal como, incógnitas e variáveis dependentes) foram manipuladas com o objetivo de chegar em uma fórmula direta.

Equações fundamentais:

Resistor - Lei de Ohm

$$ V = R * I ∴ v_{R}(t) = R * i_{R}(t) \quad (V) $$

Corrente no Capacitor

$$ i_{C}(t) = C \cdot \frac{dv_{C}(t)}{dt} \quad (A)$$

σ (Frequência Neperiana)

$$ \sigma = \frac{1}{2 \cdot R \cdot C} \quad (s^{-1}) $$

ω0 (Frequência de ressonância)

$$ \omega_0 = \frac{1}{\sqrt{L \cdot C}} \quad (rad/s) $$

Para σ2 > ω02 - Circuito Superamortecido

$$ S_1 = -\sigma + \sqrt{\sigma^2 - \omega_0^2} $$

$$ S_2 = -\sigma - \sqrt{\sigma^2 - \omega_0^2} $$

A fórmula geral da tensão nos componenetes do Circuito Superamortecido é dada por:

$$ v(t) = A_1 e^{s_1 t} + A_2 e^{s_2 t} \quad (V) $$

Como entrada do programa, é fornecida a tensão inicial no capacitor, a qual também poderia ser determinada por meio da análise da tensão no capacitor para t = 0⁻. Ou seja, conseguimos atribuir o valor 0 para t e igualar a equação ao valor de vC(0).

$$ v_{C}(0) = A_1 e^{s_1 0} + A_2 e^{s_2 0} \therefore v_{C}(0) = A_1 + A_2 $$

Para obter uma segunda equação e resolver um sistema de duas equações com duas variáveis distintas, devemos realizar a análise do circuito. A partir de um dos nós essenciais, podemos aplicar a Lei de Kirchhoff das Correntes (LKC), chegando à conclusão de que:

$$ i_L (t) = i_C (t) + i_R (t) $$

$$ \therefore $$

$$i_L (t) = C \cdot \frac{dv_{C}(t)}{dt}^{t=t} + \frac{v_{R}(t)}{R} $$

Como entrada do programa, é fornecida a corrente inicial no indutor (iL0), a qual também poderia ser determinada por meio da análise da corrente no indutor para t = 0⁻. Com isso, podemos realizar a análise dessa fórmula para t = 0. Mas antes, é essencial determinar a derivada de vC(t) e igualar t = 0.

$$ \frac{d}{dt} (A_1 e^{s_1 t} + A_2 e^{s_2 t}) = A_1 s_1 e^{s_1 t} + A_2 s_2 e^{s_2 t} $$

Utilizando y para representar a equação resultante de t = 0:

$$ y = \frac{dv_{C}(t)}{dt}^{t=0} = A_1 s_1 e^{s_1 0} + A_2 s_2 e^{s_2 0} = A_1 s_1 + A_2 s_2 $$

Voltando à equação das correntes para t = 0, sabemos que vR(t) = vC(t). Como conhecemos esse valor para t = 0, podemos substituí-lo na equação, assim como iL(0).

$$i_L (0) = C \cdot y + \frac{v_{C}(0)}{R} $$

Queremos isolar o y, então ficaremos com:

$$ y = \frac{i_{L}(0)}{C} - \frac{v_{C}(0)}{CR} $$

Utilizando de y como uma nova variável de valor determinável, conseguimos nossa 2ª equação. Ficando com o seguinte sistema:

$$ \begin{cases} \quad v_{C}(0) = A_1 + A_2 \\ \quad y = A_1 s_1 + A_2 s_2 \end{cases} $$

Que nos leva a:

$$ \begin{cases} \quad A_1 = \frac{y - v_{C}(0)s_1}{s_1 - s_2} \\ \quad A_2 = \frac{y - v_{C}(0)s_1}{s_2 - s_1} = v_{C}(0) - A_1 \end{cases} $$

Para achar o tempo para o alcance da tensão máxima ou mínima, é necessário derivar v(t) e igualar a 0. Reutilizando a conta já relizada e fazendo algumas manipulações, chegaremos a:

$$ t_m = \frac{ln |A_1s_1| - ln |-A_2s_2|}{s_2 - s_1} \quad (s)$$

Possuindo todas as variáveis da equação e o tm, basta calcular v(tm) e achar o valor esperado.

Para σ2 = ω02 - Circuito Criticamente Amortecido

A fórmula geral da tensão nos componenetes do Circuito Criticamente Amortecido é dada por:

$$ v(t) = (A_1t + A_2) e^{-\sigma t} \quad (V)$$

Como entrada do programa, é fornecida a tensão inicial no capacitor, a qual também poderia ser determinada por meio da análise da tensão no capacitor para t = 0⁻. Ou seja, conseguimos atribuir o valor 0 para t e igualar a equação ao valor de vC(0).

$$ v_{C}(0) = (A_1 \cdot 0 + A_2) e^{-\sigma \cdot 0} \therefore A_2 = v_{C}(0)$$

Para obter uma segunda equação para conseguir determinar A1, devemos realizar a análise do circuito. A partir de um dos nós essenciais, podemos aplicar a Lei de Kirchhoff das Correntes (LKC), chegando à conclusão de que:

$$ i_L (t) = i_C (t) + i_R (t) $$

$$ \therefore $$

$$i_L (t) = C \cdot \frac{dv_{C}(t)}{dt}^{t=t} + \frac{v_{R}(t)}{R} $$

Como entrada do programa, é fornecida a corrente inicial no indutor (iL0), a qual também poderia ser determinada por meio da análise da corrente no indutor para t = 0⁻. Com isso, podemos realizar a análise dessa fórmula para t = 0. Mas antes, é essencial determinar a derivada de vC(t) e igualar t = 0.

$$ \frac{d}{dt} (A_1t + A_2) e^{-\sigma t} = A_1 \cdot e^{-\sigma t} - \sigma (A_1t + A_2) e^{-\sigma t} $$

Utilizando y para representar a equação resultante de t = 0:

$$ y = \frac{dv_{C}(t)}{dt}^{t=0} = A_1 - \sigma \cdot A_2 $$

Se:

$$ y = \frac{dv_{C}(t)}{dt}^{t=0} = \frac{i_{C}(0)}{C} $$

Então:

$$ A_1 = \frac{i_{C}(0)}{C} + \sigma \cdot A_2 $$

Para achar o tempo para o alcance da tensão máxima ou mínima, é necessário derivar v(t) e igualar a 0. Reutilizando a conta já relizada e fazendo algumas manipulações, chegaremos a:

$$ t_m = \frac{1}{\sigma} - \frac{A_2}{A_1} = \frac{A_1-(A_2\sigma)}{A_1\sigma} \quad (s)$$

Possuindo todas as variáveis da equação e o tm, basta calcular v(tm) e achar o valor esperado.

Para σ2 < ω02 - Circuito Subamortecido

A fórmula geral da tensão nos componenetes do Circuito Subamortecido é dada por:

$$ v(t) = e^{-\sigma t} \cdot [B_1 \cdot cos(\omega_d \cdot t) + B_2 \cdot sen(\omega_d \cdot t)] \quad (V)$$

Sendo ω_d a Frequência natural de ressonância, dada pela equação:

$$ \omega_d = \sqrt{\omega_0^2 - \sigma^2} \quad (rad/s)$$

Como entrada do programa, é fornecida a tensão inicial no capacitor, a qual também poderia ser determinada por meio da análise da tensão no capacitor para t = 0⁻. Ou seja, conseguimos atribuir o valor 0 para t e igualar a equação ao valor de vC(0).

$$ v_{C}(0) = e^{-\sigma 0} \cdot [B_1 \cdot cos(\omega_d \cdot 0) + B_2 \cdot sen(\omega_d \cdot 0)] \therefore B_1 = v_{C}(0) \quad (V)$$

Para obter uma segunda equação para conseguir determinar B2, devemos realizar a análise do circuito. A partir de um dos nós essenciais, podemos aplicar a Lei de Kirchhoff das Correntes (LKC), chegando à conclusão de que:

$$ i_L (t) = i_C (t) + i_R (t) $$

$$ \therefore $$

$$i_L (t) = C \cdot \frac{dv_{C}(t)}{dt}^{t=t} + \frac{v_{R}(t)}{R} $$

Como entrada do programa, é fornecida a corrente inicial no indutor (iL0), a qual também poderia ser determinada por meio da análise da corrente no indutor para t = 0⁻. Com isso, podemos realizar a análise dessa fórmula para t = 0. Mas antes, é essencial determinar a derivada de vC(t) e igualar t = 0.

$$ \frac{d}{dt} e^{-\sigma t} \cdot [B_1 \cdot cos(\omega_d \cdot t) + B_2 \cdot sen(\omega_d \cdot t)] = $$

$$ -\sigma e^{-\sigma t} \left[ B_1 cos(\omega_d t) + B_2 sen(\omega_d t) \right] + \omega_d e^{-\sigma t} \left[ -B_1 sen(\omega_d t) + B_2 cos(\omega_d t) \right] ^{t=t} $$

Para t = 0 teremos:

$$ - \sigma \cdot B_1 + B_2 \cdot \omega_d = \frac{i_C(0)}{C} $$

Implicando em:

$$ B_2 = \frac{i_C(0)}{C \omega_d} + \frac{\sigma \cdot B_1}{\omega_d} $$

Para achar o tempo para o alcance da tensão máxima ou mínima, é necessário derivar v(t) e igualar a 0. Reutilizando a conta já relizada e fazendo algumas manipulações, que nesse caso, se torna um pouco mais complexo, pois envolve uma divisão estratégica por cos(ωdt), chegaremos a:

$$ \large t_m = \frac{arc tg(\frac{\omega_d \cdot B_2 - \sigma \cdot B_1}{\omega_d \cdot B_1 + \sigma \cdot B_2})}{\omega_d} \quad (s)$$

Se o tempo resultar em um valor negativo, isso indicará que, matematicamente, haveria um máximo ou mínimo antes de t=0, que é o nosso instante inicial de resposta natural. Para garantir a correção e a congruência com a física do mundo real, somamos meio período da função ao tm; ou seja, somamos π/ωd.

Possuindo todas as variáveis da equação e o tm, basta calcular v(tm) e achar o valor esperado.

🔧 Como rodar

Atenção: Lembre de baixar o projeto e extraí-lo devidamente do .zip.

Requisitos

  • Um terminal de linha de comando
  • Um compilador de c, recomendamos o gcc ou o clang

Bash - Linux ou Mac

Para compilar

gcc RLC.c -o RLC.out

Para rodar

./RLC.out

No Windows

gcc RLC.c -o RLC.exe

Para rodar

./RLC.exe

OBS.: Utilizamos de barra normal ('/') considerando um ambiente como Git Bash, WSL e PowerShell, considere utilizar de barra invertida ('\') em caso de não compilar

Footnotes

  1. Linguagem C

  2. Circuito RLC em paralelo

  3. Sistema Internacional de Unidades 2

  4. Biblioteca Padrão da Linguagem C

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages