Table des matières Python

Bobines avec noyau

1. Introduction

Les bobines avec noyau sont couramment utilisés en électronique de puissance car un noyau en matériau ferromagnétique doux permet de réaliser des bobines beaucoup moins encombrantes que sans noyau pour la même inductance. Par ailleurs, la même inductance étant obtenue avec un fil beaucoup moins long, l'importance relative de la résistance électrique du fil est beaucoup plus faible avec un noyau, c'est-à-dire que le rapport de la résistance par l'impédance inductive (Lω ) est plus faible. Le noyau a cependant l'inconvénient d'introduire des pertes et un comportement non linéaire à fort courant.

Le matériau du noyau peut être :

Si la bobine est utilisée en courant quasi constant (dans les filtres passe-bas), les seules pertes d'énergie sont les pertes par effet Joule dans le fil. À partir d'une certaine fréquence, qui dépend du diamètre du fil et du nombre de couches, ces pertes augmentent avec la fréquence. Si la bobine est utilisée en courant alternatif (dans les transformateurs ou les filtres résonants), il y a en plus des pertes par courants induits (négligeables pour les ferrites) et des pertes liées aux cycles de variation de l'aimantation (pertes par hystérésis). Des pertes par courant induit se produisent dans un noyau en poudre de fer mais elles sont relativement faibles car les courants sont confinés dans les grains de fer; ces pertes augmentent très rapidement avec la fréquence.

Ce document montre l'étude de différentes bobines dans un domaine de fréquence de 10 à 100 kHz et pour un courant de plusieurs centaines de mA.

Les mesures sont réalisées avec l'Analog Discovery 2 (AD), piloté par un script Python au moyen de l'interface analog_0_1.py décrite dans Interface pour Analog Discovery.

2. Dispositif expérimental

2.a. Circuit

L'objectif de l'étude expérimentale est d'obtenir des informations sur la relation courant-tension de la bobine. Si la relation est linéaire, on doit pouvoir déterminer l'impédance de la bobine. La bobine est mise en série avec une résistance dont la valeur R doit être du même ordre de grandeur que l'impédance de la bobine dans le domaine de fréquence considéré. Nous étudions des bobines dont l'inductance est de l'ordre de la dizaine de microhenrys, pour des fréquences de 10 à 100 kHz; une résistance de l'ordre du ohm convient. Cette résistance doit pouvoir supporter un courant de 3 A. Nous optons pour une résistance de puissance à couche épaisse, recommandée pour les applications de puissance en raison de sa très faible auto-inductance.

La figure suivante montre le schéma du dispositif.

circuitMesure-fig.svgFigure pleine page

Le but est de mesurer la tension U aux bornes de la bobine et la tension Ur au bornes de la résistance, qui permettra de déterminer l'intensité du courant I. La résistance est mesurée au préalable avec une ohmmètre de précision à une fréquence de 10 kHz. Il est préférable que la résistance soit surdimensionnée par rapport à la puissance dissipée car l'augmentation de sa température doit être négligeable. La tension sinuoïdale est donnée par le générateur DDS de l'AD, sur sa sortie W1 (Wave Generator 1). Le courant maximal délivré par cette sortie est de 100 mA, ce qui est insuffisant pour l'étude d'une bobine à fort courant. Par ailleurs, la sortie d'un générateur de signaux supporte mal les charges inductives et des distorsions très fortes apparaissent bien avant que le courant maximal ne soit atteint. On doit donc ajouter un amplificateur de puissance. La mesure des deux tensions se fait avec les deux voies différentielles de l'oscilloscope de l'AD.

L'amplificateur est réalisé avec un ampli-op de puissance L165 (le LM675 est similaire). Voici son schéma :

ampliL165-fig.svgFigure pleine page

Il s'agit d'un amplificateur de type non-inverseur, dont le gain en tension à basse fréquence est G=1+R2/R1. La résistance R2 est un potentiomètre, ce qui permet de faire varier le gain. Le courant de sortie de l'ampli-op peut aller jusqu'à 3 A. Un gain d'environ 2 convient pour cette expérience. Il faut éviter d'utiliser un gain trop grand car cela réduit la bande passante de l'amplificateur, d'autant plus que le courant délivré est grand. Ce circuit peut servir d'amplificateur audio. Dans ce cas, on l'utilise en dessous de 20 kHz avec un gain plus élevé, de manière à alimenter un haut-parleur en sortie avec un signal de faible amplitude en entrée. Si un haut-parleur est branché en sortie, il est recommandé de placer un condensateur de couplage AC de manière à éviter un courant DC dans la bobine du haut-parleur.

2.b. Traitement des signaux

Les signaux U et Ur sont échantillonnés à une fréquence égale à 100 fois leur fréquence (soit 10 MHz pour la fréquence de 100 kHz). Une analyse spectrale de ces deux tensions est effectuée. Si les distorsions son négligeables, on peut considérer que la bobine se comporte de manière approximativement linéaire et procéder au calcul d'impédance. Pour un signal échantillonné, la valeur efficace est égale à l'écart quadratique moyen (ou écart-type). L'impédance (module de l'impédance complexe) s'en déduit :

|Z̲|=UeffIeff(1)

Le cosinus du déphasage est obtenu en considérant la moyenne du produit de U par I :

1T0TU(t)I(t)dt=UeffIeffcos(φ)(2)

Le dipôle étudié étant une bobine, cos(φ) est petit et φ est a priori inférieur à π/2 .

Les parties réelle et imaginaire de l'impédance complexe s'en déduisent :

Re(Z̲)=|Z̲|cos(φ)Im(Z̲)=|Z̲|1-cos2(φ)

Dans le cadre d'un modèle de bobine constitué d'une auto-inducance L en série avec une résistance r, on a :

2πLf=Im(Z̲)r = Re(Z̲)

La résistance r rend compte de toutes les pertes d'énergie qui ont lieu dans la bobine : pertes par effet Joule dans le bobinage et pertes dans le noyau à cause des des courants induits et des variations d'aimantation (pertes par hystérésis).

Lorsque la bobine manifeste un comportement non linéaire (à fort courant), les signaux U(t) et I(t) peuvent ne plus être sinusoïdaux. Le traitement précédent doit être réalisé sur les composantes fondamentales des signaux. Pour obtenir la composante fondamentale d'un signal, nous calculons sa transformée de Fourier discrète (TFD) puis nous effectuons un fitrage consistant à annuler tous les termes de la TFD dont la fréquence est supérieure à 1,5 fois la fréquence du signal.

2.c. Script de traitement

Le pilotage de l'Analog Discovery (AD) et le traitement des données sont effectués dans un script Python. L'AD dispose de pilotes sur Windows, Linus et Mac. Le pilotage de l'AD se fait par l'accès direct aux fonctions de la library du pilote (dans la DLL sous windows). Pour faciliter le pilotage de l'AD, nous utilisons trois classes Device,AnalogInput,AnalogOutput qui sont décrites dans Pilotage de l'Analog Discovery en Python.

mesureImpedanceBobine.py
import numpy as np
from numpy.fft import fft,ifft
from scipy.signal import blackman
import matplotlib.pyplot as plt
from analog_0.1 import Device,AnalogInput,AnalogOutput
import time					  
						  

La fonction analyseSpectrale effectue l'analyse spectrale d'un signal échantillonné et trace le spectre. Elle renvoie l'amplitude du fondamental (la fréquence du signal est donnée en argument). La transformée de Fourier discrète est calculée avec le signal échantillonné complété par des zéros (environ 6 fois plus de zéros que d'échantillons) pour un nombre total d'échantillons égal à une puissance de 2 (afin d'optimiser le calcul par FFT).

def analyseSpectrale(t,x,f,plot=True):
    te = t[1]-t[0]
    N=len(x)
    p = int(np.log(7*N)/np.log(2))
    N1 = 2**p
    x1=np.concatenate((x*blackman(N),np.zeros(N1-N)))
    spectre = np.absolute(fft(x1))*2.0/N/0.42
    N1 = len(x1)
    T1 = N1*te
    freq=np.arange(N1)*1/T1
    if plot:
        plt.figure()
        plt.plot(freq,spectre)
        plt.xlabel('f (Hz)')
        plt.grid()
        plt.xlim(0,5*f)
        plt.show()
    i1 = int(1.5*f*T1)
    A1 = np.max(spectre[0:i1])
    return A1				
						

La fonction fondamental permet d'extraire la sinusoïde fondamentale d'un signal échantillonné dont la fréquence est donnée. Pour l'obtenir, on calcule la transformée de Fourier discrète (TFD) du signal puis on effectue un filtrage passe-bas sur la TFD en éliminant toutes les composantes de fréquence supérieure à 1,5 fois la fréquence du signal. Pour finir, la transformée de Fourier discrète inverse est calculée et renvoyée. Ce filtrage introduit un repliement temporel au début et à la fin du signal mais l'effet de celui-ci sur les calculs d'impédance est négligeable dans la mesure où la durée du signal est grande devant la période.

def fondamental(t,x,f):
    te = t[1]-t[0]
    N = len(x)
    tfd = fft(x)
    i1 = int(1.5*f*N*te)
    i2 = N-i1
    tfd[i1:i2] = 0
    y = np.real(ifft(tfd))
    return y				   
						   

Remarque : le signal obtenu par TFD inverse est en principe à valeurs réelles mais les erreurs d'arrondis font qu'il comporte une partie imaginaire très faible mais non nulle; on doit donc renvoyer la partie réelle de ce signal.

La valeur de la résistance série est définie :

R = 5.09 # résistance en série
							

Les lignes suivantes établissent la connexion avec l'AD et créent une instance de AnalogOutput (pour le pilotage du générateur de signaux) et de AnalogInput (pour le pilotage du convertisseur A/N). La fonction analog.channels configure les voies 0 et 1 du convertisseur en précisant le calibre, c'est-à-dire la tension maximale. Celle-ci doit être choisie en fonction du courant efficace souhaité (voir plus loin).

device = Device(-1)
device.open()
output = AnalogOutput(device)
analog = AnalogInput(device)
analog.channels([0,1],[10,10])
							

La fonction mesureZ effectue une acquisition des tensions U(t) et Ur(t) puis calcule l'impédance. Les arguments de cette fonction sont la fréquence et l'amplitude de la sinusoïde en sortie du générateur, c'est-à-dire en entrée de l'amplificateur. La fréquence d'échantillonnage est 100 fois la fréquence du signal. Le nombre d'échantillons est 8192, qui est la taille maximale du tampon de l'AD pour une acquisition en un seul bloc. On aura donc 82 cycles par enregistrement, ce qui est suffisant pour le calcul des valeurs efficaces et du déphasage avec une précision de 1% . La fonction renvoie le tableau des instants, les deux tensions, les deux tensions après fitrage (extraction du fondamental), le module de l'impédance, le cosinus du déphasage et la valeur efficace de l'intensité du courant.

def mesureZ(freq,amp):
    fSamp = freq*100
    size = 8192
    t = analog.sampling(fSamp,size)
    output.function(0,'sine',freq,amp)
    output.start(0)
    time.sleep(0.1)
    voltage = analog.record()
    output.stop(0)
    u1 = voltage[0,:]
    u2 = voltage[1,:]
    u1 = u1-u1.mean()
    u2 = u2-u2.mean()
    ue = u1+u2
    print("amp = %f, Ue max = %f"%(amp,np.std(ue)*np.sqrt(2)))
    I = u2/R
    U = u1
    #U1 = analyseSpectrale(t,U,freq)
    #I1 = analyseSpectrale(t,I,freq)
    u_f = fondamental(t,U,f)
    i_f = fondamental(t,I,f)
    Ueff = np.std(u_f)
    Ieff = np.std(i_f)
    cosphi = np.mean(u_f*i_f)/(Ueff*Ieff)
    Z = Ueff/Ieff
    return t,u1,u2,u_f,R*i_f,Z,cosphi,Ieff					   
							   

La fonction affiche l'amplitude de la tension en sortie du générateur et l'amplitude de la tension en sortie de l'amplificateur. Cela permet de connaître le gain de celui-ci et éventuellement de tourner le potentiomètre pour augmenter ou réduire le gain.

Pour effectuer les mesures, on définit un courant efficace (I0) et un tableau de fréquences (une dizaine réparties de 10 à 100 kHz). Pour chaque fréquence, on effectue une première mesure avec une amplitude du signal délivrée par le générateur de 1 V puis on entre dans une boucle de calcul qui répète l'enregistrement à différentes amplitudes tant que le courant efficace mesuré est différent du courant souhaité de plus de 1% . Lorsque la bobine se comporte de manière linéaire, la boucle n'est exécutée qu'une seule fois car l'intensité efficace est proportionnelle à l'amplitude de la tension en entrée. Pour les bobines avec noyau, particulièrement pour le noyau en poudre de fer, plusieurs itérations sont nécessaires pour obtenir la valeur souhaitée du courant, surtout à haute fréquence.

Z_list = []
cosphi_list = []
f_list = np.linspace(10e3,100e3,10)
I_list = []

I0 = 500 # courant cible en mA
plot = True

for f in f_list:
    amp = 1.0
    t,u1,u2,u1_f,u2_f,Z,cosphi,Ieff = mesureZ(f,amp)
    print("Z = %f, cosphi = %f, Ieff = %f"%(Z,cosphi,Ieff))
    while abs(Ieff*1e3-I0)/I0 > 0.01:
        amp *= I0*1e-3/Ieff
        t,u1,u2,u1_f,u2_f,Z,cosphi,Ieff = mesureZ(f,amp)
        print("Z = %f, cosphi = %f, Ieff = %f"%(Z,cosphi,Ieff))
    Z_list.append(Z)
    cosphi_list.append(cosphi)
    I_list.append(Ieff)
    if plot:
        plt.figure()
        plt.plot(t,u1,'r',label='ch 1')
        plt.plot(t,u2,'b',label='ch 2')
        plt.plot(t,u1_f,'r--',label='ch 1 fond')
        plt.plot(t,u2_f,'b--',label='ch 2 fond')
        plt.grid()
        plt.xlim(0,3/f)
        plt.legend(loc='upper right')
        plt.show()
        #np.savetxt('tensions-bobineFerrite-10uH-%dmA-%0.0fHz.txt'%(int(I0),f),np.array([t,u1,u2,u1_f,u2_f]).T,delimiter=" ",header="t(s)\t u1(V)\t u2(V)\t u1f(V)\t u2f(V)")							
								

Pour chaque fréquence, on trace les signaux car il faut vérifier qu'aucune saturation de tension ne se produit. Le cas échéant, il faut augmenter la tension maximale du calibre des voies (fonction analog.channels).

Pour finir, les résultats sont enregistrés dans un fichier puis on trace le module de l'impédance et le cosinus du déphasage en fonction de la fréquence :

device.close()

np.savetxt('impedance-bobineFerrite-10uH-%dmA.txt'%int(I0),np.array([f_list,Z_list,cosphi_list,I_list]).T,delimiter=" ",header="f(Hz)\t Z(Ohm)\t cos(phi)\t Ieff(A)")

plt.figure(figsize=(8,8))
plt.subplot(211)
plt.plot(f_list,Z_list)
plt.xlabel("f (Hz)")
plt.ylabel("Z (Ohms)")
plt.grid()
plt.subplot(212)
plt.plot(f_list,cosphi_list)
plt.xlabel("f (Hz)")
plt.ylabel("cos(phi)")
plt.grid()
plt.show()							 
								 

3. Bobine sans noyau

La méthode est tout d'abord validée avec une bobine sans noyau, réalisée par enroulement de 25 spires et de diamètre 43 mm d'un fil gainé (enroulé sur un tube en PVC). La bobine une auto-inductance d'environ 15 microhenry et nous utilisons une résistance R=1,00Ω.

bobineAir

L'expérience est menée pour différentes valeurs de courant efficace. Voici le tracé des parties réelle et imaginaire de l'impédance complexe en fonction de la fréquence. Les courbes sont repérées par la valeur de l'intensité efficace programmée.

import numpy as np
from matplotlib.pyplot import *

f=[]
Z=[]
cosphi=[]
Ieff=[]
ReZ = []
ImZ = []
ieff = ["100","200","300","400","500"]
for ie in ieff:
	[f1,Z1,cosphi1,Ieff1] = np.loadtxt("impedance-bobineAir15uH-%smA-R1,0.txt"%ie,unpack=True,skiprows=1)
	f.append(f1)
	Z.append(Z1)
	cosphi.append(cosphi1)
	Ieff.append(Ieff1)
	ReZ.append(Z1*cosphi1)
	ImZ.append(Z1*np.sqrt(1-cosphi1**2))
n = len(f)

figure(figsize=(8,8))
subplot(211)
for i in range(n):
	plot(f[i]/1e3,ReZ[i],label="%s mA"%ieff[i])
grid()
ylim(0,0.5)
ylabel(r"$Re(Z)\ (\rm\Omega)$",fontsize=16)
legend(loc='upper left')
subplot(212)
for i in range(n):
	plot(f[i]/1e3,ImZ[i],label="%s mA"%ieff[i])
grid()
ylabel(r"$Im(Z)\ (\rm\Omega)$",fontsize=16)
legend(loc='upper left')
xlabel('f (kHz)',fontsize=16)
			 
figAfigA.pdf

Voici l'intensité efficace du courant mesurée :

figure()
for i in range(n):
	plot(f[i]/1e3,Ieff[i]*1e3,label="%s mA"%ieff[i])
grid()
ylabel(r"$I_{eff}\ (\rm mA)$",fontsize=16)
legend(loc='upper left')
xlabel('f (kHz)',fontsize=16)
				
figBfigB.pdf

Pour cette bobine, le modèle avec L et r en série semble a priori adéquat pour chaque fréquence, mais la résistance dépend à l'évidence de la fréquence.

Voici la valeur de L en fonction de la fréquence :

figure()
for i in range(n):
	L = ImZ[i]/(2*np.pi*f[i])
	plot(f[i],L*1e6,label="%s mA"%ieff[i])
grid()
ylim(0,20)
ylabel(r"$L\ (\rm \mu H)$",fontsize=16)
legend(loc='lower left')
xlabel('f (kHz)',fontsize=16)


				 
figCfigC.pdf

et la valeur moyenne de L :

print(L[n-1].mean())
--> 1.6399428224733946e-05

La résistance r dépend de la fréquence mais les variations qui sont observées en fonction du courant semblent aléatoires, ce qui permet de les attribuer à l'incertitude de la mesure de cos(φ) (incertitude qui a très peu d'effet sur la partie imaginaire de l'impédance). En moyennant les valeurs de r pour les différents courants efficaces, on peut obtenir une courbe de r en fonction de la fréquence plus régulière :

resistance = np.zeros(len(f[0]))
for i in range(n):
	resistance += ReZ[i]
resistance /= n
figure()
plot(f[0],resistance)
grid()
xlabel('f (kHz)',fontsize=16)
ylabel(r"$r (\rm\Omega)$",fontsize=16)
ylim(0,0.5)
				   
figDfigD.pdf

L'augmentation de la résistance de la bobine avec la fréquence est due à l'effet proximité, qui consiste en un changement de répartition du courant dans la section des fils en raison de l'interaction entre les spires voisines. On distingue l'effet de proximité de l'effet de peau car ce dernier se manifeste dans un fil rectiligne sans autres fils en son voisinage. L'effet de peau est relativement aisé à calculer théoriquement, l'effet de proximité est très difficile à modéliser.

Il est aussi intéressant de calculer le facteur de qualité de la bobine, défini par :

Q=|Im(Z̲)||Re(Z̲)|
Q1 = np.zeros(len(f[0]))
for i in range(n):
	Q1 += ImZ[i]/ReZ[i]
Q1 /= n
				 
figure(figsize=(8,6))
plot(f[0]/1e3,Q1)
grid()
xlabel('f (kHz)',fontsize=16)
ylabel('Q',fontsize=16)
ylim(0,50)
					
figEfigE.pdf

4. Bobine à noyau en poudre de fer

Nous étudions une bobine à noyau toroïdal en poudre de fer (fabriquée par Wurth Electronik), de valeur nominale 10μH. La résistance placée en série est R=2,7Ω.

bobineAir

Voici les tensions U et Ur pour une fréquence de 10 kHz et un courant efficace de 500 mA (les courbes en pointillé sont les fondamentales)

[t,u1,u2,u1f,u2f] = np.loadtxt('tensions-bobineTore10uA-500mA-10000Hz.txt',unpack=True,skiprows=1)
figure(figsize=(12,6))
t *= 1e3
plot(t,u1,'r',label='U')
plot(t,u2,'b-',label='Ur')
plot(t,u1f,'r--',label='U fondamental')
plot(t,u2f,'b--',label='Ur fondamental')
grid()
xlabel('t (ms)',fontsize=16)
ylabel('volts')
legend(loc='upper right')
ylim(-2.5,2.5)
xlim(1,2)
			
figA1figA1.pdf

et à une fréquence de 100 kHz :

[t,u1,u2,u1f,u2f] = np.loadtxt('tensions-bobineTore10uA-500mA-100000Hz.txt',unpack=True,skiprows=1)
figure(figsize=(12,6))
t *= 1e3
plot(t,u1,'r',label='U')
plot(t,u2,'b-',label='Ur')
plot(t,u1f,'r--',label='U fondamental')
plot(t,u2f,'b--',label='Ur fondamental')
grid()
xlabel('t (ms)',fontsize=16)
ylabel('volts')
legend(loc='upper right')
ylim(-10,10)
xlim(1e-1,2e-1)
			
figB1figB1.pdf

La sinusoïde fondamentale coïncide pratiquement avec la tension, ce qui indique un très faible niveau de distorsion. Voici les parties réelle et imaginaire de l'impédance en fonction de la fréquence.

f=[]
Z=[]
cosphi=[]
Ieff=[]
ReZ = []
ImZ = []
ieff = ["5","10","50","100","200","300","400","500","600"]
for ie in ieff:
	[f1,Z1,cosphi1,Ieff1] = np.loadtxt("impedance-bobineTore10uH-%smA-R2,7-3.txt"%ie,unpack=True,skiprows=1)
	f.append(f1)
	Z.append(Z1)
	cosphi.append(cosphi1)
	Ieff.append(Ieff1)
	ReZ.append(Z1*cosphi1)
	ImZ.append(Z1*np.sqrt(1-cosphi1**2))
n = len(f)

figure(figsize=(8,8))
subplot(211)
for i in range(n):
	plot(f[i]/1e3,ReZ[i],label="%s mA"%ieff[i])
grid()
ylim(0,5)
ylabel(r"$Re(Z)\ (\rm\Omega)$",fontsize=16)
legend(loc='upper left')
subplot(212)
for i in range(n):
	plot(f[i]/1e3,ImZ[i],label="%s mA"%ieff[i])
grid()
ylabel(r"$Im(Z)\ (\rm\Omega)$",fontsize=16)
legend(loc='upper left')
xlabel('f (kHz)',fontsize=16) 
			 
figC1figC1.pdf

Contrairement au cas de la bobine sans noyau, l'impédance mesurée dépend fortement de l'intensité efficace du courant, ce qui montre le comportement non linéaire de cette bobine.

Voici l'intensité afficace du courant mesurée :

figure()
for i in range(n):
	plot(f[i]/1e3,Ieff[i]*1e3,label="%s mA"%ieff[i])
grid()
ylabel(r"$I_{eff}\ (\rm mA)$",fontsize=16)
legend(loc='upper left')
xlabel('f (kHz)',fontsize=16)
				
figD1figD1.pdf

Voici la valeur de L en fonction de la fréquence :

figure()
for i in range(n):
	L = ImZ[i]/(2*np.pi*f[i])
	plot(f[i],L*1e6,label="%s mA"%ieff[i])
grid()
ylim(0,20)
ylabel(r"$L\ (\rm \mu H)$",fontsize=16)
legend(loc='lower left')
xlabel('f (kHz)',fontsize=16)


				 
figE1figE1.pdf

Cette valeur de L correspond à l'auto-inductance du modèle L-r série. La valeur de résistance est simplement la partie réelle de Z̲ dont la courbe est montrée ci-dessus. Dans le cadre de ce modèle L-r, on constate que L augmente fortement avec l'intensité du courant. La valeur nominale est celle obtenue à très faible courant (moins de 5 mA). La résistance augmente avec la fréquence et aussi avec l'intensité du courant. Pour un courant efficace de 500 mA et une fréquence de 100 kHz, la résistance vaut 3Ω. Cette résistance est beaucoup plus grande que la résistance DC (résistance en courant continue, égale ici à 0,1Ω), en grande partie à cause des pertes dans les grains de fer (pertes par courant induit et pertes par hystérésis). Ce type de bobine est principalement utilisé pour le filtrage passe-bas et dans ce cas le courant qui les traverse est quasi constant : c'est donc la résistance DC qu'il convient de mettre dans le modèle de cette bobine.

5. Bobine plate avec plaque en ferrite

Il s'agit d'une bobine plate fabriquée par Wurth Electronik, de taille 40x40x1.2 mm, d'inductance nominale 8μH et acceptant un courant maximal de 5 A.

Cette bobine est prévue pour les systèmes de récharge sans fil. Elle est collée sur une plaque carrée en ferrite dont la fonction est d'augmenter le couplage avec l'autre bobine mais qui a certainement aussi un effet sur l'auto-inductance de cette bobine.

La résistance placée en série est R=5,08Ω.

f=[]
Z=[]
cosphi=[]
Ieff=[]
ReZ = []
ImZ = []
ieff = ["50","100","300","500","700","900"]
for ie in ieff:
	[f1,Z1,cosphi1,Ieff1] = np.loadtxt("impedance-bobinePlate-8uH-%smA.txt"%ie,unpack=True,skiprows=1)
	f.append(f1)
	Z.append(Z1)
	cosphi.append(cosphi1)
	Ieff.append(Ieff1)
	ReZ.append(Z1*cosphi1)
	ImZ.append(Z1*np.sqrt(1-cosphi1**2))
n = len(f)

figure(figsize=(8,8))
subplot(211)
for i in range(n):
	plot(f[i]/1e3,ReZ[i],label="%s mA"%ieff[i])
grid()
ylim(0,0.3)
ylabel(r"$Re(Z)\ (\rm\Omega)$",fontsize=16)
legend(loc='upper left')
subplot(212)
for i in range(n):
	plot(f[i]/1e3,ImZ[i],label="%s mA"%ieff[i])
grid()
ylabel(r"$Im(Z)\ (\rm\Omega)$",fontsize=16)
legend(loc='upper left')
xlabel('f (kHz)',fontsize=16) 
			 
figA2figA2.pdf

Voici la valeur de L en fonction de la fréquence :

figure()
for i in range(n):
	L = ImZ[i]/(2*np.pi*f[i])
	plot(f[i],L*1e6,label="%s mA"%ieff[i])
grid()
ylim(0,10)
ylabel(r"$L\ (\rm \mu H)$",fontsize=16)
legend(loc='lower left')
xlabel('f (kHz)',fontsize=16)


				 
figB2figB2.pdf

Les caractéristiques de cette bobine ne dépendent pas de l'intensité du courant et la valeur de L est très proche de la valeur nominale. Le fabricant indique que le facteur de qualité est Q=20 à 30 kHz, ce qui correspond à r=0.08Ω, valeur très proche de la résistance mesurée à cette fréquence (partie réelle de Z̲ ). Cette bobine a une très faible résistance même à plusieurs dizaines de kHz, ce qui est important pour son usage (couplage inductif en courant alternatif).

6. Bobine à noyau en ferrite

La bobine est réalisée par enroulement d'un fil de diamètre 0,8mm autour d'un cylindre en ferrite de diamètre 9 mm et de longueur 44 mm. Le nombre de spires est 23.

bobineAir
f=[]
Z=[]
cosphi=[]
Ieff=[]
ReZ = []
ImZ = []
ieff = ["50","100","200","500"]
for ie in ieff:
	[f1,Z1,cosphi1,Ieff1] = np.loadtxt("impedance-bobineFerrite-18uH-%smA.txt"%ie,unpack=True,skiprows=1)
	f.append(f1)
	Z.append(Z1)
	cosphi.append(cosphi1)
	Ieff.append(Ieff1)
	ReZ.append(Z1*cosphi1)
	ImZ.append(Z1*np.sqrt(1-cosphi1**2))
n = len(f)

figure(figsize=(8,8))
subplot(211)
for i in range(n):
	plot(f[i]/1e3,ReZ[i],label="%s mA"%ieff[i])
grid()
ylim(0,0.3)
ylabel(r"$Re(Z)\ (\rm\Omega)$",fontsize=16)
legend(loc='upper left')
subplot(212)
for i in range(n):
	plot(f[i]/1e3,ImZ[i],label="%s mA"%ieff[i])
grid()
ylabel(r"$Im(Z)\ (\rm\Omega)$",fontsize=16)
legend(loc='upper left')
xlabel('f (kHz)',fontsize=16) 
			 
figA3figA3.pdf

Voici la valeur de L en fonction de la fréquence :

figure()
for i in range(n):
	L = ImZ[i]/(2*np.pi*f[i])
	plot(f[i],L*1e6,label="%s mA"%ieff[i])
grid()
ylim(0,20)
ylabel(r"$L\ (\rm \mu H)$",fontsize=16)
legend(loc='lower left')
xlabel('f (kHz)',fontsize=16)
				 
figB3figB3.pdf
print(L[n-1].mean())
--> 1.7975887841927706e-05

Facteur de qualité :

Q2 = np.zeros(len(f[0]))
for i in range(n):
	Q2 += ImZ[i]/ReZ[i]
Q2 /= n
				 

Il est possible de faire coulisser le noyau afin qu'une partie des spires soit dans l'air. Voici les résultat lorsque 1/3 de la bobine est dans l'air :

f=[]
Z=[]
cosphi=[]
Ieff=[]
ReZ = []
ImZ = []
ieff = ["50","100","200","500","700"]
for ie in ieff:
	[f1,Z1,cosphi1,Ieff1] = np.loadtxt("impedance-bobineFerrite-9uH-%smA.txt"%ie,unpack=True,skiprows=1)
	f.append(f1)
	Z.append(Z1)
	cosphi.append(cosphi1)
	Ieff.append(Ieff1)
	ReZ.append(Z1*cosphi1)
	ImZ.append(Z1*np.sqrt(1-cosphi1**2))
n = len(f)

figure(figsize=(8,8))
subplot(211)
for i in range(n):
	plot(f[i]/1e3,ReZ[i],label="%s mA"%ieff[i])
grid()
ylim(0,0.3)
ylabel(r"$Re(Z)\ (\rm\Omega)$",fontsize=16)
legend(loc='upper left')
subplot(212)
for i in range(n):
	plot(f[i]/1e3,ImZ[i],label="%s mA"%ieff[i])
grid()
ylabel(r"$Im(Z)\ (\rm\Omega)$",fontsize=16)
legend(loc='upper left')
xlabel('f (kHz)',fontsize=16) 
			 
figA4figA4.pdf
figure()
for i in range(n):
	L = ImZ[i]/(2*np.pi*f[i])
	plot(f[i],L*1e6,label="%s mA"%ieff[i])
grid()
ylim(0,20)
ylabel(r"$L\ (\rm \mu H)$",fontsize=16)
legend(loc='lower left')
xlabel('f (kHz)',fontsize=16)


				 
figB4figB4.pdf
print(L[n-1].mean())
--> 8.779032737646231e-06
Q3 = np.zeros(len(f[0]))
for i in range(n):
	Q3 += ImZ[i]/ReZ[i]
Q3 /= n
				 

L'inductance est comme prévu plus petite. La résistance (partie réelle de Z̲ ) est quasi inchangée, à peine plus grande avec le noyau complètement inséré à 100 kHz.

Voici les résultats pour la même bobine lorsque le noyau est complétement retiré (bobine sans noyau) :

f=[]
Z=[]
cosphi=[]
Ieff=[]
ReZ = []
ImZ = []
ieff = ["50","100","200","500","700"]
for ie in ieff:
	[f1,Z1,cosphi1,Ieff1] = np.loadtxt("impedance-bobineFerrite-2uH-%smA.txt"%ie,unpack=True,skiprows=1)
	f.append(f1)
	Z.append(Z1)
	cosphi.append(cosphi1)
	Ieff.append(Ieff1)
	ReZ.append(Z1*cosphi1)
	ImZ.append(Z1*np.sqrt(1-cosphi1**2))
n = len(f)

figure(figsize=(8,8))
subplot(211)
for i in range(n):
	plot(f[i]/1e3,ReZ[i],label="%s mA"%ieff[i])
grid()
ylim(0,0.3)
ylabel(r"$Re(Z)\ (\rm\Omega)$",fontsize=16)
legend(loc='upper left')
subplot(212)
for i in range(n):
	plot(f[i]/1e3,ImZ[i],label="%s mA"%ieff[i])
grid()
ylabel(r"$Im(Z)\ (\rm\Omega)$",fontsize=16)
legend(loc='upper left')
xlabel('f (kHz)',fontsize=16) 
			 
figA5figA5.pdf
figure()
for i in range(n):
	L = ImZ[i]/(2*np.pi*f[i])
	plot(f[i],L*1e6,label="%s mA"%ieff[i])
grid()
ylim(0,5)
ylabel(r"$L\ (\rm \mu H)$",fontsize=16)
legend(loc='upper left')
xlabel('f (kHz)',fontsize=16)


				 
figB5figB5.pdf
print(L[n-1].mean())
--> 1.2617013547613528e-06
Q4 = np.zeros(len(f[0]))
for i in range(n):
	Q4 += ImZ[i]/ReZ[i]
Q4 /= n
				 

Voici le facteur de qualité en fonction de la fréquence pour les trois configurations et pour la bobine sans noyau de 16 microhenrys étudiée plus haut :

figure(figsize=(8,6))
plot(f[0]/1e3,Q1,'k--',label='Air L = 16 uH')
plot(f[0]/1e3,Q2,label='Ferrite L = 18 uH')
plot(f[0]/1e3,Q3,label='Ferrite L = 8,8 uH')
plot(f[0]/1e3,Q4,label='Air L = 1,3 uH')
grid()
xlabel('f (kHz)',fontsize=16)
ylabel('Q',fontsize=16)
legend(loc='upper right')
ylim(0,60)
					
figC5figC5.pdf

Avec ce noyau en ferrite, l'inductance est 15 fois plus grande que sans le noyau. La résistance à 100 kHz est environ 6 fois plus grande avec le noyau que sans le noyau (seulement 2 fois plus à 20 kHz). Cela montre que les pertes dans le noyau ne sont pas négligeables, probablement des pertes par hystérésis à moins que la présence du noyau ait une influence sur l'effet de peau dans le fil. Ces pertes sont cependant beaucoup plus faibles que pour un noyau en poudre de fer. Sur la figure précédente, la comparaison des facteurs de qualité pour la bobine sans noyau de 16 uH et la bobine avec noyau de ferrite de 18 uH montre que cette dernière à un facteur de qualité plus grand de 20 kHz à 80 kHz. Au dessus de 80 kHz, la bobine sans noyau a un facteur de qualité plus grand. Ces résultats indiquent que les pertes dans le noyau prennent une plus grande importance par rapport aux pertes dans le fil à haute fréquence. Ils montrent aussi que, pour une inductance donnée, le choix entre une bobine avec ou sans noyau dépend de la fréquence de travail (indépendemment bien sûr des considérations d'encombrement).

Ces résultats confirment l'intérêt d'utiliser un noyau en ferrite dans les applications de courant alternatif où la résistance interne de la bobine doit être la plus faible possible (dans les onduleurs à résonance ou les filtres passe-bande par exemple).

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