import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
# 1. Definição dos Parâmetros do Circuito RC (Filtro Acústico)
R = 500.0 # Resistor em Ohms (0.5 kOhm)
C = 0.3e-6 # Capacitor em Farads (0.3 uF)
tau = R * C # Constante de tempo do sistema
# O parâmetro 'a' do pólo do sistema é 1/tau
a = 1 / tau
# 2. Modelagem da Função de Transferência
# Forma padrão G(s) = a / (s + a) ou 1 / (RC*s + 1)
numerador = [1]
denominador = [tau, 1]
filtro_rc = signal.TransferFunction(numerador, denominador)
# 3. Configuração do Tempo de Simulação
# Simulando até 5 constantes de tempo para garantir que atinja o estado estacionário (99.3%)
vetor_tempo = np.linspace(0, 5 * tau, 1000)
# 4. Cálculo da Resposta ao Degrau
# Extrai o vetor de tempo de saída (t) e a amplitude da resposta (y)
t, y = signal.step(filtro_rc, T=vetor_tempo)
# 5. Plotagem da Dinâmica do Sinal de Saída
plt.figure(figsize=(9, 5))
# Converte o tempo de segundos para milissegundos (ms) para facilitar a leitura
plt.plot(t * 1000, y, label='Resposta do Capacitor $V_c(t)$', color='blue', linewidth=2)
plt.axhline(y=1, color='red', linestyle='--', label='Sinal de Entrada $E(t)$ (Degrau)')
# Destaca graficamente a Constante de Tempo (63,2% do valor final)
y_tau = 1 - np.exp(-1) # Aproximadamente 0.632
plt.plot(tau * 1000, y_tau, 'ko', label=rf'Constante $\tau$ = {tau*1000:.2f} ms')
plt.vlines(tau * 1000, 0, y_tau, colors='black', linestyles='dotted')
plt.hlines(y_tau, 0, tau * 1000, colors='black', linestyles='dotted')
# Configurações visuais do gráfico
plt.title('Resposta Transitória do Filtro RC de 1ª Ordem')
plt.xlabel('Tempo (ms)')
plt.ylabel('Amplitude / Tensão (V)')
plt.grid(True, which='both', linestyle='--', alpha=0.7)
plt.legend(loc='lower right')
plt.xlim(0, 5 * tau * 1000)
plt.ylim(0, 1.1)
# Exibe o gráfico
plt.show()
print('Hello world!')
To embed this project on your website, copy the following code and paste it into your website's HTML: