嘉立创产业服务站群
发作品签到
标准版

信号失真度测量仪

工程标签

6.9k
0
0
2

简介

实现了基于msp432的失真度测量,拿到了国家一等奖

简介:实现了基于msp432的失真度测量,拿到了国家一等奖

开源协议

Public Domain

创建时间:2021-12-29 04:21:41更新时间:2022-01-06 07:42:31

描述

1.前言

实现了基于msp432的失真度测量,拿到了国家一等奖。

2.个人介绍

两位是2019级通信工程专业
另一位是2020级电子信息工程专业

3.项目分析

设计制作信号失真度测量装置,对来自函数/任意波形发生器的周期信号。

nYzzR6QlpmUMso5Il9YF6nPZPMl3BbICY1u7udoR.png


![zSROVZ2uOAjjpOwVOwDgMVTLIJZ1BkuFJQuJjRjA.png](https://image.lceda.cn/pullimage/zSROVZ2uOAjjpOwVOwDgMVTLIJZ1BkuFJQuJjRjA.png)
![0cEId5aPkR0cLJnHe1Abb3uZ0NxDSmFivJp6U8eO.png](https://image.lceda.cn/pullimage/0cEId5aPkR0cLJnHe1Abb3uZ0NxDSmFivJp6U8eO.png)
1.系统介绍 本系统由MSP432 MCU控制。主函数流程图如下图8所示,在其主函数内,先进行放大电路的选择,然后开始片内ADC采集。采集完成后进行FFT计算和频谱校正,并计算出基波和谐波的数据,最后通过串口交给手机和串口屏幕显示

2.系统·流程图
图片.png

4.原理图电路分析

1.跟随器电路图


![PC$UF%ENHZWYAKBDUNHD@HD.png](//image.lceda.cn/pullimage/IqoRibJdX7PoJ4Rcam8GSyEPBzmxg4Vno8uj0K0R.png)

(31S95)38JXCHU%{8P_7@}R.png

2.AD637有效值模块
来源:淘宝购买
E3F4599992FB33FC7788ABA4BAA77326.jpg
同相比例放大器(可调增益)
来源:自制
1A99201158186E487EE0AF7B29B7021B.jpg
主控芯片MSP432
来源:TI官网申请
88F32966CE0723D2F2F7FDBA5A95A790.jpg
跟随器模块实物图
来源:自制
280F06C5CC54AA7041FABEDE576FC39D.jpg
连接关系:信号流入分两路,一路通过跟随器后送入AD637进行有效值检测,另一路通过放大器,加法器后送入主控芯片msp432的adc中,再通过串口控制串口屏进行波形显示。

6.误差分析

在系统中,误差主要来源有三个方面:

1)在系统ADC采集前端,使用了运算放大器进行一些信号放大、变换,存在着放大器通频带平坦度特性、噪声和谐波失真等特性会产生误差。

2)ADC采样中,要求满足奈奎斯特采样定理,即采样频率大于模拟信号最高频率的两倍,以减少或者消除混叠效应。

3)单片机中使用FFT算法同样有误差的存在。对信号进行采样计算,需要无限长序列,计算出无限长的频谱。而实际中,只能采集部分的波形序列进行计算,这样会造成频谱泄露效应,出现误差;离散FFT变换中,由于时域的离散,频域也是离散的,这样会造成栏栅效应,在离散点以外的频率点无法测出。

针对以上的误差,解决的方法如下:

1)通过使用高精度、低噪声的运算放大芯片构建放大电路;电源输入端跨接电容,滤除电网带来的高频杂波脉冲会减小杂波电子电路的干扰。

2)尽量满足采样定理,同时适当使用高分辨率的ADC。

3)对应频率泄露,可以加入对应的窗函数,如Blackman窗函数;对应栏栅效应,可以适当提高频率分辨率,进行补零等操作。同时尽量保证需要的频率分量是频率分辨率的整数倍。

7.总结

经过四天三夜的电赛,我最大的感受就是要坚持到最后一刻,哪怕只有几个小时没完成作品,也不要放弃调通作品的希望。

我们选择的题目更偏向于软件,碰巧的是,我电赛之前自己打的一些模块正好可以用上,在电赛之前我也花了比较长的时间研究布局布线的稳定性问题,给比赛做好了硬件上的基础。

因为所选的题目对写代码的同学的挑战很大,任务量也很多,相比较而言,做硬件的同学显得比较悠闲,但我们相互配合,也并没有划水,都在和软件同学一起调代码,最后也调通了很多外设。

至于比赛期间的睡眠问题,我们为了有清醒的代码思路前两天都没熬夜,正常作息。我觉得对于软件上的困难,最不能做到就是熬夜肝代码,如果碰巧调通了还好,如果没调通,不但会影响到接下来的代码思路,更加会影响到信心。

至于选题问题,因为知识的限制,留给我们的只有A题和H题(用电器分析),A题所用到的单片机,我们之前并没有接触过,但思路明确,且对信号的处理方式我们很熟悉,难度就在调代码。而至于H题,平常的训练很少涉及这部分,综合考虑我们选择了A题,也就意味着,我们需要在四天三夜的时间内快速上手这款单片机,综合考虑我们还是准备现场学习这块单片机,于是选了A题。

此外我觉得这次题目能完成所有要求,还离不开一个好的代码思路,在最后一天晚上,因为采样率不好自动确定的原因,恰好看到板子上有两个按键,我就提议刚开始用两个按键对应不同的采样率,因为之前寒假做题的时候在按键这部分纠结了很久,我也很快就把这部分代码给软件同学补齐,最后便成功调通了代码。

最后,还需要感谢各位学长给予我们的指导,以及队友们的坚持,才让我们拿到了这个奖项

8.演示视频

https://b23.tv/tHL3gzn

9.软件部分说明

工程已全部上传到附件
现对部分关键代码进行说明

int Key_pres=0;
//通过按键切换量程
while(1)
	{	
		while(Key_pres==0)
		{
			Key_pres=KEY_Scan(0);
		}
		if(Key_pres==1)
		{	
			//采样率500K
				ADC_Single_Init_500K();
				printf("500Krn");
				BEEP_ON;
				delay_ms(60);
				BEEP_OFF;
			}
			//采样率1M
			if(Key_pres==2)
			{
				ADC_Single_Init_1M();
				printf("1Mrn");
				BEEP_ON;
				delay_ms(60);
				BEEP_OFF;
			}
/************              串口屏显示              ***************/
                                        sprintf((char *)send, "t0.txt="Ê§Õæ¶È£º%.3f %c"xffxffxff", THD, '%');
					USARTA2_SendString(send);
					sprintf((char *)send, "t1.txt="2´Î¹éÒ»»¯£º%.3f"xffxffxff", (UO2/UO1));
					USARTA2_SendString(send);
					sprintf((char *)send, "t2.txt="3´Î¹éÒ»»¯£º%.3f"xffxffxff", (UO3/UO1));
					USARTA2_SendString(send);
					sprintf((char *)send, "t3.txt="4´Î¹éÒ»»¯£º%.3f"xffxffxff", (UO4/UO1));
					USARTA2_SendString(send);
					sprintf((char *)send, "t4.txt="5´Î¹éÒ»»¯£º%.3f"xffxffxff", (UO5/UO1));
					USARTA2_SendString(send);
					
					sprintf((char *)send, "cle 1,0xffxffxff");
					USARTA2_SendString(send);

					flag_period = 1024 / FFT_MAX;
					for(i=0; i<br />

设计图

原理图(1 / 2)
PCB

BOM

IDNameDesignatorFootprintQuantity
1C型钽电容C1,C2C____2
2104C3,C408052
3capC5C08051
4SMAINPUT1,OUTPUT1SMA_12
5LEDLED1,LED2LED08052

附件

序号文件名称下载次数
1
设 计 报 告——胡源_王一昕_胡师玮.docx
357
2
EdContest.zip
983
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航