元件清单
- TIVA C Series:TM4C123G LaunchPad
- Nokia 5110 LCD
- LM358
- 电阻、电容和杜邦线若干
系统总方案设计
首先,先将信号发生器输出的信号通过直流偏置电路抬高 到 0V 以上,然后再经过截止频率为 10.67kHz 的一阶 RC 低通滤波器,消除信号 中的高频噪声,以防在 FFT 分析中出现混叠。然后,将处理过的信号通过 TM4C123GH6PMI 的片内 ADC,通过定时器溢出周期的配置以实现 10240Hz 的采样 率抽样,得到 512 点采样序列。然后,将该信号序列通过我们自己编写的软件 FFT 程序分析信号的频谱,获得一至五阶的幅值分量。最后通过数学计算获得 THDx 和各阶归一化幅值,将结果显示在测量装置的 LCD 上。
电路设计
偏置电路
偏置电路原理就是一个加法电路,本次竞赛虽然没有要求一定要设计偏置电路(测评的时候别的队直接信号源加了貌似老师也没说啥,但有别的省份好像不允许信号源加),但是我们队吃过了暑假训练的教训,因此还是设计了一个偏置电路(惊奇的是我们用自己的偏置电路测出来精度不知为何总是比信号源抬的偏置出来高)。LM358的高频特性不好,50Mhz波形就十分难看了,所以发挥部分寄了。
MCU部分
题目要求使用TI公司的处理器,常用的一般有MSP430,MSP432,TM4C123G,C2000,C6000等。MSP430 25Mhz主频,RAM空间也很小,跑个基本部分都费拉不堪(同学说算个128点FFT用了五秒),所以不考虑。由于黑龙江赛区延迟了一天进行竞赛,且竞赛期间不允许出校采购,条件有限,TM4C是我们能借到的最好的MCU了。TM4C123G主频最高能到80Mhz,与STM32F103性能相当(72Mhz主频),RAM空间小于STM32F103,保证精度的前提下,能跑512点FFT,此外,该MCU还支持硬件浮点加速,最最重要的,这款MCU支持用Keil MDK开发,对于两天学会使用一款全新的MCU来说,使用自己熟悉的IDE是最合理的。
软件设计
程序框图
一键测量的实现就是复位键测量。
ADC采样序列
我们使用的是:定时器溢出触发一次长度为1的序列转换,在ADC中断服务程序中给信号序列加入新的值。
根据用户手册可知,TM4C的中断跳转的速度相较于传统MCU具有速度优势。实测采样1khz信号完全够用。我们通过定时器将采样率配置为10240Hz(频谱计算分辨率能达到20Hz)。当然,最佳方案是uDMA乒乓模式搬运数据,可惜考场上TI国际论坛上的代码没有消化。
FFT
使用我们自己编写的FFT程序,递归法实现,STM32F103上测试1024点80ms跑出结果。这里很神奇的是,变量必须都是double不能是float,float会导致运算结果跑飞??
测试
测评当天结果
第一组数据:理论值:25%,测量值:27.53% 由于发挥部分数据没跑出来,因此不算我们归一化幅值显示的成绩。
后记
最终成绩是省二。后来见到了A题的评测表得知,发挥部分画波形、蓝牙通信和归一化幅值的分数是与发挥部分两个精度指标的测试关联的,如果发挥部分的数据没跑出来,其他部分做了也不给分…所以我们学院A题做出来的队伍都是省二,也算是一点小遗憾吧。
|