Dans une communication, on identifie une source émettrice d'un signal contenant une information, un canal de transmission, et un destinataire qui "décode" le signal pour en extraire l'information. J'émets un son, le signal est porté par l'air, il arrive à l'oreille de mon destinataire.
On est amené à mettre en forme le signal pour plusieurs raisons. En voici quelques-unes.
La taille d'une antenne émettrice est de l'ordre de la longueur d'onde du signal envoyé. Un signal audio d'une fréquence f = 1 kHz porté par une onde électromagnétique de même fréquence nécessiterait une antenne de 300 km. Il est donc nécessaire de modifier la fréquence du signal pour pouvoir le transmettre. De plus, une antenne à taille unique ne pourrait envoyer de signaux que dans une gamme très limitée en longueur d'onde.
Si on veut transmettre une information dont la longueur d'onde est dans une gamme déjà occupée par un autre signal, il est alors nécessaire de changer cette longueur pour éviter d'avoir une superposition des signaux. On utilise le multiplexage, où dans un intervalle de fréquence (1 MHz par exemple pour l'ADSL) on trouve une multitude de canaux chacun avec sa gamme de fréquence réservée (ADSL : 4 kHz). Chaque canal est réservé à un unique signal.
On peut aussi être amené à modifier la fréquence d'un signal pour qu'il s'adapte au canal de transmission. Exemple : la fibre optique, qui demande des longueurs d'onde de l'ordre de la centaine de nm.
Dans ce montage, on commence par mettre en forme le signal, qu'il soit analogique ou numérique. C'est la modulation. Nous verrons la modulation d'amplitude et de fréquence. Nous verrons ensuite la détection de l'information en fonction du type de modulation, c'est la démodulation. Nous verrons la démodulation d'amplitude et de fréquence. Enfin, nous parlerons d'un canal de transmission, le câble coaxial. A savoir qu'il existe deux catégories de canal de tranmission : propagation libre (ex : Hertzien, satellite) et guidée (câble coaxial, fibre optique).
La modulation se fait par multiplication du signal informatif, le signal modulant, par le signal porteur qui est adapté au canal de transmission. Le signal résultat de cette multiplication est appelé signal modulé. La démodulation se fait à l'aide d'un détecteur de crête. Pour cette dernière, on lui préfèrera une démodulation synchrone (suggestion Franck Gobet).
Entre le multiplieur et le filtre passe-bas, le signal possède les fréquences suivantes : 0, 2, 2+/- et +/-. Le filtre passe-bas permet donc de ne garder que .
Voir [2] page 60.
signal modulant :
est l'offset, qui modifie la moyenne du signal.
signal porteur :
ou kHz Hz
Modulation à multiplication de signaux : le multiplieur analogique effectue le produit de par . On obtient :
avec
m est le taux de modulation de s(t) qui donne la variation de son amplitude,
Ci-dessous,
On obtient pour s :
avec
Il y a donc dans le signal modulé (s(t)) trois pulsations, une raie principale et deux raies latérales, ce qui occupe de largeur spectrale. Question : Faire le lien avec la limitation du nombre de raies principales dans un signal pour éviter un chevauchement. Voir ci-dessous une illustration :
Le détecteur de crête (démodulateur à diode) et le démodulateur synchrone avec récupération de la porteuse sont bien détaillés dans [3] p.146 à 149. Voir aussi [5] p.209.
On veut donc un de s. Prendre R=4kOhm et C=80nF par exemple.
Ici, on fabrique un signal numérique, c'est-à-dire une suite de 0 et de 1 qui représente par exemple plusieurs octets. Cela correspond à 0V et 1V. Ce signal est donné à un VCO qui fournira un signal dont la fréquence sera dépendante de la tension appliquée (Voltage Controled Oscillator). La modulation en fréquence est réalisée. Ensuite, on multiplie le signal modulé et un signal dont la fréquence est celle de la porteuse (grace à une boucle à verrouillage de phase - en anglais PLL pour Phase Locked Loop) et on filtre en passe-bas pour récupérer le signal modulant. La forme en créneau de départ ne sera pas parfaitement restituée à cause du filtre. La FFT d'un créneau est une somme de fréquence, et le passe-bas coupe à un moment donné cette somme ne permettant pas la reconstruction parfaite du créneau.
Le branchement à l'entrée de chaque VCO se fait à l'arrière de l'appareil, sur VCF input. La sortie du VCO est le output habituel.
Voir [2] p.69 section 4.3, [3] p.164 chapitre 12, et les équations ci-dessus et dessous.
si et si
avec si et
si
Attention, contrairement à cette image, dans le montage la haute fréquence est associé à une basse tension, et la basse fréquence à une haute tension.
Logiciel Synchronie : rentrer dans une colonne du tableur une suite de 0V et de 1V. Il y a 200 cellules à remplir, sinon Synchronie supposera la valeur 0V par défaut. Cela constitue notre variable, qui simule une suite d'octet.
Dans les paramètres, choisir la nouvelle variable en "Sorties".
Exécuter le signal en "Sorties analogiques". Choisir 1000 ms, 1 répétition, signal permanent. Cela enverra en continu le signal, en le répétant une fois toutes les 1s. Voici une impression écran de Synchronie :
Le signal est transmis sur la carte d'acquisition Sysam. Visualiser sur l'oscilloscope le signal "pseudo-carré" issu de la carte.
Le VCO, pour Voltage Controlled Oscillator, envoie un signal sinusoïdal dont la fréquence est fonction de la tension appliquée. On va tracer la fonction fréquence = fonction(tension).
Choisir une fréquence du GBF1 d'environ kHz par exemple. Cela signifie que pour une tension nulle, la fréquence sera . Puis activer le mode SWEEP puis EXT afin de lancer la fonction VCO. Visualiser le signal à l'oscilloscope.
Dans Synchronie par exemple, créer plusieurs colonnes avec des valeurs constantes en tension : de -2V à 2V par pas de 1. Cela constitue 5 signaux constants en tension. Exécuter le signal et mesurer la fréquence du signal généré par le VCO. On obtiendra des fréquences autour de . Attention à respecter une bande de tension permise par le VCO (voir documentation), sinon la fréquence générée ne sera plus proportionnelle à la tension! En pratique, éviter de tomber sur une fréquence trop faible.
%matplotlib inline
import numpy as np
import pylab as plt
from scipy.optimize import curve_fit
# Création des listes de données
X_tab = [-2,-1,0,1,2] # unité : V
errX_tab = [0,0,0,0,0]
Y_tab = [2273,1775,1250,750,250] # unité : Hz
errY_tab = [10,25,5,10,1]
# Conversion de ces listes en tableaux (pour traiter les données)
X_tab = np.array(X_tab)
Y_tab = np.array(Y_tab)
errX_tab = np.array(errX_tab)
errY_tab = np.array(errY_tab)
# Définition de la fonction pour le calcul du chi^2 et du chi_réduit^2
# Bally, Berroir 2008, Incertitudes expérimentales
# chi_reduit^2 ~ 1 : bon accord avec le modèle
# chi_reduit^2 >> 1 : modèle non validé
# chi_reduit^2 << 1 : incertitudes surestimées ?
def chi2(sigma_exp,y_th,y_exp,nb_param):
chi2 = sum(((y_th - y_exp)/sigma_exp)**2)
nDOF = len(y_exp) - nb_param
chi_red_2 = chi2/(nDOF)
return chi2,chi_red_2
# Régression linéaire sur Y=f(X)
def flin(x,a,b):
return a*x+b
p, covm = curve_fit(flin,X_tab,Y_tab)
a,b = p
# Compute chi2
chi2_lin,chi_red_2_lin = chi2(errY_tab,flin(X_tab,a,b),Y_tab,2)
# Correction des barres d'erreur (kesako? à voir...)
erra, errb = np.sqrt(np.diag(covm)/chi_red_2_lin)
# Figure
fig, ax = plt.subplots(1)
ax.errorbar(X_tab,Y_tab,errY_tab,errX_tab,fmt='.',label="données")
Y_fit = flin(X_tab,a,b)
ax.plot(X_tab,Y_fit,label="ajustement")
textstr = "y(x) = a*x + b\n\
a = %.0f +/- %.0f \n\
b = %.0f +/- %.0f \n\
chi_red_2 = %.2f" %(a,erra,b,errb,chi_red_2_lin)
ax.text(0.45, 0.95, textstr,transform=ax.transAxes, fontsize=12, verticalalignment='top')
ax.legend(loc=8)
plt.xlabel("$tension \, (V)$", fontsize=16)
plt.ylabel("$frequence \, (Hz)$", fontsize=16)
plt.show()
On obtient la fréquence générée par le VCO en fonction de la tension appliquée en entrée : 1260 Hz - 507*tension, à comparer aux données de la documentation du GBF.
Modifier : prendre 100 kHz. On aura un signal carré de meilleure qualité.
Choix du gabarit du filtre : on veut . Choisir par exemple 100 et 180 nF.
Le GBF2 est aussi configuré en VCO avec une de même valeur que celle pour le GBF1.
Il peut être nécessaire d'aider la PLL à synchroniser les fréquences. Pour cela, modifier légèrement la fréquence du GBF1 jusqu'à synchronisation des deux GBF.
Visualiser le signal numérique modulant et le signal démodulé à l'oscilloscope.
On remarque un signal non parfaitement carré. Le filtre passe-bas a coupé des fréquences hautes. Le carré est une somme de sinusoïdes de fréquences différentes (, , ...). La troncature ne permet pas de reconstituer le signal avec une forme "parfaite". Voir [4] p.371.
Parmi les canaux de transmission, étudions le câble coaxial. L'adjectif coaxial vient du fait qu'il possède deux conducteurs selon le même axe : un fin fil de cuivre central appelé "âme", et une tresse de fils de cuivre très fin en forme de cylindre. Les deux conducteurs sont isolés par un diélectrique. Le tout est recouvert d'une gaine. La tresse joue le rôle de cage de Faraday ce qui limite les perturbations électromagnétiques de l'extérieur. Cependant si une perturbation existe, elle devrait toucher l'âme et la tresse à la fois. La tension prise étant celle entre l'âme et la tresse, la mesure éliminera naturellement l'effet de la perturbation. La tension se propage dans le câble, on parle d'onde de tension. [5] p.358 et 384 et [6] p.439
Piège dans ce montage ! Bien prendre en compte les impédances pour gérer les réflexions !
Envoyer une impulsion qui fera l'aller retour dans le cable. Période : s et rapport cyclique proche de 2%.
import numpy as np
d = 2*(49.70+31.10+30.60) # m
t = 1.14e-6 # s
Dt = 0.01e-6 # m
Dd = 0.01*2 # s
v = d/t # m/s
Dv = np.sqrt((d/t**2*Dt)**2 + (Dd/t)**2) # m/s
"v = %.2e +/- %.0e m/s" % (v,Dv)
La vitesse est plus faible que celle d'une onde EM dans le vide. Attention, cela n'est à priori pas dû à des réflexions comme dans une fibre optique. La permittivité du diélectrique, i.e. du matériau isolant non magnétique, n'est pas égale à celle du vide . pour le polyéthylène. Cela donne une célérité telle que m.s. Voir [8].
Voir [5] p.370
Réaliser le branchement suivant :
Réflexion 1 sur l'oscillo =
Réflexion 2 en bout de cable =
Envoyer un signal sinusoïdal. Mesurer les amplitudes des signaux transmis et réfléchis. Calculer l'atténuation
Les mesures sont faites à 100 kHz.
%matplotlib inline
import numpy as np
import pylab as plt
from scipy.optimize import curve_fit
# Création des listes de données
X_tab = [30.6,49.70,61.7,111.40] # unité : m
errX_tab = [0.01,0.01,0.01,0.01]
Ye_tab = [4.86,4.94,5.00,5.22] # unité : V
errYe_tab = [0.02,0.02,0.02,0.02]
Ys_tab = [4.58,4.52,4.50,4.38] # unité : V
errYs_tab = [0.02,0.02,0.02,0.02]
# Conversion de ces listes en tableaux (pour traiter les données)
X_tab = np.array(X_tab)
Ye_tab = np.array(Ye_tab)
Ys_tab = np.array(Ys_tab)
errX_tab = np.array(errX_tab)
errYe_tab = np.array(errYe_tab)
errYs_tab = np.array(errYs_tab)
Y_tab = 20*np.log10(Ye_tab/Ys_tab)
errY_tab = np.sqrt((errYe_tab/Ys_tab)**2+(errYs_tab*Ye_tab/Ys_tab**2)**2)
# Définition de la fonction pour le calcul du chi^2 et du chi_réduit^2
# Bally, Berroir 2008, Incertitudes expérimentales
# chi_reduit^2 ~ 1 : bon accord avec le modèle
# chi_reduit^2 >> 1 : modèle non validé
# chi_reduit^2 << 1 : incertitudes surestimées ?
def chi2(sigma_exp,y_th,y_exp,nb_param):
chi2 = sum(((y_th - y_exp)/sigma_exp)**2)
nDOF = len(y_exp) - nb_param
chi_red_2 = chi2/(nDOF)
return chi2,chi_red_2
# Régression linéaire sur Y=f(X)
def flin(x,a,b):
return a*x+b
p, covm = curve_fit(flin,X_tab,Y_tab)
a,b = p
# Compute chi2
chi2_lin,chi_red_2_lin = chi2(errY_tab,flin(X_tab,a,b),Y_tab,2)
# Correction des barres d'erreur (kesako? à voir...)
erra, errb = np.sqrt(np.diag(covm)/chi_red_2_lin)
print(a,erra,b,errb)
# Figure
fig, ax = plt.subplots(1)
ax.errorbar(X_tab,Y_tab,errY_tab,errX_tab,fmt='.',label="données")
Y_fit = flin(X_tab,a,b)
ax.plot(X_tab,Y_fit,label="ajustement")
textstr = "y(x) = a*x + b\n\
a = %.4f +/- %.4f \n\
b = %.3f +/- %.3f \n\
chi_red_2 = %.2f" %(a,erra,b,errb,chi_red_2_lin)
ax.text(0.05, 0.95, textstr,transform=ax.transAxes, fontsize=12, verticalalignment='top')
ax.legend(loc=8)
plt.xlabel("$distance \, (m)$", fontsize=16)
plt.ylabel("$attenuation \, (dB)$", fontsize=16)
plt.show()
On obtient une atténuation de (1.24+/-0.01) dB par 100 m. Ce phénomène, général, devient important sur de très longues distances. On trouve alors, comme pour traverser l'atlantique, des répéteurs qui vont amplifier le signal.
On choisit une longueur de cable, et on modifie la fréquence du signal entrant. On mesure les amplitudes des signaux entrant et sortant. Ici, et .
%matplotlib inline
import numpy as np
import pylab as plt
from scipy.optimize import curve_fit
# Création des listes de données
X_tab = [100e3,10e3,1e6,10e6,1e3,100,10] # unité : Hz
errX_tab = [0,0,0,0,0,0,0]
Ye_tab = [4.94,4.86,5.66,4.92,4.82,5.02,4.18] # unité : V
errYe_tab = [0.02,0.02,0.02,0.02,0.02,0.02,0.02]
Ys_tab = [4.52,4.56,4.30,3.40,4.56,4.80,3.98] # unité : V
errYs_tab = [0.02,0.02,0.02,0.02,0.02,0.02,0.02]
# Conversion de ces listes en tableaux (pour traiter les données)
X_tab = np.array(X_tab)
Ye_tab = np.array(Ye_tab)
Ys_tab = np.array(Ys_tab)
errX_tab = np.array(errX_tab)
errYe_tab = np.array(errYe_tab)
errYs_tab = np.array(errYs_tab)
Y_tab = 20*np.log10(Ye_tab/Ys_tab)
errY_tab = 20/np.log(10)/Y_tab*np.sqrt((errYe_tab/Ys_tab)**2+(errYs_tab*Ye_tab/Ys_tab**2)**2)
# Figure
fig, ax = plt.subplots(1)
ax.errorbar(X_tab,Y_tab,errY_tab,errX_tab,fmt='.',label="données")
ax.legend(loc=2)
ax.set_xscale('log')
plt.xlabel("$frequence \, (Hz)$", fontsize=16)
plt.ylabel("$attenuation \, (dB)$", fontsize=16)
plt.show()
L'atténuation augmente avec la fréquence du signal d'entrée de façon non linéaire.
Aujourd'hui, l'information transmise est essentiellement numérique. Atténuation et vitesse de transmission sont des paramètres importants mais nous n'avons pas parlé de débit de transmission. Pour augmenter le débit, les technologies modernes utilisent du multiplexage. La famille des xDSL (ADSL, VDSL qui différent par la nature symétrique ou non du débit entrant et sortant, et par la valeur de ce débit) utilise la plage de fréquence non utilisée par la voix sur les lignes téléphoniques. Sur cette plage libre, 255 canaux (donc 255 porteuses) d'environ 4 kHz de large se partagent une bande passante de 1.1 MHz. L'ADSL2+ utilise une bande passante de 2.2 MHz, pour 511 canaux. La technologie VDSL2 passe cette bande à 12 MHz. Aujourd'hui, la transmission par fibre optique est privilégiée pour augmenter le débit et diminuer l'atténuation. On passe de 100 Mbit/s (VDSL2) à 10 Gbit/s. Il existe ce qu'on appelle le multiplexage en longueur d'onde pour les fibres. Le débit devient alors impressionant, de l'ordre de 10 Tbit/s. [7]
[1] Perez, Cap Prépa, Physique MPSI-PCSI-PTSI, Pearson Education, 2009 (seulement pour un exercice en modulation démodulation d'amplitude en section III p.392)
[2] Cottet, Traitement du signal, Dunod, 2011 - Ce livre contient principalement la théorie
[3] Manneville, Esquieu, Electronique - Systèmes bouclés linéaires, de communication et de filtrage, Dunod, 2001 - Ce livre contient la théorie et les montages
[4] Tec&Doc Compétences Prépas PCSI 2013, Chapitre 15 : Filtrage d'un signal périodique
[5] Bellier et al., Physique expérimentale aux concours de l'enseignement - Electricité..., Dunod, 2012
[6] Vidal, Prépas Sciences MP MP* Physique, Ellipses, 2010 - Pour quelques infos sur le câble coaxial
[7] Panorama de la physique, Belin pour la science, 2007 - En conclusion sur la transmission optique à haute capacité.
[8] H Prépa, Ondes, 2e année, édition 2004 - Application 2 p.63 + chapitre entier sur le câble coaxial