Table des matières Python

Étude d'une bobine

1. Introduction

Ce document présente une étude expérimentale de l'impédance d'une bobine, dans le but d'en déduire un modèle permettant de simuler la fonction de transfert d'un circuit résonant qui utilise cette bobine.

2. Mesures d'impédance

2.a. Montage

Pour mesurer l'impédance de la bobine à différentes fréquences, on utilise le montage suivant :

mesureZ.svgFigure pleine page

Z désigne le dipôle dont on veut mesurer l'impédance, ici la bobine. La résistance R doit être de l'ordre de grandeur de l'impédance de la bobine dans la plage de fréquence explorée et sa valeur doit être connue avec précision.

La tension u(t) aux bornes de la bobine est numérisée avec la carte Sysam SP5 en mode différentiel (entrées EA0 et EA4). La tension ur(t) est numérisée en mode simple sur l'entrée EA1. Elle donne accès à l'intensité du courant dans la bobine : i(t)=ur(t)/R.

La tension e(t) est sinusoïdale, avec une fréquence variant de 100 Hz à 100 kHz. Son amplitude est de 1 volt et on configure donc les amplificateurs de la carte Sysam sur le calibre 1 V, qui permet d'obtenir une précision de tension de 0,5mV.

La fréquence d'échantillonnage est 100 fois plus grande que la fréquence de e(t) et le nombre d'échantillons est N50000, ce qui permet de numériser 500 cycles.

2.b. Traitement des signaux

Les signaux numériques échantillonnés sont noté un et in. La valeur efficace de u(t) est définie par :

Ueff=1Nn=0N-1(un-u¯)2(1)

u¯ est la valeur moyenne, en principe nulle dans cette expérience. La valeur efficace se calcule avec la fonction numpy.std (écart-type). La valeur efficace de i(t) se calcule de la même manière et on en déduit le module de l'impédance complexe :

|Z|=UeffIeff(2)

Il faut aussi mesurer l'argument de l'impédance complexe, c'est-à-dire le déphasage de u(t) par rapport à i(t). Différentes méthodes de mesure de déphasage par traitement numérique sont exposées et testées dans Mesure de déphasage.

Les signaux sinusoïdaux ont la forme suivante :

i(t)=2Ieffcos(ωt)(3)u(t)=2Ueffcos(ωt+φ)(4)

Pour calculer le déphasage φ , nous utilisons la méthode du cosinus, qui repose sur l'intégrale suivante :

1T0Tu(t)i(t)dt=UeffIeffcos(φ)(5)

Le cosinus du déphasage est donc obtenu par :

cos(φ)=1NnuninUeffIeff(6)

Dans le domaine de fréquence exploré, le déphasage est certainement dans l'intervalle [0,π] et même proche de π/2. Son sinus est donc positif et se calcule par :

sin(φ)=1-cos2(φ)(7)

Enfin les parties réelle et imaginaire de l'impédance complexe sont données par :

Re(Z)=|Z|cos(φ)(8)Im(Z)=|Z|sin(φ)(9)

2.c. Script d'acquisition

Le script ci-dessous permet de faire l'acquisition et les mesures de déphasage. Pour chaque fréquence, l'utilisateur doit entrer la fréquence (au moins une valeur approchée), ce qui permet de calculer la bonne fréquence d'échantillonnage. Si un générateur DDS est utilisé, on peut entrer directement la fréquence exacte, mais le script calcule de toute façon la fréquence par analyse spectrale, au moyen d'une transformée de Fourier discrète. Si l'utilisateur entre N au lieu d'une fréquence, la boucle d'acquisition se terminer et les résultats sont enregistrés dans un fichier. Pour chaque enregistrement de signaux, ceux-ci sont tracés, ce qui permet de vérifier leur qualité. Si l'une des tensions u(t) ou ur(t) a une amplitude trop faible (moins de 10 mV), il est prudent d'arrêter l'acquisition.

acquisitionImpedance.py
import numpy as np
import matplotlib.pyplot as plt
import pycanum.main as pycan
from scipy.signal import blackman
from numpy.fft import fft

def frequence(t,x):
    N=len(x)
    te=t[1]-t[0]
    zeros=np.zeros(6*N)
    X = np.concatenate((x*blackman(N),zeros))
    NN=len(X)
    spectre = np.absolute(fft(X))*2.0/N/0.42
    freq = np.arange(NN)*1.0/(NN*te)
    k=np.argmax(spectre[0:NN//2])
    return freq[k]

def mesureZ(can,R,techant,N=50000,plot=False):
    can.config_echantillon(techant*1e6,N)
    can.acquerir()
    t=can.temps()[0]
    signaux = can.entrees()
    u=signaux[0]
    ur=signaux[1]
    u=u-u.mean()
    ur=ur-ur.mean()
    i=ur/R
    N = len(t)
    Z = u.std()/i.std()
    cosphi = np.mean(i*u)/(u.std()*i.std())
    sinphi = np.sqrt(1-cosphi**2)
    ReZ = Z*cosphi
    ImZ = Z*sinphi
    freq = frequence(t,u)
    if plot:
        plt.figure()
        plt.plot(t,u,'b')
        plt.plot(t,ur,'r')
        plt.grid()
        plt.ylim(-1,1)
        plt.xlim(0,20/freq)
        plt.show()
    return (freq,ReZ,ImZ)

data = []
R= 100.5# résistance en série
can = pycan.Sysam("SP5")
Vmax = 1
can.config_entrees([0,1],[Vmax,Vmax],diff=[0])

while True:
    r = input("Fréquence (Hz) ou N pour arrêter?")
    if r!='N':
        f = float(r)
        techant = 1/f/100
        if techant < 1e-7:
            techant = 1e-7
        (fexp,ReZ,ImZ) = mesureZ(can,R,techant,plot=True)
        data.append([f,fexp,ReZ,ImZ])
        print("f = %f, fexp = %f, Re(Z) = %f, Im(Z) = %f"%(f,fexp,ReZ,ImZ))
    else:
        break

can.fermer()
data = np.array(data)
np.savetxt('impedance-bobine500sp-R100-1.txt',data,header="f\t fexp\t Re(Z)\t Im(Z)")
plt.figure()
plt.plot(data[:,1],data[:,2],'r-')
plt.grid()
plt.xlabel('f (Hz)')
plt.ylabel(r"$Re(Z)\ (\rm\Omega)$")
plt.figure()
plt.plot(data[:,1],data[:,3],'r-')
plt.grid()
plt.xlabel('f (Hz)')
plt.ylabel(r"$Im(Z)\ (\rm\Omega)$")
plt.show()
                 

2.d. Résultats

Nous utilisons deux bobines, réalisées avec un fil de cuivre de diamètre 1mm.

  • Bobine 1 : 500 spires, résistance indiquée r0=2,84Ω, diamètre de fil 1,0mm.
  • Bobine 2 : 1000 spires, résistance indiquée r0=8,75Ω, diamètre de fil 0,8mm.

La bobine 1 a une inductance d'environ 10mH, la bobine 2 de 40mH.

La résistance placée est série est R=100,5Ω. Elle est mesurée avec un ohmmètre. Il s'agit d'un résistor à couches de carbone standard, dont la variation de résistance dans le domaine de fréquence considéré est négligeable. Il faut peut-être éviter les dispositifs de type boîtes à décade, qui peuvent présenter des propriétés inductives non négligeables.

Voici les parties réelle et imaginaire de l'impédance de la bobine 1 :

import numpy as np
from matplotlib.pyplot import *
[f1,fexp1,ReZ1,ImZ1] = np.loadtxt('impedance-bobine500sp-R100-1.txt',unpack=True,skiprows=1)
figure(figsize=(8,8))
subplot(211)
title('Bobine 1')
plot(fexp1,ReZ1,'r.')
grid()
ylabel(r'$Re(Z)\ (\rm\Omega)$')
subplot(212)
plot(fexp1,ImZ1,'r.')
grid()
xlabel('f (Hz)')
ylabel(r'$Im(Z)\ (\rm\Omega)$')
                 
impedance-bobine-1impedance-bobine-1.pdf

et celle de la bobine 2 :

[f2,fexp2,ReZ2,ImZ2] = np.loadtxt('impedance-bobine1000sp-R100-1.txt',unpack=True,skiprows=1)
figure(figsize=(8,8))
subplot(211)
title('Bobine 2')
plot(fexp2,ReZ2,'r.')
grid()
ylabel(r'$Re(Z)\ (\rm\Omega)$')
subplot(212)
plot(fexp2,ImZ2,'r.')
grid()
xlabel('f (Hz)')
ylabel(r'$Im(Z)\ (\rm\Omega)$')
                 
impedance-bobine-2impedance-bobine-2.pdf

Dans quel domaine de fréquence peut-on modéliser la bobine par une auto-inductance L en série avec une résistance r ? L'impédance complexe de cette représentation est Z=r+jLω. Il faut donc que la partie imaginaire de Z soit proportionnelle à la fréquence, ce qui semble être le cas jusqu'à une fréquence de 20kHz.

figure(figsize=(8,8))
subplot(211)
title('Bobine 1')
plot(fexp1,ReZ1,'r.')
grid()
ylabel(r'$Re(Z)\ (\rm\Omega)$')
xlim(0,20000)
ylim(0,50)
subplot(212)
plot(fexp1,ImZ1,'r.')
grid()
xlabel('f (Hz)')
ylabel(r'$Im(Z)\ (\rm\Omega)$')
xlim(0,20000)
ylim(0,2000)
                 
impedance-bobine-1bimpedance-bobine-1b.pdf
figure(figsize=(8,8))
subplot(211)
title('Bobine 2')
plot(fexp2,ReZ2,'r.')
grid()
ylabel(r'$Re(Z)\ (\rm\Omega)$')
xlim(0,20000)
ylim(0,300)
subplot(212)
plot(fexp2,ImZ2,'r.')
grid()
xlabel('f (Hz)')
ylabel(r'$Im(Z)\ (\rm\Omega)$')
xlim(0,20000)
ylim(0,10000)
                 
impedance-bobine-2bimpedance-bobine-2b.pdf

Une régression linéaire nous donne la valeur de L1 :

from scipy.stats import linregress
i1 = 29
a1, b1, r_value, p_value, std_err = linregress(f1[0:i1],ImZ1[0:i1])
L1 = a1/(2*np.pi)                
                 
print(L1)
--> 0.011312150427026546

La valeur de r1 à très basse fréquence (en dessous de 1000 Hz) est :

j1 =  5
r1 = np.mean(ReZ1[0:j1])
                 
print(r1)
--> 2.823851581013989

Cette valeur est très proche de la valeur indiquée sur la bobine.

Voici les calculs de L2 et r2 pour la bobine 2 :

a2, b2, r_value, p_value, std_err = linregress(f2[0:i1],ImZ2[0:i1])
L2 = a2/(2*np.pi)
r2 = np.mean(ReZ2[0:j1])
                 
print(L2)
--> 0.04602827910026821
print(r2)
--> 8.366244227537965

Pour la bobine 1, un LC-mètre nous fournit pour une fréquence de 10 kHz une valeur de résistance série équivalente de 18,2Ω et une auto-inductance de 11,2mH. Ces valeurs sont conformes à celles que nous obtenons.

Au dessus de 1000Hz, l'augmentation de la résistance avec la fréquence est forte. Par exemple pour la bobine 1, elle atteint 50Ω à 20kHz. Cette augmentation montre que la modélisation de la bobine par une résistance (constante) et une auto-inductance en série est une approximation très grossière, sauf à très basse fréquence.

3. Circuit résonant

L'ajout d'un condensateur, en série ou en parallèle avec la bobine, permet d'obtenir un circuit résonant. Un tel circuit peut constituer au autre moyen d'accéder à la résistance et à l'auto-inductance du modèle (L et r en série).

Nous étudions le circuit constitué de la bobine et d'un condensateur en série, branché sur un générateur de résistance de sortie Rs=50Ω :

circuitLC.svgFigure pleine page

On note Ve la tension en sortie du générateur, observée sur la voie 1 d'un oscilloscope, et Vs la tension aux bornes du condensateur, observée sur la voie 2. Ces deux tensions constituent l'entrée et la sortie d'un filtre LC qui présente une résonance avec un gain très élevé à la résonance. Cependant, l'amplitude de Ve diminue fortement au voisinage de la résonance. À la pulsation ωr=1/LC , l'impédance du circuit se réduit à r, qui est du même ordre de grandeur que la résistance de sortie du générateur. L'amplitude de e(t) est constante; elle est configurée sur le générateur et on peut la mesurer lorsque la sortie est ouverte. On s'intéresse à la fonction de transfert suivante, rapport entre la tension en sortie du générateur et la tension qu'il délivre en circuit ouvert :

H̲=Ve̲e̲(10)

qui est celle d'un filtre coupe-bande dont la fréquence qui minimise le gain est proche de :

fr=12πLC(11)

Une simulation permet de préciser le comportement de ce filtre. La valeur de la fréquence fr est choisie, ce qui permet de calculer C. La simulation est faite pour deux valeurs différentes de r, du même ordre de grandeur que la valeur obtenue par mesure d'impédance pour une fréquence proche de la fréquence fr.

L=11e-3
Rs=50
fr = 1000
C = 1/(4*np.pi**2*L*fr**2)
ra = 2
rb = 5
f = np.linspace(0.5*fr,1.5*fr,1000)
def gain(r):
    w=2*np.pi*f
    Z = 1j*L*w+r+1/(1j*C*w)
    H = Z/(Rs+Z)
    G = np.absolute(H)
    return G
figure()
Ga = gain(ra)
Ga_min = Ga.min()
fa = f[np.argmin(Ga)]
plot(f,Ga,label=r"$r=%0.1f\,\rm\Omega$"%ra)
Gb = gain(rb)
Gb_min = Gb.min()
fb = f[np.argmin(Gb)]
plot(f,Gb,label=r"$r=%0.1f\,\rm\Omega$"%rb)
grid()
xlabel('f (Hz)')
ylabel('G')
legend(loc='lower right')
ylim(0,1)
Gma = ra/(ra+Rs)
Gmb = rb/(rb+Rs)
eGa = abs(Ga_min-Gma)/Ga_min
eGb = abs(Gb_min-Gmb)/Gb_min
efa = abs(fa-fr)/fr
efb = abs(fb-fr)/fr
                    
resonanceLC-1resonanceLC-1.pdf
print(C)
--> 2.302754173689495e-06
print((efa,efb))
--> (0.0005005005005004932, 0.0005005005005004932)
print((eGa,eGb))
--> (0.0005965878324025763, 9.487684227953028e-05)

La fréquence qui minimise le gain est très proche de la fréquence fr. Le gain minimal est très proche de :

GminrRs+r(12)

Voyons ce qu'il en est pour fr=20kHz :

fr = 20e3
C = 1/(4*np.pi**2*L*fr**2)
ra = 40
rb = 50
f = np.linspace(0.5*fr,1.5*fr,1000)
figure()
Ga = gain(ra)
Ga_min = Ga.min()
fa = f[np.argmin(Ga)]
plot(f,Ga,label=r"$r=%0.1f\,\rm\Omega$"%ra)
Gb = gain(rb)
Gb_min = Gb.min()
fb = f[np.argmin(Gb)]
plot(f,Gb,label=r"$r=%0.1f\,\rm\Omega$"%rb)
grid()
xlabel('f (Hz)')
ylabel('G')
legend(loc='lower right')
ylim(0,1)
Gma = ra/(ra+Rs)
Gmb = rb/(rb+Rs)
eGa = abs(Ga_min-Gma)/Ga_min
eGb = abs(Gb_min-Gmb)/Gb_min
efa = abs(fa-fr)/fr
efb = abs(fb-fr)/fr
                    
resonanceLC-2resonanceLC-2.pdf
print(C)
--> 5.756885434223737e-09
print((efa,efb))
--> (0.0005005005005004932, 0.0005005005005004932)
print((eGa,eGb))
--> (0.0004794244777947694, 0.0002868653481307707)

L'écart entre la valeur minimale du gain et celui donné par (12) est toujours largement inférieur 1% .

La mesure de Gmin permet donc d'accéder à la résistance r à la fréquence fr. Une modélisation plus précise de ce circuit devrait tenir compte de la variation de la résistance avec la fréquence mais, compte tenu du faible effet de celle-ci sur la fréquence de résonance, cette modélisation ne semble pas nécessaire.

Nous avons réalisé l'expérience avec la bobine 1, en partant de C=1uF et en diminuant sa valeur jusqu'à obtenir une fréquence de résonance d'environ 20kHz. Une boîte à décade de condensateurs permet de faire varier la capacité et ainsi d'obtenir différentes valeurs de fréquence de résonance. Un générateur DDS est utilisé. L'amplitude de e(t) est fixée à 5 V. Pour chaque valeur de C, on faire varier la fréquence jusqu'à obtenir le minimum d'amplitude de Ve(t). On relève alors la fréquence est la valeur efficace de Vs(t).

Voici les résultats obtenus pour la bobine 1. La valeur de r calculée d'après la relation est tracée en fonction de la fréquence de résonance, superposée à la courbe de résistance (partie réelle de l'impédance obtenue par les mesures d'impédance :

[C,E,fr,Ve] = np.loadtxt("resonanceLC-1.txt",unpack=True,skiprows=3)
R=50
Gmin = Ve*np.sqrt(2)/E
r = Rs*Gmin/(1-Gmin)
figure()
plot(f1,ReZ1,"k+",label='Re(Z1)')
plot(fr,r,"ro",label='r')
grid()
xlabel('f (Hz)')
ylabel(r"$r\ (\rm\Omega)$")
legend(loc='upper left')
xlim(0,21e3)
ylim(0,100)
                        
resistanceResonance-bobine1resistanceResonance-bobine1.pdf

Les valeurs obtenues par la méthode de résonance confirment celles obtenues par mesure d'impédance jusqu'à 20 kHz.

4. Modélisation de la résistance

On cherche à modéliser l'augmentation de la résistance équivalente série lorsque la partie imaginaire de l'impédance est de la forme , soit pour une fréquence inférieure à 20 kHz. Voyons tout d'abord si l'augmentation de la résistance avec la fréquence peut-être attribuée à l'effet de peau ? La profondeur de pénétration d'une onde électromagnétique de pulsation ω dans un métal non magnétique de conductivité γ est :

δ=2ωμ0γ(13)

Voici, pour le cuivre, cette profondeur en fonction de la fréquence :

g = 6e7
mu0 = 4*np.pi*1e-7
f = np.linspace(100,20e3,10000)
w = 2*np.pi*f
delta = np.sqrt(2/(w*mu0*g))
figure()
plot(f,delta*1e3)
grid()
xlabel('f (Hz)')
ylabel(r'$\delta\ (\rm mm)$')
ylim(0,4)
            
effetPeauCuivreeffetPeauCuivre.pdf

Bien que cette expression de δ soit établie en géométrie plane (et non pas cylindrique) et pour un conducteur dont l'épaisseur est très grande, nous pouvons estimer d'après cette courbe, que pour un fil de diamètre 1mm, le courant est un peu près uniforme sur toute la section du fil lorsque δ est supérieur à 2mm. C'est le cas pour une fréquence inférieure à 1000Hz. Au dessus de cette fréquence, le courant n'est plus uniforme sur une section du fil et se concentre de plus en plus vers le bord lorsque la fréquence augmente. La résistance d'un fil de longueur s'écrit :

r=γS(14)

L'aire de la section effective S décroît avec la fréquence. Dans le domaine de fréquence qui nous intéresse (0 à 20 kHz), δ reste cependant très proche du rayon du fil (0,5mm) et il semble peu vraisemblable que la variation de résistance observée dans cette plage de fréquence (d'un facteur 18 pour la bobine 1) soit attribuable à l'effet de peau décrit par la relation (13).

La résistance d'un fil rectiligne est calculée dans Effet de peau dans un fil rectiligne. Voici le rapport de la résistance par la résistance en courant continu, en fonction de la fréquence, pour un fil de rayon 0,5mm :

effetPeau

À une fréquence de 20 kHz, la résistance est très peu différente de la résistance en courant continu (résistance à fréquence nulle). Il faut une fréquence de 200 kHz pour que la résistance soit doublée. Cela confirme que l'effet de peau dans un fil ne peut expliquer, et de très loin, l'augmentation de la résistance de la bobine observée entre 0 et 20 kHz.

Comment expliquer une aussi forte augmentation de la résistance ? Le fil dans la bobine est évidemment entouré d'autres fils puisqu'il y a plusieurs tours (8 tours pour la bobine 1). Dans ce cas, le champ magnétique alternatif généré par un fil dans les fils voisins modifie la distribution du courant dans ces fils (à cause des courants induits). Ce phénomène est connu sous le nom d'effet de proximité. L'effet de peau et l'effet de proximité ont la même origine physique mais ce dernier concerne des conducteurs séparés par de l'air. L'effet de proximité dans une bobine augmente avec la fréquence et il est d'autant plus marqué que la bobine comporte de couches.

Un modèle de bobine comportant N plaques parcourues par un courant dans un sens et N plaques parcourues par le même courant dans l'autre sens, exposé dand Effet de peau et effet de proximité, montre que l'effet de proximité conduit à une augmentation de résistance beaucoup plus grande que l'effet de peau seul. Pour un système de 10 plaques (bobines à 10 couches), voici le rapport de la résistance par la résistance en courant continu, en fonction de e/δ :

effetProx

Voici la même courbe avec une échelle logarithmique pour le rapport :

effetProx

L'augmentation de résistance pour e/δ=2 atteint un facteur 100, qui est bien l'ordre de grandeur que nous avons dans cette expérience.

Voyons à présent s'il est possible, à partir des résultat expérimentaux, d'obtenir une loi simple pour r(f), la résistance en fonction de la fréquence.

Nous disposons de valeurs fiables de la résistance jusqu'à environ 20kHz. Au delà de cette fréquence, il n'est pas certain que la partie réelle de l'impédance soit seulement attribuable à la résistance car les effets capacitifs commencent à intervenir (la partie imaginaire n'est plus ). Il est possible d'obtenir un modèle polynomiale qui représente bien la courbe r(f) jusqu'à 20kHz. Malheureusement, la simulation faite dans Effet de peau et effet de proximité montre ce modèle ne pourra être extrapolé en dehors de ce domaine de fréquence. Toute extrapolation est par principe dangereuse mais dans le cas présent la simulation montre qu'elle n'est pas possible.

Nous pouvons tout de même faire la modélisation dans le domaine de fréquence de 0 à 20 kHz, au moyen d'un polynome de degré 3 ajusté sur les valeurs de résistance obtenues par les mesures d'impédance :

i = len(ReZ1)-5
coef,cov = np.polyfit(f1[0:i],ReZ1[0:i],deg=3,cov=True)
[a,b,c,d] = coef
figure()
plot(f1,ReZ1,"k+",label='Re(Z1)')
f = np.linspace(0,60e3)
plot(f,a*f**3+b*f**2+c*f+d,"g-")
#plot(fr,r,"ro",label='r')
grid()
xlabel('f (Hz)')
ylabel(r"$r\ (\rm\Omega)$")
legend(loc='upper left')
xlim(0,60000)
ylim(0,300)
                     
modeleResistancemodeleResistance.pdf

Nous avons tracé le polynôme de degré 3 jusqu'à 60 kHz. Il représente assez bien la partie réelle de Z jusqu'à environ 50kHz.

5. Modélisation de la bobine

Le modèle de bobine comportant une résistance r en série avec une auto-inductance L convient jusqu'à environ 20kHz, à condition de tenir compte de l'augmentation de r avec la résistance, qui est causée, comme nous l'avons vu, par l'effet de proximité dans le bobinage. Un polynôme de degré 3 permet de modéliser la résistance dans ce domaine de fréquence.

À haute fréquence, différents phénomènes viennent modifier le comportement de la bobine :

La compréhension du comportement d'une bobine à haute fréquence est donc un problème très complexe. Il existe néanmoins des modèles à base de dipôles R,L,C, dont la seule prétention est de représenter l'évolution de l'impédance avec la fréquence, pas d'expliquer les phénomènes physiques qui en sont responsables. Malheureusement, on voit bien d'après ce qui précède qu'un modèle où la résistance serait constante ne peut être correct.

Un modèle couramment utilisé consiste à ajouter une capacité C en parallèle avec r et L :

modeleBobine.svgFigure pleine page

On commence par explorer les propriétés de ce modèle en traçant les parties réelle et imaginaire de son impédance, avec des valeurs de r et L constantes égales aux valeurs de la bobine 1 (valeur de résistance à très basse fréquence) :

def impedanceModele(f,L,r,C):
    w = 2*np.pi*f
    Y = 1j*C*w+1/(1j*L*w+r)
    Z = 1/Y
    return np.real(Z),np.imag(Z)
    
L = 11e-3
r = 2.8
f = np.linspace(0,100e3,1000)
C1 = 0.1
(re1,im1) = impedanceModele(f,L,r,C1*1e-9)
C2 = 0.2
(re2,im2) = impedanceModele(f,L,r,C2*1e-9)

figure()
subplot(211)
plot(f,re1,label=r"$C = %0.2f\,\rm nF$"%C1)
plot(f,re2,label=r"$C = %0.2f\,\rm nF$"%C2)
grid()
ylabel(r"$Re(Z)\,\rm\Omega$")
legend(loc="upper left")
subplot(212)
plot(f,im1,label=r"$C = %0.2f\,\rm nF$"%C1)
plot(f,im2,label=r"$C = %0.2f\,\rm nF$"%C2)
grid()
ylabel(r"$Im(Z)\,\rm\Omega$")
xlabel(r"$f\ (\rm Hz)$")
legend(loc="upper left")
            
impedanceModeleimpedanceModele.pdf

Pour ce modèle, il y a bien une augmentation de la partie imaginaire et de la partie réelle avec la fréquence, mais l'augmentation de la partie imaginaire semble beaucoup trop forte par rapport à celle de la partie réelle. Nous pouvons ajuster la valeur de C pour que la courbe de la partie réelle s'ajuste sur les données expérimentales. Nous utilisons pour cela la méthode des moindres carrés.

def ecart(f1Exp,ImExp,L,r,C):
    e = 0
    for i in range(len(f1Exp)):
        (re,im) = impedanceModele(f1Exp[i],L,r,C)
        e += (im-ImExp[i])**2
    return e
    
N = 1000
tabC = np.linspace(0.05,0.15,N)
e = np.zeros(N)
for i in range(N):
    e[i] = ecart(f1,ImZ1,L,r,tabC[i]*1e-9)
    
figure()
plot(tabC,e)
grid()
xlabel(r"$C\ (\rm nF)$")
ylabel(r"ecart")

              
ecartModeleecartModele.pdf

Pour la valeur de C qui minimise l'écart, on trace les courbes du modèle avec les points expérimentaux :

C  = tabC[np.argmin(e)]*1e-9
(re,im) = impedanceModele(f,L,r,C)
figure(figsize=(8,8))
subplot(211)
title('Bobine 1')
plot(fexp1,ReZ1,'r.')
plot(f,re,"k-")
grid()
ylabel(r'$Re(Z)\ (\rm\Omega)$')
subplot(212)
plot(fexp1,ImZ1,'r.')
plot(f,im,"k-")
grid()
xlabel('f (Hz)')
ylabel(r'$Im(Z)\ (\rm\Omega)$')
              
modeleExperiencemodeleExperience.pdf

Comme prévu, ce modèle échoue à rendre compte à la fois du chanegement de pente de la partie imaginaire et de l'augmentation très forte de la résistance.

Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.