电赛解析:一手等效采样,一手FFT测频,稳当拿国一(A题国一)

首页-达尔闻    全部    电赛解析:一手等效采样,一手FFT测频,稳当拿国一(A题国一)

今天要分享的是A题方案解析,来自湖南理工学院的凌俊、王淏翔、唐泽群,恭喜他们取得了国一的成绩。首先,来看下他们的项目介绍与演示:

观看视频>>


我们之前也分享过武汉理工大学的A题方案,可以对比看看这两个国一方案的不同之处。点击回看:信号题FFT怎么做误差小频带宽?顺序采样是绝招(A题国一)

 

方案实现

1)主控的选择

由于这道题只限制使用TI的MCU,而我们熟知TI的MCU只有MPS430、MSP432以及DSP C2000系列。DSP C2000系列的开发板的采样率是这三款MCU中最高的,但是由于我们从未有使用过此类开发板的经验,所以只能放弃;而MSP430系列的开发板采用率又太低,不足以满足本题的需求,所以最终我们选择了MSP432开发板作为我们的主控。

2)采样方式的选择

题目要求测量信号基频的最高频率为100KHz,最高测量至5次谐波,由采样定理得采样频率至少要达到1MHz,这对ADC的要求不低。虽然MSP432片内ADC能到达这样高的采样率,但对于频率更高的信号就有些不足了。

因此我们对高于50KHz信号采用欠采样的方式(在本文中也指等效采样)即在一个或多个周期内等间隔抽取少量样本,最后将多个抽取的样本集合到同一个周期内还原,这种方式我们最初是参考了2007年电赛C题作品,并且在STM32上也曾使用过此方法,因此我们对此方案比较有把握,最终测量信号频率能达到498KHz。

图 1 系统框图


 

硬件电路设计

1)量程切换电路

本题中输入信号峰峰值电压范围为30mV~600mV。如果直接使用ADC对输入信号进行采集,当输入信号幅度较小时,势必会导致测出的THD误差较大。针对上述情况,我们采用了继电器实现的量程切换电路实现两种不同增益的选择。当输入信号幅度较小时,单片机控制继电器切换至高增益的一路进行输出;当输入信号幅度较大时,单片机控制继电器切换至低增益的一路进行输出。这样就避免了因输入幅度过小导致的测量误差。电路图如下图2所示。

2)直流偏置与输入缓冲电路

本系统片内 ADC 输入电压范围为 0~3.3V,为了防止输入信号放大倍数过大从而超过ADC的量程输入导致烧坏ADC,所以我们最后一级运放采用3.3V供电从而保护ADC。同时为了保证输入信号在 ADC 输入要求范围内,我们设计了直流偏置电路将信号抬升后再送至单片机采集,这样避免了因ADC采集不到输入信号的负半周期从而导致测量的THD误差较大。电路图如下图3所示。

 

软件程序设计

1)主程序设计思路

软件部分主要完成系统初始化、按键的扫描等人机交互管理任务、根据不同的输入信号进行量程切换控制、ADC数据采样以及失真度分析、数据显示与发送等。系统软件流程图如图4所示。

2)失真度与幅度测量

本系统的核心算法是测量输入波形的总谐波失真度。计算方法:首先采用AP-FFT算法提取待输入信号的频率;然后根据输入信号频率调整采样率,对小于50KHz的信号进行直接采样,而大于50KHz的信号使用欠采样方式采集256个波形数据。最后采用基2-FFT,获得各次谐波的幅度数据并计算该波形的谐波失真度信息,如图5所示。

3)数据显示与发送

图6为数据显示与发送。通过LCD屏显示输入信号的THD值、一个周期波形、基波与谐波的归一化幅值,同时通过Wi-Fi实时传输参数信息到手机上显示。

 

APP设计

上位机App采用Qt开发,主要实现两大功能:一是数据的传输,我们使用到了UDP协议,使用到了QudpSocket等类;二是数据显示,绘制波形和显示参数用到了Qchart等类。下位机首先通过MSP432配置数据帧后再通过串口传输到WIFI模块,WIFI模块通过UDP协议发送给上位机校验、解析,最终将各项参数显示到手机上。

由于在赛前训练时,我们已经能熟练使用App实现网络通信和波形显示等功能,因此在比赛时我们就直接使用之前训练时的工程作为模版进行开发,最终顺利地完成了App的设计,节省了宝贵的时间。

 

调试过程

最开始我们的测频方式采用边沿捕获测频。这种测频方法我们在赛前训练的时候用过,所以在比赛刚开始的时候,我们就直接选中此方案进行测频。当我们把比较器硬件电路做出来后进行测试的时候,发现如图8对于一些“奇特”的信号进行测频时,测出的频率与输入基频误差较大,迫不得已只能更换测频的方式,最终选用FFT测频方式解决了此类问题。比赛过程中我们共用了一天时间才推翻了最开始的测频方案,算是我们比赛过程中踩过最大的坑了。

对于运放芯片的选型,我们选择OPA350对信号进行放大。当输入信号为正弦波的时候,放大电路工作正常。但当我把输入信号变成方波时,输出信号的上升沿出现如图很明显的振铃现象,振荡的频率约为11MHz。这个振铃现象的出现严重的干扰了系统THD的测量。

于是我们就上网搜查振铃现象产生的原因,发现振铃产生的原因是因为信号传输线上有杂散电容和引线电感的存在,在脉冲前沿上升时间相同的条件下,引线电感越大,上冲及振铃现象就越严重;杂散电容越大,则波形的上升时间越长;而引线电阻的增加,将使脉冲振幅减小。可以通过在信号传输线中串联电阻同时尽量缩短信号的传输距离解决。所以我们在电路中采用串联100Ω阻值的电阻,同时整体电路使用覆铜板而放弃洞洞板,最终较好的解决了这个问题。

我们认为测量准确关键之处在于频谱分析,对于频谱泄露问题我们最初是采用加窗函数的方法,但经过测试后发现此方法抑制泄露能力有限,后来我们采取了下面的方案:首先两次测频(粗测和细测)比较准确地测得信号的频率,随后调整采样率使采样波形约为整数个周期;另外通过信号延展和压缩算法,确保进行FFT的信号为整数个周期的,这样使得泄露程度大大降低。最后经过我们的测试,对于测量范围内任意频率的信号都能达到很高的精度。

 

赛后心得

✔ 赛前训练十分重要。我们组在赛前已经训练了多道仪器仪表类题目,对于这类题目已经较为得心应手,有一定的解题经验。

✔ 赛前准备要充分。仪器仪表类题目硬件主要做的事情是信号产生、信号放大、信号处理,多积累一些这方面的模块并在赛前熟练使用。软件一是要把例如ADC、DAC、DDS和PGA等常用器件的驱动准备好,若在比赛时去写不但拖慢了进度,还可能遇到各种未知问题;二是理解并运用好一些DSP算法,像FFT、IIR和FIR等这类算法在仪器类题目中是使用率的较高的。

✔ 比赛时要把握好进度。比赛前两天,应该完成题目基本的指标,若遇到无法解决的问题可以选择性留到后面做,不要因认为后面还有时间而在个别问题上纠结太久,同时也不要给自己太大的压力,要保持良好的状态。

✔ 团队沟通合作很关键。比赛时间只有四天三晚,靠一个人的力量是很难圆满完成的。队友之间紧密沟通,分工明确,可以减少很多不必要的麻烦同时高效率完成题目。

 

2022年1月24日 11:23
收藏