TP – Amplificateur non-inverseur

Travail préparatoire
Lire l’énoncé du TP et ses annexes et effectuer l’application 1, l’application 2 et l’application 3.
Matériel

Par groupe

  • GBF et oscilloscope
  • Platine d'essai et fils de connexion
  • Résistances et condensateurs disponibles dans la salle de TP
  • ALI et alimentation symétrique ±15 V

1. Introduction

L’objectif de ce TP est d’étudier le montage amplificateur non-inverseur et sa fonction de transfert afin de la confronter à son expression théorique. On étudiera notamment son produit gain-bande et les différentes saturations.

Les caractéristiques de l’ALI (produit gain-bande, tension de saturation, courant de saturation et vitesse de balayage) observées seront ensuite confrontées aux valeurs indiquées par le fabricant.

2. Réalisation et étude préliminaire

Le montage amplificateur non-inverseur sera réalisé avec les composants accessibles dans la salle de TP (voir Annexe B) de sorte que

  1. son gain soit égal à 100 ;
  2. l’ALI ne sature pas en courant.
Application 1 ✍

Choisir des valeurs pour 𝑅1 et 𝑅2.

Les composants utilisés en TP ont une incertitude-type de 5⁠ ⁠%. Calculer l’incertitude sur le gain théorique de l’amplificateur.

Évaluation ★★⯪
Choix des valeurs de 𝑅1 et 𝑅2 et calcul de l’incertitude sur le gain théorique.
composants accessibles dans la salle de TP
/ 2
bon gain
/ 2
saturation courant
/ 2
incertitude sur le gain
/ 4
Total
/ 10

Pour vérifier rapidement le montage, on place en entrée un signal sinusoïdal produit par un GBF et on observe sa sortie.

Application 2 ✍

Quelle tension d’entrée maximale peut-on appliquer sans que la tension de sortie de l’ALI ne sature ?

Pour une fréquence de 500⁠ ⁠kHz, quelle amplitude maximale peut-on appliquer sans que la vitesse de balayage ne sature ?

Manipulation 1 🙌

Réaliser l’amplificateur non-inverseur sur une platine d’essai.

Relier son entrée à un GBF et observer sa sortie sur un oscilloscope.

Vérifier rapidement que la valeur du gain est conforme.

Appel prof — Évaluation ★★⯪
Vérification des connections sur la platine d’essai.
au moins toutes les connections correctes sauf 1
/ 2
toutes les connections correctes
/ 2
alimentation ALI
/ 2
masses
/ 2
vérification du gain
/ 2
Total
/ 10

3. Tracé et analyse du diagramme de Bode

Le diagramme de Bode (en gain et en phase) sera tracé après un relevé point par point réalisé à l’aide du GBF et de l’oscilloscope. Les tracés seront réalisés avec Python grâce à la bibliothèque pyplot, notamment la fonction semilogx de la bibliothèque matplotlib.pyplot qui fait le tracé avec les abscisses en échelle logarithmique (voir Annexe A).

Manipulation 2 🙌

Mesurer pour chaque point

On répartira 10 points de mesure entre 500⁠ ⁠Hz et 500⁠ ⁠kHz.

Les données seront rentrées directement dans des variables dans Python.

Tracer le diagramme de Bode en gain et en phase grâce à Python.

Appel prof — Évaluation ★★⯪
L’enseignant regarde les courbes.
courbe du gain en dB
/ 2
courbe de la phase
/ 2
titre
/ 2
axes
/ 2
points non reliés
/ 2
Total
/ 10

L’analyse manuelle du diagramme de Bode ne peut être faite qu’à partir des asymptotes. Dans ce TP, comme les données sont numérisées, on peut faire des traitements plus avancés et notamment un ajustement de la fonction de transfert théorique sur les données expérimentales.

Pour cela, il est nécessaire de définir en Python la fonction de Bode théorique de l’amplificateur non-inverseur.

Application 3 ✍

Compléter le code suivant qui renvoie le gain en décibels de l’amplificateur non-inverseur. On écrira la fonction de transfert de l’amplificateur non-inverseur sous sa forme canonique : 𝐻=𝐻01+𝑗𝑓𝑓0.

1
2
3
4
5
def GdB(f, H0, f0):
    # f   : fréquence en Hz
    # H0  : gain statique de l'amplificateur non-inverseur
    # f0  : fréquence de coupure de l'amplificateur non-inverseur
    return ...

Pour vérifier l’adéquation entre les diagrammes de Bode théorique et expérimental, et pour déterminer les paramètres 𝐻0 et 𝑓0, on peut effectuer un ajustement (fit en anglais), c’est-à-dire chercher la courbe théorique passant au plus près des points expérimentaux.

On utilisera la fonction curve_fit de la bibliothèque scipy.optimize (voir Annexe A).

Manipulation 3 🙌

Écrire des instructions Python permettant d’effectuer l’ajustement de la fonction définie à l’application 3.

Les instructions devront afficher les valeurs des paramètres 𝐻0 et 𝑓0 pour lesquelles la fonction de transfert théorique passe au plus près des points expérimentaux puis afficher le produit gain-bande.

Appel prof — Évaluation ★★⯪
Évaluation du code.
fonction GdB
/ 2
appel curve_fit
/ 2
récupération des paramètres optimaux dans des variables séparées
/ 2
print avec mise en forme
/ 2
unités
/ 2
Total
/ 10

Pour savoir si l’ajustement est correct, il est d’usage de tracer sur le même graphique les points expérimentaux et la courbe théorique obtenue avec les paramètres optimaux.

Manipulation 4 🙌
Écrire des instructions Python permettant de tracer sur le même graphique les points expérimentaux et la courbe théorique obtenue avec les paramètres optimaux.
Application 4 ✍
Calculer le produit gain-bande de votre ALI.

4. Saturations de l’ALI

Plusieurs grandeurs de l’ALI peuvent saturer. On souhaite observer l’effet de ces saturations sur un signal sinusoïdal et vérifier les indications du fabricant.

4.1. Saturation en tension

Manipulation 5 🙌
En se plaçant à une fréquence de 1⁠ ⁠kHz, choisir une amplitude d’entrée permettant d’observer la saturation en tension de l’ALI. Mesurer la tension de saturation de l’ALI.

4.2. Saturation en vitesse de balayage

À haute fréquence, la vitesse de balayage de l’ALI peut engendrer une déformation du signal de sortie.

Manipulation 6 🙌
À haute fréquence, augmenter l’amplitude de la tension d’entrée et observer l’effet de la saturation en vitesse de balayage de l’ALI sur la forme du signal de sortie.
Manipulation 7 🙌
Changer la tension d’entrée en créneau et mesurer la vitesse de balayage maximale de l’ALI.

4.3. Saturation en courant

Lorsque les résistances placées en sortie de l’ALI sont trop faibles, le courant de sortie peut saturer l’amplificateur.

Manipulation 8 🙌
Placer une résistance de 10⁠ ⁠Ω entre la sortie de l’ALI et la masse. Observer l’effet de la saturation du courant sur la tension de sortie. Mesurer le courant de saturation.

5. Conclusion

Le fabricant garanti dans sa notice des performances minimales pour l’ALI.

Application 5 ✍
Vérifier que le produit gain-bande, la tension de saturation, le courant de saturation et la vitesse de balayage sont conformes aux données du fabricant.
Appel prof — Évaluation ★★⯪
Court paragraphe argumenté sur l’adéquation ou non entre les valeurs mesurées et les valeurs constructeurs.
produit gain-bande
/ 2
tension de saturation
/ 2
courant de saturation
/ 2
vitesse de balayage
/ 2
au moins une notion d’incertitude
/ 2
Total
/ 10

Annexe A : Fonctions Python utiles dans ce TP

plt.clf1
plt.clf()
efface le graphique courant (pour tracer un nouveau graphique dans la même fenêtre)
plt.plot1
plt.plot(x, y)
plt.plot(x, y, format: str)
trace y en fonction de x ; format (ex. "r+", "g-") fixe couleur et style
plt.semilogx1
plt.semilogx(x, y)
comme plot, avec l’axe des abscisses en échelle logarithmique
plt.xlabel1
plt.xlabel(texte: str)
légende de l’axe des abscisses
plt.ylabel1
plt.ylabel(texte: str)
légende de l’axe des ordonnées
plt.title1
plt.title(texte: str)
titre du graphique
plt.show1
plt.show()
affiche la fenêtre graphique, une fois tous les tracés effectués
curve_fit2
curve_fit(f: fonction, xdata: array, ydata: array) -> tuple
popt, pcov = curve_fit(f: fonction, xdata: array, ydata: array, p0: list, bounds=(0, np.inf): tuple)
ajuste les paramètres de f (dont le premier argument est l’abscisse) aux données ; popt : paramètres optimaux, p0 : estimation initiale des valeurs des paramètres (facultatif), bounds : bornes sur les paramètres (facultatif)
np.pi3
np.pi -> float
constante 𝜋≈3.14159
np.linspace3
x = np.linspace(début: float, fin: float, nombre_de_points: int) -> array
tableau de points régulièrement espacés entre début et fin (bornes incluses)
np.logspace3
f = np.logspace(début: float, fin: float, nombre_de_points: int) -> array
comme linspace, mais les points sont espacés logarithmiquement entre 10début et 10fin
np.random.normal3
x = np.random.normal(moyenne: float, écart_type: float) -> float
x = np.random.normal(moyennes: array, écarts_types: array) -> array
valeurs aléatoires suivant une loi normale (gaussienne) distribuée autour de moyenne avec un écart-type écart_type
1 import matplotlib.pyplot as plt2 from scipy.optimize import curve_fit3 import numpy as np

Annexe B : Composants disponibles dans la salle de TP

4,710122233
47100120220330
4701000120022003300
470010 00012 00022 00033 000
47 000100 000120 000220 000330 000
Tableau 1. – Résistances des résistors disponibles dans la salle de TP (en Ω)
100⁠ ⁠pF400⁠ ⁠pF1⁠ ⁠nF2,2⁠ ⁠nF4,7⁠ ⁠nF10⁠ ⁠nF22⁠ ⁠nF100⁠ ⁠nF220⁠ ⁠nF470⁠ ⁠nF
Tableau 2. – Capacité des condensateur disponibles dans la salle de TP