ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:212.96KB ,
资源ID:21322855      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21322855.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字频率计讲解Word文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字频率计讲解Word文档下载推荐.docx

1、它是通过具有高性能、低成本、低功耗的单片机对信号进行捕获、计数,用软件处理数据,实现高速、高精度的测频。综合以上三种方案,选择方案三。2、时间间隔测量方法的论证与选择游标法。使用两种频率的时钟信号,要实现高精度、高分率的测量,对时钟频率的稳定度非常高,对电路的工作效率很高,不易实现。模拟法。在被测信号间隔T期间对电容进行充电,测量精度理论上非常高,但电容的充放电过程存在非线性现象,限制了测量范围。计数法。量化时钟在被测信号上升沿计数器输出计数脉冲个数,测量范围广,容易实现,且能够做到实时处理。3、控制系统的论证与选择用FPGA可编程逻辑器件作为控制及数据处理的核心,通过对外部的 A/D 控制,

2、将采集到的模拟信号(正弦波、方波、矩形波)进行数字转换,再由计数模块对转换后的数据进行计数,通过显示模块输出。用STM32F407单片机作为主控芯片。STM32F407是Cortex_M4主频带DSP,利用它强大的数据处理能力和更加灵活的逻辑控制功能,克服了传统频率计精度不高、结构复杂、稳定性差的问题。主控芯片对外围放大整形处理后的信号进行捕捉,利用其内部定时器产生1s闸门时间,触发捕捉进行脉冲计数。被测信号经过全波整流后输入到测量有效值芯片,进行数据处理和输出。其系统方案如图1图 1FPGA有很强的时序控制能力,但控制能力不如STM32F407,并且在数字信号处理上较弱,在测量有效值和数据显

3、示上也比较麻烦,此外,FPGA的功耗较大,而STM32F407数字处理能力强,且功耗低,综合考虑,本设计选择方案二。二、系统理论分析与计算1 、频率测量原理分析用单片机中的定时器产生1s的闸门信号,计数器记录的周期个数为1s内被测信号的周期信号,即为被测信号的频率。其中,测量频率的误差与闸门的信号精度直接有关,为保证在1s内被测信号的周期信号误差在10-4量级,要求闸门信号的精度为10-5量级。当被测信号频率增高时,在闸门脉冲表精度不变的情况下,计数器的误差会增大,但相对误差不会增大,然而对于频率较低时会出现严重的误差,所以我们采用了STM32F407的触发捕捉来实现高速度高精度的测频,频率算

4、法示意图如图2。图2 频率算法示意图误差分析:触发捕捉测频法是基于频率的定义(即f=N/t)对信号的频率进行测量,经分析有 由于 所以 考虑到极限情况,相对误差最大值为式中,f/f为测量频率时的相对误差;N/N为计数值的相对误差;t/t为时间的相对误差。测量时间t为1 s,如果要减小N/N误差,就要增大f,而本设计触发捕捉方法就是为了高速、高精度地测量1Hz100MHz的信号,因此这项误差可以很小,基本忽略。2、时间间隔测量原理分析如图3为时间间隔测量原理图,量化时钟频率为f0,对应的周期T0 =1/f0,在待测脉冲上升沿计数器输出计数脉冲个数M、N,T1、T2为待测脉冲上升沿与下一个量化时钟

5、脉冲上升沿之间的时间间隔,则待测脉冲时间间隔Tx为:Tx=(N-M)T0+T1-T2 (1)然而,计数法得到的是计数脉冲个数M, N,因此其测量的脉冲时间间隔为: Tx=(N-M)T0 (2)比较表达式(1)(2)可得计数法的测量误差为=T1-T2,该误差称为计数法的原理误差。除了原理误差之外,计数法还存在时标误差,其产生的原因是量化时钟的稳定度 T0/ T0。通过提高量化时钟的频率可以减小测量误差。而本设计采用的STM32F407单片机主频为72MHz,可以高精度的测量时间间隔。图 33 、宽带通道放大器原理分析在实现频率和周期测量功能时,题目要求被测信号有效值电压范围50mV1V,STM3

6、2F407内部集成12位A/D转换,采样的精度为1/4096,对50mV电压采样,当基准电压为5V时则5V被分成4096份,则:则n=40.96,则其精度约为1/41,远大于1/4096,误差较大,所以要对被测信号进行放大,50mV放大至少100倍,也就要求增益至少为100的放大器,又被测信号的频率范围在110MHz,由 增益带宽积=带宽增益计算可知,增益带宽积不小于,所以要设计一个增益带宽积不小于1G的放大器电路,本设计采用K544对信号进行放大,输入到整形电路中。4、正弦波有效值测量原理正弦波有效值:把角速度当作时间来简化计算。把2 当作周期 T ,把小片段角度d 当作小片段时间。在一个周

7、期T内的有效值,即是计算一个周期T内的热量值相同的等效电压:一个周期T内的热量值(假设电阻R=1):u2,即相当于u2d,用角度时u=sin ,则dsin 2 d 在 02区间作积分: 故(2214sin4)-(0214sin0)等效电压U0产生的热量值U022等于故 U022 最终得:U00.707 即有效值等于峰值的 0.707 倍,而被测信号为全波信号,则全波整流的有效值只要计算0即可:故 (214sin2)-(0214sin0)22最终得:U00.707 即有效值等于峰值的 0.707 倍。方案:由于整流电路比较复杂,为了简化电路,本设计直接采用有效值芯片AD637进行测量,其3db带

8、宽为8MHz,符合要求,然后输入到STM32F407中,可以直接实现有效值的测量。5、脉冲信号占空比测量方法分析占空比是指正脉冲的得持续时间与脉冲周期的比值。即占空比=(脉冲宽度/信号周期)100%测量方法:数字测量法A、信号连接单片机定时器的捕获端口(上升触发)测量方波的周期T,并记录最后一次上升沿的时刻值。B、信号同时连接单片机外部中断(下降沿触发),进入中断后读取定时器的时间,减去A步骤中保留的上升沿时刻,得到高电平宽度W。C、W/T就是信号的占空比。6、提高仪器灵敏度的措施 为提高仪器的灵敏度,测频方法选择用触发捕捉,用同一个脉冲捕捉并初始化计数器,提高采样速率,减少中断服务函数的执行

9、时间,实现高速测频。通过对晶振的双精度补偿,基本实现测量无误差,实现高精度。再者,STM32F407供电电压为23.6V,在测量小信号时,可提高测量精度。三、电路与程序设计1、电路的设计在实际测试中,由于被测信号幅度有大有小,因此要对输入电路的幅度进行调整,且测量电路通常为数字电路,而数字电路一般对信号边沿敏感,因此输入电路应有整形功能,即能够产生能被STM32F407单片机识别的脉冲信号;在被测信号放大之间,还要进行阻抗变换,输入阻抗越高,对被测电路影响越小。本系统总体框图如图4。图4 系统总体框图(1)放大整形电路设计放大整形电路框图如图5图5 放大整形电路框图 放大整形本题设计测频范围为

10、1Hz-100MHz,考虑到输入电路的频响,输入电路分为低频段:1Hz-500KHz;高频段:500KHz-100MHz 。低频放大:U06A和U06B完成阻抗变换和信号放大,LM311完成整形;信号幅度调整和高输入阻抗功能由场效应管输入电路实现,C91、C92、R92、R93将输入信号限定在0V以上(直流);D6、D7用于对在信号限幅,使进入场效应管的信号不大于0.7Vpp;Q1(K544)场效应管实现信号放大,K544截止频率100MHZ;输入电路输入阻抗大于400千欧;其整形电路由高速比较器完成,本设计选用TL311,响应度50MHz。高频放大整形电路见附录1。(2)STM32F407最

11、小系统电路设计STM32F407是ST推出的32位RISC(精简指令集计算机)微控系列的产品,采用高性能的内核,工作频率为72MHz,内置高速储存器。STM32F407微处理器不能独立工作,其最小系统必须由相关的外围电路辅助,包括3.3V电源、8MHz晶振时钟、复位电路、数字和模拟间的去耦电路、调试接口(JTAG)、串行通信接口等电路。如图7STM32F407最小系统框图,STM32F407最小系统电路原理图见附录1 图7 STM32F407最小系统框图2、程序的设计(1)程序功能描述与设计思路1、程序功能描述根据题目要求,软件部分实现对被测信号频率、有效电压值等的测量。2、程序设计思路被测信

12、号通过定时器2的外部触发引脚,通过设置定时器2的从模式控制寄存器TIM2_SMCR的ETPS可将外部信号实现4分频;设置TIM2_SMCR的ECE使能外部时钟使能位,外部时钟输入为ETRF,设置SMS使触发输入TRGI为上升沿,TRGO重新初始化计数器,并且产生一个更新寄存器的信号。分频寄存器TIM2_PSC设置为0分频,TIM2_ARR设置16位计数器最大值为0xffff,当外部信号计数到0xffff时,会产生更新中断标志位UIF置1。定时器2对TIM2_SMCR将触发输入TRGI设置为TIM4_TRGO,从控制器模式设置为复位模式/TRGI的上升沿初始化定时器。通过设置定时器2的比较捕捉寄

13、存器1的CC1S为11,将IC1映射在TRC上,当TIM4溢出事件时,会触发定时器2将TIM2_CNT的值锁存到TIM2_CCR1中,并清除所有定时器的计数器。(2)程序流程图1、主程序流程图2、中断子程序流程图四、测试方案与测试结果1、测试方案用数字万用表检测硬件电路连接和元器件的完好;通过软件不断的调试程序,并仿真测试,利用示波器测试信号发生器产生的信号,最后,硬件和软件联调,测量不同频率的信号,观测并记录数据。2、测试条件与仪器测试条件:检查多次,仿真电路和硬件电路与系统原理图完全相同,并且检查无误。硬件电路无虚焊。测试仪器:信号发生器、数字电压表。3、测试结果及分析(1)测试结果(数据

14、)被测信号为三角波时,测量的数据如表1表110Hz100Hz1KHz1MHz10MHz40MHz50mV12Hz99Hz998Hz999.9KHz9.999MHz200mV500mV1V被测信号为方波时,测量的数据如表2表220mV16Hz999Hz100mV测试显示结果见附录1(2)测试分析与结论本次设计的数字频率计能够实现1Hz40MHz范围内的频率测量,被测信号小于100Hz时,测量相对误差的绝对值较大,被测信号大于100Hz时,测量相对误差的绝对值小于10-4,且频率较高时,能够消除绝对误差。本次设计完成了题目的基本要求和发挥部分的部分要求。五、总结本设计采用STM32F407F407

15、单片机作为主控芯片,它是一款高性能、低成本、低功耗的单片机,目前在许多有关单片机设计的问题中,得到了广泛的应用,在本次设计中使用STM32F407F407芯片可实现高精度频率的测量,也可减少外围器件的使用。经测试,本次所设计频率计的测量范围可达1Hz100MHz,测量相对误差的绝对值不大于10 -4,可对有效值在50mV1V之间的周期信号进行测量,也可对AB两路信号的时间间隔进行测量,且测量相对误差的绝对值不大于10-2 。所设计的频率计满足题目的要求。六、参考文献1 WaltJung运算放大器应用技术手册M北京:人民邮电出版社,20092 华成英,童诗白模拟电子技术基础M北京:高等教育出版社

16、,20073 徐江丰,陈曦.相关计数法数字频率计的研究与实现J.电子技术(上海),2003(4):16-18.4 张志成.基于STM32F407单片机的频率计的设计J.电子科技,2013(20):1-9.附录1:STM32F407最小系统电路原理图高频放大整形电路测试显示结果附录2:部分源程序#include STM32f407f10x.hCaiJi.h/配置系统时钟,使能各外设时钟void RCC_Configuration(void) SystemInit(); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); /时钟配置 RCC_A

17、PB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOF | RCC_APB2Periph_AFIO , ENABLE );void GPIO_Configuration(void) GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_Ini

18、tStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOF, &GPIO_InitStructure); GPIO_SetBits(GPIOF,GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &void NVIC_Configuration(void) NVIC

19、_InitTypeDef NVIC_InitStructure; #ifdef VECT_TAB_RAM NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endif NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; /NVIC配置 NVIC_InitStructure.NVIC_IRQChannelPreemp

20、tionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);void TIM3_Configuration(void)/TIM2初始化函数 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_ICInitTypeDef TIM_ICInitStructure; TIM_DeInit(TIM3); TIM_Time

21、BaseStructure.TIM_Period = 0xffff; TIM_TimeBaseStructure.TIM_Prescaler = ?; /此值保密,呵呵,大家自己可以算一下,唯一奥,不然不准 TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_ICInitStructure.TIM_Channel = TIM_Chann

22、el_2; /通道选择 TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; /上升沿触发 TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;/管脚与寄存器对应关系 TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; /输入预分频。意思是控制在多少个输入周期做一次捕获,如果 /输入的信号频率没有变,测得的周期也不会变。比如选择4分频,则每四个输入周 /期才做一次捕获,这样在输入信号变化不频繁的情况下

23、,可以减少软件被不断中断的次数。 TIM_ICInitStructure.TIM_ICFilter = 0x0; /滤波设置,经历几个周期跳变认定波形稳定0x00xF TIM_ICInit(TIM3, &TIM_ICInitStructure); /TIM_PWMIConfig(TIM3, & /根据参数配置TIM外设信息 TIM_SelectInputTrigger(TIM3, TIM_TS_TI2FP2); /选择IC2为始终触发源 TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);/TIM从模式:触发信号的上升沿重新初始化计数器和触发寄存器的更

24、新事件 TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable); /启动定时器的被动触发 TIM_Cmd(TIM3, ENABLE); /启动TIM2 TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE); /打开中断使能CC1中断请求STM32f407f10x_it.c文件STM32f407f10x_it.hxpt2046.h#includedelay.hextern int pinlv;extern int caiji;extern int m_timer;void TIM3_IRQHandler(void) if (TIM_GetITStatus(TIM3, TIM_IT_CC2) = SET) pinlv = TIM_GetCapture2(TIM3); caiji = 720000000/pinlv; /caiji=30000; TIM_ClearITPendingBit(TIM3, TIM_IT_CC2); /清楚TIM的中断待处理位二.中断法 CaiJi.C文件void Exit_Configuration

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1