Outils pédagogiques pour l'étude des systèmes du 2ème ordre
Project description
module order2
Outils pédagogiques pour l'étude des systèmes du 2ème ordre
Installation du module python order2
From Pypi repository :
https://pypi.org/project/order2
pip install order2
Réponse indicielle en régime transitoire
On s'intéresse aux systèmes du 2ème ordre régis par l'équation différentielle suivante :
(1/ω0²).d²y(t)/dt² + (2m/ω0).dy(t)/dt + y(t) = A.u(t)
avec :
- t : temps en s
- A : amplification statique (sans unité)
- m : coefficient d'amortissement (sans unité, m >= 0)
- ω0 : pulsation propre (en rad/s)
- u(t) : échelon unité (Heaviside)
- u(t) = 0 pour t < 0
- u(t) = 1 pour t >= 0
Conditions initiales (système au repos) :
- y(t=0) = 0
- dy(t=0)/dt = 0
Exemple :
>>> import order2
>>> syst = order2.Ordre2(A=2, coeff_amortissement=0.05, w0=1000)
>>> syst.courbe_reponse_indicielle()
>>> syst.show()
>>> syst = order2.Ordre2(A=1, coeff_amortissement=2.5, w0=1000)
>>> syst.courbe_reponse_indicielle()
>>> syst.show()
Etude en régime harmonique (sinusoïdal)
La fonction de transfert (transmittance complexe) s'écrit alors :
A
H(jω) = ----------------------
1 + 2mjω/ω0 -(ω/ω0)²
avec :
- ω : pulsation en rad/s
- A : amplification statique (sans unité)
- m : coefficient d'amortissement (sans unité, m >= 0)
- ω0 : pulsation propre (en rad/s)
Exemple :
>>> import order2
>>> syst = order2.Ordre2(A=2, coeff_amortissement=0.05, w0=1000)
>>> syst.bode()
>>> syst.show()
Cas particulier : circuit électrique RLC série
L
---[ R ]---^^^^-----
^ | ^
tension | --- | tension
d'entrée | C --- | de sortie
Vin | | | Vout
--------------------
- R résistance en Ω
- L inductance en henry
- C capacité en farad
Exemple :
>>> import order2
>>> syst = order2.RLC(R=100, L=0.01, C=100e-9)
>>> print(syst.pulsation_propre)
31622.7766016
>>> print(syst.amortissement)
0.158113883008
>>> syst.courbe_reponse_indicielle()
>>> syst.bode()
>>> syst.show()
Autre cas particulier : masse suspendue à un ressort
- M : masse en kg
- K : constante de raideur du ressort (en N/m)
- f : coefficient de frottement (en N.s/m)
Exemple :
>>> import order2
>>> syst = order2.MKF(M=2, K=100, f=13)
>>> print(syst.pulsation_propre)
7.07106781186
>>> print(syst.amortissement)
0.45961940777
>>> syst.courbe_reponse_indicielle()
>>> syst.bode()
>>> syst.show()
Autres fonctionnalités
Réponse indicielle
- détermination du type de régime
- temps de réponse
- pseudo-période
- fréquence propre
- dépassements en %
Exemple :
>>> import order2
>>> syst = order2.Ordre2(A=10, coeff_amortissement=0.5, w0=600)
>>> print(syst.regime())
pseudo-périodique
>>> print(syst.temps_de_reponse(5)) # à 5 %
0.0088151553719
>>> print(syst.temps_de_reponse(1)) # à 1 %
0.0146342745411
>>> print(syst.frequence_propre())
95.49296585
>>> print(syst.depassement(1)) # 1er dépassement en %
16.3033534821
Réponse harmonique
- fréquence propre
- fréquence de résonance
- facteur de résonance
- fréquence de coupure à -3 dB
Exemple :
>>> import order2
>>> syst = order2.Ordre2(A=10, coeff_amortissement=0.5, w0=600)
>>> print(syst.frequence_propre())
95.49296585
>>> print(syst.frequence_resonance_harmonique())
67.523723711
>>> print("{} ou {} dB".format(*syst.facteur_resonance_harmonique()))
1.15470053837 ou 1.24938736608 dB
>>> print(syst.frequence_coupure_harmonique())
121.468928958
- fonction de transfert complexe (transmittance)
Exemple :
>>> syst = order2.Ordre2(A=2, coeff_amortissement=0.05, w0=1000)
>>> H = syst.fonction_transfert
>>> # help(H)
>>> H.properties(150) # transmittance à 150 Hz
Frequency (Hz) : 150
Angular frequency (rad/s) : 942.478
Complex value : 10.4585-8.82161j
Magnitude : 13.6821
Magnitude (dB) : 22.72306
Phase (degrees) : -40.1473
Phase (radians) : -0.700702
>>> print(H.db(150)) # gain en dB à 150 Hz
22.723064994
>>> print(H.phase_deg(150)) # déphasage en degrés à 150 Hz
-40.147271165
Abaques
Réponse indicielle
- coefficient d'amortissement en fonction du premier dépassement en %
>>> import order2
>>> print(order2.Ordre2.abaque_coeff_amortissement(depassement=60))
0.160493046627
- n-ième dépassement en % en fonction du coefficient d'amortissement
>>> print(order2.Ordre2.abaque_depassement(coeff_amortissement=0.16))
60.0967132139
>>> print(order2.Ordre2.abaque_depassement(coeff_amortissement=0.16, n=2))
36.1161493911
- temps de réponse en fonction de m et de ω0
>>> print(order2.Ordre2.abaque_temps_de_reponse(coeff_amortissement=0.16, w0=10000, pourcentage=5))
0.0016837960245
- pseudo-période en fonction de m et de ω0
>>> print(order2.Ordre2.abaque_pseudo_periode(coeff_amortissement=0.16, w0=10000))
0.00063651879320
- ω0 en fonction de m et de la pseudo-période
>>> print(order2.Ordre2.abaque_pulsation_propre(coeff_amortissement=0.16, pseudo_periode=0.0006365))
10000.295258
Réponse harmonique
- coefficient d'amortissement en fonction du facteur de résonance en dB
>>> import order2
>>> print(order2.Ordre2.abaque_coeff_amortissement_harmonique(facteur_resonance_db=20))
0.0500627750559
- facteur de résonance (sans unité et en dB) en fonction du coefficient d'amortissement
>>> result = order2.Ordre2.abaque_facteur_resonance_harmonique(coeff_amortissement=0.05)
>>> print("{} ou {} dB".format(*result))
10.0125234864 ou 20.010870956 dB
- fréquence de coupure à -3 dB en fonction de m et ω0
>>> print(order2.Ordre2.abaque_frequence_coupure_harmonique(coeff_amortissement=0.16, w0=10000))
2427.97905105
- fréquence de résonance en fonction de m et ω0
>>> print(order2.Ordre2.abaque_frequence_resonance_harmonique(coeff_amortissement=0.16, w0=10000))
1550.27045
- ω0 en fonction de m et de la fréquence de résonance
>>> print(order2.Ordre2.abaque_pulsation_propre_resonance_harmonique(coeff_amortissement=0.16, frequence_resonance=1550.27))
9999.9970809
Aide complète
>>> import order2
>>> help(order2)
Bonus
Vous trouverez ici les scripts permettant de tracer les courbes suivantes :
- Abaque : premier dépassement en fonction du coefficient d'amortissement
- Abaque : temps de réponse réduit en fonction du coefficient d'amortissement
- Abaque : facteur de résonance en fonction du coefficient d'amortissement
Documentation complète
https://framagit.org/fsincere/order2
TO DO
English translation...
A voir
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
order2-0.3.5.tar.gz
(22.3 kB
view hashes)
Built Distribution
order2-0.3.5-py3-none-any.whl
(22.6 kB
view hashes)