[PYTHON] Simulation de circuit RC

Je veux calculer le niveau de bruit à partir de la voix enregistrée par le compteur de bruit

Quant à la caractéristique de pondération temporelle du bruitomètre, Fast semble avoir une constante de temps de 125 ms. J'ai fait beaucoup de recherches pour faire cela avec Python, alors prenez note.

Dans le mesureur de bruit que j'utilise, celui de cette image que j'ai emprunté Il semble que la pression acoustique au carré de $ V_ {in} $ soit entrée et $ V_ {out} $ soit sortie. Je n'ai fait aucun circuit du tout, alors j'ai cherché.

RC回路

J'ai décidé de le comparer avec la sortie du site suivant pour confirmer s'il était correctement simulé. (L'amateur ne sait pas ce qui est juste. Au fait, si vous pensez que c'est un schéma de circuit ou une image, vous serez surpris de pouvoir le faire fonctionner!) Analyse transitoire / analyse AC du circuit RC primaire

Après avoir recherché diverses choses, il semble que vous puissiez le faire avec scipy.signal, control.matlab. (Au début, les deux étaient confus et paniqués ...)

Voici la caractéristique de fréquence du circuit RC que vous souhaitez simuler.

\begin{align}
\text{Caractéristique de fréquence:}\quad \frac{V_{out}(s)}{V_{in}(s)}&=\frac{1}{1+sCR}\\
\end{align}

Les méthodes pour reproduire ceci sont scipy.signal.lsim et control.matlab.lsim //python-control.readthedocs.io/en/0.8.3/generated/control.matlab.lsim.html).

Vous pouvez créer un système linéaire invariant dans le temps et entrer n'importe quel signal pour obtenir la sortie. scipy fait référence à ce site. Par exemple, si vous spécifiez $ lti ([a_1, a_2, a_3], [b_1, b_2, b_3]) $ Les caractéristiques de fréquence sont $ \ frac {a_1 s ^ 2 + a_2 s + a_3} {b_1 s ^ 2 + b_2 s + b_3} $ Il semble que le nombre d'heures augmentera si vous organisez le nombre requis. Pour les circuits RC, $ lti ([1], [R * C, 1]) $ convient.

C'est ce que j'ai pu faire.

RC_circuit_signal.py


from matplotlib import pyplot as plt
import scipy.signal as sg
import numpy as np

R    = 1000        # 1k Ohm(s/F)
C    = 0.000_000_1 # 0.1 F 
# 1 / (R * C * s + 1)
num  = [1]
den  = [R * C, 1]
t    = np.linspace(0, 0.01, 1000) 
freq = 250   
v_in = 0.5 + 0.5 * np.sign(np.sin(2 * np.pi * freq * (t - 0.001))) 

system = sg.lti(num, den) 
t_out, v_out, x = sg.lsim(system, v_in, t)

plt.style.use('grayscale')
plt.plot(t,     v_in,  label="$V_{in}$")
plt.plot(t_out, v_out, label="$V_{out}$")
plt.xlabel('Time[s]')
plt.ylabel('Amplitude')
plt.legend()
plt.grid()
plt.show()

image.png

control.matlab crée un système avec control.tf. Cela ressemble au précédent, mais cela ressemble à ceci. Il est désagréable que l'ordre des valeurs de retour de lsim soit différent. .. ..

RC_circuit_control_matlab.ipynb


from matplotlib import pyplot as plt
import control.matlab as ctrl
import numpy as np

R    = 1000        # 1k Ohm(s/F)
C    = 0.000_000_1 # 0.1 F 
# 1 / (R * C * s + 1)
num  = [1]
den  = [R * C, 1]
t    = np.linspace(0, 0.01, 1000) 
freq = 250   
v_in = 0.5 + 0.5 * np.sign(np.sin(2 * np.pi * freq * (t - 0.001))) 

system = ctrl.tf(num, den)
print(system)
v_out, t_out, x = ctrl.lsim(system, v_in, t)

plt.style.use('grayscale')
plt.plot(t,     v_in,  label="$V_{in}$")
plt.plot(t_out, v_out, label="$V_{out}$")
plt.xlabel('Time[s]')
plt.ylabel('Amplitude')
plt.legend()
plt.grid()
plt.show()
      1
------------
0.0001 s + 1

image.png

À propos, lorsque vous sortez le système créé, la formule s'affiche. intelligent!

import control.matlab as ctrl
ctrl.tf([1,2,3], [4,5,6])
\frac{s^2 + 2 s + 3}{4 s^2 + 5 s + 6}

Quoi qu'il en soit, comme je l'ai appris pour la première fois cette fois, la bibliothèque des systèmes de contrôle Python est incroyable. Les formules peuvent être écrites par programmation et les formules apparaissent clairement dans les images. De plus, il est possible de résoudre des équations différentielles et d'effectuer des simulations. C'est différent de l'ancien temps. .. .. (Autrefois, après avoir résolu l'équation moi-même, je l'ai convertie en équation de différence et créé un programme, mais maintenant je n'en ai plus besoin.)

Le site que j'ai vu aujourd'hui. Répertorié comme mémo.

Recommended Posts

Simulation de circuit RC
Simulation d'escalator