Gast
#3291667
Hallo,
ich versuche zur Zeit eine PLL in Matlab (ohne Simulink) zu
implementieren, doch erhalte ich irgendwie nicht das gewüschte Ergebnis.
Der Ausgang vom VCO zeigt zwar die richtige Tendenz, aber es ist leider
kein richtiger Sinus zu sehen. Es wäre echt nett, wenn jemand mal über
den Code schauen könnte. Der Code ist direkt in Matlab ausführbar.
Danke!
Gruß
Sam
% Signalerzeugung
f1=2000;
T1=1/f1;
N=5000;
fs=N/T1;
T=1/fs;
t=(0:T:2*N*T-T);
signal=sin(2*pi*f1*t);
% Modulierter Träger
fc=40000;
carrier_mod=cos(2*pi*fc*t+10*signal);
% Initalisierung
e=zeros(1,length(t)); %Ausgang Phasendetektor
u=zeros(1,length(t)); %Ausgang Filter
y=zeros(1,length(t)); %Ausgang VCO (nur hase)
y_vco=zeros(1,length(t)); %Ausgang VCO (Signal)
e(1)=0;
u(1)=0;
y(1)=0;
y_vco(1)=0;
% Parameter
T1=180e-6;
T2=1.21e-3;
f_vco=40000;
% Loop
for k=2:length(carrier_mod)
%Phasendetektor
e(k)=carrier_mod(k-1)*y_vco(k-1);
%Schleifenfilter=> F(s)= (1+T1*s)/(1+T2*s)
u(k)=T/T2*(u(k-1)*(T2/T-t1)+e(k)*(t2+T1/T)-e(k-1)*T1/T);
%VCO (nur Phase)
y(k)=y(k-1)+2*pi*1e6*u(k)*T;
%VCO (Signal)
y_vco(k)=cos(2*pi*f_vco*T+y(k));
end
figure(99);
subplot(3,1,1);plot(signal);ylabel('Signal');
subplot(3,1,2);plot(carrier_mod);ylabel('Modulierter Träger')
subplot(3,1,3);plot(y_vco);ylabel('VCO Ausgang')

