近年来,随着物联网、智能安防及自动驾驶等领域的快速发展,对实时、非接触式目标检测与距离测量技术的需求日益增长。FMCW(Frequency Modulated Continuous Wave,调频连续波)雷达由于能够同时测距与测速、具有低功耗、体积小等优点,成为了业界研究的热点。
所以我打算参加方向二:安全监测,计划打造一个属于自己的雷达系统!
本项目选用了CY8CKIT-062S2-AI开发平台,
该平台具备丰富的外设接口和高性能微控制器,为嵌入式信号处理提供了理想的软硬件支持。并且板卡上集成了英飞凌的BGT60TR13C作为雷达前端模块,板卡上还有USB接口和调试器,是一个非常完整的开发系统。
如上图是BGT60TR13C的内部框图,该模块内部集成了专用的射频电路和ADC,能够直接输出经过初步调理的数字信号,简化了系统设计同时提升了整体性能。它集成了一个发送端和三个接收端,可以实现相位差测量。下图就是本次板卡的核心功能模块的连接关系,使用PSoC MCU作为主控制器和雷达芯片交换数据和指令,然后把计算后的数据通过USB发送到上位机。
原理
FMCW雷达的核心思想在于利用发射信号频率的线性调制来携带时间信息。
如上图,雷达发射器产生一个频率随时间线性上升(或呈三角波调制)的连续波信号,也称为“chirp”啁啾信号。这种信号的特点是在一个调制周期内,频率从初始值逐渐增加到最高值再回落,也有单向调制,只从低频增加到高频,然后间隔一段时间后重复发送扫描信号。
单次chirp 信号数学表达式为:
其中
- A 为信号幅度,
- f0 为起始频率,
- S 为调频斜率(Hz/s),
- t 为时间。
假设目标位于距离 R 处,当该调制信号遇到目标时,由于传播存在一定延时,反射回来的信号相较于发射信号会延后τ秒。
其中 c 为光速。则回波信号可表达为
其中 Ar 为回波幅度,包含了目标反射衰减。,这里的公式可以近似的理解为:由于信号从发送到接收需要一定的时间,所以接收到的信号是τ秒以前的信号,即发送信号必然与接受信号有频率差。
将接收到的回波信号与当前发射信号进行混频(乘法运算,详细推导见附录A),根据三角函数中积化和差关系可知,会产生一个高低频组成的“拍频”信号,经过低通滤波后得到的拍频信号,其频率差Δf正比于延时τ,即
其中 S 为调频斜率(Hz/s)。通过计算该拍频信号的频率,可以直接反推出目标的距离。
软件操作
软件使用来自英飞凌的ModusToolbox工具,由于是官方的板卡,所以软件内集成了相关的示例,按照如下的步骤就可以生成测试案例,可以最快的速度验证传感器工作正常。
但是我在接下来的项目中由于需要对原始数据进行处理,尤其是根据上文的原理可知,传感器接收到的信号中,不同强度的频率分量,代表了不同距离处不同的物体对发射信号的反射强度不同,所以我选择建立一个空白的工程,并手动移植相关的传感器驱动。
按照上图可以在自己的工程中添加驱动,但是要完整的工作,还需要设置传感器的寄存器,如下文:传感器的扫频范围是500 MHz(61.02G~61.48G),扫描时间为7*10^-5 秒。
#define XENSIV_BGT60TRXX_CONF_DEVICE (XENSIV_DEVICE_BGT60TR13C)
#define XENSIV_BGT60TRXX_CONF_START_FREQ_HZ (61020099000)
#define XENSIV_BGT60TRXX_CONF_END_FREQ_HZ (61479903000)
#define XENSIV_BGT60TRXX_CONF_NUM_SAMPLES_PER_CHIRP (128)
#define XENSIV_BGT60TRXX_CONF_NUM_CHIRPS_PER_FRAME (16)
#define XENSIV_BGT60TRXX_CONF_NUM_RX_ANTENNAS (3)
#define XENSIV_BGT60TRXX_CONF_NUM_TX_ANTENNAS (1)
#define XENSIV_BGT60TRXX_CONF_SAMPLE_RATE (2352941)
#define XENSIV_BGT60TRXX_CONF_CHIRP_REPETITION_TIME_S (6.99625e-05)
#define XENSIV_BGT60TRXX_CONF_FRAME_REPETITION_TIME_S (0.100057)
#define XENSIV_BGT60TRXX_CONF_NUM_REGS (38)
#if defined(XENSIV_BGT60TRXX_CONF_IMPL)
const uint32_t register_list[] = {
0x011e8270UL, 0x03088210UL, 0x09e967fdUL,
0x0b0805b4UL, 0x0d1027ffUL, 0x0f010700UL,
0x11000000UL, 0x13000000UL, 0x15000000UL,
0x17000be0UL, 0x19000000UL, 0x1b000000UL,
0x1d000000UL, 0x1f000b60UL, 0x2113fc51UL,
0x237ff41fUL, 0x25006f7bUL, 0x2d000490UL,
0x3b000480UL, 0x49000480UL, 0x57000480UL,
0x5911be0eUL, 0x5b677c0aUL, 0x5d00f000UL,
0x5f787e1eUL, 0x61f5208aUL, 0x630000a4UL,
0x65000252UL, 0x67000080UL, 0x69000000UL,
0x6b000000UL, 0x6d000000UL, 0x6f093910UL,
0x7f000100UL, 0x8f000100UL, 0x9f000100UL,
0xad000000UL, 0xb7000000UL,
};
接下来是对传感器信号的采集数据处理,在主循环中不断采集信号并进行计算
ifx_range_cfft_f32(rawframe2vel_Data[0][0],1,NULL,XENSIV_BGT60TRXX_CONF_NUM_SAMPLES_PER_CHIRP,1);
arm_cmplx_mag_f32(rawframe2vel_Data[0][0], mag_Data[0][0], XENSIV_BGT60TRXX_CONF_NUM_SAMPLES_PER_CHIRP);
上述的函数,对信号数组进行了去除直流分量,函数加窗,FFT变换以及对变换后的数据求幅值。
具体程序流程如下图所示
现象及演示
如下图,将板卡通过USB接口连接到USB上,这里我连接了两个USB线,白色线用于调试,可以实时在IDE中查看变量;黑色线是USB通信线,程序读取雷达数据后,打包成USB数据,并发送到上位机。
我使用了VOFA+上位机,可以非常方便使用串口数据示波器查看计算结果,下图分别为时域的原始数据和变换后的幅值数据。
但是数据还是有点抽象,所以在这里我选择了DeepCraft Studio工具,它可以对数据进行处理和可视化,并且通过图形化配置简化了数据处理的流程,如下图就是信号处理过程
布置完处理过程就可以采集并处理数据:
如图可以看出,将板卡立放在桌面上,左下波形代表近处存在物体,右侧波形代表远处有物体(此时我从桌边站起并远离到墙边)。
实验结果分析
本文基于 CY8CKIT-062S2-AI 平台,设计并实现了一套采用单向 chirp 的 FMCW 雷达物体检测系统,系统通过发射单向线性调频信号,经混频和 FFT 分析实现目标距离测量。并且由于当前实验环境场地受限未能实现速度测量,只实现了近处测量。实际系统不能只用单向,进一步推导可以知道,如果物体在移动的话由于多普勒效应会产生误差,但是由于MCU存储空间限制和软件配置还有一点问题,并未能实现双向扫频。但是可以留给未来的自己,更好的完善功能!
竞赛心得体会
通过竞赛的方式强迫自己动起来,让自己在很短的时间内学会一项新的技术方案。
也非常感激能参加这次活动,从一开始的直播活动中就受到了很多启发,让我有想法去进行实践。
非常感谢电子森林和贸泽电子提供的本次竞赛机会!
附录A:混频处理与拍频信号的推导
在FMCW雷达中,将发射信号与接收到的回波信号混频(即相乘),经过低通滤波后,得到的差频信号(也称拍频信号)中主要包含两个信号相位的差异。为了求出这一差值,我们首先写出两信号的相位:
- 发射信号相位:
- 接收信号相位(记 为延时后的时刻):
混频后理想获得的差相位为
将 展开:
因此,差相位为
由于 τ 通常较小,项 相对可以忽略(或在后续处理中被校正),因此近似有
混频后低通滤波主要保留随时间变化的部分,即取
为了得到拍频信号的瞬时频率,我们对差相位关于时间求导:
可得拍频信号频率和正比于延时τ,也就正比于距离R