发作品签到
标准版

2021年A题-信号失真度测量装置(国二)

工程标签

4.4k
0
0
0

简介

该装置基于 TI 的 Tiva C 系列微处理器 TM4C123 实现,能够测量 1kHz ∼ 100kHz、5mV ∼4V 的信号失真度和谐波分量并·在手机界面上显示·。

简介:该装置基于 TI 的 Tiva C 系列微处理器 TM4C123 实现,能够测量 1kHz ∼ 100kHz、5mV ∼4V 的信号失真度和谐波分量并·在手机界面上显示·。

开源协议

GPL 3.0

创建时间:2022-01-16 09:57:37更新时间:2022-01-23 14:25:29

描述

目录

1.前言

2.团队介绍

3.题目要求

4.题目分析

5.原理图设计说明

6.PCB设计说明

7.软件说明

8.实物展示说明

9.注意事项

10.测试结果

1.前言

  本作品是2021年全国电子设计大赛A题的参赛作品,完成度较好,最终获得陕西省赛区一等奖,全国二等奖。

2.团队介绍

  本团队是由西安交通大学电气工程学院的三名同学组成的,其中作者本人是负责模拟电路设计和制作,团队中的周伟同学负责数字程序的编写。安卓APP是使用App inventor平台编写。

3.题目要求

设计制作信号失真度测量装置,对来自函数/任意波形发生器的周期信号(以下简称为输入信号)进行采集分析,测得输入信号的总谐波失真 THD(以下简称为失
真度),并可在手机上显示测量信息。

1.基本要求:

  (1)输入信号的峰峰值电压范围:300mV~600mV;

  (2)输入信号基频:1kHz;

  (3)输入信号失真度范围:5% ~ 50%;

  (4)要求输入信号失真度测量误差绝对值小于5%;

  (5)显示失真度测量值THD;

  (6)失真度测量与显示用时不超过 10 秒。

2.发挥部分:

  (1)输入信号的峰峰值电压范围:30mV ~ 600mV;

  (2)输入信号基频范围:1kHz ~100kHz;

  (3)测量并显示输入信号失真度THD值,要求误差 ≤3%;

  (4)测量并显示输入信号的一个周期波形;

  (5)显示输入信号基波与谐波的归一化幅值,只显示到 5 次谐波;

  (6)在手机上显示测量装置测得并显示的输入信号THD值、一个周期波形、基波与谐波的归一化幅值。

4.题目分析

按照题目所述,设计时应该按照信号采集到数字处理,最后显示结果的流程来。

所以设计应该包含三个部分:

  (1)信号调理及其他必要的模拟电路;

  (2)控制器的数字控制方案;

  (3)蓝牙以及蓝牙app。

对模拟电路设计进行分析:

  信号失真度计算需要波形和信号频率两种数据。因而模拟电路应该包含信号调理电路和整形电路两个部分。

  其中信号调理电路的作用是把题目要求的30-600mV双极性信号变换为片内ADC能接受的电压信号(0-3.3V)。可以采用固定增益放大器+直流偏置的方案,结构简单,不耗时间,但缺点是小信号输入时ADC采样的误差大,测量精度有限且测量幅度范围难以提升。所以我们采用了AGC(自动增益控制放大器)+直流偏置的方案,可以把输入信号以恒定幅度大小输出,测量信号幅度范围大大提升,但缺点是制作耗时长且调试复杂。

  整形电路的作用则是得到与输入信号基波频率相同的方波。

对数字处理方案进行分析:

  前级模拟电路提供了基波同频方波,单片机就可以使用定时器的输入捕获测量其输入基波频率。之后根据基波频率确定采样率,使用片内ADC采样波形信号。最后得到周期电压数据后使用FFT计算谐波分量和THD。

  有一点值得注意,受到片内ADC采样率(TI的处理器大部分在1M左右)的限制,直接采样得到的100KHz波形信号和实际波形差距较大,所以直接采样的方案是不可取的。所以我们组的方案是使用欠采样,即在多个周期内顺延采取一个周期的数据,比如一个周期需采集1024个点,在第一个周期采样第一个点,第二个周期采样第二个点.....

对蓝牙显示方案进行分析:

  题目对此部分的要求不高,能使用蓝牙发送数据到手机并显示就可以。所以最好使用较为成熟的蓝牙模块(如HC05),APP设计也一切从简,推荐使用app inventor(可视化模块编程)。

提示:总体设计方案框图

5.原理图设计说明

作品总共有五个部分:

  (1)电源总线(实物图正中间):使用万能板焊接了一个包含正负电源线和地线的多端接口,这样使系统的供电变得更为方便,排查供电故障也更快;

  (2)基波整形电路(实物图左上角):包含前级放大滤波模块(蓝色)和后级整形电路(红色),从AGC接受信号,经过固定增益、滤波然后再整形为同基频方波;

  (3)信号调理电路-AGC(实物图右上角):蓝色PCB中有基于VCA821的自动增益控制电路,且配有直流偏置电路,可以为0-3.3V的片内ADC提供恒定的波形信号;

  (4)TI微处理器和配套显示屏(实物图右下角):Tiva C 系列 TM4C123和2.2寸液晶屏;

  (5)蓝牙模块(实物图右侧):HC05模块。

一、模拟电路设计:

结构分两路:

  第一路:AGC+直流偏置,输出波形信号;

  第二路:整形前级(放大滤波)+方波整形,输出频率信号;

性能介绍:

  1.幅度范围:输入5mVpp-4Vpp信号波,恒定输出3Vpp相同波形信号和相同频率方波,匹 配单片机ADC的输入范围。不过幅度太低时,输出幅度也会下降,因为增益有极限;

  2.频率范围:1KHz—100KHz(上限受制于整形前级电路中的AD620和电路中的滤波环节, 下限受制于AGC反馈支路中积分器的积分时间);

(1)信号调理电路设计:

  模块是我赛前训练时制作的,所以该PCB有未使用的压控移相电路,本题目仅使用AGC和信号偏置电路。

  上图为VCA821(压控放大器芯片)参考手册中给出的闭环增益控制电路,本次比赛中使用的AGC主电路结构和上面相同。不同的是运放的选择并非完全和上图相同,上图中的opa695用opa843代替,opa820用opa842代替。opa695(电流型运放)使用会造成自激和各种噪声问题,这点已经在调试过程中验证,比较不好用。

  最后,积分器的电容要并联1M欧电阻,防止放大器零漂导致输出异常,积分器时间常数选择要看实际情况而定,时间常数越小,AGC的频率下限就越高。比赛中的PCB上的积分常数仅能满足800Hz以上信号的控制。

  VCA821性能非常先进,频率上限很高,所以10MHz的信号都能够被处理。

  直流偏置电路采用了减法器,反相输入信号,同相输入直流信号,所以注意:  最终波形信号和输入信号之间是反相的!

(2)整形电路设计:

  为了实现小幅度信号测频方波稳定,再将信号整形前,需提前放大并滤波。

  放大电路采用AD620的典型电路,可通过区域上方的电位器调节增益。选择AD620的好处是它的共模抑制比很高。且仪表放大器输入电阻极高,对AGC的影响较小。但缺点就是频率范围不高,且增益越高,频率范围越小。这也是后期我们组无法扩展频率范围的原因之一。

  滤波电路设计的是二阶有源滤波器,截止频率100KHz,可以通过更换阻容来改变。

  也是因为模块是训练时做好的缘故,所以并不只是TLV3501整形电路。整个模块有四个部分,全是检波所用。

  输入有一级opa843做缓冲级,加以二极管做输入限幅,所以后级损坏的可能性较小。

  包括:

  (1)LM339低频整形电路;

  (2)TLV3501高频整形电路;

  (3)以TLV3501和三级运放为核心的峰值检测电路,测量频率上限可至数十兆赫兹,但下限也受积分器积分常数限制;

  (4)基于AD637的有效值检测电路,可控制工作与否,上限频率8MHz。

  本次比赛使用的是TLV3501高频整形电路。

  TLV3501构成的迟滞比较电路:

二、数字电路设计:

采用了Tiva C的开发板并用SPI接口连接了2.2寸液晶屏做显示。利用的处理器资源有:

  1.一个定时器输入捕获端口(PB6),用于频率测量;

  2.一个ADC采样端口,用于采集波形信号;

  3.一个SPI接口,用于连接显示屏;

  4.一个串口,用于连接蓝牙HC05。

6.PCB设计说明

AGC:

整形前级电路:

TLV3501整形电路:

设计要点:

  (1)电源线设置:粗细符合电流需求,流向上先通过滤波电容再到器件等;

  (2)电源滤波电容放置:一般用一大一小放在器件的电源端,可参考相关器件手册的layout;

  (3)信号线布置:走圆弧角且不走锐角,线宽适量大一些,拒绝平行布线,尽可能少走通孔等;

  (4)器件放置:尽量使器件均匀分散且主芯片的输入引脚应该靠近输入sma,避免引入额外干扰;

  (5)铺铜:在芯片下面的底层PCB应该掏空,避免杂散电容影响高频芯片工作。

7.软件说明


**关键是欠采样和FFT计算,具体有以下内容:**

  1. 频率测量:配置 Timer1 定时 1s、Timer0 为输入捕获模式,计算 1s 时间内上升沿的数量,由此得出输入信号频率;

  2. ADC 采样:根据不同的输入信号基波频率确定采样率,定时器触发 ADC 采样;

  3. 总谐波失真 (THD) 和基波与谐波归一化幅值的测量:调用 DSP 库的 FFT 函数,对 ADC 采集到的数据进行 1024 点 FFT 运算,并由此计算出THD 和各次谐波归一化幅值。

代码块:

#define FFT_LENGTH 1024 //FFT点数
//uint32_t FFT_LENGTH = 1024;

extern _lcd_dev lcddev;
extern uint16_t pointcolor;
extern uint16_t backcolor;
extern uint8_t pressedKey;

uint8_t key;
uint16_t y_z[FFT_LENGTH];

uint8_t pui8ControlTable[1024];

arm_cfft_radix4_instance_f32 cfft;
float input[FFT_LENGTH*2];
float output[FFT_LENGTH];
uint8_t timeout;

uint32_t  Data[FFT_LENGTH];
uint32_t  pui32ADC0Value[1];
uint16_t  Index = 0,flag = 0, flag_com = 1;
float freq_fund;  //基波频率
uint16_t freq_seq[5];  //五个频率分量索引
float32_t Uo[5];       //五个频率分量幅值
float THD;
float norm_am[4];
uint16_t x_start;

double freq = 0;
uint32_t count=0, mycount=0;
uint32_t Rate = 64000;

void ADC0Sequence3Handler()
{
	uint32_t ui32Mode;
	uint16_t i = 0;
	flag=0;
	for(i=0;iAIN11
	ADCSequenceConfigure(ADC0_BASE,3,ADC_TRIGGER_TIMER,0);
	ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_CH11 | ADC_CTL_IE | ADC_CTL_END);
	ADCSequenceDMAEnable(ADC0_BASE,3);
        ADCIntRegister(ADC0_BASE, 3,ADC0Sequence3Handler);
	TimerControlTrigger(TIMER0_BASE,TIMER_A,true);
	TimerConfigure(TIMER0_BASE,TIMER_CFG_PERIODIC);
	TimerLoadSet(TIMER0_BASE,TIMER_A,SysCtlClockGet()/Samp_rate-1);
	TimerADCEventSet(TIMER0_BASE,TIMER_ADC_TIMEOUT_A);
	TimerEnable(TIMER0_BASE,TIMER_A);
	ADCSequenceEnable(ADC0_BASE,3);
	ADCIntClear(ADC0_BASE, 3);
}
void InituDMA(void)
{
	SysCtlPeripheralClockGating(true);
        SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);
        SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_UDMA);
        IntEnable(INT_UDMAERR);
        uDMAEnable();
        uDMAControlBaseSet(pui8ControlTable);
	uDMAChannelAssign(UDMA_CH17_ADC0_3);
        uDMAChannelAttributeDisable(UDMA_CHANNEL_ADC3,UDMA_ATTR_ALL);
        uDMAChannelControlSet(UDMA_CHANNEL_ADC3 | UDMA_PRI_SELECT,UDMA_SIZE_32 | UDMA_SRC_INC_NONE | UDMA_DST_INC_32 |UDMA_ARB_1);
        uDMAChannelTransferSet(UDMA_CHANNEL_ADC3 | UDMA_PRI_SELECT,UDMA_MODE_BASIC , (void *)(ADC0_BASE+ADC_O_SSFIFO3),Data,FFT_LENGTH);				
	uDMAChannelAttributeEnable(UDMA_CHANNEL_ADC3,UDMA_ATTR_USEBURST);
        uDMAChannelEnable(UDMA_CHANNEL_ADC3);
}
void freq_measure()
{
	uint16_t i, flag_1 = 1;
	float max = output[1];
	for(i=1; i max)
		{
			max = output[i];
			flag_1 = i;
		}
	}
	freq_fund = flag_1*((float)Rate/FFT_LENGTH);
}
float32_t THD_COMP()
{
	uint8_t i = 0;
	float32_t sum = 0;
	float32_t Uo[4];
	for(i=0;i<4;i++) 
	{
		Uo[i] = output[4*i+8]/output[4];
		sum += Uo[i]*Uo[i];
	}
	return 100.0*sqrt(sum);
}

float32_t my_THD_COMP()
{
	uint16_t i, j, flag_1 = 1;;
	float max = output[1];
	float max2, max3, max4, max5;
	for(i=1; i max)
		{
			max = output[i];
			freq_seq[0] = i;
		}
	}
	Uo[0] = output[freq_seq[0]];
	for(i=1;i<5;i++)
	{
		uint16_t hh;
		Uo[i] = output[freq_seq[0]*(i+1)];
		hh = freq_seq[0]*(i+1);
		freq_seq[i] = freq_seq[0]*(i+1);
		for(j=1;j<8;j++)
		{
			if(output[hh-4+j]>Uo[i])
			{
				Uo[i] = output[hh-4+j];
				freq_seq[i] = hh-4+j;
			}
		}
	}
	for(i=0;i<5;i++)
	{
		UARTprintf("index = %d, U = %dn",freq_seq[i],(int)(Uo[i]));
		UARTprintf("index = %d, U = %dn",freq_seq[i]-1,(int)(output[freq_seq[i]-1]));
		UARTprintf("index = %d, U = %dn",freq_seq[i]+1,(int)(output[freq_seq[i]+1]));
	}
	for(i=0;i<5;i++)
	{
		if(Uo[i]/Uo[0] > 0.05f)
		{
			Uo[i] = sqrt(output[freq_seq[i]-1]*output[freq_seq[i]-1] + output[freq_seq[i]+1]*output[freq_seq[i]+1] + output[freq_seq[i]]*output[freq_seq[i]]);
		}
	}
	for(i=0;i<4;i++)
	{
		norm_am[i] = Uo[i+1]/Uo[0];
	}
	float32_t sum=0.0f,thd1;
	for(i=0;i<4;i++)
	{
		sum+=Uo[i+1]*Uo[i+1];
	}
	thd1 = sqrt(sum)/Uo[0]*100;
	return thd1;
}

蓝牙和手机间的通讯规定:

  通信协议方面,每次测量后,MCU 使用串口循环 5 次向蓝牙发送 75 个字节的字符串(直接使用 ASCII 码的对应字符)。

8.实物展示说明

说明:还需要准备双极性电源和智能安卓手机一部。

9.注意事项


**特别注意ADC的输入电压限制,做好保护,否则功亏一篑。**

10.测试结果


**测试方案**:准备十组数据,规定每组数据的四个谐波的归一化幅值、频率及原始信号峰峰值,使用信号源输出到本系统中,通过屏幕显示数据,并进行误差分析。

设计图

原理图(1 / 3)

BOM

IDNameDesignatorFootprintQuantity
1Header-Female-2.54_1x2AGND1,DGND1HDR-TH_2P-P2.54-V-F2
2opa842AMP4SOP-8_L4.9-W3.9-P1.27-LS6.0-BL1
3OPA695AMP5SOP-8_L4.9-W3.9-P1.27-LS6.0-BL1
4opa843AMP6SOP-8_L4.9-W3.9-P1.27-LS6.0-BL1
50.1uFC3,C21,C22,C25,C26,C29,C30,C35,C36,C43,C44C080511

附件

序号文件名称下载次数
1
代码.rar
268
2
Project_2021国赛AGC主电路
111
3
Project_2021国赛整形比较电路
69
4
Project_2021国赛整形前级电路
67
5
THD_measurement.apk
184
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

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

底部导航