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.
- ⚡ Mardson Freitas de Amorim
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:
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.
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.
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
Corrente no Capacitor
σ (Frequência Neperiana)
ω0 (Frequência de ressonância)
A fórmula geral da tensão nos componenetes do Circuito Superamortecido é dada por:
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).
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:
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.
Utilizando y para representar a equação resultante de t = 0:
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).
Queremos isolar o y, então ficaremos com:
Utilizando de y como uma nova variável de valor determinável, conseguimos nossa 2ª equação. Ficando com o seguinte sistema:
Que nos leva a:
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:
Possuindo todas as variáveis da equação e o tm, basta calcular v(tm) e achar o valor esperado.
A fórmula geral da tensão nos componenetes do Circuito Criticamente Amortecido é dada por:
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).
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:
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.
Utilizando y para representar a equação resultante de t = 0:
Se:
Então:
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:
Possuindo todas as variáveis da equação e o tm, basta calcular v(tm) e achar o valor esperado.
A fórmula geral da tensão nos componenetes do Circuito Subamortecido é dada por:
Sendo ω_d a Frequência natural de ressonância, dada pela equação:
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).
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:
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.
Para t = 0 teremos:
Implicando em:
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:
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.
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
gccou oclang
Para compilar
gcc RLC.c -o RLC.outPara rodar
./RLC.outgcc RLC.c -o RLC.exePara rodar
./RLC.exeOBS.: Utilizamos de barra normal ('/') considerando um ambiente como Git Bash, WSL e PowerShell, considere utilizar de barra invertida ('\') em caso de não compilar

