基于单片机的转速测量系统设计

2012-01-25 07:15陈博炜
关键词:数码管计数器计数

陈博炜

(延安大学 物理与电子信息学院,陕西 延安 716000)

由于电机在运行的过程中,转速的平稳性很重要,而且电机在生产过程中要进行检验,其中转速就是个非常重要的参数,所以要适时对电机的转速进行测量,来检测电机的工作情况,以及电机的质量问题,有效地反映电机的状况,因此转速测量是非常重要的一个环节,具有非常大的现实意义。因为现在单片机的应用为转速测量提供了方便有效的解决方案,所以智能化的电机转速测量应用非常广泛[1]。

1 转速测量系统设计方案

基于单片机的转速测量,所以主要功能利用传感器将转速信号转换成电信号,然后由AT89C51单片机接收传感器传来的脉冲信号,根据外部中断,以及内部定时器进行记数计算出电机转速送到LED显示[2]。组成及框图如图1所示:

图1 转速测量框图

2 转速测量系统的硬件电路设计

硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具体确定系统中所要使用的元器件,设计出系统的电路原理图。该系统包括传感器,处理电路,计数器,和显示四部分。

传感器将转速信号这个非电信号转换成单片机可以接收的电信号,但是信号不能直接测量,要经过处理电路进行整形,然后89C51单片机通过To输入传感器的脉冲信号,由P0口P2口接LED,用动态驱动显示。

2.1 传感器

传感器是转速测量的关键部分,没有它转速信号就不能用单片机进行计算测量,因为传感器可以将转速转换成脉冲信号,经过处理后,就可以利用单片机进行计算得到转速值。光电传感器在检测与控制中应用非常广泛,它基本上可以分为模拟式传感器和脉冲式传感器两类。模拟式光电传感器的作用原理是基于光电器件的光电流随光通量而发生变化的,是光通量的函数。脉冲式光电传感器的作用原理是光电器件的输出仅有两个稳定状态,也就是“通”与“断”的开光状态,即光电器件受光照射时,有电信号输出,光电器件不受光照射时,没有电信号输出[3]。根据设计要求选择脉冲式光电传感器。

这里选着SZGB-4A型光电转速传感器,SZGB-4A型光电转速传感器采用红外光电器件结构的小型封闭式转速传感器具有功耗小、寿命长、抗干扰能力强等优点,使用时通过联轴节与被测轴连接,当转轴旋转时,将角位移转换成电脉冲信号,供计数器使用。具体参数如下:

(1)输出脉冲数:60脉冲(每一转)。

(2)输出波形:方波。

(3)输出信号幅值:高电平≈电源电压;低电平< +0.5V。

(4)测速范围:20~3000 r/min(连续使用)。(5)供电电源:DC;20mA;5±0.5V。

2.2 转速信号处理电路

图2 信号处理电路

转速信号由光电传感器转换为脉冲信号,但是由于传感器的输出信号幅值会受到外界噪声的影响,因此输出电压是不稳定的,不是理想的方波信号,所以这里要对转速信号进行滤波处理,滤波电路图如图2所示。LM324系列器件为价格便宜的带有真差动输入的四运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。根据单片机TTL的需求,这里设置LM324的工作电压正电压为5 V,负电压为0 V。此电路图的工作原理是,当LM324的正信号输入端的电压Ui,即传感器输出电压高于LM324的负信号输入端的电压时,这里负信号输入端接地为0 V,LM324的输出信号Uo为LM324的正工作电压,即+5 V。相反的,如果Ui低于0V时,Uo为LM324的负工作电压0 V。经过这个电路的处理后就会输出一个和输入信号同频率的方波。具体的输入信号Ui和输出信号Uo的波形如图3的(a)(b)所示。

图3 (a)转速信号处理前Ui波形(b)转速信号处理后Uo波形

2.3 转速的计算电路

转速的计算是由单片机完成的,主要用到单片机的定时器和计数器。51单片机的定时计数器有4钟工作方式,不同的工作方式有不同的工作特点。本次设计采用方式1,即计数寄存器的位数是16位,由THx和TLx寄存器各提供8位计数初值。方式1最大计数值为65536个脉冲,是这几种方式中计数值最大的方式。用计数器T1计数,定时器T0定时。所以转速信号由T1口接入,进行测量。

单片机我们采用AT89C51。AT89C51是一种带4K字节闪烁可编程可擦除只读存贮器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故[4]。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。RST:复位输入[5]。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

转速信号的计算由单片机完成,单片机的最小系统包括时钟电路和复位电路。

单片机的时钟电路用来提供单片机内部各种微操作的事件基准。51单片机的时钟信号电路通常有两种电路形式:内部振荡方式和外部振荡方式。在引脚XTAL1和XTAL2外晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。内部振荡方式如图所示,电容C1和C2起稳定振荡频率、快速起振的作用。电容一般为5至30 pF。外部振荡方式是把已有的时钟信号引入单片机内,这种方式适宜用来使单片机的时钟与外部信号保持一致。因为本设计不需要与外部信号保持一致,选择内部振荡方式。

复位操作则使单片机的片内电路初始化,使单片机从一种确定状态开始运行。当51单片机的复位引脚出现5 ms以上的高电平时,单片机就完成了复位操作。如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序,因此要求单片机复位后能脱离复位状态。复位操作通常也有两种形式:上电复位、开关复位。上电复位要求连通电源后,自动实现复位操作;开关复位要求在电源接通的情况下,在单片机运行,如果发生死机,用按钮开关操纵使单片机复位[6]。上电复位电路图如图所示,电容C=20 μF,R=10 K。单片机时钟电路和复位电路如图4所示。

图4 单片机复位电路图

2.4 转速显示电路

显示电路采用 LED数码管动态显示,LED(Light-EmittingDiode)是一种外加电压从而渡过电流并发出可见光的器件。LED是属于电流控制器件,使用时必须加限流电阻。LED有共阴和共阳两种[7]。发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的称为共阴极显示器。1位显示器由八个发光二极管组成,其中七个发光二极管a~g控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗[8]。LED断码表如下表1所示。

表2 LED段码表

本设计采用四位一体数码管,管脚图如图5所示。根据设计方案选着的是动态现实,在轮流显示过程中,每位数码管的点亮时间为1~2 ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的。转速测量系统的显示电路由单片机的P0口控制数码管的字形,即P1口依次接“a~g”口。由P2口的低四位接数码管的“1~4”口,用三极管构成位驱动。显示电路图如图6所示。

图5 四位一体数码管管脚图

图6 显示电路

3 转速测量系统的软件设计

软件部分主要是实现计数功能和显示功能,单片机的计数有两种方法,一种是片外计数,一种是片内计数。片外计数方案是采用片外专用计数芯片进行脉冲计数,单片机控制片外芯片的计算过程,并在计数完毕后读取计数值;片内计数方案是指采用单片机的内被计数器完成对脉冲的计数过程。

本次设计采用片内计数的方法,设计比较简单。使用单片机内部的T1作为外部脉冲的计数器,每到一个脉冲将会产生一个T1的计数,在T0定时中断完成后,T1的中断益处次数就是所需要计的脉冲数。

显示部分,根据数码管的驱动方式的不同,可以分为静态式和动态式两类,为了节省I/O口线,我们采用的动态显示方式。

采用12MHz的晶振,所以机器周期是1 μs,定时/计数器的工作方式采用方式1,即计数寄存器的位数是16位。由于定时时间小于65.5ms,计数脉冲小于65536个,所以这里我采用定时50ms,根据定时方式计数初值C=模-[t/MC],这里t就是定时时间,MC就是机器周期。计算的初值是3CAFH。累计计数20次,计数之和就是一秒钟内的转速。再计算转速的个、十、百、千位,根据硬件电路图,P1口控制字形,P2口的第四位控制位选,分别显示在LED上。

51系列单片机支持3种高级语言,即PL/M,C和BASIC。C语言是一种通用的程序设计语言,其代码率高,数据类型及运运算丰富,并具有良好的程序结构,适用于各种应用程序设计,是目前使用较广的单片机编程语言。应用C51编程具有以下优点:(1)C51管理内部寄存器和存储器的分配、编程时,无需考虑不同存储器的寻址和数据类型等细节问题;(2)程序又若干函数组成,具有良好的模块化结构;(3)有丰富的子程序库可直接引用,从而大大减少用户编程的工作量[9]。所以本次编程我选择C语言。

具体的编程思路是这样的,首先主程序是计算单位时间的转速值,由于采用的定时时间是50 ms,计数器每次的计数值并不是单位时间的转速值,所以将20次的计数值累加起来就是1 s钟的计数值,也就是测得的转速值,然后计算转速值的各个数位,假设转速值是f,那么千位为f1=f/1000;百位为f2=f%1000/100;十位为f3=f%100/10;个位为f4=f%10。最后调用显示函数。

子函数包括中断函数、计数函数、显示函数、延迟函数。这里中断函数要根据定时时间来编程,上边已经计算出定时初值为3CAF,TL0=0V3C,TH0=0XAF,当定时开始后50 ms就会产生一个中断。计数函数首先是将计数器T1初始化,当外部转速信号每到一个高电平是计数器会自动加1,当定时时间到产生中断后,计数计数值。因为选择的是共阳极数码管,所以为选要给高电平才可以具体的代码如下:

程序流程图如图7所示。

图7 程序流程图

4 转速测量系统的软、硬件调试

软件调试用Keil软件进行编译,它是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,应用Keil进行软件仿真开发的主要步骤为:编写源程序并保存—建立工程并添加源文件—设置工程—编译/汇编、连接,产生目标文件—程序调试[10]。

首先选择菜单File-New…,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open…,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜单 Project-New-Project…,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面 +号展开,接着选择 Source Group1,右击鼠标弹出快捷菜单,选择“Add File to Group‘Source Group1’”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。加入文件后点close返回主界面,展开“Source Group1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。紧接着对工程进行设置,选择工程管理窗口的 Target1,再选择 Project-Option for Target‘Target1’(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选中“Creat HexFi”;其它选项卡内容一般可取默认值。工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。

硬件调试主要对单片机硬件电路进行调试。在以前所学的课程当中,主要是单片机电路的上电前和上电后的调试。

上电前的调试,主要是利用万用表测量电路,以确保电路中不存在短路和断路情况,这个任务是非常重要的,关系到以下的调试,所以要认真测量调试。特别是数码管的管脚连接部分,注意焊接点,是否有漏焊虚焊显现,是否有短路显现,出现问题及时修改。

上电后的调试,这一步是在上一步确保硬件电路无短路断路的情况下才可以上电调试的,而上电调试的目的是检验电路是否接错,同时还要检验原理是否正确。在本次课程设计中硬件比较简单,所以上电调试主要只转速测量系统的单片机部分、数码管部分。

5 小结

本系统采用的是89C51单片机,充分利用单片机内部自带的两个16位定时/计数器进行设计,较完全的开发了单片机自身的功能,接口利用了89C5l的P0口具有较大的电流驱动能力的特点,来扩展驱动芯片,直接由单片机驱动,简化了硬件电路。但是本文的研究还远远不够,因为转速测量在不同的场合要求是不同的,有的时候要求是非常高的,在不少场合下对低速(如每小时一转以下)、高速(如每分钟数十万转)、稳速(如误差仅为万分之几)和瞬时速度的精确测量有严格的要求。这里研究的精度不是很高,所以有待于继续研究不同转速的测量,并能保证较高的精度。

[1]何立民.单片机应用技术选编[M].北京:北京航空航天大学出版社,1997.

[2]张有德.单片微机原理、应用与实验[M].上海:复旦大学出版社,1997.

[3]何勇,王生泽.光电传感器及其应用[M].化学工业出版社,2004.

[4]李群芳,张士军.单片微型计算机与接口技术[M].北京:电子工业出版社,2005.

[5]李朝青.单片机&DSP外围数字IC技术手册[M].北京:北京航空航天大学出版社,1998.

[6]扈啸,周旭升.单片机数据通信技术从入门到精通[M].西安:西安电子科技大学出版社,2002.

[7]徐爱钧.智能化测量控制仪表原理与设计[M].北京:北京航空航天大学出版社,1995.

[8]朱巍峰.基于单片机的散显转速计设计[J].内江科技.2010,31(11).

[9]周兴华.手把手教你学单片机[M].北京:北京航空航天大学出版社,1996.

[10]孙桂荣,班莹,刘鸣.电机转速测量设计实验[M].实验科学,2005.

猜你喜欢
数码管计数器计数
物理项目教学设计,用单片机控制四位数码管显示
采用虚拟计数器的电子式膜式燃气表
基于51单片机的分数计数器设计
古代的计数方法
Arduino编程
古代的人们是如何计数的?
MC9S08FL16单片机数码管静态显示分析
基于Multisim10.1的任意进制计数器的设计与实现
SR620型与53230A型计数器的性能测试
算盘是个“小气鬼”