Other Parts Discussed in Thread: DCA1000EVM
Tool/software:
Hello,
I am currently using the AWR1843BOOST with DCA1000EVM to measure the velocity of moving objects. For signal processing, I am using MATLAB.
The issue I am facing is that the x-axis(velocity) of the velocity graph is limited, allowing us to measure speeds only up to 2.5 m/s. However, we need to measure speeds up to 100 km/h.
From my research, I found that modifying the configuration file might resolve this issue.
Below is our current config file:
[sensorStop
flushCfg
dfeDataOutputMode 1
channelCfg 15 5 0
adcCfg 2 1
adcbufCfg -1 0 1 1 1
profileCfg 0 77 429 7 57.14 0 0 70 1 256 5209 0 0 30
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 4
frameCfg 0 1 16 0 100 1 0
lowPower 0 0
guiMonitor -1 0 0 0 0 0 0
cfarCfg -1 0 2 8 4 3 0 15 1
cfarCfg -1 1 0 4 2 3 1 15 1
multiObjBeamForming -1 1 0.5
clutterRemoval -1 0
calibDcRangeSig -1 0 -5 8 256
extendedMaxVelocity -1 0
lvdsStreamCfg -1 0 1 0
compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
measureRangeBiasAndRxChanPhase 0 1.5 0.2
CQRxSatMonitor 0 3 5 121 0
CQSigImgMonitor 0 127 4
analogMonitor 0 0
aoaFovCfg -1 -90 90 -90 90
cfarFovCfg -1 0 0 8.92
cfarFovCfg -1 1 -1 1.00
calibData 0 0 0
sensorStart
]
Below is our current matlab code:
[
clear dca
dca = dca1000("AWR1843BOOST");
fs = dca.ADCSampleRate * 1e3;
fc = 77e9;
c = 3e8;
lambda = c / fc;
ns = dca.SamplesPerChirp;
nchirp = dca.NumChirps;
sweepSlope = dca.SweepSlope * 1e12;
sweepTime = dca.ChirpCycleTime * 1e-6;
prf = 1 / (2 * sweepTime);
rangeGrid = (0:ns/2-1) * (c / (2 * sweepSlope) * fs / ns);
dopplerGrid = (-nchirp/2:nchirp/2-1) * (prf / nchirp) * lambda / 2;
figure;
subplot(2,1,1);
h1 = plot(dopplerGrid, zeros(size(dopplerGrid)));
title("Speed Spectrum");
xlabel("Speed (m/s)");
ylabel("Magnitude");
ylim([0 10e4]);
grid on;
subplot(2,1,2);
h2 = plot(rangeGrid, zeros(size(rangeGrid)));
title("Range Spectrum");
xlabel("Range (m)");
ylabel("Magnitude");
grid on;
stopTime = 100;
ts = tic;
while (toc(ts) < stopTime)
iqData = dca();
iqData = squeeze(iqData(:, 1, :));
iqData = iqData - mean(iqData, 1);
fftRange = abs(fft(iqData, ns, 1));
fftRange = mean(fftRange, 2);
fftRange = fftRange(1:ns/2);
fftSpeed = abs(fftshift(fft(iqData, nchirp, 2), 2));
fftSpeed = mean(fftSpeed, 1);
set(h1, 'YData', fftSpeed(1:length(dopplerGrid)));
set(h2, 'YData', fftRange(1:length(rangeGrid)));
drawnow;
end
dca.release;
]
Could you advise on which parameters should be modified and how?
Thank you for your support.
Best regards,
HJ