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

上传人:b****4 文档编号:8050758 上传时间:2023-05-10 格式:DOCX 页数:34 大小:1.39MB
下载 相关 举报
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第1页
第1页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第2页
第2页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第3页
第3页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第4页
第4页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第5页
第5页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第6页
第6页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第7页
第7页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第8页
第8页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第9页
第9页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第10页
第10页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第11页
第11页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第12页
第12页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第13页
第13页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第14页
第14页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第15页
第15页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第16页
第16页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第17页
第17页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第18页
第18页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第19页
第19页 / 共34页
正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《正弦波三角波方波等多用输入频率检测仪设计Word格式文档下载.docx(34页珍藏版)》请在冰点文库上搜索。

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

δ=(fx-fx0)/fx0=Δt/(Td-Δt)

当Td远远大于Δt时,频率测量的最大误差为δm=Ts/(Td-Ts)≈Ts/Td,由标准时钟信号的周期Ts和频率计数的闸门时间Td决定,Ts越小、Td越大,测量误差越小,即测量精度越高。

在整个频率测量范围内,精度恒定,实现了等精度测量。

当标准信号选取准确的1MHz信号源,Ts=1us,选取Td≥100ms,就可使测量的最大相对误差≤10-5,即达到万分之一的测量精度。

测频闸门时间Td的选取,还应保证大于一个被测信号周期Tx。

目前采用FPGA设计的等精度频率计方案较多,但成本较高。

等精度测量原理框图,如图6-2所示。

预置门的打开和关闭由被测信号和预置的测量时间控制,计数器Nx在预置门的控制下对被测信号频率计数,控制门根据预置门产生一个与被测信号同步的同步门;

计数器No在同步门的控制下对时标计数,得到精确的闸门时间Tg。

设时标周期为To,则被测频率Fx=Nx/NoTo。

图6-2等精度测量原理框图

二、本设计方案

本设计以51单片机为控制核心,全部系统均采用常规数字与模拟芯片。

首先对输入的频率信号进行放大整形,使之转换成标准的TTL电平;

然后根据频率大小自动选择不同的分频通道,再送入单片机进行计算处理,最后将处理结果显示出来。

该系统具有电路简单、精度高、测量范围宽等特点。

因此,本设计的系统的具有良好的实用价值。

本设计的系统计划主要由信号放大整形模块、分频与量程自动切换模块、微处理器模块、人机界面模块、电源输入模块等组成。

其系统整体框图如图6-3所示。

图6-3系统整机结构框图

1、测量方法选择

方案一:

采用计数法测频法,方法简单,易实现,但低频精度不高,不适合宽范围测量。

方案二:

采用测周法,低频精度高,但不适合高频范围。

方案三:

采用等精度法,相对复杂,但精度高,适合范围大。

这是本设计的关键,也是系统设计核心思想。

根据设计要求和设计者自身能力考虑,本设计选择方案三。

在具体的设计中,计划使用外部中断捕捉外部信号下降沿,用定时器累积外部信号多个周期的总时间(计划以500ms同步,实际计量均大于等于500ms)。

因单片机工作速度有限,为提高MCU工作效率,避免高频被测信号过度频繁触发中断,计划使用多级10分频器,配合数据选择器,将高频降到低频范围后测量。

2、微处理器选择

采用Philips系列的低功耗单片机,如LPC922,3V供电,20脚DIP封装,特点功耗低。

普通51系列单片机,如AT89C52,5V供电,40脚DIP封装,8k字节Flash,256字节RAM,32位I/O口线,三个16位定时器/计数器。

单片机编程实现简单,能满足软硬件功能要求。

本系统中,要求被测量的信号的频率、幅度范围较宽。

若采用3V供电系统则对外围芯片要求高,实验室较难实现。

且普通51系列单片机足以满足需要,普通的仿真器即可支持系统开发。

故决定本设计采用方案二。

注意:

实际上,如果作为商品设计,仍建议采用LPC922之类的新型51兼容单片机,因为他们还能够高速工作,有利于提高最终测量精度!

3、分频和量程切换部分

分频部分采用集成计数器电路CD4518完成,量程切换主要有以下两种方案可选择。

采用量程手动切换,如采用手持式万用表的旋钮开关。

该方法简单,易于实现。

量程自动切换,采用数据选择器芯片,如74HC151,利用单片机的I/O口对74HC151的通道选择端进行控制,选择当前信号的输入通道,从而实现量程的自动切换。

自动切换量程是当前仪器仪表的发展主流,体现智能化,同时避免人为操作误差。

经考虑,本设计采用方案二。

具体使用了两个100分频和一个信号(低频时)直接输入,MCU需要控制三个选择,有软件进行自适应档位切换!

4、人机界面

采用普通的数码管显示,亮度高,醒目,价格便宜;

但比较耗电,电路连接复杂,占用资源较多且显示单调。

采用LCD液晶显示屏,不仅可以显示数字,还可以显示汉字、字符与图片。

功耗低,电路连接简单,系统编程方便。

但价格比较高。

LCD可显示更多的信息量,且界面直观,符合当前人们的习惯。

故本设计选择方案二。

本系统用户控制较简单,故采用几个独立按键即可。

5、电源输入模块

采用三端集成稳压器,搭配多级电容滤波,滤波电路简单,负载纹波较小,电路简单,价格低廉;

它的缺点是输出特性较差,有3V以上的输入压降,效率不高。

采用开关电源,利用集成AC-DC变换器,如TOP221。

电路实现也不是很复杂,同时输入压降小,效率高,可达80%以上。

价格相对较高。

结合本系统需要和实际应用,考虑使用方案一。

6、设计中的难点和关键

本设计的关键和难点在于,测量信号的电压幅度范围、频率范围和信号类型较宽,并要求可以测量正弦波、方波、三角波等。

如何采用最有效,简单的方法将输入信号转换成单片机可以识别的标准电平是一大难点,也是关键。

另外当今市场上频率计产品很多,如果本设计的测量精度很低,也就失去了研究设计的意义。

如何达到相对测量精度优于0.01%的高精度,也是另一难点。

其他如输入信号的量程自动切换、自校准等也是本设计中存在的难点。

系统硬件设计

一、系统总体设计思想

本系统以51单片机为控制核心,采用硬件和软件结合方式实现等精度测量控制和量程自动切换功能;

并且采用高增益带宽运放和高速比较器对信号进行放大整形处理,使系统能对最小Vpp为50mV以上的多种信号类型的交流信号的频率进行精确的测量。

系统硬件框图如图6-4所示。

图6-4系统硬件框图

本系统所采用的一种等精度测量思想:

通过闸门允许开启标志与被测信号下沿同步,将参考闸门时间控制为500ms,定时器定时中断周期为5ms。

测量时当参考闸门信号允许开启和检测到被测信号脉冲沿到达时开始计时,对标准时钟计数;

参考闸门关闭时,计时器并不立即停止计时而是待检测到被测信号脉冲下降沿到达时才停止计时,完成测量被测信号整数个周期的过程。

测量的实际闸门时间与参考闸门时间可能不完全相符,但最大差值不超过被测信号的一个周期。

然后再通过f=1/T即可。

理论上,采用这种方法测量其精度完全可以达到0.01%以内。

如单片机用24M的外部晶振,机器周期为0.5us。

假设闸门时间刚好为500ms,则其最大相对误差单位为=(0.5/500ms)*100%=0.0001%,远远小于本设计的要求。

考虑到实际中还会存在其他的误差,典型的是中断响应和定时器开启与停止误差,但是这些误差可以通过软件补偿。

因此,此设计方案的但总误差不会超过0.01%,故理论上该方法确实可行。

二、硬件具体实现

本系统主要包含:

微处理器模块、信号放大整形模块、分频器通道模块、自动量程切换模块、人机界面模块和电源模块。

1、输入保护电路

为提高系统可测量信号的幅度上限,同时防止误操作接入较大幅度的信号,烧坏系统的电路,特在信号输入处加上钳位保护电路。

考虑到信号频率可能较大,采用快恢复二极管1N5819,也可以采用1N4148。

电路如图6-5所示。

图6-5输入限幅保护电路

2、信号放大电路设计

考虑到输入信号最高频率达到1MHz,同时输入信号幅度较小需进行放大,故信号放大部分运算放大器选用LF353PC。

LF353PC是一款双电源供电的宽带宽运算放大器,单位增益带宽达4MHz,转换速率13V/s,片内含两个放大器,价格低廉。

采用两级放大,一级放大4倍,两级共放大16倍,按输入的信号频率为1MHz,Vpp=50mV计算,可放大为800mV,采用一片LF353PC即可实现信号的放大要求。

采用同相放大器电路,计算公式为,因R1=10K,R2=30K,所以VO=4Vi。

同时在电路中加入了电容隔直,除去信号中的直流分量。

同时鉴于后面比较器为单电源,第二级放大器设置了虚地。

如果采用高档次的一般高速放大器EL5210,则可以直接使用单5V电源配合虚地来放大。

图6-6信号放大器

3、信号波形整形电路设计

采用电压比较器对放大后的信号进行整形,转换成标准的矩形脉冲。

考虑到要能满足最大频率1MHz的信号,这里选用高速比较器TL714CP。

TL714CP是TI公司生产的一款高速电压比较器,单电源供电,增益带宽积50MHz。

这里采用同向比较,考虑到信号带有毛刺,高速电压比较器在参考电压处会出现抖动造成连续翻转,从而使系统在脉冲计数上带来误差。

所以在比较器上加了一个正反馈(类似斯密特触发器),避免这种干扰现象出现。

反馈电阻的参数大小根据具体情况调试后选定。

电路如图6-7所示。

请注意它的过零比较点是“虚地”,Vr!

图6-7信号整形电路

4、“虚地”参考电压电路设计

因为输入的信号可能是双极性的,而电压比较器是单电源供电的。

为信号放大的第二级和电压比较器提供一个“虚地”参考电压,将双极性信号转换成单极性信号,可以使TL714能有效检测信号大小,并进行比较整形。

“虚地“参考电压可以由电压参考二极管LM385-1.2输出,再经过一个电压跟随器得到,电路简单,电压稳定。

电路如图6-8所示。

图6-8虚地产生电路

5、分频器通道设计

输入信号的频率范围为10Hz~1MHz,本系统将它分成10Hz~100Hz,100Hz~10KHz,10KHz~1MHz三档。

故需要两个分频通道,分频系数分别为100,10000。

这里采用集成计数器电路CD4518BE,自制分频通道电路,一片CD4518BE即可实现10*10分频,将两片CD4518BE级联,便可得到100分频和10000分频。

电路图6-9。

图6-9分频器电路

6、量程自动切换电路设计

根据设计思想将量程共分为三档,故只需三路通道即可。

数据选择器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的最高时钟频率。

为提高测量的精度,减少系统误差,采用的晶振越高越好,这里采用24MHz的外部时钟。

复位电路采用看门狗电路X5045P,它是一种集看门狗、电压监控和串行EEPROM三种功能于一身的可编程控制电路。

512x8个字节的EEPROM,为系统中一些参数的保存提供了存储空间。

电路如图6-11所示。

图6-11MCU核心电路

8、显示电路设计

选择使用CM12864-12汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。

与MCU接口可选8位或4位并行/3位串行。

为节省单片机I/O口,本系统采用3位串行接口。

电路如图6-12所示。

配置了一个显示反差调节电位器R15,保证获得合适显示效果。

图6-12LCD显示接口

9、键盘电路设计

用户操作应设置的尽量简单,易操作。

结合功能的需要,在面板上设置两个操作按键。

分别是确定键、校准键。

确定键和校准键经上拉后直接接到单片机I/O口。

在进行实际应用的仪器时,者两个按键应该设置在仪器内部,并不提供给用户使用。

10、电源设计

鉴于系统功耗很低,整机电流主要消耗在MCU上,约40mA以下,对电源要求不高,直接采用普通的线性稳压电源电路。

具体包括:

(1)220V降压变压器,双9V输出,功率3W。

实际需要远小于3W,鉴于1W的变压器体积均很小,自身效率低,故选用了3W变压器。

(2)整流桥及双输出电源滤波电容。

(3)7805及7905稳压器。

(4)输出滤波电容。

三、软件设计

(一)、软件总体设计框架

软件部分主要由频率计算核心模块、量程自动切换模块、LCD数据显示处理模块、自校准模块等组成,如图6-13所示。

这里额外加上了一个极限报警,可以再测量信号超过设定时报警。

给出继电器触点信号。

 

图6-13软件框架结构

主程序大致流程为,开机时先系统初始化;

然后判断校准键是否按下,无键按下则跳过校准程序,否则进入校准程序;

读取EEPROM中校准数据;

开机量程判断,自动切换量程,选择最适档位;

开始正式测量并将测得数据处理后送至LCD进行显示。

软件模块主要流程,如图6-14所示。

图6-14主程序流程图

(二)、各主要功能部分软件设计思想及流程图

1、频率测量模块

频率测量模块是整个系统软件部分的核心,它对测量值的准确度起着决定性的作用。

单片机的INT0在闸门时间内检测到的脉冲个数以及这些脉冲从开始到结束经历的时间,时间精确到0.5。

具体包括定时器中断服务程序、INT0中断服务程序、数据运算处理程序,三个程序紧密相关,如图6-15所示。

频率ff的计算公式为ff=n_fx/(float)time1,其中n_fx为闸门时间内的脉冲个数,time1为闸门的精确时间。

因为定时器的最大定时时间设定为5ms,所以Time1的计算公式为:

time1=time_coumt1*5.00705ms+(tl0+th0*256)*0.05

其中tl0=TL0-0xf0;

th0=TH0-0xd8;

time_count1是T0的中断个数。

为保证精度,数据运算处理部分用到了多个浮点运算;

因为脉冲检测过程中在脉冲沿上会产生一定时间的误差,还有运算过程带来的误差,所以最后还对ff进行了一个修正。

2自动量程切换模块

自动量程切换实际是由软硬件一起完成的。

一次频率测量结束后经过运算处理判定当前信号频率已超过该档量程范围时。

使用switchcase语句,执行不同的命令,单片机接MC74HC151N三个地址端的I/O口的电平发生改变。

控制分频器通道进行通道切换,从而实现自动量程切换。

程序主要流程,见图6-16。

图6-16自动量程切换部分软件流程图

3、数据显示处理模块

频率测量部分送来的数据只是纯粹的一个数字。

如果直接送到LCD上显示给用户看,用户将很难准确获取该数据中所包含的信息。

于是用字符形式直接在显示器上显示出数据(精确到小数点后四位)、单位(Hz、KHz、MHz)和汉字信息。

图6-17显示部分流程图

4、自校准模块

系统晶振难免存在初始误差,对精度造成一定的影响。

这种误差通过一定的方法是可以消除的,如进行补偿。

校准其实就是与标准值进行比较计算,从而得到一个补偿系数。

根据实际情况,这里分别对量程的最大值和最小值进行校准。

将两个校准值相减,然后再量化即乘以0.01,最终得到的值就是补偿系数。

最后将这个系数存到EEPROM中保存起来。

图6-18自校准补偿流程图

图6-19原理图

附代码

#include<

reg52.h>

#include<

intrins.h>

#defineuintunsignedint

#defineucharunsignedchar

ucharf_str[15];

ucharunit[4];

uintrang=0;

uintth0=0;

uinttl0=0;

uintn_f1=0;

uintn_f2=0;

doubletime1=0;

doubleff=0;

uchars05_flag=0;

doubletimer_count1=0;

doubletimer_count2=0;

ucharcs_flag=0;

voidswitch_rang();

voiddelay1(unsignedintk);

voiddelay(uintz);

voidfraction_to_str(floata,uchar*pStr);

voidfloat_to_str(floata,uchar*pStr);

voiddisplay(unsignedcharx,unsignedchary,unsignedchar*str);

voidWrite_Data(uchardat);

voidSet_Cursor(unsignedcharx,unsignedchary);

sbitxz_key=P0^6;

sbitsc_key=P0^7;

sbittd_a=P2^0;

sbittd_b=P2^1;

sbittd_c=P2^2;

sbitbuzz=P2^3;

//lcd显示定义

#defineLCD_DATAP1/*数据口*/

sbitRS=P0^0;

/*并行的指令/数据选择信号,H数据,L命令*/

sbitRW=P0^1;

/*并行读写选择信号,H读,L写*/

sbitE=P0^2;

/*并行使能端,H有效,L无效*/

//sbitPSB=P0^4;

/*串并行选择端,H选择并行,L选择串行*/

//sbitRST=P0^3;

//bitbusy=0;

/*忙碌标志*/

//*****lcd显示程序****//

voiddisplay(unsignedcharx,unsignedchary,unsignedchar*str)

{

unsignedchari=0;

Set_Cursor(x,y);

//设置显示的起始地址

while(str[i]!

='

\0'

Write_Data(str[i]);

//写入需要显示字符的显示码

i++;

}

voiddelay1(unsignedintk)

unsignedinti;

unsignedcharj;

for(i=0;

i<

k;

i++)

for(j=0;

j<

10;

j++);

ucharRead_Data()//读数据

{

delay1

(1);

RS=1;

RW=1;

E=1;

delay(5);

returnLCD_DATA;

}

voidWrite_Data(uchardat)//写一个字节数据

RW=0;

delay

(1);

LCD_DATA=dat;

E=0;

voidWrite_Command(uchardat)//写命令

RS=0;

voidSet_Cursor(unsignedcharx,unsignedchary)

{

unsignedchari;

switch(x)//确定行号

case0x00:

i=0x80;

break;

//第一行

case0x01:

i=0x90;

//第二行

case0x02:

i=0x88;

//第三行

case0x03:

i=0x98;

//第四行

default:

}

i=y+i;

//确定列号

Write_Command(i);

//写地址

voidLCD_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