简易数字频率计论文摘要:本系统用单片机89C51为核心,设计了能够测量频率、周期、脉宽和占空比的简易数字频率计。本系统包括前端放大整形、分频处理和单片机数据处理三大模块。前级放大整形模块采用74HC04做放大器对信号进行放大;分频处理模块提高测量的频率范围;单片机数据处理模块利用软件分频的方法,克服了±1误差在高低频段精度不等的缺陷,提高了测量系统的精度。本系统实现了测量频率、周期、脉宽和占空比的测量要求,且测量的频率可以达到0.1Hz—10MHz。频率和周期的测量误差小于0.01%,脉宽的测量误差小于1%。基本完成了任务设计的要求。引言设计并制作一台简易的数字显示频率计。基本要求:对幅度为0.5V—5V,频率为1Hz—1MHz的正弦波和方波信号进行频率和周期的测量,测量误差≤0.1%。能对幅度为0.5—5V,脉冲宽度≥100μS的脉冲波进行测量,测量误差≤1%。发挥部分:扩展频率测量范围为0.1Hz—10MHz(信号幅度0.5V—5V),测试误差降低为0.01%(最大闸门时间≤10s)。测量并显示脉冲信号(幅度0.5V—5V、频率1Hz—1kHz)的占空比,占空比变化范围为10%—90%,测量误差≤1%。在1Hz—1MHz范围内及测试误差≤0.1%的条件下,进行小信号的频率测量,提出并实现抗干扰的措施。一.方案比较与论证方案一:系统测频部分采用中小规模数字集成电路,用机械式功能转换开关换档,完成测频率、测周期及测脉宽等功能。该方案的特点是中小规模集成电路应用技术成熟,能可靠的完成频率计的基本功能,但由于系统功能要求较高,所以电路过于复杂。而且多量程转换开关使用不便。原理框图如图1所示。图1方框图方案二:采用直接测频法,把被测频率信号经脉冲形成电路后加到闸门开通时间T(以秒计)内,被计数的脉冲被送到十进制计数器进行计数。设计数器的值为N,由频率定义式可以计算得到被测信号频率为f=N/T。经过分析,本种测量方法在低频段的相对测量误差较大。增大T可以提高测量精度,但在低频段仍不能满足设计的要求。方案三:系统采用89C51单片机为核心,门控信号由单片机内部的计数定时器产生。由于单片机的计数频率上限较低(12M晶体振荡器时约为500KHz),所以需对高频被测信号进行硬件预分频处理,89C51则完成运算、控制及显示功能。由于使用单片机使整个系统具有极为灵活的可编程性,能方便地对系统进行功能扩展和改进。系统方框图如图2所示。图2系统方框图比较以上三种方案,都有一个共同就是为了提高系统的测量精度和灵敏度,三中方案都使用了小信号放大整形电路。但是每个方案各有不同,方案一由于电路复杂,系统实现起来不方便,而且调试困难。对于方案二从系统设计的测量范围0.1Hz—10MHz,以频率下限0.1Hz来说,要达到误差0.01%的目的,必须显示5位的有效数字,而使用直接测频的方法,要达到这个测量精度,需要主门连续开启10000s,由此可见,直接测频方法对低频测量是不现实的,而采用带有运算器的单片机则可以很容易地解决这个问题,实现课题的要求。也就是对低频信号采用先测信号的周期,然后在通过单片机求周期倒数的方法,从而得到我们所需要的低频信号的测量精度。另外由于使用了功能较强的89C51芯片,使本系统可以通过对软件改进而扩展功能,提高测量精度,因此我们选用方案三作为具体实施的方案。二.测量原理1.频率测量由于单片机具有程序运算功能,且频率为周期的倒数,使频率测量与周期测量可以互通。按照频率的定义,即单位时间内周期信号的发生次数,通过参考晶体振荡提供了测量的时间基准,分频后通过控制电路去开启与关闭时间闸门。闸门开启时,经放大整形后的测量信号进入计数器进行计数,闸门关闭时,停止计数。若闸门开放时间为Tg,计数值为N,则被测频率fx=N/Tg。测频的框图如图3所示。图3测频框图用这种频率测量原理,对于频率较低的被测信号来说,存在着测量实时性与测量精度之间的矛盾,由分频系数M=Tg/Tr(Tr为参考晶振的周期)本身是没有误差的(若电路工作正常的话),测量误差主要由以下两种因数产生的:计数误差和参考晶体振荡的误差,也即/(/)(/)(/)(/)rrrrrffNNffNfMfff为减小第二项误差,可采用高精度的参考晶体振荡器。对于第一项误差N为计数相对误差,其最大可达±1,属于不可避免的系统误差,若要减少/NN,就必须增大N,在被测信号频率很低,为达到一定的测量精度,就要求闸门开放时间大得难以忍受,即一次测量过程的时间很长,失去了使用意义。例如若被测频率为10Hz,精度要求为±0.01%,则最短闸门开放时间为/1/0.000110000NNff/1000gTNfs像这样的测量周期根本不可能接受的,可见频率测量法不适用于低频信号的测量,在同样精度下10MHz的测量仅需要1ms,即对于高频信号适宜用此方法测量。2.周期测量周期测量的基本原理方框图如图4所示。图4测周期框图它与测频基本结构是相同的,只是把晶体振荡产生的基准信号与被测信号的位置互换了一下,由此得//rrTNMfNTM,计数值N与被测信号的周期成正比,N反映了M个信号周期的平均值。利用周期测量法在一定信号频率范围内,通过调节分频系数M,可以较好地解决测量精度与实时性的矛盾。由上式可得://///rrrrrTTNNTTNTMfTT第二项误差取决于晶体稳定度,第一项为计数的量化误差,故该项主要取决于N的大小。在平均周期测量法中,N值的大小与测量时间的长短成正比,可根据测量精度要求而定。假设/NN的允许误差为±0.001%,则N=105,在Tr选定时测量时间等于105Tr,,若Tr=2μS,则测得时间等于0.2s。对于不同范围的被测周期信号,可以通过调节分频系数M的大小,达到相近的测量精度,也就有相近的测量时间,且不会太长。当然,对于高频信号,测量周期的方法就需要很大分频系数M,增加了硬件的复杂性,不宜采用测周期的方法。3.脉宽和占空比测量在脉冲周期Tp、脉冲宽度Tw、占空比Tw/Tp、两个脉冲的时间间隔Ta-b等测量中,都要应用时间测量。实际上,时间间隔测量法与周期测量法类同,只是增加了一个信号通道而已。如图5中A、B通道的波形与闸门开闭关系,由单片机的内部运算即可得占空比。图5通道的波形与闸门开闭关系图三.硬件电路设计与说明为了测量小信号,需要在输入端加前置信号处理电路,将小信号放大整形后,送入后级分频电路进行处理。使用分频电路是因为门控信号由89C51内部的计数定时器产生,单位为1us。由于单片机的计数额定上限较低(12MH2晶振时约500kHz),所以需对高频被测信号进行硬件预分频处理。又因为对频率较低的信号,我们不必分频,只是对高频信号要分频,因此我们使用模拟开关4052对不同频率的信号进行不同的分频。1.小信号放大电路根据任务的要求,对与一些小信号也应该准确地测出其频率,所谓的小信号即是电压幅值小,约几百毫伏或是几十毫伏的信号。对于这么小的信号,要求对其进行放大,必须能让后面的单片机识别出其频率的变化,这就要求电路有足够的放大倍数,而且要有较高的稳定度。对于信号放大,我们不仅要考虑到对信号的放大作用,还应该注意频率的带宽。由NE5534构成电压跟随器起到增大输入阻抗的目的。然后有两个二极管对输入信号进行限幅,使其幅度限制在大约0.7V~-0.7V。再由NE5534将信号进行放大,最大的放大倍数为10倍。NE5534的增益带宽积GB=10MHz,在输入信号的频率为1MHz时,我们对它进行放大10倍是可以的。但是这种方案只能达到任务设计的基本要求,并不能达到任务的发挥部分的要求。由此我们可以利用反向器的线形区作为放大器,它的增益带宽积有10MHz以上,频响范围很宽,能达到测量10MHz信号的任务要求。又由于反向器74LS04的转换速度低,不适用本系统,所以我们采用转换速度更快的74HC04。反向器的传输特性如图6所示。图6反向器的传输特性由图我们可以看出,图中的线形区的斜率很大,传输特性变化比较急剧,我们也就是利用了这种特性,用反相器作为放大器来使用,而且电路反应速度也很快。只要将静态工作点设置在图中的反相器线形区域中,调节输入输出的电压值相同,就能将电路工作于放大状态。具体的实现电路如图7所示。图7小信号放大电路这种电路实现简单,便于调试。图中使用了三级放大,保证了小信号的放大倍数,使单片机能识别出小信号的频率。最后在输出端加了一个7414施密特触发器作为输出波形的整形。2.分频器门控信号由89C51内部的计数定时器产生,单位为1us。由于单片机的计数额率上限较低(12MH2晶振时约500kHz),所以需对高频被测信号进行硬件预分频处理。本设计对if≥100Kz的被测信号先进行100分频或是10分频再送入单片机进行数据处理;对于1Hz≤if≤100KHz的信号直接送入单片机进行数据处理。由单片机的P1.0口和P1.1口控制74LS151的A、B端来进行选择。74LS151的输出端接单片机的T1计数器,对信号进行计数。对被测信号的100分频,则是由两个4017芯片来实现的。电路如图8所示。图8分频器电路3.按键与显示系统的输入设备采用4位带上拉电阻的按键和控制4个LED指示灯。由单片机的P0.0—P0.3作为按键输入端口,P1.2—P1.5端口控制4个LED指示灯的亮灭。输出显示采用8位的串行显示。电路如图9所示。图9串行显示电路4.CPU主电路电路如图10所示。图10CPU主电路图四.软件设计与流程图1.系统流程设计系统的主流程图如图11所示。图11系统主流程图由软件完成各部分的控制和协调,下面对图11的流程图进行介绍。初始化系统:系统上电后完成硬件和系统变量的初始化。其中包括外围器件的端口设定、置中断和定时器状态、设置控制口P0和P1的状态。等待功能键输入:由键盘输入测频、测周、测脉宽和测占空比的显示选择。相应量的测量计算:单片机读入计数值M、N,通过单片机的内部编程,选用适应的准确算法,计算出频率和周期。测量脉宽时只读入计数器的值进行处理,计算出脉宽的值。占空比的计算只是将脉宽值与周期的比值。显示:89C51通过控制P3.0和P3.1两个端口,让输出结果通过串行显示的方式,输出显示出来。2.频率和周期中的自动量程转换频率和周期是可以互相转换的,测出其中一个参数就可以靠高精度的算法算出另一个参数。因此,在测量频率或周期中,实际上是采用频率测量法还是周期测量法,并不取决于最后要求显示的是频率还是周期,而是取决于用哪一种测量方法精度更高。系统将根据信号的频率范围来自动选择测量方法,信号频率较高时将采用频率测量法,并根据不同频率改变计数闸门开放的时间(定时时间),较低时将采用周期测量法,并根据不同频率自动改变周期扩展倍数,以满足精度要求。五.系统误差分析与抗干扰措施1.系统误差分析该系统的测量误差主要由以下两种因素产生:计数误差和参考晶体振荡的误差,也即)/()/()/()/(/rrrrrffMfNfffNNff因为采用了高精度的参考晶体振荡器,所以参考晶体振荡的误差减小到很小,可以忽略。对于计数误差,ΔN为计数绝对误差,其最大可达±1,属于不可避免的系统误差,若要减小ΔN/N,就必须增大N。本系统为了提高测量精度,采用了直接与间接测量结合的方法进行测量。根据任务书提出的要求上面已经算出临界频率为10KHz。当if在10KHz≤if≤10MHz时,我们对10KHz≤if≤300KHz的信号采用测频的方法测量;对300KHz≤if≤10MHz的信号先进行10分频或100分频后再用测频法测量(即把300KHz≤if≤10MHz的信号变为10KHz≤if≤300KHz的信号进行测量,再将测量结果乘于100)。在分频电路工作正常的情况下,分频不产生误差。我们采用闸门时间为1S,当被测频率为1KHz时,可计数1000个,这时由±1量化误差而导致的相对测试误差为0.l%;当被测信号为10KHz和100KHz时,可分别计数10000个