基于多普勒雷达传感器,以STM32单片机为主控芯片,根据不同模块检测距离的不同,使用不同多普勒雷达传感器实现对远近距离车辆行驶速度及方向的测量。

1、基础知识

雷达

雷达英文为Radar,Radio Detection and Ranging的缩写,原意是无线电探测和测距,是用无线电(电磁波)方法发现目标并测定其空间位置的装置。随着雷达技术的发展,现代雷达不仅可以对目标进行定位,还可以测量目标的速度、对目标进行成像甚至测量目标的大小和材料特性。不过,所有利用雷达波来检测物体速度的原理,其理论基础皆源自于“多普勒效应”,
对于雷达的详细介绍请点这里

多普勒理论

波是由频率和振幅所构成,而无线电波是随着物体而移动的,当无线电波在行进的过程中,碰到物体时,该无线电波会被反弹,而且其反弹回来的波,其频率及振幅都会随着所碰到的物体的移动状态而改变。若无线电波所碰到的物体时固定不动的,那么所反弹回来的无线电波其频率是不会改变的。然而,若物体朝着无线电线发射的方向前进时,此时所反弹回来的无线电波会被压缩,因此该电波的频率会随之增加;反之,若物体是朝着远离无线电波方向行进时,则反弹回来的无线电波,其频率则会随之减小。

2、傅里叶变换

我们在绝大多数傅里叶变换的应用都是采用离散傅里叶变换(DFT),更确切的说,是它的快速算法FFT。下面简要介绍一下这些傅里叶变换是什么,有什么联系。

2.1 傅里叶变换(Fourier transform)

一种线性的积分变换,可以理解为一种从时间到频率的变化或其相互转化,把信号从时间域变换到频率域,进而研究信号的频谱结构和变化规律。

关于傅里叶变换的具体讲解可以看下面这篇文章,我觉得讲的还是挺详细的:深入浅出的讲解傅里叶变换(真正的通俗易懂)

2.2 离散傅里叶变换(Discrete Fourier Transform,DFT

指傅里叶变换在时域和频域上都呈现离散的形式。由于傅里叶变换和逆变换都是正负无穷的连续积分,数学上可以根据公式计算,但在计算机上难以实现,因为计算机是一个离散系统,DFT就是用来解决这个问题的,使用计算机这个离散系统进行有限近似计算。

2.3 离散时间傅里叶变换(Discrete Time Fourier Transform,DTFT

无限长离散信号进行傅里叶变换。DTFT中原始信号是无限长的,即使采样后,采样点也是无限个,可以认为周期为无限长,因此它的频谱就趋向于连续,而连续的频谱同样不利于计算机处理,所以频率也要离散化才行,所需要的技术就是DFT,即具有周期特性离散信号的傅里叶级数(就是将无限长的离散信号进行截短至N个采样点,然后将这个N个采样点进行周期延拓,变成周期信号,这样其频率就离散了)

在实际应用中通常采用快速傅里叶变换以高效计算DFT。

2.4 快速傅里叶变换 (fast Fourier transform,FFT),

利用计算机计算DFT高效快速计算方法的统称。能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。

有关DFT和FFT更详细的讲解可以看下面这篇文章:
全面解析傅立叶变换(非常详细)

3、常用两款雷达传感器

接下来我们介绍两款常用的雷达传感器K-LC6和K-MC1。用于测量物体存在、速度、运动方向、距离信息。

K-LC6

24GHz雷达传感器,带VCO窄波束K波段雷达传感器。一种双通道多普勒雷达模块,用于中短距离传感器。适合人和车辆的移动和存在传感器。
探测距离:人>24米;车>62米。(近距离

●该模块包括一个射频低噪声放大器(LNA),以获得最佳的信噪比性能。双中频I和Q允许运动方向检测和高性能信号处理。

K-MC1

24GHz雷达传感器,带VCO窄波束K波段雷达传感器,60贴片多普勒模块,用于远程传感器。
探测距离:人56米;车>150米。(远距离

●模块包括一个射频低噪声放大器和两个47dB中频前置放大器,用于I和Q通道。此功能将显著减少对外部模拟电子设备的需求。对于特殊信号条件应用,提供额外的缓冲混频器直流输出。这大大提高了FSK测距应用的灵活性。


工作原理:K-LC6和K-MC1雷达模块的射频信号的发生与接收是一体的,它利用压控振荡器产生24GHz的射频振荡信号,并经发射通道进行功率放大后,通过微带天线发射出去;发射的射频信号一旦碰到目标,即发生反射,反射信号被接收天线接收,经接收通道的放大和解调,获得零中频信号,并经中频放大器进一步放大,获得一定信噪比的包含目标多普勒速度信息的差拍中频输出。


K-LC6和K-MC1都可以测速,但K-MC1测速的同时还可以测量距离

4、FFT多普勒雷达测速原理

多普勒雷达传感器通过发射和接收射频振荡信号输出包含物体运动速度和方向的模拟电压信号。模块的输出信号经过滤波放大后连接到stm32单片机的AD输入管脚,利用stm32自带的DSP数学库实现复数FFT变换求出多普勒差频,根据差频求出当前物体的速度和方向。

注意雷达模块会输出两路信号,分为实部和虚部,一路信号只能求出速度大小,两路信号才能求出速度的方向。两路信号的同时采样可使用STM32双ADC同时转换模式,并用定时器去触发,通过改变定时器的预装载值去控制当前的采样频率。


模块在远距离时输出的正交信号幅度比较小,想提高模块的检测距离,要加上运算放大电路,另外由于射频模块的输出具有直流偏执,当前我们选择在运放的前端先加上隔直电容并加上电位器进行调零。

代码实现思路
(1)将两路ADC采集的值转换为电压值(0~3.3V)
(2)对电压值求平均值,然后电压值减去平均值(除去直流分量)
(3)利用arm_cfft_init_f32()和arm_cfft_f32)函数进行复数FFT运算,将数据从时域转为频域
(4)利用arm_cmplx_mag_f32()函数得到每一频率点对应的幅值
(5)利用arm_max_f32()函数得到最大幅度值和对应下标频率。最大幅值对应下标在前半部分和后半部分代表不同的方向:前半部分为正方向,后半部分为负方向
(6) 根据最大幅度值对应的下标即可求出速度