Activer le mode zen
Ressource au format PDF

Mots-clés

GBF tension résistance python modèle équivalent

Analyse numérique appliquée à une source de tension, en langage python

02/12/2019

Delphine Chareyron

ENS Lyon

Delphine Chareyron

ENS Lyon / DGESCO

Résumé

Nous présentons ici l'étude expérimentale d'une source réelle de tension et le traitement des données à l'aide d'un code en python.


1. Introduction

Nous nous interessons à l'étude d'une source de tension réelle : un générateur basse fréquence Hewlett Packard 3311 A. On souhaite retrouver expérimentalement son modèle équivalent.

À l'aide d'une charge résistive variable, nous traçons la caractéristique tension - courant, en réalisant un montage courte dérivation, figure 1.

On mesure la tension U et le courant I appelé en fonction de la valeur de la résistance de charge variable.

Les valeurs obtenues seront consignées dans le programme python afin de les analyser.

2. Représentation graphique des données expérimentales à l'aide de python

2.1 Entrée des données

Dans un premier temps, on importe les bibliothèques python nécessaires au traitement des données et à l'affichage des graphiques, figure 2.

On consigne les valeurs de tension et de courant obtenues expérimentalement, figure 3.

Les vecteurs U et I sont définis comme des tableaux (array) faisant appel à la bibliothèque numpy (np). L'intensité a été relevée en milliampère, d'où la multiplication des valeurs par 10-3, qui se note en python 10**(-3).

On remarque que les items d'un vecteur sont séparés par des virgules. La notation décimale est codée par un point.

On propose ici, simplement pour vérifier, un premier tracé des points. La fonction plot appelle la bibliothèque pyplot (plt), on renseigne d'abord l'axe des abscisses (I), l'axe des ordonnées (U) et le format du tracé (bo) : des points ronds tracés en bleu.

La fonction plt.show() permet d'afficher la figure a l'ecran.

On obtient la figure 4.

2.2 Représentation graphique des données

Maintenant, nous ajoutons le titre, les axes et les unités sur le tracé, figure 5.

On affiche les valeurs d'intensité sous la forme de l'écriture scientifique pour plus de visibilité en utilisant la fonction ticklabel_format de la manière suivante :

ticklabel_format (écriture scientifique, axe concerné, prise en compte pour toutes les valeurs du vecteur).

On obtient la caractéristique tension - courant, figure 6.

3 Modélisation des données

3.1 Codage de la régression linéaire

Nous modélisons les données expérimentales à l'aide d'une regression linéaire. Nous utilisons la fonction pré-existante linregress dans la bibliothèque scipy.stats, figure 7.

La fonction linregress calcule la régression linéaire par la méthode des moindres carrés. Cette méthode consiste à minimiser la somme des carrés des écarts entre chaque point expérimental et son projeté sur la droite de régression.

La fonction renvoie :

  • en premier terme du vecteur (regression[0]) : la pente
  • et en deuxième terme (regression[1]) : l'ordonnée à l'origine.

On demande ensuite, à l'aide de la commande print, d'afficher à l'écran les valeurs trouvées. Les termes entre cotes "" s'écrivent tels quels, alors que les autres renvoient aux valeurs des variables. Pour obtenir l'affichage du caractère Ω, pour les ohms, le langage python utilise le caractère Unicode 937.

Le code renvoie les valeurs suivantes :

E_g = 2.3673840162590967 V

r_g = 622.8309185078344 Ω

Pour garder du sens physique par rapport à la précision donnée par les multimètres, on affiche une valeur arrondie du résultat calculé à l'aide de la fonction round. On choisit de ne garder que 2 décimales pour la valeur de la tension à vide et une seule décimale pour la valeur de la résistance interne du générateur, figure 8.

Le code renvoie donc les valeurs suivantes :

E_g = 2.37 V

r_g = 622.8 Ω

3.2 Tracé de la régression linéaire

Pour tracer la regression linéaire calculée à partir des données, nous avons besoin de créer deux vecteurs : I_mod correspondant aux abcsisses et U_mod correspondant aux ordonnées. On choisit pour I_mod un vecteur contenant 500 points, avec comme valeurs minimales et maximales les mêmes que celles obtenues expérimentalement. La création du vecteur est réalisée à l'aide de la fonction linspace, de la manière suivante :

Définition d'un vecteur (linspace) partant de la valeur de I minimum (mn), à la valeur de I maximum (mx), contenant 500 points (500).

La modélisation de la tension U_mod est réalisée selon le fonctionnement de la source de tension réelle : U = E_g - r_g I

On trace la modélisation à l'aide d'une ligne rouge (-r). On ajoute une légende (label) pour chaque courbe, l'affichage est gérée par la fonction plt.legend().

Le programme affiche le graphique, figure 10.

3.3 Affichage de l'équation de la droite de la régression linéaire

On souhaite ajouter l'équation de la régréssion linéaire sur le graphique, figure 11. On utilise la fonction plt.text de la manière suivante :

Définition de la boite de texte plt.text ( position X de la boite, position Y de la boite, texte contenu dans la boite, taille de la police, puis on définit les attibuts de la boite (bbox) : boite aux coins ronds, au bord noir et remplie en cyan).

La fonction plt.savefig permet d'enregistrer la figure.

Le programme affiche le graphique, figure 12.

Les données constructeur du GBF, indiquent une valeur de résistance de sortie du GBF de 600 Ω.

Dans ce permier exemple volontairement simple, nous avons choisit de ne pas faire apparaître de barres d'erreurs. Ce sera l'objet d'un prochain article.

Programmes python :

Télécharger le programme python Trace-UI-source-tension.py

Télécharger le programme python au format Jupyter Notebook Trace_U_I_source_tension.ipynb

Pour citer cet article :

Analyse numérique appliquée à une source de tension, en langage python, Delphine Chareyron, décembre 2019. CultureSciences Physique - ISSN 2554-876X, https://culturesciencesphysique.ens-lyon.fr/ressource/source-tension-python.xml

Ressource au format PDF