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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx

1、 =(fx-fx0)/fx0=t /(Td-t ) 当Td远远大于t时,频率测量的最大误差为m=Ts/(Td-Ts)Ts/Td,由标准时钟信号的周期Ts和频率计数的闸门时间Td决定,Ts越小、Td越大,测量误差越小,即测量精度越高。在整个频率测量范围内,精度恒定,实现了等精度测量。当标准信号选取准确的1MHz信号源,Ts1us,选取Td100ms,就可使测量的最大相对误差105,即达到万分之一的测量精度。测频闸门时间Td的选取,还应保证大于一个被测信号周期Tx。目前采用FPGA设计的等精度频率计方案较多,但成本较高。等精度测量原理框图,如图6-2所示。预置门的打开和关闭由被测信号和预置的测量时

2、间控制,计数器Nx在预置门的控制下对被测信号频率计数,控制门根据预置门产生一个与被测信号同步的同步门;计数器No在同步门的控制下对时标计数,得到精确的闸门时间Tg。设时标周期为To,则被测频率Fx=Nx/NoTo。图6-2 等精度测量原理框图二、本设计方案本设计以51单片机为控制核心,全部系统均采用常规数字与模拟芯片。首先对输入的频率信号进行放大整形,使之转换成标准的TTL电平;然后根据频率大小自动选择不同的分频通道,再送入单片机进行计算处理,最后将处理结果显示出来。该系统具有电路简单、精度高、测量范围宽等特点。因此, 本设计的系统的具有良好的实用价值。 本设计的系统计划主要由信号放大整形模块

3、、分频与量程自动切换模块、微处理器模块、人机界面模块、电源输入模块等组成。其系统整体框图如图6-3所示。图6-3 系统整机结构框图1、测量方法选择 方案一:采用计数法测频法,方法简单,易实现,但低频精度不高,不适合宽范围测量。 方案二:采用测周法,低频精度高,但不适合高频范围。 方案三:采用等精度法,相对复杂,但精度高,适合范围大。 这是本设计的关键,也是系统设计核心思想。根据设计要求和设计者自身能力考虑,本设计选择方案三。 在具体的设计中,计划使用外部中断捕捉外部信号下降沿,用定时器累积外部信号多个周期的总时间(计划以500ms同步,实际计量均大于等于500ms )。因单片机工作速度有限,为

4、提高MCU工作效率,避免高频被测信号过度频繁触发中断,计划使用多级10分频器,配合数据选择器,将高频降到低频范围后测量。2、微处理器选择采用Philips系列的低功耗单片机,如LPC922,3V供电,20脚DIP封装,特点功耗低。普通51系列单片机,如AT89C52,5V供电,40脚DIP封装,8k字节Flash,256字节RAM,32 位I/O 口线,三个16 位定时器/计数器。单片机编程实现简单,能满足软硬件功能要求。 本系统中,要求被测量的信号的频率、幅度范围较宽。若采用3V供电系统则对外围芯片要求高,实验室较难实现。且普通51系列单片机足以满足需要,普通的仿真器即可支持系统开发。故决定

5、本设计采用方案二。 注意:实际上,如果作为商品设计,仍建议采用LPC922之类的新型51兼容单片机,因为他们还能够高速工作,有利于提高最终测量精度!3、分频和量程切换部分 分频部分采用集成计数器电路CD4518完成,量程切换主要有以下两种方案可选择。采用量程手动切换,如采用手持式万用表的旋钮开关。该方法简单,易于实现。量程自动切换,采用数据选择器芯片,如74HC151,利用单片机的I/O口对74HC151的通道选择端进行控制,选择当前信号的输入通道,从而实现量程的自动切换。 自动切换量程是当前仪器仪表的发展主流,体现智能化,同时避免人为操作误差。经考虑,本设计采用方案二。具体使用了两个100分

6、频和一个信号(低频时)直接输入,MCU需要控制三个选择,有软件进行自适应档位切换!4、人机界面采用普通的数码管显示,亮度高,醒目,价格便宜;但比较耗电,电路连接复杂,占用资源较多且显示单调。采用LCD液晶显示屏,不仅可以显示数字,还可以显示汉字、字符与图片。功耗低,电路连接简单,系统编程方便。但价格比较高。 LCD可显示更多的信息量,且界面直观,符合当前人们的习惯。故本设计选择方案二。 本系统用户控制较简单,故采用几个独立按键即可。5、电源输入模块采用三端集成稳压器,搭配多级电容滤波,滤波电路简单,负载纹波较小,电路简单,价格低廉;它的缺点是输出特性较差,有3V以上的输入压降,效率不高。采用开

7、关电源,利用集成AC-DC变换器,如TOP221。电路实现也不是很复杂,同时输入压降小,效率高,可达80%以上。价格相对较高。 结合本系统需要和实际应用,考虑使用方案一。6、设计中的难点和关键 本设计的关键和难点在于,测量信号的电压幅度范围、频率范围和信号类型较宽,并要求可以测量正弦波、方波、三角波等。如何采用最有效,简单的方法将输入信号转换成单片机可以识别的标准电平是一大难点,也是关键。 另外当今市场上频率计产品很多,如果本设计的测量精度很低,也就失去了研究设计的意义。如何达到相对测量精度优于0.01%的高精度,也是另一难点。 其他如输入信号的量程自动切换、自校准等也是本设计中存在的难点。系

8、统硬件设计一、系统总体设计思想 本系统以51单片机为控制核心,采用硬件和软件结合方式实现等精度测量控制和量程自动切换功能;并且采用高增益带宽运放和高速比较器对信号进行放大整形处理,使系统能对最小Vpp为50mV以上的多种信号类型的交流信号的频率进行精确的测量。系统硬件框图如图6-4所示。图6-4 系统硬件框图本系统所采用的一种等精度测量思想:通过闸门允许开启标志与被测信号下沿同步,将参考闸门时间 控制为500ms,定时器定时中断周期为5ms。测量时当参考闸门信号允许开启和检测到被测信号脉冲沿到达时开始计时,对标准时钟计数;参考闸门关闭时,计时器并不立即停止计时 而是待检测到被测信号脉冲下降沿到

9、达时才停止计时,完成测量被测信号整数个周期的过程。测量的实际闸门时间与参考闸门时间可能不完全相符,但最大差值不超过被测信号的一个周期。然后再通过f=1/T即可。 理论上,采用这种方法测量其精度完全可以达到0.01%以内。如单片机用24M的外部晶振,机器周期为0.5us 。假设闸门时间 刚好为500ms,则其最大相对误差单位为 =(0.5 /500ms)*100%=0.0001%,远远小于本设计的要求。考虑到实际中还会存在其他的误差,典型的是中断响应和定时器开启与停止误差,但是这些误差可以通过软件补偿。因此,此设计方案的但总误差不会超过0.01%,故理论上该方法确实可行。二、硬件具体实现 本系统

10、主要包含:微处理器模块、信号放大整形模块、分频器通道模块、自动量程切换模块、人机界面模块和电源模块。1、输入保护电路 为提高系统可测量信号的幅度上限,同时防止误操作接入较大幅度的信号,烧坏系统的电路,特在信号输入处加上钳位保护电路。考虑到信号频率可能较大,采用快恢复二极管1N5819,也可以采用1N4148。电路如图6-5所示。图6-5 输入限幅保护电路2、信号放大电路设计 考虑到输入信号最高频率达到1MHz,同时输入信号幅度较小需进行放大,故信号放大部分运算放大器选用LF353PC。LF353PC是一款双电源供电的宽带宽运算放大器,单位增益带宽达4MHz,转换速率13V/s,片内含两个放大器

11、,价格低廉。采用两级放大,一级放大4倍,两级共放大16倍,按输入的信号频率为1MHz,Vpp=50mV计算,可放大为800mV,采用一片LF353PC即可实现信号的放大要求。采用同相放大器电路,计算公式为 ,因R1=10K,R2=30K,所以VO=4Vi 。同时在电路中加入了电容隔直,除去信号中的直流分量。同时鉴于后面比较器为单电源,第二级放大器设置了虚地。如果采用高档次的一般高速放大器EL5210,则可以直接使用单5V电源配合虚地来放大。图6-6 信号放大器3、信号波形整形电路设计 采用电压比较器对放大后的信号进行整形,转换成标准的矩形脉冲。考虑到要能满足最大频率1MHz的信号,这里选用高速

12、比较器TL714CP。TL714CP是TI公司生产的一款高速电压比较器,单电源供电,增益带宽积50MHz。这里采用同向比较,考虑到信号带有毛刺,高速电压比较器在参考电压处会出现抖动造成连续翻转,从而使系统在脉冲计数上带来误差。所以在比较器上加了一个正反馈(类似斯密特触发器),避免这种干扰现象出现。反馈电阻的参数大小根据具体情况调试后选定。电路如图6-7所示。请注意它的过零比较点是“虚地”,Vr!图6-7 信号整形电路4、“虚地”参考电压电路设计 因为输入的信号可能是双极性的,而电压比较器是单电源供电的。为信号放大的第二级和电压比较器提供一个“虚地”参考电压,将双极性信号转换成单极性信号,可以使

13、TL714能有效检测信号大小,并进行比较整形。“虚地“参考电压可以由电压参考二极管LM385-1.2输出,再经过一个电压跟随器得到,电路简单,电压稳定。电路如图6-8所示。图6-8 虚地产生电路5、分频器通道设计 输入信号的频率范围为10Hz1MHz,本系统将它分成10Hz100Hz, 100Hz10KHz,10KHz1MHz三档。故需要两个分频通道,分频系数分别为100,10000。这里采用集成计数器电路CD4518BE,自制分频通道电路,一片CD4518BE即可实现10*10分频,将两片CD4518BE级联,便可得到100分频和10000分频。电路图6-9。图6-9 分频器电路6、量程自动

14、切换电路设计根据设计思想将量程共分为三档,故只需三路通道即可。数据选择器MC74HC151N内置8路通道,将经分频和未分频的信号分别接到这8路通道中的任意三个通道。为软件编程方便,这里接在D0、D1、D2三个通道选择控制端A0、A1、A2接单片机的I/O口,单片机通过改变这三个I/O口的输出电平即可选择MC74HC151N内置8路通道中的任何一个通道,从而实现量程的自动切换。电路如图6-10所示。图6-10 量程切换电路7、控制核心电路设计 选用W78E58P单片机为系统的微处理器,W78E58具有256字节片内RAM,32KB 程序存储器地址间,且可工作于40MHz的最高时钟频率。为提高测量

15、的精度,减少系统误差,采用的晶振越高越好,这里采用24MHz的外部时钟。复位电路采用看门狗电路X5045P,它是一种集看门狗、电压监控和串行EEPROM 三种功能于一身的可编程控制电路。512 x 8个字节的EEPROM,为系统中一些参数的保存提供了存储空间。电路如图6-11所示。图6-11 MCU核心电路8、显示电路设计 选择使用CM12864-12汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192 个中文汉字(16X16 点阵)、128个字符(8X16 点阵)及64X256 点阵显示RAM(GDRAM)。与MCU接口可选 8 位或4 位并行/3 位串行。为节省单片机I/O口,本系统采

16、用3位串行接口。电路如图6-12所示。配置了一个显示反差调节电位器R15,保证获得合适显示效果。图6-12 LCD显示接口9、键盘电路设计 用户操作应设置的尽量简单,易操作。结合功能的需要,在面板上设置两个操作按键。分别是确定键、校准键。确定键和校准键经上拉后直接接到单片机I/O口。 在进行实际应用的仪器时,者两个按键应该设置在仪器内部,并不提供给用户使用。10、电源设计 鉴于系统功耗很低,整机电流主要消耗在MCU上,约40mA以下,对电源要求不高,直接采用普通的线性稳压电源电路 。具体包括:(1)220V降压变压器,双9V输出,功率3W。实际需要远小于3W,鉴于1W的变压器体积均很小,自身效

17、率低,故选用了3W变压器。(2)整流桥及双输出电源滤波电容。(3)7805及7905稳压器。(4)输出滤波电容。三、软件设计(一)、软件总体设计框架 软件部分主要由频率计算核心模块、量程自动切换模块、LCD数据显示处理模块、自校准模块等组成,如图6-13所示。 这里额外加上了一个极限报警,可以再测量信号超过设定时报警。给出继电器触点信号。图6-13 软件框架结构主程序大致流程为,开机时先系统初始化;然后判断校准键是否按下,无键按下则跳过校准程序,否则进入校准程序;读取EEPROM中校准数据;开机量程判断,自动切换量程,选择最适档位;开始正式测量并将测得数据处理后送至LCD进行显示。软件模块主要

18、流程,如图6-14所示。图6-14 主程序流程图(二)、各主要功能部分软件设计思想及流程图 1、频率测量模块 频率测量模块是整个系统软件部分的核心,它对测量值的准确度起着决定性的作用。单片机的INT0在闸门时间内检测到的脉冲个数以及这些脉冲从开始到结束经历的时间,时间精确到0.5。具体包括定时器中断服务程序、INT0中断服务程序、数据运算处理程序,三个程序紧密相关,如图6-15所示。频率ff的计算公式为ff=n_fx/(float)time1,其中n_fx为闸门时间内的脉冲个数,time1为闸门的精确时间。因为定时器的最大定时时间设定为5ms,所以Time1的计算公式为:time1=time_

19、coumt1*5.00705ms +(tl0+th0*256)*0.05 其中tl0=TL0-0xf0;th0=TH0-0xd8;time_count1是T0的中断个数。为保证精度,数据运算处理部分用到了多个浮点运算;因为脉冲检测过程中在脉冲沿上会产生一定时间的误差,还有运算过程带来的误差,所以最后还对ff进行了一个修正。2 自动量程切换模块 自动量程切换实际是由软硬件一起完成的。一次频率测量结束后经过运算处理判定当前信号频率已超过该档量程范围时。使用switch case语句,执行不同的命令,单片机接MC74HC151N三个地址端的I/O口的电平发生改变。控制分频器通道进行通道切换,从而实现

20、自动量程切换。程序主要流程,见图6-16。图6-16 自动量程切换部分软件流程图3、数据显示处理模块 频率测量部分送来的数据只是纯粹的一个数字。如果直接送到LCD上显示给用户看,用户将很难准确获取该数据中所包含的信息。于是用字符形式直接在显示器上显示出数据(精确到小数点后四位)、单位(Hz、KHz、MHz)和汉字信息。图6-17 显示部分流程图4、自校准模块 系统晶振难免存在初始误差,对精度造成一定的影响。这种误差通过一定的方法是可以消除的,如进行补偿。校准其实就是与标准值进行比较计算,从而得到一个补偿系数。根据实际情况,这里分别对量程的最大值和最小值进行校准。将两个校准值相减,然后再量化即乘

21、以0.01,最终得到的值就是补偿系数。最后将这个系数存到EEPROM中保存起来。图6-18 自校准补偿流程图图6-19 原理图附代码#include#include #define uint unsigned int#define uchar unsigned charuchar f_str15;uchar unit4;uint rang=0;uint th0=0;uint tl0=0;uint n_f1=0;uint n_f2=0;double time1=0;double ff=0;uchar s05_flag=0;double timer_count1=0;double timer_co

22、unt2=0;uchar cs_flag=0;void switch_rang ();void delay1(unsigned int k);void delay(uint z);void fraction_to_str(float a,uchar* pStr);void float_to_str(float a,uchar* pStr);void display(unsigned char x,unsigned char y,unsigned char *str);void Write_Data(uchar dat);void Set_Cursor(unsigned char x, unsi

23、gned char y);sbit xz_key=P06;sbit sc_key=P07;sbit td_a=P20;sbit td_b=P21;sbit td_c=P22;sbit buzz=P23;/lcd显示定义#define LCD_DATA P1 /*数据口 */sbit RS = P00; /*并行的指令/数据选择信号, H数据, L命令*/sbit RW = P01; /*并行读写选择信号, H读, L写*/sbit E = P02; /*并行使能端, H有效, L无效*/sbit PSB=P04; /*串并行选择端,H选择并行,L选择串行*/sbit RST=P03;/bit

24、busy=0; /*忙碌标志*/*lcd显示程序*/void display(unsigned char x,unsigned char y,unsigned char *str)unsigned char i = 0 ;Set_Cursor(x,y); /设置显示的起始地址while(stri != 0)Write_Data(stri); /写入需要显示字符的显示码i+;void delay1(unsigned int k)unsigned int i;unsigned char j;for(i=0;ik;i+)for(j=0;j10;j+); uchar Read_Data() /读数据

25、delay1(1); RS=1; RW=1; E=1; delay(5); return LCD_DATA; void Write_Data(uchar dat) /写一个字节数据 RW=0; delay(1); LCD_DATA=dat; E=0; void Write_Command(uchar dat) /写命令 RS=0; void Set_Cursor(unsigned char x, unsigned char y) unsigned char i; switch(x)/确定行号 case 0x00: i=0x80; break;/第一行 case 0x01: i=0x90;/第二

26、行 case 0x02: i=0x88;/第三行 case 0x03: i=0x98;/第四行 default : i = y+i;/确定列号 Write_Command(i);/写地址void LCD_Init() /*LCD初始化*/ delay(45); /延时45ms /PSB=1; /8位并行口 /复位操作 /RST=1;delay(1); /RST=0; Write_Command(0x30); /设置为8位并行口,基本指令集 delay(10); Write_Command(0x30); /再次设置为8位并行口,基本指令集 delay(5); Write_Command(0x38);/设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据 Write_Command(0x08); Write_Command(0x01);

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2