Fonction exponentielle

✎ Travail n° 1 TD exponentielle

Faire les exercices présents dans ce document pdf

💻 Travail n° 2 Charge/décharge d’un condensateur

On considère le circuit électrique suivant :

circuit rc
Par Abaddon1337 — Cette image vectorielle contient des éléments, éventuellement modifiés, qui ont été extraits de :, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=35612055

Lorsqu’on applique un échelon de tension à ce circuit (→ passage brusque de 0V à Vin) alors que le condensateur est initialement déchargé (→ Vc=0V), celui-ci va se charger électriquement de manière exponentielle jusqu’à ce que la tension à ses bornes atteigne Vin. L’évolution de la tension à ses bornes en fonction du temps est décrite par la fonction :

vc t charge

Le produit RC est homogène à une durée et est appelé constante de temps. On le note τ (→ tau) et il est exprimé en secondes.

On veut analyser l’évolution de cette tension depuis la représentation graphique de cette fonction tracée par un script Python.

Le code partiel de ce script vous est donné ci-dessous :

charge-condensateur.py
import numpy as np
import matplotlib.pyplot as plt

# À la place du mot clé "pass", définir à partir
# des consignes de l'énoncé : 
#  * les constantes Vin, R et C
#  * la fonction Vc(t) 
pass

# Création d'une figure
fig = plt.figure()

# Ajout de la courbe de la tension aux bornes du condensateur dans la figure
courbeVc = fig.add_subplot(1 # nrows
    , 1 # ncols
    , 1 # index
    , xscale='linear'
    , xlabel=r'$t$ [s]'
    , ylabel=r'$u_c$ [V]'
    )

# Tracé de la courbe
courbeVc.plot(t, Vc, "blue")

# Configuration des grilles
plt.grid(which='major', color='black')
plt.minorticks_on()
plt.grid(which='minor', color='lightgray')

# Affichage de la courbe
plt.show()

🎯 Travail à faire :

  1. Calculer le rapport VC / Vin pour t = τ, t = 3τ et t = 5τ
    Que représente ce rapport ? En déduire l’intervalle de temps minimum sur lequel on devra tracer VC(t) pour analyser l’essentiel de son évolution.

  2. À la place du mot clé pass dans le script, définir trois variables numériques R, C, Vin qui représentent la résistance (en Ω, ohms), la capacité du condensateur (en F, farads) et la tension d’entrée (en V, volts) du circuit sachant que :

    • R = 8.2kΩ

    • C = 100µF

    • Vin = 5V

  3. Définir ensuite, dans une variable t, une liste qui contiendra toutes les valeurs du temps pour lesquelles on veut représenter la valeur de VC.
    Pour cela, utiliser la fonction linspace du module Numpy de Python sachant que l’on veut étudier la fonction sur 1000 points dans l’intervalle t ∈ [0, 5s].
    On vous donne ci-dessous un exemple d’utilisation de cette fonction en mode interactif ainsi qu’un extrait de sa documentation :

    >>> import numpy as np
    >>> x = np.linspace(0,2,6) (1)
    >>> print(x)
    [0.  0.4 0.8 1.2 1.6 2. ]
    1 On définit une variable x qui contient 6 valeurs également réparties sur l’intervalle [0,2].
    >>> help(np.linspace)
    
    linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
        Return evenly spaced numbers over a specified interval.
    
        Returns `num` evenly spaced samples, calculated over the
        interval [`start`, `stop`].
    
        The endpoint of the interval can optionally be excluded.
    
        Parameters
        ----------
        start : array_like
            The starting value of the sequence.
        stop : array_like
            The end value of the sequence, unless `endpoint` is set to False.
            In that case, the sequence consists of all but the last of ``num + 1``
            evenly spaced samples, so that `stop` is excluded.  Note that the step
            size changes when `endpoint` is False.
        num : int, optional
            Number of samples to generate. Default is 50. Must be non-negative.
    
        Examples
        --------
        >>> np.linspace(2.0, 3.0, num=5)
        array([2.  , 2.25, 2.5 , 2.75, 3.  ])
        >>> np.linspace(2.0, 3.0, num=5, endpoint=False)
        array([2. ,  2.2,  2.4,  2.6,  2.8])
        >>> np.linspace(2.0, 3.0, num=5, retstep=True)
        (array([2.  ,  2.25,  2.5 ,  2.75,  3.  ]), 0.25)
    >>> np.linspace(0,2,6)
    array([0. , 0.4, 0.8, 1.2, 1.6, 2. ])
  4. Définir enfin la variable Vc dans laquelle figure la définition de la fonction Vc(t) : vc t charge

    La fonction exponentielle est accessible dans votre script Python via np.exp().

  5. Exécuter le script pour tracer et afficher la courbe.

    Résultat attendu :

    courbe vc charge
  6. En utilisant les fonctions de zoom et de déplacement de Matplotlib, déterminer graphiquement le pourcentage de charge du condensateur lorsque t = τ (rappel : τ = RC).

  7. Modifier le script Python pour qu’il affiche désormais la courbe de décharge du condensateur sachant qu’elle est décrite par la fonction : vc t decharge

    courbe vc decharge
    Résultat attendu
  8. Connaissant désormais les expressions de charge (→ vc t charge) et de décharge (→ vc t decharge) d’un condensateur à travers une résistance, exprimer la forme générale de l’évolution de cette tension en fonction du temps et des tensions initiales et finales aux bornes du condensateur c’est-à-dire l’expression de f() dans la formule ci-dessous :
    Vc(t) = f(VCinitiale , VCfinale , t)

  9. Plutôt que d’analyser la courbe pour savoir à quelle valeur de t le condensateur sera déchargé à 50%, déterminer ce temps (en secondes et en nombre de τ) dans le script Python …​
    …​d’abord par calcul
    …​puis par analyse des points de la courbe.
    Vérifier le résultat obtenu sur la courbe.

    La réponse attendue est t ≈ 0.57 s ≈ 0.70 . τ

    • L’algorithme à utiliser pour déterminer le temps demandé à partir des points de la courbe pourrait ressembler à ceci :

      1. Trouver dans le tableau Vc la valeur la plus proche de 2.5V (→ 50% de 5V)

      2. Récupérer l’indice de cette valeur

      3. Convertir cet indice en secondes sachant que les 1000 points de la courbe couvrent 5 secondes.

      4. Diviser ce dernier résultat par τ pour obtenir la durée en nombre de τ plutôt qu’en secondes.

    • L’article Find the nearest value and the index of NumPy Array link renseigne sur les fonction Numpy à utiliser pour trouver dans un tableau la valeur la plus proche d’un nombre ainsi que son indice

🞄  🞄  🞄