How to decide on the sweep time of FMCW radar?
19 ビュー (過去 30 日間)
古いコメントを表示
I am using the object phased.FMCWWaveform to generate a FMCW signal using sawtooth modulation.How should I decide on the sweep time and sample rate? Sweep Bandwidth=150 MHZ Center frequency = 24GHz Range resolution=1 meter
0 件のコメント
回答 (1 件)
Honglei Chen
2016 年 10 月 31 日
The sample rate is determined by the signal bandwidth. If you want to simulate the propagated signal, then for a complex baseband signal with a sweep bandwidth of 150 MHz, you need a sample rate of at least 150 MHz. As to the sweep time, it needs to provide enough overlap between the original signal and the echo returned from a target at maximum range so there is enough energy in the dechirped signal. Some literature suggests the sweep time between 5-6 times of the delay corresponding to the maximum range.
HTH
2 件のコメント
Tobias Gnaegi
2020 年 4 月 13 日
Why does the sampling rate needs to be at least the same as the sweep bandwidth? It is clear to me that depending on the sampling rate the maximum unambiguous range changes. But I don't see why I can't choose a sampling rate that is lower than the sweep bandwitdh. In the following basic example an object is 80 meters away from the radar, but i get peaks around 75 meters and 100 meters. The maximum unambigous range is quite low but the object is still within the limit. When I increase the sampling rate to be equal to the bandwidth, one peak appears at 80 meters and the maximum unambigous range increases. As mentioned before it is clear that the maximum unambigous range changes, but I don't get why there are two peaks at unexpected ranges when the sampling time is lower than the bandwidth.
c = physconst('LightSpeed');
fc = 77e9; % operating frequency [Hz]
prf = 40e3; % pulse repetition frequency [Hz]
bw = 150e6; % sweep bandwidth [Hz]
fs = 6e6; % sampling frequency [Hz]
tm = 1/prf; % sweep time [s]
wav = phased.FMCWWaveform('SampleRate',fs,'SweepTime',tm,...
'SweepBandwidth',bw);
tx = phased.Transmitter('PeakPower',1,'Gain',25);
rx = phased.ReceiverPreamp('Gain',100,'NoiseFigure',10,'SampleRate',fs);
env = phased.FreeSpace('PropagationSpeed',c,'OperatingFrequency',fc,...
'TwoWayPropagation',true,'SampleRate',fs);
x_wav = tx(wav()); % transmit signal
xt = env(x_wav,[0;0;0],[80;0;0],[0;0;0],[0;0;0]); % propagate signal
xr = rx(xt); % receive signal
xd = dechirp(xr,x_wav); % dechirp signal
XD = fft(xd,[],1); % frequency representation
N = length(XD(:,1));
f = fs*(0:N-1)/N; % calculate frequencies corresponding to FFT
rngGrid = c*f/(prf*2*bw); % relate frequencies to ranges
stem(rngGrid,abs(XD)); % plot power at ranges
xlabel('Range [m]')
Honglei Chen
2020 年 4 月 20 日
編集済み: Honglei Chen
2020 年 4 月 20 日
There are several things in play here so hopefully I can explain them below.
First of all, sampling at bandwidth is determined by the sampling theorem. You need to sample at that rate to be able to recover the original signal,
Now you are right that in general we don't need somehing that high to get something within about 100 meters but that is when you process the echo. In this simulation script, you are actually doing two things. The first part is simulating the echo and the second part is processing the echo. In real world, the first part is often done with analog components but since we are trying to simulate it, we will have to simulate it with the sufficient sampling rate. It is true that in real application, you can sample the analog echo with a lower sampling rate for processing, and that's why in the shipping example, we actually use a decimation filter to reduce the sampling rate before we do the processing. In summary, the samling rate of bandwidth is required for the echo simulation, but you can alleviate that requirement for processing.
BTW the bandwidth is normally set to ensure we can achieve the required resolution. If you don't simulate the echo with that sampling rate, then you will not be able to get that resolution either.
As to the second peak, my guess is that it is because the echo is aliased so there is significant energy at one of the aliased frequencies.
HTH
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!