APP下载

基于Arduino的高精密数字频率计的设计

2020-10-19颜谦和颜珍平

仪表技术与传感器 2020年9期
关键词:流程图闸门矩形

颜谦和,颜珍平

(湖南铁道职业技术学院,湖南株洲 412001)

0 引言

准确实现电子技术中的频率响应、滤波电路中设计的选频网络、信号源的设计等都需要测量频率[1],频率测量的精密度决定了设计系统的精密性,因此实现频率的精密测量至关重要。

频率测量的方法有多种,其中应用计数法原理制成的数字式频率测量仪器具有精度高、使用方便、测量迅速的特点,便于实现测量过程自动化[2-7]。其工作原理为测量通过测量一定闸门时间内信号的脉冲个数,然后以数字形式显示频率值。

当前的许多简易频率计大多采用CPLD或者PFGA进行设计[8-11],因为CPLD和FPGA的采样频率、响应速度快,可实现宽频率的快速测量,但是CPLD和FPGA比较贵,编程设计难度大。本文拟基于Arduino,设计一款简易高精度数字频率计,采用模块化和层次化的设计思路,运用mega2560单片机进行数据的处理和分析,可实现50 mV~2 V的正弦波和矩形波的频率精准测量。测量范围能够达到1 Hz~10 MHz,测量精度达到0.000 1 Hz。

1 系统总体设计与工作原理

系统总体框图如图1所示。主要包括电源电路、放大与整形电路、单片机主控电路、分频电路、显示电路、闸门信号产生电路等[12-13]。采用Arduino系列中的新型芯片mega2560设计并制作一个闸门时间为1 s的数字频率计,实现对频率和周期的测量。

图1 系统总体框图

2 硬件电路设计

2.1 电源电路

本设计采用LM7805稳压芯片提供5 V电压供电。全波电路图如图2所示,具体组成:引入12~24 V交流电压、经过二极管整流、电容简单滤波、LM7805稳压和2.5 V为基准的模拟信号地。

图2 电源电路图

2.2 放大与整形电路

放大与整形电路由NE5534构成。NE5534构成的闭环放大器将输入为FX的周期信号引入正弦波、矩形波,进行同相放大。将电源电压设为5 V,当输入电压信号幅值比较大时,将放大后的波形控制在5 V以内,NE5534构成的过零比较器对放大器的输出进行整形,使之成为矩形脉冲。

具体的电路图如图3和图4所示。

图4 信号整形电路图

图3 信号放大电路图

2.3 闸门电路设计

闸门信号产生电路由频率为32.768 kHz的晶振电路、CD4060构成的14级分频器和CD4013构成的2级分频器组成,当晶振单路提供的32.768 kHz的标准正弦波频率经过CD4060和CD4013构成的16级分频(32768/216)得到频率为0.5 Hz的方波,由此就产生了1 s的闸门信号。电路如图5所示。

图5 1 s闸门信号产生电路图

2.4 分频电路设计

通过CD4060进行多级分频,具体电路如图6所示。

图6 分频电路

3 系统软件设计

主程序主要完成硬件的初始化、信号的采集、数据的处理和数据的显示功能。具体流程图如图7所示。

图7 主程序流程图

//主题程序:

if(fre>100000)Fre_Text(1);

else Fre_Text(0);//频率大于100 kHz,选择16分频

Fre_crol();//分频

Data_Display();显示

//准备工作:

#include //LCD官方库

#include

long count,fre,dr_high,dr_low;//计数、频率、高、低电平量化。

int i;

float wide,sum;//占空比、累加零时变量

const int rs=8,en=9,d4=10,d5=11,d6=12,d7=13;

LiquidCrystal lcd(rs,en,d4,d5,d6,d7);//LCD显示初始化

//初始化:

lcd.begin(16,2);

pinMode(4,OUTPUT);//闸门控制信号,高电平开启

PinMode(2,INPUT);//原信号

pinMode(3,INPUT);//4级分频

pinMode(18,INPUT);//8级分频

pinMode(19,INPUT);//12级分频

pinMode(20,INPUT);//1s闸门信号

3.1 频率的获取

频率获取代码:

digitalWrite(HIGH,4);//打开闸门

while(digitalRead(20));count=0;//准备

while(!digitalRead(20));//等待高电平到来

attachInterrupt(signment,int1,FALLING);

//中断0,2管脚,上升沿触发方式

while(digitalRead(20));//等待测试结束

if(signment)fre=count*16;else fre=count;

if(count>=2)fre=fre-1;

detachInterrupt(signment);//关闭中断int0。

其流程图如图8所示。

图8 频率生成函数流程图

3.2 占空比的计算

占空比获取代码:

while(!digitalRead(20));//等待开始信号

wide=0;

for(i=0;i<20;i++){

dr_low=0,dr_high=0;//清零

while(digitalRead(signment));//等待低电平

while(!digitalRead(signment))dr_low++;//低脉宽

while(digitalRead(signment))dr_high++;//高脉宽

sum=(dr_low*1.0/(dr_low+dr_high))*100;

wide=wide+sum;

}

wide=wide/20;

digitalWrite(LOW,4);//关闭闸门

其流程图如图9所示。

图9 占空比计算流程图

4 仿真实验

通过软硬件的设计,在具体测试之前,采用Proteus软件进行功能仿真。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如ArdiunoIDE等软件。支持大量的外围芯片和存储器,具有强大的原理图绘制功能。该软件是集单片机和SPICE分析于一身的仿真软件。

具体仿真测试时,采用矩形波为例进行仿真测试,仿真测试结果如图10所示。从仿真结果看,设计符合要求。

图10 仿真结果图

5 测试

根据仿真结果,对实际的频率计进行测试,同样,采用矩形波为例,测试100 Hz和1 kHz情况矩形波的占空比,测量范围从30%到接近90%,而且在测试过程中防止程序中出现测试盲点,采用跳跃式测试方式,测试数据如表1和表2所示。

表1 矩形波(100 Hz)

表2 矩形波(1 kHz)

在占空比测试的基础上,对频率计进行频率的具体测试,依次测试信号幅值为50 mV、100 mV、500 mV、1 V、1.5 V、2 V下10 Hz~100 kHz的频率测试,测试数据如表3所示。数据显示,1 kHz的频率测量几乎零误差,总体测量精度达0.000 01,占空比精度0.01。

表3 频率测试数据表

具体的测试图如图11所示。

图11 频率测量示波器显示测试图

6 结束语

本文在分析现有数字频率计存在的缺陷出发,提出一种新的数字频率计的设计方法,基于Arduino,完成了一款简易高精度数字频率计的设计。设计过程中采用了模块化和层次化的设计思路,完成了电源电路、放大与整形电路、单片机主控电路、分频电路、显示电路、闸门信号产生电路等硬件设计,运用mega2560单片机进行数据的处理和分析,软件设计后进行了仿真测试和具体的实验测试,测试结果显示,该频率计可实现50 mV~2 V的正弦波和矩形波的频率精准测量。测量范围能够达到1 Hz~10 MHz。测量精度达到0.000 1 Hz。

猜你喜欢

流程图闸门矩形
大跨度桁架平面闸门静动力特性分析
两矩形上的全偏差
化归矩形证直角
从矩形内一点说起
把住医保基金水池闸门
找准入口,打开思路的闸门
我国专家发现药物成瘾新机制,找到“闸门”开关
宁海县村级权力清单36条
《天津医药》稿件处理流程图
《天津医药》稿件处理流程图