Table des matières

Amplificateur de tension

1. Introduction

Un amplificateur de tension est un circuit d'électronique analogique permettant d'amplifier une tension, souvent une tension variable contenant un signal. L'amplification permet d'augmenter l'amplitude des signaux faibles afin d'effectuer leur numérisation par un convertisseur analogique-numérique. Il peut être aussi nécessaire d'ajouter une tension de décalage constante aux signaux ou dans certains cas de réduire leur amplitude.

Ce document montre comment réaliser ces différentes fonctions au moyen d'un amplificateur linéaire intégré (ALI) (appelé aussi ampli-op). Il constitue aussi une introduction à l'utilisation des ALI.

Il est important de distinguer deux types d'usage de la tension amplifiée :

Le premier usage relève de l'électronique du signal. Dans ce cas, l'amplificateur peut être réalisé avec un ampli-op de faible puissance. Le second usage relève de l'électronique de puissance : il nécessite l'utilisation d'un ampli-op de puissance adapté à la puissance que l'on souhaite fournir. Dans ce document, on s'intéresse principalement aux amplificateurs de faible puissance mais un exemple d'amplificateur de puissance moyenne sera aussi donné.

Les amplificateurs étudiés reposent sur l'utilisation d'un amplificateur linéaire. Les amplificateurs à découpage (ampli classe D), surtout utilisés pour les fortes puissances, fonctionnent selon un principe complètement différent et ne sont pas abordés dans ce document.

2. Principe de l'amplification linéaire

Un amplificateur linéaire est caractérisé par une fonction de transfert en régime sinusoïdal A̲(ω) . C'est le cas des amplificateurs linéaires intégrés (ALI), qui fonctionnent en régime linéaire tant que leur tension de sortie reste dans une plage de valeurs (qui dépend de la tension d'alimentation et du courant de sortie).

Afin de permettre la réalisation de fortes amplifications, un ALI a un gain (c.a.d. le module de A̲(ω) ) très grand, de l'ordre de 105, mais sa bande passante est très faible, de l'ordre de la dizaine de Hertz. Par ailleurs, le gain effectif dépend du modèle choisi et même de l'exemplaire pour un modèle donné. En réalité, on utilise toujours l'amplificateur avec une rétroaction. La rétroaction est réalisée avec de simples résistances et permet d'ajuster le gain précisément.

La figure suivante montre le schéma de l'amplificateur avec la boucle de rétroaction :

boucle-fig.svgFigure pleine page

Pour éviter toute ambiguité, on distingera l'amplificateur (sans rétroaction) et le montage amplificateur (amplificateur avec la rétroaction). En régime sinusoïdal de pulsation ω, les amplitudes complexes de l'entrée et de la sortie du montage amplificateur sont notées E̲ et S̲ . La rétroaction consiste à soustraire à l'entrée B̲(ω)S̲ . Le signal appliqué à l'entrée de l'amplificateur est donc :

ε̲=E̲-B̲S̲(1)

Sachant que S̲=A̲ε̲ on en déduit la fonction de transfert de l'amplificateur :

H̲=S̲E̲=A̲1+A̲B̲(2)

L'amplificateur se comporte comme un filtre passe-bas. Dans l'hypothèse où ce filtre est du premier ordre, sa fonction de transfert s'écrit :

A̲(ω)=μ1+jωωo(3)

La constante μ est le gain de l'amplificateur dans la bande passante.

Dans le cas d'un amplificateur de tension, la fonction de transfert de la rétroaction est le plus souvent une constante : B̲(ω)=B . La fonction de transfert du montage amplificateur est donc :

H̲(ω)=11μ(1+jωωo)+B(4)

La gain μ est très grand (environ 100000) et on suppose que B1μ . On peut aussi introduire le concept d'amplificateur idéal, pour lequel μ . On a donc :

H̲(ω)=1B+jωμωo=1B1+jωBμωo(5)

Le montage amplificateur a donc un gain dans la bande passante Gmax=1B et sa pulsation de coupure est ωc=Bμωo . La relation ci-dessus est valable si Bμ> 1000 , c'est-à-dire si le gain est inférieur à 100.

On obtient un résultat important : la largeur de bande passante d'un montage amplificateur est inversement proportionnelle à son gain dans la bande passante.

Le montage amplificateur doit être stable. Pour étudier sa stabilité, on doit s'intéresser aux pôles de sa fonction de transfert, c'est-à-dire les racines de l'équation :

1+1Bμωos=0(6)

L'unique pôle est donc : s=-Bμωo .

Le système est stable si et seulement si tous les pôles de la fonction de transfert ont une partie réelle strictement négative [1]. Dans le cas présent, le système est stable si B>0, mais ce résultat repose sur l'hypothèse d'une fonction de transfert du premier ordre pour l'amplificateur.

Voici les courbes de gain et de déphasage du montage amplificateur pour différentes valeurs du gain :

import numpy as np
from matplotlib.pyplot import *
def H(Gmax,f):
    mu = 1e5
    f0 = 10
    fc = mu*f0/Gmax
    return Gmax/(1+1j*f/fc)
 
f = np.logspace(0,7,1000)
H1 = H(1,f)
H10 = H(10,f)
H100 = H(100,f)
figure(figsize=(12,8))
subplot(211)
plot(f,20*np.log10(np.absolute(H1)),label=r"$G_{max}=1$")
plot(f,20*np.log10(np.absolute(H10)),label=r"$G_{max}=10$")
plot(f,20*np.log10(np.absolute(H100)),label=r"$G_{max}=100$")
grid()
xscale('log')
legend(loc="upper right")
ylabel(r"$G_{dB}$",fontsize=16)
subplot(212)
plot(f,np.angle(H1)*180/np.pi,label=r"$G_{max}=1$")
plot(f,np.angle(H10)*180/np.pi,label=r"$G_{max}=10$")
plot(f,np.angle(H100)*180/np.pi,label=r"$G_{max}=100$")
grid()
xscale('log')
legend(loc="upper right")
ylabel(r"$\varphi\ (\rm deg)$",fontsize=16)
xlabel("f (Hz)",fontsize=16)
    
                    
fig1fig1.pdf

Dans la bande passante, la variation du déphasage avec la fréquence est approximativement linéaire, comme le montre la figure suivante :

figure(figsize=(8,6))
plot(f,np.angle(H1)*180/np.pi,label=r"$G_{max}=1$")
plot(f,np.angle(H10)*180/np.pi,label=r"$G_{max}=10$")
plot(f,np.angle(H100)*180/np.pi,label=r"$G_{max}=100$")
xlim(0,1000)
ylim(-6,0)
grid()
legend(loc="lower left")
ylabel(r"$\varphi\ (\rm deg)$",fontsize=16)
xlabel("f (Hz)",fontsize=16)
                    
fig2fig2.pdf

Une conséquence importante de cette propriété est que les signaux sont amplifiés sans déformation, pourvu que l'essentiel de leur spectre soit dans la bande passante.

3. Montage amplificateur non inverseur

3.a. Schéma et fonctionnement

nonInverseur-fig.svgFigure pleine page

L'ALI comporte deux bornes d'alimentation Vcc+ et Vcc-, deux entrées IN- et IN+ (respectivement entrée inverseuse et entrée non inverseuse) et une sortie OUT. Les tensions sur les deux entrées et la sortie sont nécessairement comprises entre Vcc+ et Vcc- (ce qui signifie que ces bornes doivent être à un potentiel supérieur à Vcc- et inférieur à Vcc+).

La tension d'alimentation (Vcc+-Vcc-) minimale dépend du type d'ALI. Elle va de 3 V à 10 V. La tension maximale dépend aussi du modèle mais 36 V est une valeur courante. Pour le choix de l'alimentation, il faut distinguer deux types d'application :

  • Les tensions VE et VS sont toujours positives. Dans ce cas, une seule alimentation est nécessaire car on peut mettre Vcc- à la masse (ce qui revient à poser Vcc-=0).
  • Les tensions VE et VS sont alternatives. Dans ce cas, il faut une double alimentation symétrique, par exemple Vcc+=10V et Vcc-=-10V.

La boucle de rétroaction est constituée des résistances R1 et R2. La résistance Rc, qui ne fait pas partie du montage amplificateur, est la résistance de charge, qui représente le circuit branché en aval de l'amplificateur.

Voici le schéma interne du TL081, un ALI d'usage courant (que nous allons utiliser pour réaliser l'amplificateur) :

TL081

Chacune des entrées IN+ et IN- est reliée à la grille d'un transistor JFET. En conséquence, le courant qui circule vers ces entrées est extrêmement faible (inférieur au nA) et négligeable pour la plupart des applications.

Tant qu'il fonctionne en régime linéaire, l'ALI est un amplificateur différentiel, c'est-à-dire, en régime sinusoïdal pour une pulsation non nulle :

V̲out=A̲(ω)(V̲+-V̲-)(7)

et pour une pulsation nulle :

V̲out=V0+A̲(0)(V̲+-V̲-)(8)

avec :

V0=Vcc++Vcc-2(9)

Notons que ces deux relations ne sont vraies que si l'on néglige la résistance de sortie de l'ALI (ou si la résistance Rc est très grande).

V0 est la tension de sortie au repos, lorsque les deux entrées IN- et IN+ sont au même potentiel. Avec une double alimentation symétrique on a V0=0.

Le montage amplificateur non inverseur s'identifie facilement au cas général traité dans la partie 2 car la rétroaction s'applique sur la tension d'entrée. Le gain de la rétroaction est :

B=R1R1+R2(10)

On a V+̲=V̲E et V-=BV̲S . On obtient :

V̲S(0) = V01+BA̲(0)+A̲(0)V̲E(0)1+BA̲(0)pourω=0(11) V̲S=A̲V̲E1+BA̲pourω> 0 (12)

La relation à pulsation nulle fait apparaître une tension de décalage :

Voffset=V01+BA̲(0)(13)

Avec une double alimentation symétrique on a V0=0 donc cette tension est nulle. On se place dans ce cas pour la suite. La fonction de transfert s'écrit alors pour toute pulsation :

H̲=V̲SV̲E=A̲1+BA̲(14)

conformément à la relation générale (2).

Le gain dans la bande passante (c.a.d. à très basse fréquence) est donc :

Gmax=1B=1+R2R1(15)

Ce gain est entièrement défini par les résistances de la rétroaction. La précision relative du gain est celle des résistances. Si l'on veut une valeur bien précise à 1% près, il faut utiliser des résistances de précision 1% . Dans la plupart des cas, on ne veut pas une valeur précise du gain et on utilise simplement des résistances de précision 5% (rappelons qu'il s'agit de la précision de la valeur nominale). Un étalonnage au moyen d'un voltmètre permet de déterminer la valeur précise du gain.

Si la double alimentation n'est pas tout à fait symétrique (c'est certainement le cas en pratique), la tension V0 est non nulle mais la tension Voffset reste très faible (négligeable) car BA̲(0) est très grand (supérieur à 1000 si le gain est inférieur à 100). Ainsi une tension de repos V0=0,1V se traduit par Voffset=0,1mV au maximum.

Le gain dans la bande passante peut être obtenu rapidement à l'aide du modèle d'ALI idéal, défini par :

  • 1. Le gain est infini : μ .
  • 2. Les courants des entrées IN+ et IN- sont nuls.
  • 3. La résistance de sortie est nulle.

Il faut remarquer que la deuxième et la troisième hypothèses ont déjà été utilisées pour le calcul précédent. La première hypothèse permet d'écrire :

V̲+-V̲-=0(16)

ce qui conduit au résultat suivant :

H̲=1B(17)

Autrement dit, le modèle d'ALI idéal (ou d'ampli-op idéal) permet d'obtenir le gain dans la bande passante.

Pour simplifier, on nommera le gain dans la bande passante simplement gain du montage amplificateur. Le gain de ce montage est nécessairement supérieur à 1, ce qui ne pose pas de problème dans la mesure où on cherche à amplifier la tension.

Le modèle d'ALI idéal ne permet pas de déterminer la réponse fréquentielle du montage. Pour cela, il faut utiliser l'expression (14) de la fonction de transfert. L'ALI TL081 comporte un condensateur de compensation de fréquence (noté C1 sur le schéma) qui permet à la fonction de transfert A̲ d'être du premier ordre [2], avec une fréquence de coupure d'environ 10 Hz et un gain à très basse fréquence de 100 dB. Comme il a été démontré en partie 2, cette fonction de transfert garantit la stabilité du montage amplificateur non inverseur. Certains ALI n'ont pas de compensation interne et celle-ci doit être ajoutée à l'extérieur. Nous avons vu que la largeur de la bande passante est inversement proportionnelle au gain. Pour un gain de 100000 (100 dB), la bande passante est d'environ 10 Hz. Pour un gain de 10, obtenu avec R2/R1=9, on peut donc s'attendre à une bande passante de 100 kHz. Pour un gain de 100, la bande passante devrait être de 10 kHz.

En réalité, la résistance de sortie de l'amplificateur (c'est-à-dire de l'ALI) est de l'ordre de Rs=100Ω. Pour tenir compte de cette résistance, il faut modifier la relation (7) :

V̲out=A̲(ω)(V̲+-V̲-)-RsI̲s(18)

Is est le courant sortant de l'ALI. On obtient :

V̲S=A̲1+A̲BV̲E-Rs1+A̲BI̲s(19)

Le courant qui passe dans la boucle de rétroaction peut être supposé négligeable devant le courant dans la charge donc celui-ci est très proche de Is. L'impédance de sortie du montage amplificateur est donc :

Z̲out=Rs1+A̲B(20)

Si l'on reprend l'hypothèse de fonction de transfert du premier ordre pour A̲ , on obtient :

Z̲out(ω)=Rs1+μB1+jωωo(21)

Le module de cette impédance augmente avec la fréquence. À fréquence nulle, elle vaut :

Z̲out(0)=Rs1+μB=Rs1+μGmax(22)

Il s'agit de l'impédance de sortie à très basse fréquence (en dessous de 10 Hz environ). Elle est très grande car μB est très grand. Sa valeur est de l'ordre de 10 pour Gmax=10. Voici le module de cette impédance en fonction de la fréquence :

def Zout(Gmax,f):
    mu = 1e5
    f0 = 10
    Rs = 100
    return Rs/(1+mu/(Gmax*(1+1j*f/f0)))
 
f = np.logspace(0,7,1000)
Z1 = Zout(1,f)
Z10 = Zout(10,f)
Z100 = Zout(100,f)
figure(figsize=(8,6))
title("Impédance de sortie pour Rs = 100 Ohms")
plot(f,np.absolute(Z1),label=r"$G_{max}=1$")
plot(f,np.absolute(Z10),label=r"$G_{max}=10$")
plot(f,np.absolute(Z100),label=r"$G_{max}=100$")
grid()
xscale('log')
yscale('log')
legend(loc="upper right")
legend(loc="lower right",fontsize=16)
ylabel(r"$|Z_{out}|\ (\rm\Omega)$",fontsize=16)                    
                        
fig3fig3.pdf

L'impédance de sortie du montage amplificateur est donc très faible, du moins à basse fréquence. Cependant, cette impédance augmente linéairement avec la fréquence sur une large plage de fréquence. Cela correspond à un comportement inductif de l'impédance de sortie. Dans certains cas, cela peut poser problème si la charge est capacitive [3].

Afin de déterminer l'impédance d'entrée du montage, notons Ri la résistance d'entrée de l'ALI, c'est-à-dire la résistance vue entre les entrées IN- et IN+. Pour le TL081, cette résistance est très grande, de l'ordre du GΩ. Soit I̲i le courant entrant par l'entrée IN+; il s'écrit :

I̲i=V̲E-BV̲SRi=V̲E(1+A̲B)Ri(23)

Il s'en suit que l'impédance d'entrée est égale à la résistance d'entrée de l'ALI multipliée par 1+A̲B , qui est très grand dans la bande passante. L'effet de la rétroaction est donc d'augmenter l'impédance d'entrée par rapport à celle de l'ALI. L'impédance d'entrée du montage amplificateur inverseur est donc extrêmement grande, largement supérieure au GΩ pour un TL081.

Les résultats précédents n'ont de sens que si l'ALI fonctionne en régime linéaire, ce qui vrai sous deux conditions :

  • 1. La tension Vout ne doit pas être trop proche ni de Vcc+ ni de Vcc-. Par exemple pour le TL081, la tension Vout ne doit pas s'approcher à moins de 1 V environ des tensions d'alimentation. Le cas échéant, il se produit une saturation de Vout.
  • 2. Le courant de sortie IS de l'ALI ne doit pas dépasser une certaine valeur, qui dépend de la tension Vout.

Pour un ALI de faible puissance, tel que le TL081, le courant maximal en sortie est de l'ordre de 10 mA. Ces deux conditions apparaissent sur les courbes suivantes, tirées de la documentation du TL081 :

TL081

La résistance RL est la résistance de charge, que nous avons noté Rc sur le schéma. La figure à droite montre la condition 1 : pour une tension d'alimentation Vcc=10V, la tension en sortie ne peut dépasser 8,75 V environ, ni descendre en dessous de -8,75 V. La figure à gauche est valable pour une tension d'alimentation de 15 V. Si la résistance de charge est 700Ω, la tension maximale est de 10 V, ce qui signifie que le courant ne peut dépasser 14mA. Si la résistance de charge est de 200Ω, la tension maximale est de 5,25 V, ce qui signifie que le courant ne peut dépasser 26mA. La tension maximale décroît à haute fréquence à partir d'un certaine fréquence, comme le montre la figure suivante :

TL081

Ces données montrent qu'il n'est pas aisé de prévoir de manière rigoureuse l'apparition d'une saturation de la tension de sortie. Il faut donc tester l'amplificateur dans son montage final et prévoir une marge de sécurité pour être certain qu'il fonctionnera toujours en régime linéaire.

3.b. Montage suiveur

Le montage suiveur de tension peut être vu comme un cas particulier du montage non inverseur. Il consiste à prendre R2=0 et dans ce cas R1 peut-être enlevée.

suiveur-fig.svgFigure pleine page

Le gain du montage suiveur dans la bande passante est Gmax=1 et sa largeur de bande passante devrait être de 1 MHz. Ce montage est utilisé en raison de la très grande valeur de son impédance d'entrée et de la faible valeur de son impédance de sortie, mais il ne faut pas oublier les limites de tension en sortie mentionnées plus haut. D'autre part, il ne faut pas oublier que l'impédance de sortie augmente avec la fréquence. À la fréquence de coupure (1 MHz), elle atteint une valeur de l'ordre de 100Ω. Le montage suiveur est souvent utilisé pour une tension d'entrée constante et dans ce cas l'impédance de sortie est effectivement très faible, de l'ordre de 10 mΩ. En revanche, si l'on souhaite utiliser le suiveur pour des signaux et dans toute sa bande passante, la résistance de charge devra être supérieure à 10 kΩ. Si la résistance de charge est plus petite, il faut s'attendre à une réduction de la largeur de bande passante car l'augmentation de la résistance de sortie se traduit par une diminution de la tension en sortie.

3.c. Alimentation simple

Le fonctionnement du montage amplificateur non inverseur avec une alimentation simple nécessite un traitement particulier. Voici son schéma :

nonInverseur-alimSimple-fig.svgFigure pleine page

La tension de sortie de repos de l'ALI (tension lorsque ε=0) est alors :

V0=Vcc+2(24)

Par exemple, si une alimentation de 5 V est utilisée, la tension de repos est 2,5 V.

Remarquons que ce montage est différent de celui étudié plus haut car la borne inférieure de R1 a une tension qui a une différence de -V0 par rapport à la tension de repos (car elle est à la masse), alors que dans le montage à alimentation symétrique cette borne a une tension égale à la tension de repos.

La tension d'entrée VE doit être positive et inférieure à Vcc+. Lorsque VE(t) comporte un signal, celui-ci est souvent constitué par la partie variable de la tension (pas toujours, voir à la fin de cette partie). On écrira alors :

VE(t)=VEDC+VEAC(t)(25)

En régime sinusoïdal, la relation entre la tension de sortie et la tension d'entrée du montage amplificateur s'écrit :

V̲S(0)=V01+BA̲(0)+A̲(0)VEDC1+BA̲(0)pourω=0(26) V̲S=A̲V̲E1+BA̲pourω>0(27)

V̲S(0) est la composante continue de la tension de sortie, qu'on pourrait aussi noter VSdc. La tension de sortie présente un décalage (offset) donné par :

Voffset=V01+BA̲(0)(28)

Considérons tout d'abord le cas de l'ALI idéal, pour lequel le module de A̲ tend vers l'infini. Dans ce cas, Voffset=0 et on a pour toute pulsation :

V̲S=A̲V̲E1+BA̲=V̲EB(29)

On a donc une amplification de VE(t) (composante DC comprise) et le gain est toujours Gmax=1B .

Pour étudier la réponse fréquentielle de ce circuit, il faut prendre en compte la fonction A̲(ω) , qui est de la forme suivante pour un ALI compensé :

A̲(ω)=μ1+jωωo(30)

La relation (27) a été étudiée plus haut (partie 2). Il s'agit d'un filtrage passe-bas de gain dans la bande passante Gmax et de pulsation de coupure ωc=μωoGmax . Il faut remarquer que, dans la bande passante, la composante continue VEDC est amplifiée avec le même gain que la composante alternative VE(t), ce qui est un problème si cette composante ne fait pas partie du signal (voir plus la solution plus loin).

Explicitons le décalage de la tension de sortie :

Voffset=V01+Bμ=V01+μGmax(31)

Rappelons que μ vaut environ 105. Si le gain Gmax est inférieur ou égal à 100, ce décalage est plus de 1000 fois plus petit que V0; il est donc négligeable et on a pour toute pulsation :

V̲S=A̲V̲E1+BA̲(32)

qui est la relation obtenue avec le modèle d'ALI idéal.

Si Gmax est inférieur à 100, on obtient :

V̲S1B1+1μB+jωμBωo1B1+jωμBωo(33)

Il reste bien sûr en sortie le décalage dû à VEDC :

V̲S(0)=μ1+BμVEDC=GmaxVEDC(34)

Si seule la partie VEAC(t) est le signal utile (la partie DC est alors une tension de référence), on cherche à amplifier seulement la partie variable VEAC(t) et pas VEDC. Le montage suivant permet de le faire :

nonInverseurRef-fig.svgFigure pleine page

L'entrée du montage suiveur est la tension :

V1=R3R3+R4Vcc+(35)

C'est aussi la tension en sortie du montage suiveur, quel que soit le courant qui circule dans R1 et R2 car l'impédance de sortie du suiveur est très faible (ces résistances sont supérieures à 10 kΩ si bien que la limite en courant ne peut être atteinte).

On obtient pour ce circuit :

1A̲(0)(1+R2R1)(V̲S(0)-V0)=(1+R2R1)VEDC-V̲S(0)-R2R1V1pourω=0(36) 1A̲(1+R2R1)V̲S=(1+R2R1)V̲E-V̲Spourω>0(37)

Dans la bande passante, le terme de gauche est négligeable et on a donc :

V̲S(0)=(1+R2R1)(VEDC-R2R1+R2V1)pourω=0(38) V̲S=(1+R2R1)V̲Epourω>0(39)

Les résistances R3 et R4 sont réalisées avec un potentiomètre et on ajuste la valeur de V1 afin que :

V̲S(0)=V0(40)

Si VEDC=V0, cette condition est réalisée pour :

V1=V0(41)

qui s'obtient avec R3=R4.

On obtient ainsi une amplification de la partie variable VEAC(t) alors que la composante DC reste égale à V0. La tension V1=V0 est alors qualifiée de tension de référence des signaux et ceux-ci sont des variations de tension autour de la tension de référence. Dans ce montage, la tension de la borne inférieure de R1 est identique à la tension de repos de la sortie de l'ALI. Ce montage se comporte donc comme le montage à alimentation symétrique étudié plus haut. La différence est que la tension de référence du signal n'est plus à la masse mais à V0. La sortie du montage suiveur constitue en quelque sorte une masse pour les signaux (différente de celle de l'alimentation) mais il faut faire attention au courant que peut délivrer cette sortie.

Il peut arriver cependant que la partie continue VEDC fasse partie du signal utile. Par exemple, la tension VE(t) peut être fournie par un capteur dont la grandeur est toujours positive (capteur de température, de lumière, etc.). Dans ce cas, VEDC fait partie du signal et doit donc être amplifiée. Il suffit pour cela de poser V1=0 (montage non-inverseur standard). Il faudra cependant que la tension de sortie soit capable de descendre jusqu'à la tension Vcc- car VE(t) est susceptible dans ce cas d'avoir des valeurs très faibles. Seuls certains ALI spécifiques ont une excursion de la tension de sortie qui peut aller jusqu'aux tensions d'alimentation (ampli-op rail to rail), par exemple le TLV2370.

3.d. Étude expérimentale d'un amplificateur non inverseur

Les mesures sont réalisées avec l'Analog Discovery 2 et avec le logiciel Waveforms. L'oscilloscope et le générateur de signaux ont une précision de 14 bits.

On étudie le montage amplificateur non inverseur réalisé avec un ALI TL081, alimenté en +/- 10 V. Afin d'avoir un gain proche de 10, on choisit des résistances R1,R2 de valeurs nominales 10 et 100 kΩ, dont les valeurs mesurées avec un ohmmètre sont R1=9,995 et R2=99,25. Théoriquement, on devrait donc avoir Gmax=10,93 et une fréquence de coupure de 100 kHz. La résistance de charge est Rc=1.

On commence par vérifier la linéarité de l'amplification, avec une tension d'entrée VE(t) sinusoïdale, d'amplitude 500 mV. Voici les signaux pour une fréquence de 1 kHz :

[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G10-1kHz-500mV-10ms.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$")
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(0,5)
G = Vs.std()/Ve.std()
                     
fig4fig4.pdf
print(G)
--> 10.915444250346052

La tension de sortie semble bien sinusoïdale mais une analyse spectrale est nécessaire pour le confirmer. La fonction ci-dessous, introduite dans Analyse spectrale d'un signal numérique, permet de faire l'analyse spectrale d'un signal échantillonné :

from numpy.fft import fft,fftfreq
from scipy.signal.windows import get_window
       
def spectre(s,Te,win,nz):
    N = len(s)
    if win=='rect':
        w = np.ones(N)
        a = 1
    elif win=='hamming': 
        w = get_window('hamming',N)
        a = 0.54
    elif win=='hann':
        w = get_window('hann',N)
        a = 0.5
    elif win=='blackman':
        w = get_window('blackman',N)
        a = 0.42
    else:
        return None
    p = int(np.log(nz*N)/np.log(2))+1
    Np = 2**p
    u = np.concatenate((s*w,np.zeros(Np-N)))
    tfd = fft(u)/N/a
    freq = np.arange(Np)*1/(Np*Te)
    return freq,fftfreq(Np,d=Te),tfd
                      

Voici les spectres de l'entrée et de la sortie en décibel, avec un niveau maximal ramené à 0 dB pour l'entrée :

[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G10-1kHz-500mV-100ms.csv",unpack=True,skiprows=1,delimiter=',')
Te = t[1]-t[0]
f,f1,tfd_Ve = spectre(Ve,Te,'blackman',10)
f,f1,tfd_Vs = spectre(Vs,Te,'blackman',10)
dB_ref =  np.max(20*np.log10(np.absolute(tfd_Ve)))
figure(figsize=(18,8))
subplot(121)
plot(f/1e3,20*np.log10(np.absolute(tfd_Ve))-dB_ref,label=r"$V_E$")
grid()
xlabel("f (kHz)",fontsize=16)
ylabel("dB",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(-1,10)
ylim(-150,30)
subplot(122)
plot(f/1e3,20*np.log10(np.absolute(tfd_Vs))-dB_ref,label=r"$V_S$")
grid()
xlabel("f (kHz)",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(-1,10)
ylim(-150,30)
                      
fig5fig5.pdf

À part peut-être un harmonique de rang 7, la tension de sortie ne présente aucune distorsion par rapport à la tension d'entrée. La linéarité est donc très bonne.

Voyons ce qu'il en est pour une fréquence de 10 kHz :

[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G10-10kHz-500mV-10ms.csv",unpack=True,skiprows=1,delimiter=',')
Te = t[1]-t[0]
f,f1,tfd_Ve = spectre(Ve,Te,'blackman',10)
f,f1,tfd_Vs = spectre(Vs,Te,'blackman',10)
dB_ref =  np.max(20*np.log10(np.absolute(tfd_Ve)))
figure(figsize=(18,8))
subplot(121)
plot(f/1e3,20*np.log10(np.absolute(tfd_Ve))-dB_ref,label=r"$V_E$")
grid()
xlabel("f (kHz)",fontsize=16)
ylabel("dB",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(-1,100)
ylim(-150,30)
subplot(122)
plot(f/1e3,20*np.log10(np.absolute(tfd_Vs))-dB_ref,label=r"$V_S$")
grid()
xlabel("f (kHz)",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(-1,100)
ylim(-150,30)
                      
fig6fig6.pdf

À cette fréquence, on constate que les harmoniques de rang 1 et 3, présente dans VE(t) sont plus amplifiés que le fondamental (environ 30 dB au lieu de 20 dB). Il y a aussi un harmonique de rang 5 qui apparaît en sortie.

Voici les spectres pour une fréquence de 100 kHz (à la limite de la bande passante) :

[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G10-100kHz-500mV-1ms.csv",unpack=True,skiprows=1,delimiter=',')
Te = t[1]-t[0]
f,f1,tfd_Ve = spectre(Ve,Te,'blackman',10)
f,f1,tfd_Vs = spectre(Vs,Te,'blackman',10)
dB_ref =  np.max(20*np.log10(np.absolute(tfd_Ve)))
figure(figsize=(18,8))
subplot(121)
plot(f/1e3,20*np.log10(np.absolute(tfd_Ve))-dB_ref,label=r"$V_E$")
grid()
xlabel("f (kHz)",fontsize=16)
ylabel("dB",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(-10,1000)
ylim(-150,30)
subplot(122)
plot(f/1e3,20*np.log10(np.absolute(tfd_Vs))-dB_ref,label=r"$V_S$")
grid()
xlabel("f (kHz)",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(-10,1000)
ylim(-150,30)
                      
fig7fig7.pdf

Les effets non linéaires sont bien visibles à cette fréquence, sous la forme d'harmoniques de rang 2,3,4 et 5. Leur amplitude reste cependant très faible par rapport au fondamental.

D'après sa documentation, la vitesse de balayage maximale du TL081 est 13 V par microseconde, ce qui signifie que la pente de VS(t) ne peut pas dépasser cette valeur. Or pour une amplitude VS et une fréquence f, la pente maximale est 2πfVs. Dans l'exemple précédent, l'amplitude est de 5 V donc la pente maximale est 3 V par microseconde, ce qui est inférieur à la vitesse de balayage maximale indiquée dans la documentation.

Voici la réponse fréquentielle, obtenue pour une amplitude en entrée de 500 mV :

[f,Ve_dB,GdB,phi] = np.loadtxt("noninverseur-reponseFreq-G10-500mV.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(12,8))
subplot(211)
plot(f,GdB)
grid()
ylabel(r"$G_{dB}$",fontsize=16)
xscale('log')
subplot(212)
plot(f,phi)
grid()
xscale('log')
ylabel(r"$\varphi\ (\rm deg)$",fontsize=16)
xlabel(r"$f\ (\rm Hz)$",fontsize=16)                  
                         
fig8fig8.pdf

Ces courbes montre que la bande passante de cet amplificateur se termine à 100 kHz, comme prévu par la théorie. Cependant, la réponse dans la bande atténuante est notablement différente de celle du premier ordre prévue par le modèle, particulièrement au dessus de 300 kHz.

Voyons à présent les limites de linéarité de cet amplificateur, c'est-à-dire l'apparition de saturations de la tension de sortie. La fréquence est 1 kHz et l'amplitude de l'entrée 1 V. Voici tout d'abord les signaux sans résistance de charge (la résistance de charge est celle de l'oscilloscope) :

[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G10-1kHz-1V-10ms-Rcinf.csv",unpack=True,skiprows=1,delimiter=',') 
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$")
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(0,5)
ylim(-10,10)
                     
fig9fig9.pdf
print(Vs.max())
--> 9.66150153927067
print(Vs.min())
--> -8.860053307809594

La valeur de saturation positive est conforme à celle donnée dans la document pour cette tension d'alimentation mais la valeur de saturation négative est un peu plus petite (en valeur absolue). Une dissymétrie des tensions de saturation est presque toutjours observée.

Voici les signaux pour une résistance de charge Rc=1 :

[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G10-1kHz-1V-10ms-Rc1k.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$")
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(0,5)
ylim(-10,10)
                     
fig10fig10.pdf
print(Vs.max())
--> 7.924409822149715
print(Vs.min())
--> -7.23802535827571

Il faut noter que le courant dans la charge lorsque la tension est à saturation positive est d'environ 7,5 mA.

Voici les signaux pour une résistance de charge Rc=100Ω :

[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G10-1kHz-1V-10ms-Rc100.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$")
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(0,5)
ylim(-10,10)
                     
fig11fig11.pdf
print(Vs.max())
--> 3.125137193437335
print(Vs.min())
--> -2.538969559397231

Le courant dans la charge à la saturation positive est d'environ 31 mA.

Gardons cette résistance de charge et abaissons l'amplitude de l'entrée de manière à retrouver un comportement linéaire :

[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G10-1kHz-200mV-10ms-Rc100.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$")
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(0,5)
ylim(-3,3)
                     
fig12fig12.pdf

Voici les signaux pour la même amplitude mais sans résistance de charge :

[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G10-1kHz-200mV-10ms-Rcinf.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$")
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(0,5)
ylim(-3,3)
                     
fig13fig13.pdf

L'amplitude du signal en sortie est inchangée, ce qui montre que la résistance de sortie du montage amplificateur est très petite par rapport à 100 Ω. La résistance de sortie prévue par le modèle à cette fréquence est en effet de 1 Ω. Nous refaisons la même expérience mais à 10 kHz, tout d'abord sans résistance de charge :

[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G10-10kHz-200mV-1ms-Rcinf.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$")
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(0,0.5)
ylim(-3,3)
                     
fig14fig14.pdf
[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G10-10kHz-200mV-1ms-Rc100.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$") 
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(0,0.5)
ylim(-3,3)
                     
fig15fig15.pdf

La diminution de l'amplitude de la tension de sortie lorsqu'on place la résistance de charge de 100 Ω est très faible. Pour évaluer la résistance de sortie à 10 kHz, il faut encore abaisser l'amplitude de la tension d'entrée. Voici les signaux avec une amplitude de 50 mV, sans résistance de charge :

[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G10-10kHz-50mV-1ms-Rcinf.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$")
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(0,0.5)
ylim(-1,1)
                     
fig16fig16.pdf
print(Vs.std()*np.sqrt(2))
--> 0.5485967679819201

et avec une résistance de charge Rc=22Ω :

[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G10-10kHz-50mV-1ms-Rc22.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$") 
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(0,0.5)
ylim(-1,1)
                     
fig17fig17.pdf
print(Vs.std()*np.sqrt(2))
--> 0.4705064250582131

La diminution de l'amplitude en sortie est bien visible. On a :

RcRc+Rout=0,85(42)

d'où Rout=1,8Ω, valeur 5 fois plus petite que celle obtenue avec le modèle pour Rs=100Ω (résistance de sortie de l'ALI). Peut-être la résistance de sortie à cette fréquence est-elle plus petite que 100 Ω. En tout cas, cette expérience confirme que la résistance de sortie du montage amplificateur est très faible. Sa valeur exacte n'a d'ailleurs pas d'importance car c'est plutôt la limite en courant (qui se trduit par une saturation de la tension) qui intervient lorsqu'on abaisse la résistance de charge.

Nous étudions à présent l'amplificateur avec R1=984Ω, qui devrait donner un gain proche de 100. Voici les spectres pour une fréquence de 1 kHz et une amplitude d'entrée de 50 mV :

[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G100-1kHz-50mV-10ms-Rcinf.csv",unpack=True,skiprows=1,delimiter=',')
Te = t[1]-t[0]
f,f1,tfd_Ve = spectre(Ve,Te,'blackman',10)
f,f1,tfd_Vs = spectre(Vs,Te,'blackman',10)
dB_ref =  np.max(20*np.log10(np.absolute(tfd_Ve)))
figure(figsize=(18,8))
subplot(121)
plot(f/1e3,20*np.log10(np.absolute(tfd_Ve))-dB_ref,label=r"$V_E$")
grid()
xlabel("f (kHz)",fontsize=16)
ylabel("dB",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(-1,10)
ylim(-120,50)
subplot(122)
plot(f/1e3,20*np.log10(np.absolute(tfd_Vs))-dB_ref,label=r"$V_S$")
grid()
xlabel("f (kHz)",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(-1,10)
ylim(-120,50)
                      
fig18fig18.pdf

Les distorsions à cette fréquence sont très faibles. Voici la réponse fréquentielle :

[f,Ve_dB,GdB,phi] = np.loadtxt("noninverseur-reponseFreq-G100-50mV.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(12,8))
subplot(211)
plot(f,GdB)
grid()
ylabel(r"$G_{dB}$",fontsize=16)
xscale('log')
subplot(212)
plot(f,phi)
grid()
xscale('log')
ylabel(r"$\varphi\ (\rm deg)$",fontsize=16)
xlabel(r"$f\ (\rm Hz)$",fontsize=16)                  
                         
fig19fig19.pdf

Comme prévu, l'augmentation du gain d'un facteur 10 se traduit par une réduction de la fréquence de coupure d'un facteur 10.

Le spectre de la sortie ci-dessus révèle la présence d'une composante de fréquence nulle, c'est-à-dire un décalage (offset) de la tension de sortie. Ce décalage est relativement faible puisqu'il est à plus de 40 dB de l'amplitude du signal. Voici les tensions en entrée et sortie lorsqu'on applique une tension constante nulle en entrée :

[t,Ve,Vs] = np.loadtxt("noninverseur-VeVs-G100-DC0-10ms-Rcinf.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$") 
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(0,5)
ylim(-0.5,0.5)
                     
fig20fig20.pdf

Le décalage en sortie est donc de -200 mV. Ce décalage est dû à un défaut de l'ALI : l'existence d'une tension de décalage entre les deux entrées IN- et IN+ (input offset voltage). Ce décalage est de l'ordre de 3 mV pour le TL081 (d'après la documentation) mais il est amplifié par le gain Gmax. Lorsque ce gain est grand, le décalage en sortie devient visible. Dans le cas présent, un gain de 100 donne un décalage en sortie de -200 mV. Pour enlever ce décalage, une solution simple consiste à placer un condensateur de capacité C1 entre la borne inférieure de R1 et la masse, ce qui a pour effet de ramener la valeur du gain à fréquence nulle à 1. L'inconvénient de cette méthode est le risque d'introduire des distorsions si la capacité du condensateur n'est pas assez grande (ou la fréquence trop basse). Une solution plus générale peut être mise en œuvre sur le TL081 : un potentiomètre branché entre les bornes OFFSET N1 et OFFSET N2, avec son curseur branché sur Vcc-, permet d'annuler la tension de décalage. Pour les ALI ne comportant pas ces bornes (ils sont nombreux), le décalage peut être annulé avec un potentiomètre branché entre IN- et IN+ [3].

3.e. Étude expérimentale d'un amplificateur non inverseur de puissance

Comme le montre l'exemple précédent, la sortie d'un ALI de faible puissance ne peut délivrer qu'un courant de l'ordre de grandeur de 10 mA (plus ou moins en fonction de la tension de sortie). Pour comparaison, un générateur de signaux peut délivrer un courant de 200 mA. Dans certains, un courant de l'ordre de l'ampère est nécessaire. On peut utiliser pour cela le L165 (ou son équivalent le LM675), un ALI dont la sortie peut délivrer jusqu'à 3 A. Voici le schéma complet d'un montage amplificateur non inverseur (à gain réglable) réalisé avec cet ALI :

ampliL165-fig.svgFigure pleine page

La résistance R2 est réalisée par un potentiomètre, ce qui permet de faire varier le gain de 1 à 39. Le signal d'entrée est appliqué sur le bornier J1, l'alimentation (au maximum +/- 18 V) sur le bornier J3 et la charge sur le bornier J2. Il est possible de brancher un haut-parleur à la sortie de cet amplificateur. Dans ce cas, il est conseillé de placer un condensateur de grande capacité en série avec le haut-parleur, afin d'éviter le passage d'un courant continu dans le haut-parleur (qui pourrait l'endommager).

4. Montage amplificateur inverseur

4.a. Schéma et fonctionnement

inverseur-fig.svgFigure pleine page

On se place dans le cas d'une alimentation symétrique (comme sur la figure) avec une tension de repos en sortie V0=0.

La rétroaction ne se fait pas sur une tension mais sur un courant : le courant qui traverse R2 en provenance de la sortie de l'ALI (proportionnel à la tension de sortie) vient se soustraire au courant qui traverserait R1 en l'absence de rétroaction. En conséquence l'identification du gain B de la rétroaction n'est pas immédiate. Le courant I1 qui traverse R1 passe aussi dans R2 car le courant vers IN- est négligeable. On a donc :

I̲1=V̲E-V̲-R1=V̲--V̲SR2(43)

On a de plus :

V̲+=0(44) V̲S=A̲(V̲+-V̲-) (45)

Cette dernière égalité est valable aussi à pulsation nulle puisque V0=0. On déduit de ces relations :

V̲SV̲E=-A̲1+R1R2+A̲R1R2(46)

Cette expression est différente de l'expression générale (2) par son signe mais surtout par la forme du dénominateur. Le modèle d'ALI idéal (module de A̲ tend vers l'infini) conduit à :

H̲=-R2R1(47)

Le gain dans la bande passante est donc :

Gmax=R2R1(48)

mais le déphasage est de π , ce qui explique le nom d'amplificateur inverseur donné à ce montage.

La fonction de transfert du montage, dans le cas d'un ALI compensé en fréquence dont la fonction de transfert est donné par (3), s'écrit :

H̲=-Gmax1+1μ(1+jωωo)(1+Gmax)=-Gmax1+1μ(1+Gmax)+jωμωo(1+Gmax)(49)

Cette fonction de transfert est différente de celle du montage non inverseur (elle-même identique à celle du cas général traité en 2) mais si on se limite au cas où le gain Gmax est au plus égal à 100, on a (1+Gmax)/μ< 10-3 d'où :

H̲=-Gmax1+jωμωo(1+Gmax)(50)

qui est bien une fonction passe-bas du premier ordre avec un gain Gmax dans la bande passante et une pulsation de coupure ωc=1+Gmaxμωo . Pour ce montage amplificateur, la largeur de bande passante est donc proportionnelle à l'inverse de 1+Gmax et non pas Gmax . À part cela (et bien sur le changement de signe), la réponse fréquentielle du montage inverseur est similaire à celle du montage non inverseur.

Pour trouver l'impédance de sortie, on doit écrire la relation entre la tension de sortie et la tension différentielle d'entrée en tenant compte du courant de sortie (pour une pulsation non nulle) :

V̲out=A̲(ω)(V̲+-V̲-)-RsI̲S(51)

On obtient alors :

V̲S=-Gmax1+1A̲(1+Gmax)+1V̲E-Rs(1+Gmax)1+Gmax+A̲I̲S(52)

d'où l'on déduit l'impédance de sortie du montage amplificateur inverseur :

Z̲out=Rs(1+Gmax)1+Gmax+A̲(53)

Voici le module de l'impédance de sortie en fonction de la fréquence :

def Zout(Gmax,f):
    mu = 1e5
    f0 = 10
    Rs = 100
    return Rs*(1+Gmax)/(1+Gmax+mu/(1+1j*f/f0))
 
f = np.logspace(0,7,1000)
Z1 = Zout(1,f)
Z10 = Zout(10,f)
Z100 = Zout(100,f)
figure(figsize=(8,6))
title("Impédance de sortie pour Rs = 100 Ohms")
plot(f,np.absolute(Z1),label=r"$G_{max}=1$")
plot(f,np.absolute(Z10),label=r"$G_{max}=10$")
plot(f,np.absolute(Z100),label=r"$G_{max}=100$")
grid()
xscale('log')
yscale('log')
legend(loc="lower right",fontsize=16)
xlabel('f (Hz)',fontsize=16)
ylabel(r"$|Z_{out}|\ (\rm\Omega)$",fontsize=16)                    
                        
fig21fig21.pdf

Une propriété intéressante du montage inverseur est la possibilité d'avoir un gain Gmax inférieur à 1 (auquel cas c'est un atténuateur et non un amplificateur). Dans ce cas, la tension VE peut être supérieure à Vcc+ ou inférieure à Vcc-.

L'impédance d'entrée du montage inverseur [3] est :

Z̲in=R1+(1Ri+1+A̲R2)-1(54)

Ri est la résistance de l'ALI entre ces entrées IN- et IN+. Compte tenu de la très grande valeur de Ri, particulièrement pour un ALI à entrées JFET, on a :

Z̲inR1+R21+A̲(55)

Voici le module de l'impédance d'entrée divisé par R1 en fonction de la fréquence :

def Zin(Gmax,f):
    mu = 1e5
    f0 = 10
    A = mu/(1+1j*f/f0)
    return 1+Gmax/(1+A)
 
f = np.logspace(0,7,1000)
Z1 = Zin(1,f)
Z10 = Zin(10,f)
Z100 = Zin(100,f)
figure(figsize=(8,6))
title("Impédance d'entrée")
plot(f,np.absolute(Z1),label=r"$G_{max}=1$")
plot(f,np.absolute(Z10),label=r"$G_{max}=10$")
plot(f,np.absolute(Z100),label=r"$G_{max}=100$")
grid()
xscale('log')
yscale('log')
legend(loc="upper left",fontsize=16)
xlabel('f (Hz)',fontsize=16)
ylabel(r"$|Z_{in}|/R_1\ (\rm\Omega)$",fontsize=16)                    
                        
fig22fig22.pdf

Dans la bande passante, l'impédance d'entrée est très proche de R1. La valeur de cette résistance devra donc être au moins de 10 kΩ. En tout cas, cette résistance d'entrée est un désavantage important par rapport au montage non inverseur, dont la résistance d'entrée (avec un ALI à entrées JFET) est supérieure au GΩ.

Dans sa forme élémentaire, l'amplificateur inverseur n'a pas d'intérêt par rapport à l'amplificateur non inverseur, sauf si l'on doit changer le signe du signal. Ce montage est cependant important car il existe d'autres configurations intéressantes qui en sont dérivées, par exemple les deux montages étudiés ci-après.

4.b. Amplificateur avec décalage

Cette variante du montage inverseur permet d'ajouter une tension constante à un signal qui alterne autour de la masse. Elle consiste à appliquer une tension V1 sur l'entrée non inverseuse IN+. Elle est surtout utilisé avec une alimentation simple :

inverseurDecalage-fig.svgFigure pleine page

Avec une alimentation simple, la tension de repos de la sortie de l'ALI est :

V0=Vcc+2(56)

La tension V1, déterminée par le réglage du potentiomètre, est comprise entre 0 et Vcc+. La tension VE(t) peut être positive ou négative, la seule contrainte est que le courant I1 ne doit pas dépasser les limites de la sortie de l'ALI. En l'absence de charge, on a en effet I1=-Is. Il suffit pour cela que la résistance R1 soit assez grande.

Rappelons la relation entrée-sortie de l'ALI :

V̲out=V0+A̲(0)(V̲+-V̲-)pourω=0(57) V̲out=A̲(ω)(V̲+-V̲-)pourω>0 (58)

On a par ailleurs :

I̲1=V̲E-V̲-R1=V̲--V̲SR2(59)

Pour ω=0, on obtient :

V̲S(0)=-GmaxV̲E(0)+(1+Gmax)V01+Gmax+A̲(0)+(1+Gmax)V11+GmaxA̲(0)+1(60)

et pour ω>0 :

V̲S=H̲V̲E(61)

Isolons la composante DC (fréquence nulle) dans la tension d'entrée :

VE(t)=VEDC+VEAC(t)(62)

On a par définition VEDC=V̲E(0) . Si Gmax est au plus égal à 100, on peut le négliger devant A̲(0) et la relation s'écrit :

V̲S(0)=-GmaxVEDC+(1+Gmax)V1(63)

Cette relation peut aussi s'obtenir directement avec le modèle d'ALI idéal.

Supposons que la masse soit la référence du signal d'entrée, c'est-à-dire VEDC=0. La tension V1 permet d'obtenir une valeur de référence positive en sortie, c'est-à-dire :

VSDC=(1+Gmax)V1(64)

Dans une utilisation typique de ce montage, on ajuste V1 (avec le potentiomètre) afin que VSDC=Vcc+2 . Par exemple si Vcc+=5V on obtient en sortie un signal amplifié avec une valeur de référence de 2,5 V. Si on emploie un ALI dont la sortie peut aller jusqu'aux tensions d'alimentation (rail to rail), la tension Vs(t) varie de 0 à 5 V. Cette tension peut servir d'entrée à un convertisseur analogique/numérique (par ex. l'entrée analogique d'une carte Arduino).

Il peut être nécessaire de faire l'opération inverse : ramener à zéro la référence d'un signal qui est positive (par exemple le signal en sortie d'un convertisseur numérique/analogique). Une manière simple et répandue d'enlever la composante DC d'un signal décalé est d'utiliser un filtre RC passe-haut mais cette méthode a un gros inconvénient : la fréquence du signal doit être au dessus de la fréquence de coupure du filtre et même très largement au dessus si on veut limiter les distorsions. Le montage suivant est préférable car il fonctionne sans distorsion pour des fréquences aussi basses que souhaitées :

inverseurAC-fig.svgFigure pleine page

C'est le même montage que le précédent mais il fonctionne avec une double alimentation puisque la tension de référence du signal en sortie doit être nulle. La tension V1 est toujours positive. Elle est ajustée avec le potentiomètre afin que :

-GmaxVEDC+(1+Gmax)V1=0(65)

ce qui permet d'annuler V̲S(0) .

Remarque : le premier montage, qui permet d'ajouter un décalage de tension, fonctionne aussi avec une alimentation double mais celle-ci ne s'impose pas.

4.c. Réduction de la bande passante

Dans certains cas, il peut être intéressant de réduire la largeur de bande passante de l'amplificateur parce qu'on ne souhaite pas amplifier les hautes fréquences (qui contiennent essentiellement du bruit). Dans le cas du montage non inverseur, il suffit de placer un filtre RC passe-bas derrière l'entrée. En raison de l'impédance d'entrée très grande du montage amplificateur, la faible impédance de sortie de ce filtre ne pose pas de problème. Dans le cas du montage inverseur, voici la modification qui permet de réduire la bande passante :

integrateur-fig.svgFigure pleine page

Un condensateur de capacité C2 est ajouté en parallèle avec la résistance R2. Ces deux dipôles ont une impédance :

Z̲2=(jC2ω+1R2)-1=R21+jR2C2ω(66)

Mettre un condensateur en parallèle avec une résistance permet d'abaisser la valeur de celle-ci à partir d'une certaine fréquence. On doit donc s'attendre ici à une réduction du gain du montage amplificateur à partir de cette fréquence. La fonction de transfert s'écrit :

H̲=-A̲1+R1Z̲2+A̲R1Z̲2(67)

Le modèle d'ALI idéal conduit à :

H̲=-R2R11+jR2C2ω=-Gmax1+jR2C2ω(68)

Il s'agit d'un filtre passe-bas du premier ordre de pulsation de coupure ω'c=R2C2 . Bien évidemment, ce résultat (ALI idéal) n'est valable que si ω'cμωoGmax .

Ce montage peut être aussi utilisé dans sa bande atténuante (ω>ω'c) en tant que montage intégrateur.

Supposons par exemple que Gmax=100 avec R2=1,0 et R1=10. La fréquence de coupure du montage amplificateur inverseur est alors fc=10kHz. Si l'on veut abaisser la fréquence de coupure à f'c=100Hz, il faut C2=1,6nF. Pour modéliser la réponse fréquentielle jusqu'à 10 MHz, il faut utiliser l'expression complète de la fonction de transfert. Il faut aussi tenir compte des pertes dans le condensateur, modélisées sous la forme d'une résistance série. Cette modélisation est difficile car la résistance série décroît avec la fréquence. Pour un condensateur polyester (MKT) de 1,5 nF, nous mesurons une résistance série moyenne entre 10 kHz et 100 kHz d'environ 100 Ω et une résistance entre 100 kHz et 1 MHz d'environ 20 Ω. La résistance série est beaucoup plus petite que 1/(C2ω) mais elle a une influence notable sur la réponse fréquentielle du montage. Pour la simulation, nous retenons la valeur de la plage de 10 kHz à 100 kHz car elle correspond au début de la bande atténuante du filtre passe-bas.

R1 =100
R2 = 1e6
C2 = 1.6e-9
rc2 = 100 # résistance série du condensateur
f = np.logspace(0,7,1000)
Z2 = 1/(1/R2+1/(rc2+1/(1j*C2*2*np.pi*f)))
fo = 10
mu = 1e5
A = mu/(1+1j*f/fo)
H = -A/(1+R1/Z2*(1+A))
figure(figsize=(12,8))
subplot(211)
plot(f,20*np.log10(np.absolute(H)))
grid()
ylabel(r"$G_{dB}$",fontsize=16)
xscale('log')
subplot(212)
plot(f,np.angle(H)*180/np.pi)
grid()
xscale('log')
ylim(0,180)
ylabel(r"$\varphi\ (\rm deg)$",fontsize=16)
xlabel("f (Hz)",fontsize=16)
                     
fig23fig23.pdf

Le comportement intégrateur semble valable pour une fréquence supérieure à 10 kHz mais voici la réponse fréquentielle avec une résistance série de 20 Ω :


rc2 = 20 # résistance série du condensateur
Z2 = 1/(1/R2+1/(rc2+1/(1j*C2*2*np.pi*f)))
H = -A/(1+R1/Z2*(1+A))
figure(figsize=(12,8))
subplot(211)
plot(f,20*np.log10(np.absolute(H)))
grid()
ylabel(r"$G_{dB}$",fontsize=16)
xscale('log')
subplot(212)
plot(f,np.angle(H)*180/np.pi)
grid()
xscale('log')
ylim(0,180)
ylabel(r"$\varphi\ (\rm deg)$",fontsize=16)
xlabel("f (Hz)",fontsize=16)
                     
fig24fig24.pdf

Au dessus de 200 kHz environ, on s'écarte notablement du comportement intégrateur.

4.d. Étude expérimentale

Dans cette partie, on étudie un amplificateur inverseur avec décalage en sortie, réalisé avec un ampli-op rail-to-rail (en entrée et sortie) et une alimentation simple. Voici à nouveau son schéma :

inverseurDecalage-fig.svgFigure pleine page

L'ALI utilisé est un TLV2372 (double TLV2370), alimenté sous 3,3 V (le minimum est 2,7 V). L'objectif est d'obtenir une sortie pouvant être branchée directement sur l'entrée analogique (convertisseur ADC) d'une carte Arduino fonctionnant sous 3,3 V. Le même montage pourrait fonctionner avec une alimentation de 5 V, pour un Arduino fonctionnant sous 5 V.

Le signal en sortie doit avoir une tension de référence de 1,65 V, correspondant à une tension nulle en entrée. L'amplitude maximale en sortie sera donc 1,65 V. On opte pour une amplitude en entrée de 5 V donc le gain doit être Gmax=0,33, que l'on réalise avec R1=100 et R2=33.

Le premier réglage consiste à appliquer VE=0V et à tourner le potentiomètre afin d'obtenir VS=1,65V. Dans un second temps, on applique en entrée une tension sinusoïdale (de valeur moyenne nulle) avec une amplitude juste au dessous du maximum. En théorie cette amplitude devrait être 5 V mais nous obtenons 4,9 V car le gain est un peu plus grand que prévu. Il serait possible d'ajuster le gain plus précisément avec un potentiomètre à la place de R1 et R2. Voici les signaux pour une fréquence de 1 kHz et une amplitude à l'entrée de 4,8 V (très proche du maximum), avec une résistance de charge Rc=10 :

[t,Ve,Vs] = np.loadtxt("inverseurDecalage-VeVs-1kHz-4,8V-Rc10k.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$")
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(0,5)
ylim(-5,5)
G = Vs.std()/Ve.std()
                     
fig25fig25.pdf

Voici la valeur du gain pour cette fréquence :

print(G)
--> 0.3344946195334725

Voici les signaux pour les mêmes réglages mais avec une résistance de charge Rc=1 :

[t,Ve,Vs] = np.loadtxt("inverseurDecalage-VeVs-1kHz-4,8V-Rc1k.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$")
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(0,5)
ylim(-5,5)
                     
fig26fig26.pdf
print(Vs.max())
--> 3.050902504671482

Il se produit une saturation positive, qui correspond à un courant de 3 mA. Le courant de sortie maximal de cet ampli-op est donc très faible (pour cette tension d'alimentation particulièrement basse). Pour l'usage qui est prévu (entrée d'un ADC), ce n'est pas un problème. La résistance de charge minimale est 1,1.

Voici la réponse fréquentielle :

[f,Ve_dB,GdB,phi] = np.loadtxt("inverseurDecalage-reponseFreq-1V-Rc10k.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(12,8))
subplot(211)
plot(f,GdB)
grid()
ylabel(r"$G_{dB}$",fontsize=16)
xscale('log')
subplot(212)
plot(f,phi)
grid()
xscale('log')
ylabel(r"$\varphi\ (\rm deg)$",fontsize=16)
xlabel(r"$f\ (\rm Hz)$",fontsize=16)                  
                         
fig27fig27.pdf

Comme prévu avec un gain inférieur à 1, la bande passante est très large et largement suffisante pour l'usage prévu. On remarque qu'il y a une légère augmentation du gain avec la fréquence dans la bande passante, ce qui n'est pas prévu par le modèle. À l'évidence, la fonction de transfert A̲(ω) de cet ALI n'est pas celle posée dans le modèle (passe-bas du premier ordre). Le gain Gmax n'est plas le gain maximal mais le gain à fréquence nulle.

Voici le gain et le déphasage (auquel on retranche 180 degrés) en fonction de la fréquence jusqu'à 100 kHz :

[f,Ve,G,phi] = np.loadtxt("inverseurDecalage-reponseFreqBP-1V-Rc10k-2.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(12,8))
subplot(211)
plot(f,G)
grid()
ylim(0.3325,0.3355)
xlim(10,100e3)
xlabel(r"$f\ (\rm Hz)$",fontsize=16) 
ylabel("G",fontsize=16)
subplot(212)
plot(f,phi-180)
grid()
xlim(10,100e3)
#ylim(-1,0)
ylabel(r"$\varphi\ (\rm deg)$",fontsize=16) 
xlabel(r"$f\ (\rm Hz)$",fontsize=16) 
Gm = G.mean()
                         
fig28fig28.pdf

La plage de fréquences de 0 à 10 kHz convient pour obtenir un signal de sortie sans distorsions : la variation relative du gain est inférieure à 0,4% et le déphasage varie linéairement avec la fréquence.

Voyons la réponse à un échelon :

[t,Ve,Vs] = np.loadtxt("inverseurDecalage-reponseEchelon-4,8V-Rc10k.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$")
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(-5e-3,5e-3)
ylim(-5,5)
                     
fig29fig29.pdf

L'étalonnage de ce montage consiste à déterminer expérimentalement Gm, le gain moyen dans la bande de 0 à 100 kHz, avec un instrument de mesure assez précis. Dans le cas présent, nous obtenons :

print(Gm)
--> 0.33477916450923656

Pour confirmer que le faible niveau de distorsion en sortie, on teste le fonctionnement pour une tension VE(t) en dents de scie à la fréquence de 1 kHz :

[t,Ve,Vs] = np.loadtxt("inverseurDecalage-reponseRamp-4,8V-Rc10k.csv",unpack=True,skiprows=1,delimiter=',')
figure(figsize=(16,6))
plot(t*1e3,Ve,label=r"$V_E$")
plot(t*1e3,Vs,label=r"$V_S$")
grid()
xlabel("t (ms)",fontsize=16)
ylabel("Volts",fontsize=16)
legend(loc="upper right",fontsize=16)
xlim(0,5)
ylim(-5,5)
                     
fig30fig30.pdf

La distorsion est en effet très faible pour ce signal riche en harmoniques. Ce montage est donc utilisable dans le domaine des fréquences audio.

Si le montage est prévu comme étage d'entrée d'un convertisseur analogique/numérique (ADC), il n'est pas nécessaire de déterminer précisément le gain. Soit x le nombre fourni par l'ADC, compris entre 0 et 2pp est le nombre de bits du convertisseur. Tant qu'on est largement dans la bande passante, il y a une relation affine entre x et la tensions d'entrée :

x(t)=aVE(t)+b(69)

L'étalonnage consiste à déterminer les coefficients a et b. Il suffit pour cela de relever les valeurs de x pour deux tensions VE particulières, par exemple 0 et 4,5 V (elles-mêmes mesurées précisément avec un voltmètre de laboratoire).

Remarque : l'expérience montre que la fonction de transfert de cet ALI rail-to-rail n'est pas celle posée dans le modèle développé plus haut (fonction passe-bas du premier ordre). D'une manière générale, le modèle d'un montage utilisant un ou plusieurs ALI n'est qu'une première indication de son fonctionnement, qui doit être complétée par une étude expérimentale (réponse fréquentielle, analyse spectrale, réponse temporelle à un signal périodique).

Références
[1]  Y. Granjon,  Automatique,  (Dunod, 2015)
[2]  A.P. Malvino, D.J. Bates,  Electronic Principles,  (McGraw-Hill, 2016)
[3]  P. Horowitz, W. Hill,  The art of electronics,  (Cambridge University Press, 2015)
Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.