硬件解法:21年电赛A题 信号失真度测量装置

前言

        因为往年的题目中,强制要求使用Ti主控芯片的一般都是控制类题目,比如小车和无人机。而我们队伍准备的是仪表题和高频题,因此没有准备Ti的主控芯片,准备的是STM32。

        而这是道仪表题,却强制要求使用Ti主控芯片,打了我们队伍一个措手不及,看到题目后傻眼了,从尘封已久的仓库里掏出来一块MSP430F5529板子,让我队友现学,MSP432和C2000系列更是没有,顺丰邮寄过来也得花上一两天,而且没接触过还不确定能不能行。题目这个要求相当于直接给我们判了死刑,还好当时我们队伍三人已经保研了,心态不至于崩。

题目要求

基本要求:

        1、输入信号的峰峰值电压范围:300mV~600mV。
        2、输入信号基频:1kHz。
        3、输入信号失真度范围:5%~50%。
        4、要求对输入信号失真度测量误差绝对值|THDx-THDo|≤5%,THDx和THDo分别为失真度的测量值与标称值。
        5、显示失真度测量值THDx。
        6、失真度测量与显示用时不超过10秒。

发挥部分:

        1、输入信号的峰峰值电压范围:30mV~600mV。
        2、输入信号基频范围:1kHz~100kHz。
        3、测量并显示输入信号失真度THDx值,要求|THDx-THDo|≤3%。
        4、测量并显示输入信号的一个周期波形。
        5、显示输入信号基波与谐波的归一化幅值,只显示到5次谐波。
        6、在手机上显示测量装置测得并显示的输入信号THDx值、一个周期波形、基波与谐波的归一化幅值。
        7、其他。

        详细题目参考:信号失真度测量装置(A 题)

分析问题

        这道题其实完全可以直接使用一块运算能力强的芯片,通过ADC采集后进行FFT运算得出结果,这样的话就变成比拼软件算法了。但是我们最大的问题是没有接触过Ti的芯片,手里也只有一块MSP430F5529,也不知道怎么运行强大的FFT算法,现学现做的话心里没底。

        团队三个人中,我负责硬件,另外两个负责写软件。

        既然MSP430没有那么强的运算能力,那我必须通过硬件手段将运算简化。时间紧迫,在我想办法的时候,他们两个现学MSP430怎么用,其实就是学习ADC和UART怎么用。

摘要

        本作品是基于MSP430的信号失真度测量装置,可以测得输入信号的总谐波失真,并可在手机上显示测量信息。

        本作品以硬件电路为主,使用MSP430F5529作为主控芯片,通过比较器来获得输入信号的基频,控制DDS模块产生与基频及其谐波频率相差50Hz的正弦波,将其与输入信号相乘后通过滤波器,检波后可以得到基波与谐波的归一化幅值。通过MSP430F5529的ADC采集输入信号,并通过一系列运算后,在一定时间内就可以得出输入信号的近似总谐波失真量,并发送到屏幕和手机上显示。

整体方案设计

        使用DDS模块产生一个某一频率、幅值固定的正弦波与输入信号相乘,所得结果通过低通滤波器,即可获得输入信号中该频率分量的相对幅度值。低通滤波器的带通越低,频率分量之间串扰越低,结果越准确,此时产生的正弦波频率应在输入信号各频率分量的100Hz以内为宜。

        作品中将输入信号通过比较器整形成方波,输入MCU的定时器捕获得到基频,从而得到各个频率分量值,然后产生相应频率的正弦波分别测出相对幅度值,即可算出失真度。最后进行校验,并将所得信息发送给屏幕和手机。

原理与步骤

        假设输入信号为:{x_{in}}(t) = {A_1} \times \cos {w_1}t + {A_2} \times \cos {w_2}t + ... + {A_5} \times \cos {w_5}t

1、将输入信号通过比较器形成脉冲信号,通过MSP430的输入捕获即可获得基频频率w{_{1}}

2、通过基频,可以算出2~5次谐波频率w_{2},w_{3},w_{4},w_{5},以下用二次谐波w_{2}举例。

3、MSP430控制DDS模块产生频率为w_{2}+w_{100Hz}的正弦波信号,信号经过放大器后可以得到信号{x_d}(t) = {B_2} \times \cos \left( {​{w_2} + {w_{100Hz}}} \right)t。其中B{_{2}}是已知的。

4、乘法器的输出为各谐波分量与x_{d}(t)的乘积,如下列式子所示,分量太多了只展示一次和二次谐波分量:

y\left( t \right) = {x_{in}}(t) \times {x_d}\left( t \right)

        经过120Hz低通滤波器后,剩余的信号量为:{y_{LPF}}\left( t \right) = {1 \over 2}{A_2}{B_2}\cos {w_{100Hz}}t,求出此信号的峰值大小,即可求出A_{2}

5、再次执行3和4步骤,只不过这次控制DDS模块产生频率为w_{2}-w_{100Hz}的正弦波信号,并求得A_{2}^{'}。将两次的数求平均,即可求出二次谐波分量大小。

6、分别1-5次谐波都按照3、4、5步骤测量出来即可,最后根据各次谐波频率与大小在串口屏上生成波形图。

器件选型

放大器

        本次题目的频率不高,保证放大器幅频特性曲线在1MHz内平坦即可。于是直接用提前准备好的放大器THS3001。

        420MHz 带宽(G = 1,-3dB),6500V/µs 压摆率,低失真。

乘法器

        乘法器使用AD835,其带宽达到250MHz,是电赛的常用模块之一。

比较器

        比较器使用TLV3501,其输入频率为DC–200MHz,是电赛的常用模块之一。

DDS

        使用AD9833模块,能够满足2M以内正弦波输出,是电赛的常用模块之一。

低通滤波器

        使用Filter Solutions来设计5阶有源巴特沃斯低通滤波器,截止频率120Hz:

        因为频率较低,放大器使用一般的NE5532即可。

软件设计

        让两位队友在CCS上使用C语言开发MSP430F5529,程序流程图如下:

测试与结果

        在完成整体设计后,我们在测试中发现方案的一个缺陷,即低频不友好。别的队伍都是1kHz能够测准,10kHz以上没法测准;而我们是5kHz以上能测准,5kHz以下测不准。细究其原因:

        原因1:输入第一级放大器的隔直电容过小,1kHz信号会有衰减。但是隔直电容不能少,因为后面的乘法器输入电压范围仅为±1V,如果有直流偏置会造成较大影响。只能尽量加大隔直电容,但是电容太大又会导致信号通过的速度慢,消耗时间。

        原因2:乘法器AD835一般用于高频场景,所以低频低到1kHz这样的其实不太好使,虽然它的带宽有250MHz,但是它在0-1kHz有较大衰减。(很奇怪换了几片都这样)

        对于原因2,已经快到比赛结束时间了,因此我们只是简单地使用拟合方法,通过多次试验和记录,企图找到规律在软件上对该衰减进行补偿,并希望在实际测试中没有问题。

结果

        到了比赛实测的时候,测试的信号基频是1kHz、50kHz、100kHz,结果就是我们50kHz和100kHz的都测准了,1kHz的没测准。

        指导老师吐槽说别的队伍都是基础分拿满提升分拿不到,为什么你们偏偏是提升部分的分数拿到了却没拿到基础分呢?

        最后就只拿到了省二等奖。

改进的方法

        后来我们复盘一下,MSP430并不是完全没有运算能力的,如果是1k或者2k这种的低基频的失真信号,还是能够用软件来搞定的(因为我隔壁队伍就是用MSP430这么做的,他们就只完成了1kHz部分)。我们其实应该用软件来搞定5kHz以下基频信号的测试。

        改进后的整体方案:

        当检测的基频低于5kHz的时候,使用另外一条ADC通道读取输入信号(当然还要辅以直流偏置电路),并进行FFT运算来检测各次谐波即可。

总结

        从表明来说,我这个电路方案设计是有缺陷的,比如乘法器AD835一般用于高频场景,所以低频低到1kHz这样的其实不太好使;另外我们比赛时候完全没有想到,低频是可以用MSP430的运算能力处理的,所以就没有想到改进后的方案。

        从更深层来讲,这个比赛是有一个比较长的准备过程,几个月甚至大半年,然后在四天三夜内赶工做出来。说白了就是技术储备不够,导致正式比赛很被动。

        从题目角度,没有想到这种仪表类的题目也需要用Ti主控芯片,往年都是控制类小车类题目才用Ti芯片的,那就导致有两名队员花了一天时间去学习MSP430的使用,白白浪费时间,这个应该要在赛前学好的。

        从分值来说,我们应该首先完成基础部分,也就是1kHz基频部分,因为那部分分值大,而不是花那么多时间盲目追求提升部分,而且也是因为我的疏忽,想当然的以为1kHz是没问题的,导致后面才发现这个问题,想补救也不够时间了。

       从软件上说,我们没有接触过DSP,比较被动。在脑海中没有DSP的概念,我后来看很多国一队伍都是输入信号直接接到C2000系列芯片的ADC上,然后运算就可以了。正是因为我们没有DSP相关的经验,才导致要大费周章地去设计各种硬件来简化运算。

        心态方面,因为疫情延后了这个比赛,开赛时候三人都已经保研了,因此动力略显不足。

        本设计相当于用硬件的运算代替了软件的运算,在当时没有算力的情况下,亦不失为一种方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值