Bonjour,

Je vous propose un nouvel élément à utiliser : Modulation analogique FM

le code modélise une chaine de transmission d'un signal analogique en utilisant la modulation FM.
1-modulation
signal_informatif ---->integrateur---->modulateurFM--->signal modulé

2-démodulation

signal modulé--->dérivateur-->redresseur-->fitrepasbas--->elimination composante continu
on élimine la composante continue en descriminant la moyenne du signal


******************Fonction Spectre**********************
cette fonction calcule le fft d'un signal en lui transmet deux arguments le nombre d'échantillons et le signal .

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
function sig_out=spectre(sig_inp,fft_size)
%**********transformation************
sig_out=fft(sig_inp,fft_size);
sig_out=abs(sig_out)/fft_size;
sig_out=sig_out(1:fft_size/2+1);
**************************Script de modulation **************

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
clear all; clc; clear;
fs =100e3; %frequence d'echantillonnage
fft_size=512;
dt=1/fs; % pas d'échantillonnage
t=0:dt:0.01; % axe du temps
t_dif=t(2:end); 
% parceque la fonction diff retire un échantillon du signal on modifie l'axe de temps pour pouvoir représenter le signal à la sortie du dérivateur%
f=fs*(0:fft_size/2)/fft_size; % axe de fréquence

%Signal informatif
fimax=3400;
u1=1;
Sig_inf=u1*cos(2*pi*fimax*t);


%Modulation de frequence
kf=1.5;  up=2 ; fp= 15000;
Sig_int=cumsum(Sig_inf); % la sortie de l'integrateur
Sig_int=Sig_int/max(Sig_int); % normalisation du signal intégré
Sig_fm=up*cos(2*pi*fp*t+kf*Sig_int); % signal modulé en FM
subplot(211);
plot(t*1000,Sig_inf,'b');grid on ; hold on;
plot(t*1000,Sig_fm,'r');grid on ; hold on;
xlim([0 2]);

Sp_fm = spectre (Sig_fm,fft_size);
subplot(212); plot(f/1000,Sp_fm); grid on; hold on;
xlabel('frequence (KHZ)');

%Demodulation FM

%Derivation

Sig_der=diff(Sig_fm);
figure;
subplot(211);
plot(t_dif*1000,Sig_der,'b');grid on;hold on;
xlim([0 2]);

%Spectre du signal derivé

Sp_der = spectre (Sig_der,fft_size);
subplot(212); plot(f/1000,Sp_der); grid on; hold on;
xlabel('frequence (KHZ)');

%Redressement
Sig_red=abs (Sig_der);
figure;
subplot(211);
plot(t_dif*1000,Sig_red,'b');grid on;hold on;
xlim([0 2]);


%Spectre du signal redressé

Sp_red = spectre (Sig_red,fft_size);
subplot(212); plot(f/1000,Sp_red); grid on; hold on;
xlabel('frequence (KHZ)');

%Filtrage
[b a]=butter[5,[fimax]*2/fs);
Sig_fil=filtfilt(b ,a,Sig_red);
figure;
subplot(211);
plot(t_dif*1000,Sig_fil,'r');grid on;hold on;
xlim([0 2]);


%Spectre du signal filtré
Sp_fil= spectre(Sig_fil,fft_size);
subplot(212); plot(f/1000,Sp_fil,'r'); grid on; hold on;
xlabel('frequence (KHZ)');

%Elimination de la composante continue
Sig_out=Sig_fil-mean(Sig_fil);
Sig_out=Sig_out*6;
figure;
subplot(211);plot(t*1000,Sig_out,'r');grid on; hold on;
******************************************************
si vous avez besoin de quoi que ce soit je suis là