全国大学生电子设计竞数字频率计F题张佳鹏 宋岩 谭贻凯资料.docx
《全国大学生电子设计竞数字频率计F题张佳鹏 宋岩 谭贻凯资料.docx》由会员分享,可在线阅读,更多相关《全国大学生电子设计竞数字频率计F题张佳鹏 宋岩 谭贻凯资料.docx(14页珍藏版)》请在冰豆网上搜索。
全国大学生电子设计竞数字频率计F题张佳鹏宋岩谭贻凯资料
2015年全国大学生电子设计竞赛
数字频率计(F题)
2015年8月15日
数字频率计(F题)
大连东软信息学院参赛队员:
张佳鹏宋岩谭贻凯
摘要:
本频率计由OPA656和LM319运放芯片搭建放大和比较器电路,使50mV-1V的正弦波信号放大整形成单片机能够识别的TTL电平信号,并由STM32F407MCU为主控芯片,通过捕获信号的上升沿来对信号进行频率统计,并通过中断计数的方式对两路经放大后的方波的时间间隔进行测量,统计结果通过OLED液晶屏进行显示,并能通过I/O口电平的输入选择频率测量和时间间隔的测量。
关键词:
频率时间间隔信号放大宽频运算放大器高速比较器。
目录
数字频率计(F题)I
大连东软信息学院参赛队员:
张佳鹏宋岩谭贻凯I
摘要:
I
关键词:
I
1系统方案3
1.1运算放大器的论证与选择3
1.2正弦波测量方法的论证与选择3
1.3提高仪器灵敏度的论证与选择4
2系统原理分析4
2.1OPA656运算放大器原理4
2.2LM319比较器原理5
3电路与程序设计5
3.1电路设计5
3.1.1系统设计6
3.2程序设计6
4测试方案和测试结果7
4.1测试方法7
4.2测试结果8
4.3结果分析9
参考文献9
附录9
数字频率计(F题)
【本科组】
1系统方案
本系统主要由电源模块、运算放大模块、比较器模块、控制显示模块组成,下面分别论证这几个模块的选择。
1.1运算放大器的论证与选择
方案一:
LM358
LM358是双运算放大器。
内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。
它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。
LM358最小识别电压变化为2mV,运放宽度为1Hz~1.1MHz,与本题的50mV~1V的1Hz~10MHz的信号不符,故不可用。
方案二:
LM319
LM319是精密高速双比较器,其工作在宽范围的电源电压,甚至于到一个单一的5V电压。
具有低输入电流,高增益。
输出级的集电极开路使与TTL兼容以及能够在电流达25mA驱动灯,继电器。
虽然主要设计用于需要数字逻辑电源操作的应用,对电源到完全指定的±15V。
它们的特点是比在高功耗的费用lm111更快的响应。
然而,高速,宽工作电压范围和低包数,使更灵活。
LM319最小识别电压范围为2mV,运放宽度1Hz~125MHz,与本题的50mV~1V的1Hz~10MHz的信号相符,方案可用。
方案三:
OPA656
OPA656结合有一个超宽频带、单位增益稳定、电压反馈运算放大器,此运算放大器有一个FET输入级以提供一个针对ADC(模数转换器)缓冲和跨阻应用的超高动态范围放大器。
极低的DC误差在光学应用中提供了很好的精度。
高单位增益稳定带宽和JFET输入可在高速、低噪声积分器中实现出色的性能。
OPA656最小识别电压为±0.25mV,运放宽度为1Hz~275MHz,与本题的50mV~1V的1Hz~10MHz的信号相符,方案可用。
为了提高精度,因此OPA656更合适。
综合以上三种方案,选择方案三。
1.2正弦波测量方法的论证与选择
方案一:
微控制器引脚输入
通过微控制器的输入捕获功能对正弦波的上升沿进行捕获,通过定时器中断,计算出被测信号的频率,并显示。
本项目采用的微控制器芯片为STM32F407,该芯片的最高频率为160MHz,芯片在性能上满足项目的要求,但是由于STM32F407的I/O的识别电压较大,因而不满足。
方案二:
信号峰值捕获
此方案的电路原理图如图所示
图1
当信号输入时,即使输入信号的正半周很小,由于运放A1的Av(Av为运放环路电压增益)很大,而A1的输出电压等于Uin·Av,所以A1的输出电压也足以使二极管导通,迫使运放A1处于跟随状态,从而对输入小信号的峰值进行检测。
通过控制模拟开关将复位脉冲输入电路,达到将电容C的电容放电以等待下一个波形的到来。
在输出端则输出脉冲方波,但是由于本项目的测试信号为1Hz~10MHz,本电路不能对高频率信号的处理,因此本方案不可用。
方案三:
放大采样
将输入信号进行放大,将放大器的输出信号输入过零比较器,通过比较器的输出接入微控制器,微控制器通过输入捕获即可对输入信号的测量
综合以上三种方案,选择方案三。
1.3提高仪器灵敏度的论证与选择
方案一:
采用双电源供电
用于本项目采用的是集成运算放大器芯片,为了提高集成运算放大器的性能应当采用双电源供电的方式进行供电。
方案二:
绘制PCB电路板
通过采用PCB电路板搭建电路可以提高电路的抗干扰能力,但是由于比赛时间紧迫,时间上来不及。
综合考虑采用采用双电源供电。
2系统原理分析
首先对输入的信号进行放大40~50倍,而我们系统采用的运算放大器芯片信号为OPA656,供电为双5V供电,输入信号为50mV~1V,通过运算放大器放大后会出现明显的失真现象,信号的失真并不能影响系统对它的捕获,将失真的信号输入到比较器中,在输出端将会获得脉冲信号,通过微控制器即可获取输入信号的频率信息。
2.1OPA656运算放大器原理
OPA656为高速集成运算放大器,本系统采用同相放大的方法对信号进行放大。
本系统将信号放大倍数为45倍,放大倍数Au=1+
=45,其中
=51R,
=2295R≈2.2K,
=
//
=49.9≈51R
2.2LM319比较器原理
LM319为高速比较器,通过LM319搭建通用比较器。
3电路与程序设计
3.1电路设计
图2
图3
3.1.1系统设计
给定的信号为幅度50mV-1V的正弦波信号,由于微控制器的输入捕获变化电平大于2.0V的跳变才能够被检测到,因此需要对输入的信号进行放大和变形,以便于微控制器芯片的识别。
系统的整体流程为:
图4
单片机能够识别的电平最小为1.7V,而且无法直接测量正弦波的频率,所以需要把50Mv-1V的正弦波信号放大整形成TTL电平。
3.2程序设计
题目中需要对高频信号进行频率测量,所以控制芯片的主频不能低于被测信号的频率,经过分析论证,最后决定使用STM32F407ZET6单片机作为主控芯片,该单片机主频最高为160MHz,能够完成测频任务。
系统程序流程图为:
图5
系统初始化所有外设后会检测PE5端口的输入电平,如果为高电平,则进入频率测量模式,反之,则进入时间间隔测量模式。
在测频模式下,首先进行中断测频,如果测得频率大于10000Hz,则进入定时器计数测频。
中断测频在低频阶段测量精度高,但是在高频信号下容易丢失一些信号,导致精度降低,所以在高频阶段使用定时器计数测频方式,能获得较大的精确度。
在测量时间间隔模式下,会利用中断和定时器进行测量,当检测到第一路方波的上升沿时,开启中断,在中断中开启定时器计数,当检测到第二路方波时,开启第二个中断,在中断中关闭定时器并读取计数的值,用次数值除以定时器速度,就是两路方波的时间的间隔了。
4测试方案和测试结果
为了确定系统与题目要求的符合程度,对系统中的关键部分进行了实际的测试。
4.1测试方法
测试方法连接如图所示
图6
函数发生器产生标准的正弦波,示波器测试端和测试系统的输入端并联,用来检测函数波形的正确性,检测结果通过OLED显示出来。
4.2测试结果
频率测量测试结果
1Hz
100Hz
1000Hz
10000Hz
100000Hz
1000000Hz
2000000Hz
5000000Hz
50MV
1
100
1000
9999
999982
999896
1998784
4986558
100MV
1
100
1000
9996
999998
999753
1999562
4985268
500MV
1
100
1000
9998
999926
999658
1997585
4836998
1V
1
100
1000
9999
999979
999854
1998685
4869552
误差%
0
0
0
0.06
0.74
0.0342
0.12
2.61
时间间隔测试结果
100
1000
10000
100000
1000000
50
1
1
1
1
1
1
100
10
10
9
8
8
10
500
50
50
46
43
46
50
1
100
100
95
93
89
100
4.3结果分析
从测试结果中可以看出,本系统已经基本满足了题目的要求,但是在高频电路频率测量时会出现较大的误差,而在测量时间间隔的时候,测试结果也是如此,在频率较高的时候,测量结果会出现较大的误差。
产生误差的原因可能是:
1.信号幅值较小,对测量产生了影响。
2.运算放大电路出现了失真。
参考文献
【1】高吉祥·全国大学生电子色剂竞赛培训系列教程·电子工业出版社·2007年
【2】杨勇·模拟电子技术员设计,仿真与制作·电子工业出版社·2012年
【3】陈永真等·全国大学生电子设计竞赛硬件电路设计精解·电子工业出版社·2009年
【4】康华光·电子技术基础(第五版)·高等教育出版社·2006年
附录
主函数代码:
intmain(void)
{
floatnext;
floatnext2;
longintnext1;
u32time0;
charss[50];
Bsp_Init();
delay_init(168);//初始化延时函数
EXTIX_Init();//开外部中断后定时器中断不能用
OLED_Init();
OLED_P6x8Str(1,1,"2222");
OLED_P6x8Str(110,3,"Hz");
OLED_P6x8Str(110,5,"ms");
while
(1)
{
uint8_ti;
u32ii;
///////////////////////////////////
if(PEin(5)==1)
{
if(count<20000)
{
TIM_Cmd(TIM1,DISABLE);
TIM_Cmd(TIM2,DISABLE);
TIM_Cmd(TIM3,DISABLE);
TIM_Cmd(TIM4,DISABLE);
count=0;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);//使能SYSCFG时钟
EXTI_ClearITPendingBit(EXTI_Line2);//清除LINE2上的中断标志位
delay_ms(1000);//每隔1s打印一次
LCD_Write_Number(0,3,count);
}
else
{
TIM_Cmd(TIM1,ENABLE);
TIM_Cmd(TIM2,ENABLE);
TIM_Cmd(TIM3,ENABLE);
TIM_Cmd(TIM4,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,DISABLE);//使能SYSCFG时钟
TIM_ITConfig(TIM1,TIM_IT_Trigger,ENABLE);//允许定时器1的触发中断
//GPIO_SetBits(GPIOE,(GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3));
TIM_Cmd(TIM1,ENABLE);//打开定时器1,当检测到TIM1_CH1通道的上升沿后立即触发中断
while(TimeFlag==0);//等待定时器1溢出中断
TIM1->DIER&=0X0000;//失能定时器1的所有中断
//GPIO_ResetBits(GPIOE,(GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3));//可以通过观察LED口高电平时间
TimeFlag=0;//定时器1溢出标志置0
next=(65536*60000)/n_Counter;
LCD_Write_Number(0,3,next);
if(next1>900000)
Delay(200000);
else
Delay(10000);
count=next1;
}
}
else
{
TIM_Cmd(TIM2,ENABLE);
TIM_Cmd(TIM3,ENABLE);
TIM_Cmd(TIM4,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);//使能SYSCFG时钟
delay_ms(500);
time0=time/60;
LCD_Write_Number(1,5,time0);
}
}
模拟部分电路
数电部分