频率计.docx
《频率计.docx》由会员分享,可在线阅读,更多相关《频率计.docx(25页珍藏版)》请在冰豆网上搜索。
频率计
1.前言
在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系。
因此,频率的测量就显得更为重要。
频率就是周期性信号在单位时间内变化的次数。
频率计数器是测量信号频率的装置,也可以用来测量方波脉冲的脉宽。
通常频率以数字形式直接显示出来,简便易读,即所谓的数字频率计。
频率测量对生产过程监控有很重要的作用,可以发现系统运行中的异常情况,以便迅速做出处理。
测量频率的方法有多种,例如无源测频法,有源侧频发和电子技术法,其中电子计数器测量频率具有使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。
传统的频率计采用测频法测量频率,通常由组合电路和时序电路等大量的硬件电路构成,产品不但体积较大,运行速度慢,而且测量低频信号时不宜直接采用。
本设计是基于学过的单片机技术和C语言,设计的一种数字式量程自动切换频率计数器,该频率计具有操作简单方便、响应速度快、体积小等一系列优点,可以及时准确地测量低频信号的频率。
2.总体方案设计
2.1总体方案选:
方案设计一:
由硬件电路设计的频率计
方案一中频率计由时基电路、放大整形电路、闸门电路、逻辑控制电路、计数器、锁存器和译码显示器构成,电路方框图如下:
图2-1方案1方框图
上图为硬件电路组成的数字频率计。
其中被测信号经放大整形电路变成计数器所要求的脉冲信号,其频率与被测信号的频率相同。
时基电路提供标准时间基准信号,其高电平持续时间
,当1s信号来到时,闸门开通,被测信号通过闸门,计数器开始计数,直到1s信号结束时闸门关闭,停止计数。
若在闸门时间内计数器得到的脉冲个数为N,则被测信号频率
。
逻辑控制电路的作用有两个:
一是产生锁存脉冲,使显示器上的数字稳定;二是产生清零脉冲,使计数器每次测量从0开始计数。
方案设计二:
基于单片机的频率计设计
该方案中频率计由放大整形电路、单片机、LED显示器和电源电路构成。
其中,信号的核心处理部分为单片机,由AT89C51构成。
图2-2方案二方框图
由方框图可知,被测信号经放大整形变成单片机AT89C51所需要的脉冲信号,之后由单片机对信号进行处理,即计数、锁存和译码,随后将结果由LED显示。
2.2方案比较和方案选择:
方案一:
设计的全过程均采用硬件,由组合电路和时序电路等大量的硬件电路构成。
电路结构很繁琐,用到的器件较多,连线比较复杂,制造出的产品不但体积较大,运行速度慢,而且会产生比较大的延时,从而造成测量误差和可靠性都比较差。
尤其测量低频信号时不宜直接采用硬件设计。
方案二:
与方案一恰好相反,由单片机构成的频率计可以将硬件部分的计数、锁存、译码等集成在一块单片机芯片上,由程序直接控制,电路简单、操作方便、响应速度快、体积小,并且能够可以及时准确地测量低频信号的频率。
通过以上方案的比较分析,我选择的是第二个方案,因为方案二电路实现起来很简单而且准确性高。
总电路原理图见附录Ⅱ:
3.单元模块设计
3.1放大整形电路模块
放大电路由晶体管2N4123与4LS00等组成,其中2N4123组成放大器将输入频率为
的周期信号如正弦波、三角波等进行放大。
与非门74LS00构成施密特触发器,它对放大器的输出信号进行整形,使之成为矩形脉冲。
放大整形电路如下图所示:
图3-1放大整形电路
图3-1所示为频率计的放大整形电路。
由于本设计要求能够对锯齿波、正弦波和方波信号进行检测,但单片机AT89C51输入端的被测信号必须为矩形脉冲信号,所以在将信号进行单片机处理之前必须先将其放大整形处理,一来可以放大微弱的输入信号;二来可以将正弦波、锯齿波转变为单片机所需要的矩形脉冲。
上图所画即为输入正弦波信号时的情况,输出为矩形脉冲信号,调节滑动变阻器的阻值可以改变输出方波信号的占空比,仿真结果见第四部分。
3.2单片机模块
3.2.1AT89C51简介
单片机模块主要以AT89C5l为核心,频率测量电路选用AT89C5l作为频率计的信号处理核心。
AT89C51包含2个16位定时/计数器、1个具有同步移位寄存器方式的串行输入/输出口和4Kx8位片内FLASH程序存储器。
16位定时/计数器用于实现待测信号的频率测量或者待测信号的周期测量。
同步移位寄存器方式的串行输入/输出口用于把测量结果送到显示电路。
AT89C51的引脚图如下所示:
图3-2AT89C51引脚图
在构成为定时器时,每个机器周期加l(使用12Hz时钟,每l惦加1),这样以机器周期为基准可以用来测量时间间隔。
在构成为计数器时,在相应的外部引脚发生从l到O的跳变时计数器加1,这样在计数闸门的控制下可以用来测量待测信号的频率。
外部输入每个机器周期被采样一次,这样检测一次从l到0的跳变至少需要2个机器周期(24个振荡周期),所以最大计数速率为时钟频率的1/24(使用12MHz时钟时,最大计数速率为500Ⅺ{z)。
当主控门关闭时,经延时整形电路的延时后,延时电路输出一个复位信号,使计数器和所有的触发器置O,为后续新的一次采样做好准备,即能锁住一次显示的时间,直到接受新的一次采样为止。
显示方式采用七段LED数码管显示读数,做到显示稳定、不跳变。
3.2.2由AT89C51构成的单片机电路
由AT89C51构成的单片机电路如下:
图3-3AT89C51组成的单片机电路
单片机电路由AT89C51和数码管加外围电路构成,由于本设计要求三个档位的量程切换,分别是2KHz、20KHz、200KHz,故用了三个发光二极管,其中第一个发光二极管控制2KHz档位,即输入频率小于2KHz时,第一个发光二极管亮;第二个发光二极管控制20KHz档位,当频率大于2KHz、小于20KHz时,第二个发光二极管亮;同理,第三个发光二极管控制200KHz档位,当频率大于20KHz、小于200KHz时,第三个发光二极管亮。
由该电路可实现设计要求,频率从0KHz~200KHz的变化,仿真电路见第四部分。
3.2.3软件设计流程
本设计中软件设计流程图如图3-4所示。
图3-4软件设计流程图
本部分主要利用C语言编写单片机程序,主要包括程序初始化、频率测量、自动量程选择和程序显示几大部分,其中频率测量部分通过定时器和计数器完成。
程序初始化之后,通过定时确定周期,再通过计数测量规定时间内的频率,得到的频率再经自动量程选择,即根据得到的不同频率选择不同的测量档位,最后由数码管显示出来。
具体程序见附录Ⅰ:
3.3电源电路模块
3.3.1电源电路的设计
直流电源是通信系统中的必需设备,它的主要任务就是通过把交流系统整流出直流电,为通信系统的交换设备、传输设备等提供直流工作电源,其性能和质量的好坏直接关系到通信设备能否稳定运行。
直流稳压电源一般由电源变压器、整流滤波电路及稳压电路组成。
本电路主要应用整流系统和稳压器CW317组成的电压源电路来实现最终设计,在此电路中,经过整流滤波和CW317自身的稳压作用,所以使电路的稳定性增加。
本设计主要基于输出电压
,
范围设计,设计原理图如下所示:
图3-5直流稳压电源电路
图中输出电压的可调性主要是利用CW317使流过
和
上的电流近似不变这一特性实现的。
当流过
的电流大小不变时,则改变
的阻值会使
上的电位差发生相应的改变,而输出电压是
和
上各自电位差之和,
电阻值是固定不变的,也就是其上的压差也是固定不变的,所以输出电压只跟随
的阻值变化而变化,一旦
值固定,则输出电压固定。
由于CW317的稳压作用,输出电压不会随着负载的变化而发生变化。
CW317系列稳压器输出连续可调的正电压,稳压器内部含有过流、过热保护电路。
和
组成电压输出调节电路,输出电压:
的值为120
~240
,流经
的泄放电流为5mA~10mA.。
为精密可调电位器。
电路中
为滤波电容,接入
用来实现频率补偿,防止稳压器产生高频自激振荡和抑制电路引入的高频干扰。
电容
与
亦并联组成滤波电路,以减小输出的纹波电压。
二极管的作用是防止输出端与地短路时,损坏稳压器。
是电解电容,以减小稳压电源输出端由输入电源引入的低频干扰。
为负载电阻。
集成稳压器的输出电压
与稳压电源的输出电压相同。
稳压器的最大允许电流
,输入电压
的范围为:
式中,
为最大输出电压;
为最小输出电压;
为稳压器的最小输入、输出压差;
为稳压器的最大输入、输出压差。
本设计虽然整个过程是设计5V~15V的电压,但最终的电压值并不是刚好,而是应该比所设计的范围大一点,经过仿真最终的输出电压范围为1.28V~20.6V,且在输出范围内,可以通过调节滑动变阻器调节输出电压值。
因为
和
的大小直接关系到输出电压的大小,因此在确定其阻值时需要严格按照所设计的题目确定。
另外还需要注意,稳压器的输入电压和输出电压之间应有一定的压差,设计中需在这一前提下考虑。
4系统调试
首先根据设计的原理对软件进行调试,确保所写程序的正确性,软件调试成功后则可进入硬件调试阶段。
调试工作的主要任务是排除样机故障,包括设计错误和工艺故障。
焊接无误后,可分别调试。
首先用万能表或逻辑则试笔逐步按照逻辑图检查电源电压及各引脚的线路是否接好、接正确。
对各个元器件型号、管脚、量程、大小和极性进行检查,并检查电路中是否有短路或断路等故障。
另外,每一级的地线、电源线应尽可能的接在一起,连接线要尽可能的短,功放级应该尽量远离输入级,这样既可以节省材料,又可以防止产生自激现象。
电路的调试过程一般是先分级调试,再级联调试,最后进行整机调试与性能测试。
4.1放大整形电路的仿真
放大整形电路的仿真结果如图4-1所示:
(a)
(b)
图4-1放大整形电路仿真结果
图(a)为输入正弦波信号时的情况,由仿真结果看出输出为矩形脉冲信号,调节滑动变阻器的阻值可以改变输出方波信号的占空比。
其中,放大整形电路所提供的直流电源为+5V,幅度为10V,频率为1KHz,输出结果如上。
图(b)为输入方波信号时的情况,由仿真结果看出输出为矩形脉冲信号。
其中,直流电源为+5V,频率为1KHz,输出结果如上所示。
由仿真结果看出,所设计的放大整形电路满足设计要求,具体参数可以根据实际情况改变,但输入信号的峰峰值要求不大于30V。
由于元件库中没有锯齿波信号输入,所以设计中没对锯齿波信号输入的情况进行仿真,但根据理论分析是完全能够实现的。
4.2单片机电路的仿真
由AT89C51组成的单片机电路仿真结果如下所示:
(a)量程档位为2KHz的仿真结果
(b)量程档位为20KHz的仿真结果
(c)量程档位为200KHz的仿真结果
图4-2单片机电路仿真结果
如上图所示,其中图(a)是量程档位为2KHz时的输出结果,该档位由第一个发光二极管控制,单位为Hz,当输入频率小于2KHz时,量程自动选择该档位,则第一个发光二极管亮,低电平有效。
图(a)中,设置的输入频率为1960Hz,经仿真后频率为1959Hz,基本精确。
图(b)是量程档位为20KHz时的输出结果,该档位由第二个发光二极管控制,单位为KHz,当输入频率大于2KHz小于20KHz时,量程自动选择该档位,则第二个发光二极管亮,低电平有效。
图(b)中,设置的输入频率为19660Hz,经仿真后频率为19.64KHz,存在一点误差。
图(c)是量程档位为200KHz时的输出结果,该档位由第三个发光二极管控制,单位为10KHz,当输入频率大于20KHz小于200KHz时,量程自动选择该档位,则第三个发光二极管亮,同样低电平有效。
图(c)中,设置的输入频率为196660Hz,经仿真后频率为1.964,单位为10KHz,同样存在误差。
由仿真结果看出,由该频率计测得的结果并不是完全准确,均存在较小误差,经计算,误差小于0.1﹪,因此结果还算准确,并不会太影响测量精度。
4.3电源电路的安装与测试
首先应在变压器的副边接如入保险丝FU,以防止电路短路损坏变压器或其他器件,其额定电流要略大于
,选FU的熔断电流为1A,CW317要加适当大小的散热片。
先装集成稳压电路,再装整流滤波电路,最后安装变压器。
安装一级测试一级。
对于稳压电路则主要测试集成稳压器是否能正常工作。
其输入端加直流电压
,调节
,输出电压
随之变化,说明稳压器能正常工作。
整流滤波电路主要是检查整流二极管是否接反,安装前用万用表测量其正、反向电阻。
接入电源变压器,整流输出电压应为正。
断开交流电源,将整流滤波电路与稳压电路相连接,再接通电源,输出电压为
规定值,说明各级电路均正常工作,可以进行各项性能指标的测试。
对于本设计中的电源电路,测试工作在室温下进行,测试条件是
(滑动变阻器)。
由所设计的电源电路图得到的仿真结果如下:
(a)(b)(c)(d)
图4-3电源电路仿真结果
上图为所设计的电源电压仿真结果,其中(a)为变压器输入电压220V,频率为50Hz;(b)为变压器输出电压17V,通过之前分析计算,要求变压器输出电压大于等于17V,由(b)仿真结果看出,满足要求;(c)为滑动变阻器最小时的输出电压20.6V;(d)为滑动变阻器最大的的输出电压1.28V,所设计的直流电源电压范围为5V~15V,由(c)和(d)看出,输出电压也满足要求。
由此可得,所设计的直流稳压电源满足设计目的。
5系统功能、指标系数
5.1系统功能
本设计是由电源电路、放大整形电路和单片机AT89C51构成,主要用来测量输入信号在0KHz~200KHz的频率。
该频率计具有操作简单方便、响应速度快、体积小等一系列优点,可以及时准确地测量低频信号的频率。
自动量程切换频率计基于单片机AT89C51为核心器件,采用三端可调式稳压器CW317设计电源,得到输出范围为1.28V~21.6V的可调电压。
另外,应用逻辑门电路将各种输入波形变换为单片机电路所需的方波脉冲信号。
5.2指标系数分析
[1]、单片机电路采用AT89C51构成;
[2]、电源电路为输出电压可调型,主要由三端可调式稳压器CW317组成;
[3]、由于本电路与交流电源公共端相连,不能随意触碰,最好采用塑料外壳;
[4]、其他元件无特殊要求,可参照附录中的总电路图所示数值选用。
6设计总结
在本次设计过程中遇到了不少问题,在徐老师的指导帮助下才顺利的完成了本次课程设计,在此表示衷心的感谢。
该次设计令自己收益匪浅,虽然以前只是学到了一些理论知识没有真正的应用到实际的作品中。
该次设计通过了选方案、画图、测试等过程。
每一个过程都是自己亲自实现,从而有很大的成就感,也学到了不少书本以外的东西。
巩固和扩充了课堂讲授的理论知识,提高了我们实际工作技能,培养科学实验的基本技能和严谨的工作作风,为学习后续课程和从事实践技术工作奠定基础具有重要作用。
本次课程设计是对所学的模拟电子技术基础和数字电子技术基础以及电工电子技术实验的高度总结应用,尤其之前所学过的电子线路设计在此产生了非常重要的作用,也给了我很大的帮助。
在设计的过程中发现了自己在知识上所存在的不足,也意识到除了必须具备专业知识以外,还必须具有塌实坚毅不服输的品格。
课程设计是一个既艰苦又有趣的过程,尤其在刚开始时,真的有点让人感到力不从心,因为有太多东西不懂。
但完成之后才发现从中既体会到了实际工作的艰辛,也尝到了成功的喜悦。
虽然有些辛苦,但真的是物有所值,对我来说,这又是一次宝贵的经历,所以我认为非常珍贵,也很珍惜。
这次的课程设计已经不是第一次,但是在整个设计中用的时间和精力还是非常多的,虽然由于时间和经验关系,本次设计中还有很多不尽完善之处,但我已经尽力了,希望多多原谅,多多指教。
7参考文献
[1]康华光.陈大钦.《电子技术基础》模拟部分.高等教育出版社,1998.8
[2]康华光.邹寿彬.《电子技术基础》数字部分.高等教育出版社,1998.7
[3]陈振官.《数字电路及制作实例》.国防工业出版社,2006.8
[4]杨欣.王玉风.《电子设计从零开始》.清华大学出版社,2005.7
[5]张宪.宇斌.《电子电路制作指导》.化学工业出版社,2005.8
[6]谢自美《电子线路设计·实验·测试》华中科技大学出版社2006.8
[7]苏文平.何希才.《电子电路应用实例精选》.北京航空航天大学出版社,1999.11
附录Ⅰ:
单片机程序
#include//引用头文件
#defineucharunsignedchar//宏定义unsignedchar为uchar
ucharxdata*ad_adr;//’定义变量
ucharn=0;
sbitled1=P2^0;//定义变量表示地址地址
sbitled2=P2^1;
sbitled3=P2^2;
sbitled4=P2^3;
sbitled5=P2^5;
sbitled6=P2^6;
sbitled7=P2^7;
bitbk=1;
unsignedcharLED1,LED2,LED3,LED4;
unsignedcharidataled_data[3];
ucharcodeled_segment[12]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x0,0x0};
//数组
ucharcodeled_segment2[12]={0xBF,0x86,0xDB,0xcF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x0,0x80};
voiddelay2ms();
unsignedchartemp[8];//定义变量
unsignedchardispcount;
unsignedcharT0count;
unsignedchartimecount;
bitflag;
unsignedlongx,y;
floatz;
voiddelay(unsignedinti)//函数delay
{
while(i)i--;//i自减当i小于0循环结束
}
voiddisplay(void)
{
if((x>0)&(x<2000))判断如果x》0或者x《2000进行一下运算
{
y=x;
LED1=y%10;
LED2=(y/10)%10;
LED3=(y/100)%10;
LED4=y/1000;
P2=0xff;
delay
(2);//调用函数delay,并且传入参数2
led5=0;
P1=led_segment[LED1];//让p1等于led_segment数组第LED1个元素
led1=0;
delay(100);
led1=1;
P1=led_segment[LED2];
led2=0;
delay(100);
led2=1;
P1=led_segment[LED3];
led3=0;
delay(100);
led3=1;
P1=led_segment[LED4];
led4=0;
delay(100);
led4=1;
bk=!
bk;
}
if((x>=2000)&(x<20000))//再次进行判断
{
z=x/10.0;
y=z;
LED1=y%10;
LED2=(y/10)%10;
LED3=(y/100)%10;
LED4=y/1000;
P2=0xff;
delay
(2);
led6=0;
P1=led_segment[LED1];
led1=0;
delay(100);
led1=1;
P1=led_segment[LED2];
led2=0;
delay(100);
led2=1;
P1=led_segment2[LED3];
led3=0;
delay(100);
led3=1;
P1=led_segment[LED4];
led4=0;
delay(100);
led4=1;
bk=!
bk;
}
if((x>=20000)&(x<200000))
{
z=x/100.0;
y=z;
LED1=y%10;
LED2=(y/10)%10;
LED3=(y/100)%10;
LED4=y/1000;
P2=0xff;
delay
(2);
led7=0;
P1=led_segment[LED1];
led1=0;
delay(100);
led1=1;
P1=led_segment[LED2];
led2=0;
delay(100);
led2=1;
P1=led_segment[LED3];
led3=0;
delay(100);
led3=1;
P1=led_segment2[LED4];
led4=0;
delay(100);
led4=1;
bk=!
bk;
}
}
voidmain(void)//主函数,程序入口
{
TMOD=0x15;//T1定时模式,方式1;T0计数模式,方式1
TH0=0;
TL0=0;
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;//给T1定时器付初值,也可以修改T1定时器付初值,使定时准确,使频率测量更准确
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
while
(1)
{
if(flag==1)
{
flag=0;
x=T0count*65536+TH0*256+TL0+1;
//x=6100;
while
(1)
{
if(bk)*ad_adr=0;//这行代码有待考究,
display();
}
dispcount=0;
timecount=0;
T0count=0;
TH0=0;
TL0=0;
TR0=1;
TR1=1;
}
}
}
voidt0(void)interrupt1using0//其中interrupt1using0是这是C51编译器扩展的关键字。
用来选择80c51单片机中不同的寄存器组
{
T0count++;
}
voidt1(void)interrupt3using0
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
timecount++;//timecount自加相当于timecount=timecount+1
if(timecount==249)//修改timecount,使定时准确,使频率测量更准确
{TR0=0;
TR1=0;
timecount=0;
flag=1;
}
}
voiddelay2ms(void)/**********延时2ms****************/
{
uchara,b;
for(a=5;a>0;a--)//双层for循环外层for循环运行一次,内层运行整个循环在这里就是b减少248次
for(b=248;b>0;b--);//248
}
附录Ⅱ:
频率计原理图
频率计电路图