基于单片机的转速测量系统的设计_第1页
基于单片机的转速测量系统的设计_第2页
基于单片机的转速测量系统的设计_第3页
基于单片机的转速测量系统的设计_第4页
基于单片机的转速测量系统的设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1绪论1.1单片机测控系统单片机可以构成各种工业控制系统、适应控制系统、数据采集系统等。在这个领域中,有不少是采用通用CPU单板机或通用计算机系统。随着单片机技术的开展,大局部都可以用单片机系统或单片机加通用机系统来代替。如气轮机电液调节系统、调速系统等。典型的应用系统是单片机要完成工业测控功能所必须具备的硬件结构系统,它包括系统扩展和系统配置两局部内容。应用系统如图1.1所示,整个系统由根本局部和测控增强局部及外设增强局部构成。根本局部是外围芯片的扩展及功能键盘、显示器配置,通过总线连接而成,测控增强局部主要是传感器接口与伺服驱动控制接口。它们直接与工业现场相连,是干扰进入的主要通道,一般要采取隔离措施[1]。图1.1单片机典型应用系统对于数字量〔频率、周期、相位、计数〕的采集后可通过I/O口输入,数字脉冲可直接作为计数输入、测试输入、I/O口输入或中断源输入进行事件计数、定时计数、实现脉冲的频率、相位及计数测量。对于模拟量的采集,那么应通过A/D变换后送入总线口,I/O口或扩展I/O口,并配以相应的A/D转换控制信号及地址线。对于开关量的采集那么一般通过I/O口或扩展I/O口线。应用系统可根据任何一种输入条件或内部运行结果进行输出控制。开关量输出控制有时序开关、逻辑开关、信号开关阵列等,通常,这些开关量也是通过I/O口或扩展I/O口输出。模拟量的输出常为伺服驱动控制,控制输出通过D/A变换后送入伺服驱动电路。1.2转速测量在国民经济中的应用转速测量的应用系统在工业生产、科技教育、民用电器等各领域的应用极为广泛,往往成为某一产品或控制系统的核心局部,其各种参数在不同的应用中有其侧重,但转速测量系统作为普遍的应用在国民经济开展中,有重要的意义。下面列举二例加以说明。转速测量在调速系统中的应用直流电机具有良好的起、制动性能,易于在宽广范围内平滑调速,所以长期以来在要求调速指标较高的场合获得了广泛应用。随着电力电子技术和控制技术的开展,交流调速系统日趋完善,其性能可与直流调速系统相媲美,其变频调速的应用范围日益扩大,但它的控制技术相对复杂,整个控制系统造价较高,在某些领域短时间内还难以取直流调速系统,调速系统便应运而生了。调速系统主电路线路简单,所用的功率元件少;开关频率高,可到达1000~4000Hz,电流易连续,谐波少,脉动小,电机损耗和发热都较小;低速性能好,稳态精度高,因而调速范围宽;调速系统频带宽,快速响应性能好,动态抗扰能力强;主电路元件工作在开关状态,导通损耗小,装置效率高;直流电源采用三相整流时,电网功率因数高,可广泛用于交通、工矿企业等电力传动系统中。转速测量局部本测量系统采用89C51单片机控制,利用霍尔元件由转速产生的脉冲,对转速进行测量,原理框图如下图。转速由单片机的P0口输出,同时当电机转速超过设定值时,通过单片机的P1口输出信号,驱动响铃报警。性能特点:〔1〕89C51配合晶体管的双极式可逆PWM变换器构成直流电机驱动系统,可获得高性能的调速性能指标;〔2〕直流电机驱动系统结构简单,省去了复杂的换流装置,因此体积小,本钱低,加之采用硬软件结合的微机控制方式,提高了系统的可靠性和抗干扰性。图1.2调速系统中的转速测量框图〔3〕转速测量系统采用软件实现,动态显示容易,超限报警方便,提高了系统的灵活性。〔4〕由变换器构成直流电机驱动系统,可有效克服以往的直流调速中的谐波大、功率因数低的问题,是一种节能的调速方案。变M/T法在风力发电机并网控制中的应用发电机叶轮吸收的功率,一局部用来克服叶轮旋转的阻力矩,其余局部转变为电能。叶轮通过硬质齿面增速齿轮箱带动4极200kW异步发电机。主叶轮转速到达40rpm时,发电机转速到达同步转速,应并入电网发电,发电机转速低于同步转速时应脱离电网。对合闸时具有大电流冲击特性的异步发电机来说,除采用软切入并网技术外,还应满足在同步转速点切入的严格要求。自然界的风速风向变化是难以预测的随机变量,加上叶轮转动时的巨大惯量和强电磁干扰。因此,风力发电机的平安并/脱电网是风机控制的关键技术。自动并/脱电网的主要根据是发电机的实时转速,采用准确、快速的转速测量方法尤为重要。用变M/T法测速,以4个转速计数脉冲(m1=4)为一个测算周期。在风力发电机并入电网控制中,变M/T法能够较好地满足并网对发电机转速的精度要求。同时,随着电机转速不断的提高,4个转速脉冲之间的时间总和相应减少,测算周期也相也就是应缩短,这也正好满足发电机并网时对转速测量快速性的要求。有效地防止了在高风速起动时,风机因超过并网而飞车造成的并网失败。转速测量方法概述转速测量的方法有很多,根据工作原理可分为计数式、模拟式、同步式[2]。计数式方法是用某种方式读出一定时间内的总转数;模拟式方法是测出由瞬时转速引起的某种物理量的变化;同步式是用利用的频率与旋转体的旋转同步来测量转速,根据不同的转换方式,测试方法参看表1.1所示。一般的转速测试可用机械式转速表、发电机式转速表以及频闪式测速表,但在有些情况下,其测量精度,瞬时稳定度不能满足更高的要求,因此,在测量方法和传感器的选择上显得尤为重要。常用的传感器种类有光电传感器、电磁式传感器、电容式传感器等,而测量方法上有测量转速周期、转速频率等。如表1.1所示表1.1各种测速方法比拟型式测量方法适用范围特点备注计数式机械式通过齿轮转动数字轮中、低速简单、价廉光电式来自被测旋转体上的光线使光电管生电脉冲中、高速数字式电磁式利用磁电转换器将转速变换电脉冲中、高速数字式模拟式机械式利用离心力与转速成平方成正比的关系中、低速简单发电机式利用电机电流或交流电压与转速成正比关系高速可远距指示测速发电机电容式利用电容充、放电与转速成正比关系中、高速同步式机械式转动带槽的圆盘,观察旋转体的同步关系中速闪光式用频率闪光测出旋转体同步的频率中、高速就转速测量原理而言,大体可分为三大类,一是用单位时间内测得物体的旋转角度来计算速度,例如在单位时间内,累计转速传感器发出的N个脉冲,即为该单位时间的速度。这种以测量频率来实现测量转速的方法,称测频法。即“M〞法;另一类是在给定的角位移距离内,通过测量这一角位移的时间来进行测速的方法,称测周法,即“T〞法,如给定的角位移△θ,传感器便发出一个电脉冲周期,以晶体震荡频率而产生的标准脉冲来度量这一周期时间,再经换算可得转速。这两种测速方法各有优缺点,“M〞法一般用于高速测量,在转速较低时,测量误差较大,而且,检测装置对转速分辨能力也变差;而“T〞法一般用于低速测量,速度越低测量精度越高,但在测量高转速时,误差较大;结合这两种测量方法就可以地出第三种测量方法,即‘M/T’法结合这两种方法的优点,一方面象“M〞法那样在对传感器发出的脉冲计数的同时,也象“T〞法那样计取脉冲的时间,通过计算即可得出转速值。在实际测量中,还须设定定时时间,兼顾高、低转速时的精度影响,适时调节采样时间。1.4课题研究目的和意义转速是工程中应用非常广泛的一个参数,其测量方法较多,而模拟量的采集和模拟处理一直是转速测量的主要方法,这种测量方法已不能适应现代科技开展的要求,在测量范围和测量精度上,已不能满足大多数系统的使用。随着大规模及超大规模集成电路技术的开展,数字系统测量得到普遍应用,特别是单片机对脉冲数字信号的强大处理能力,使得全数字测量系统越来越普及,其转速测量系统也可以用全数字化处理。在测量范围和测量精度方面都有极大的提高。因此,本课题的目的是:对各种测量转速的根本方法予以分析,针对不同的应用环境,利用80C51系列单片机设计一种全数字化测速系统,从提高测量精度的角度出发,分析讨论其产生误差的可能原因,为今后的实际使用提供借鉴[3]。并从实际硬件电路出发,分析电路工作原理和软件流程,根据仿真情况提出修改方案和解决方法。课题以单片机为中心,设计的全数字化测量转速系统,在工业控制和民用电器中都有较高使用价值。其可以应用于工业控制中的某一局部,如数控车床的电机转速检测和控制、水泵流量控制以及需要利用转速检测来进行控制的许多场合。如车辆的里程表、车速表等。其次该转速测量系统由于采用全数字化结构,因而可以很方便的和工业控制计算机进行连接,实行远程管理和控制,进一步提高现代化水平。并且,几乎不需做很大改变直接就能作为单独的使用产品。总之,转速测量系统的研究是一件非常有意义的课题。1.5主要内容和存在的问题1.1.详细分析转速的测量理论,对转速的周期测量法“T〞法、频率测量法“M〞法以及周期频率“M/T〞测量法,三种具体测量方法的转速计算、各自的测量精度和误差进行阐述。定性地比拟三种方法所针对的转速特征,分析高、中、低转速情况下各自的适用状况,从而,在保持一定的测量精度情况下,应用“M〞法,说明转速测量原理。2.根据单片机系统的设计原那么,提出测量方案,构建硬件系统,分别对硬件系统的配置予以估计,使其能够对转速进行测量。同时分析接口电路,显示转速。3.对单片机定时/计数器进行设置,设计和说明定时/计数器在“M〞法测量中的作用和使用方法,讨论测量精度的问题。4.根据系统要求设置各控制字,用A51汇编语言编制程序,包括主程序流程,显示中断程序流程。并用软件的方法对计数和定时进行同步,力求在不增加硬件的条件下,使同步到达满意的效果。5.利用Keil51软件的uVision2集成环境对系统对工作软件进行编译、调试和仿真。1.1.单片机在系统运行过程中,中断设置问题2.系统硬件电路制作,调试。3.监控程序及人机界面的设计。2基于单片机的转速测量原理2.1单片机测量转速的根本方法转速是工程中应用非常广泛的一个参数,早期模拟量的模拟处理一直是作为转速测量的主要方法,这种测量方法在测量范围和测量精度上,已不能适应现代科技开展的要求。而随着大规模及超大规模集成电路技术的开展,数字测量系统得到普遍应用,利用单片机对脉冲数字信号的强大处理能力,应用全数字化的结构,使数字测量系统的越来越普及[4]。在测量范围和测量精度方面都有极大的提高。下面将测量系统作一探讨。2.一般转速测量系统有以下几个局部构成,如图2.1图2.1转速测量框图1.转速信号拾取转速信号拾取是整个系统的前端通道,目的是将外界的非电参量,通过一定方式转换成电量,这一环节可以通过敏感元件、传感器或测量仪表等来实现。方法如下:〔1〕通过敏感元件拾取被测信号敏感元件体积小,可以根据用户及环境要求做成各种形状的探头,它能将被测的物理量变换成电流、电压,只要选择适宜的元件参数。如R、L、C设计相应的电路,便能完成这种对应关系。这种方法设计难度大,信号稳定度差,在模拟处理系统中不宜采用。〔2〕通过传感器拾取信号由专业人员将敏感元件和相应的测量电路、传递机构以适当的形式制成不同类型、不同用处的传感器,根据原理输出电量。该电量可以是模拟量或数字量,现代传感器还可以输出开关量,用于数字逻辑电路。〔3〕通过测量仪表拾取被测信号目前有许多测量仪表用于各种测量中,有大信号输出、有BCD码输出等,但价格昂贵,专业性强,一般不适合通用系统。通用的转速测量系统大都采用一种俗称“码盘〞的传感装置,将圆形的码盘固定在转轴上,码盘上有假设干规那么排列的小孔,用光电偶来输出电信号,以反映转速对应关系,即是将转轴的速度以脉冲形式反映出来,通常有两种形式:1)模拟量量化后经A/D转换,由数字量反映角度,供单片机计算处理,得出转速。2)直接由脉冲来反响转轴的角度,用每转产生的脉冲经单片机处理得出转速。2.整形和倍频前向通道中,从传感器输出的信号必须转换成计算机输入要求的信号,由于信号调节电路与传感器的选择,现场干扰程度等,都会影响信号的质量[5]。而脉冲信号的上升沿和下降沿对数字电路的触发尤为重要,假设要将转速脉冲信号直接加到计数器或外部中断的输入端,并利用其上升沿来触发进行计数,那么必须要求输入的信号有陡峭的上升沿或下降沿。处理方法上可以用触发器电路来整形。而倍频电路主要用于解决低转速时测量精度问题。及码盘的刻度误差而造成的精度下降问题。方法是在每转中增加脉冲的个数〔码盘的线程数〕来提高精度。但在高转速时,由于脉冲个数的增加,限制了最高转速测量量程,这个问题可用单片机控制来动态处理解决,兼顾上下转速的测量精度。3.单片机单片机是整个测量系统的主要局部,担负对前端脉冲信号的处理、计算、以及信号的同步,计时等任务,其次,将测量的数据经计算后,将得到的转速值传送到显示接口中,用数码管显示数值[6]。在本系统中考虑到计数的范围、使用的定时/计数器的个数及I/O口线,预选用89C51单片机。具体工作情况在后讨论。4.驱动和显示由于LED数码管具有亮度高、可靠性好等特点,工业测控系统中常用LED数码管作为显示输出。本系统也采用数码管作显示。LED显示器是用发光二极管显示字段的,通常使用七段构成“日〞字型和一只发光二极管作为小数点,称八段数码显示器。其有两种驱动方式,共阴驱动和共阳驱动,共阴驱动是各段发光二极管的阴极连在一起,并将公共端接地,在共阳结构中,将各段发光二极管阳极连在一起,并将公共端接上+5V电源,显示字符对应字型代码发光。2.1.测周期法“T法〞转速可以用两脉冲产生的间隔宽度TP来决定。用以采集数据的码盘,可以是单孔或多孔,对于单孔码盘测量两次脉冲间的时间,就可测出转述数据,TP也可以用时钟脉冲数来表示。对于多孔码盘,其测量的时间只是每转的1/N,N为码盘孔数。如图2.2所示:图2.2“T〞法脉宽测量Tp通过定时器测得。定时器对时基脉冲(频率为fc)进行计数定时,在Tp内计数值假设为m2,那么计算公式为:〔式2.1〕即:〔式2.2〕P-为转轴转一周脉冲发生器产生的脉冲数。fc-为硬件产生的基准时钟脉冲频率单位Hz。n-转速单位:〔转/分〕m2-时基脉冲由图2.2可知“T〞法测量精度的误差主要有两个方面上,一是两脉冲的上升沿触发时间不一致而产生的;二是计数和定时起始和关闭不一致而产生的。因此要求脉冲的上升沿〔或下降沿〕陡峭和计数和定时严格同步。测周法在低转速时精度较高,但随着转速的增加,精度变差,有小于一个脉冲的误差存在。2.测频法“M法〞在一定测量时间T内,测量脉冲发生器〔替代输入脉冲〕产生的脉冲数m1来测量转速。计算公式:n=60m1/Prc。如图2.3所示,图2.3“M〞法测量转速脉冲设在时间T内,转轴转过的弧度数为Xτ,那么的转速n可由下式表示:(式2.3〕转轴转过的弧度数Xτ可用下式所示:(式2.4)将式2.4代入式2.3,得转速n的表达式为:()n-转速单位:〔转/分〕T-定时时间单位:〔秒〕在该方法中,测量精度是由于定时时间T和脉冲的不能保证严格同步,以及在T内能否正好测量外部脉冲的完整的周期,可能产生的1个脉冲的量化误差[7]。因此,为了提高测量精度,T要有足够长的时间。定时时间可根据测量对象情况预先设置。设置的时间过长,可以提高精度,但在转速较快的情况下,所计的脉冲数增大〔码盘孔数已定情况下〕,限制了转速测量的量程。而设置的时间过短,测量精度会受到一定的影响。3.测频测周法M/T法所谓测频测周法,即是综合了“T〞法和“M〞法分别对高、低转速具有的不同精度,利用各自的优点而产生的方法,精度位于两者之间。同时在同一时间内脉冲发生器产生的脉冲数m1及内部时钟脉冲数m2来计算,公式为:n=60m1/pm2如图2.4所示:图2.4“M/T〞法定时/计数测量“M/T〞法采用三个定时/计数器,同时对输入脉冲脉、高频脉冲〔由振荡器产生〕、及预设的定时时间进行定时和计数,m1反映转角,m2反映测速的准确时间,通过计算可得转速值n。该法在高速及低速时都具有相对较高的精度。测速时间Td由脉冲发生器脉冲来同步,即Td等于m1个脉冲周期。由图可见,从a点开始,计数器对m1和m2计数,到达b点,预定的测速时间到,计算机发出停止计数的指令,因为TC不一定正好等于整数个脉冲发生器脉冲周期,所以,计数器仍对高频脉冲继续计数,到达c点时,脉冲发生器脉冲的上升沿使计数器停止,这样,m2就代表了m1个脉冲周期的时间。“M/T〞法综合了“T〞和“M〞两种方法,转速计算如下:设高频脉冲的频率为fC,脉冲发生器每转发出P个脉冲,由式2.2和式2.5可得M/T法转速计算公式为:(式2.6)n-转速值。单位:〔转/分〕fc-晶体震荡频率。单位Hzm1-输入脉冲数,反映转角。m2-时基脉冲数。2.2误差和精度分析2.2由转速由公式:给出因m1的量化误差是1个脉冲,故转速变化:(式2.7)其相对误差为:(式2.8)(式2.9)(式2.10)ε-相对误差n’-参加一个脉冲后的转速值n-转速误差由式2.10可知,ε随转速n增大而减小,因此,这种方法适合于高速测量,当转速越低,产生的误差会越大。2.2因m1的量化误差也是1个脉冲,故引起的转速变化也可以由下式给出:(式2.11)其相对误差为:(式2.12)所以由式2.12可知,ε随转速减小而减小,因此。这种方法适合于低速测量,转速增高,误差增大。2.2由其测量原理可知。输入计数脉冲和计数定时值在理论上是严格同步的,因此,在理论上,m1〔定时器的计数值〕不考虑误差,由于实际启动是由程序来控制的〔系统应采取由输入计数脉冲来同步〕,故可能会产生一个脉冲的量化误差[8]。因而,转速变化为:其相对误差为:(式2.13)由上式可知:这种转速测量方法的相对误差与转速n无关,只与晶体振荡产生的脉冲有关,故可适合各种转速下的测量。保证其测量精度的途径是增大定时时间T,或提高时基脉冲的频率fc。因此,在实际操作时往往采用一种称变M/T的测量方法,即所谓变M/T法,在M/T法的根底上,让测量时间Tc始终等于转速输入脉冲信号的周期之和。并根据第一次的所测转速及时调整预测时间Tc,兼顾上下转速时的测量精度。2.原理上测量误差的来源主要有码盘刻线误差、计数过程中的±1误差、时间基准误差、干扰造成的误触发引起的误差。由于数字电路具有很强的抗干扰能力,干扰引起的测量误差可忽略;时间基准采用晶体振荡器,误差小可以不计;用码盘脉冲作捕获信号,码盘脉冲计数值中不含±1误差。因此码盘刻线误差和标准时间计数值中的±1误差是影响测量准确度的主要因素[9]。误差分析:误差可看为两局部产生:(式2.14)式中t—实际测量时间—刻度误差—±1误差由式2.14可知:增大测量时间t有利于提高测量准确度。在动态性能许可的情况下,应尽可能采用大的测量时间。通常码盘脉冲倍频数可以是P的整数倍。在测量时间和码盘脉冲倍频数确定后,确定标准时间Tc。以确保测量准确度为准。在其他条件不变的情况下,转速越高,码盘刻线误差越小;反之,刻线误差越大。实际测量时间t随Tc的增大而增大。2.3转速测量电路设计2.一个单片机应用系统的硬件电路设计应包含有两个局部内容:第一是系统扩展,即当单片机内部的功能单元,如ROM、RAM、I/O口、定时/计数器、中断系统等容量不能满足应用系统要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。第二是系统配置,即按照系统功能要求配置外围设备,如键盘、显示器、打印机、D/A、A/D转换器等,并设计相应的接口电路。因此,系统的扩展和配置应遵循以下原那么:⒈尽可能选择典型电路,并符合单片机的常规用法。⒉系统的扩展与外围设备配置应满足系统功能的要求,并留有适当的余量,以便进行二次开发。⒊硬件结构应与应用软件方案统一考虑,软件能实现的硬件功能尽可能用软件来实现,但需注意的是软件实现占用CPU的时间,而且,响应时间比硬件长。⒋单片机外接电路较多时,应考虑其驱动能力,减少芯片功耗,降低总线负载。本系统由于只考虑转速的测量与显示,在考虑系统配置和扩展时,尽可能利用单片机本身的资源,以提高性价比,选择89C51系列的单片机作为系统的控制芯片。89C51单片机片内含有一4K的程序存储器;128字节的存放器空间;2个16位的定时/计数器;32根I/O口线;5个中断源。而本转速测量系统采用“M〞法的测量方法,需一个用于对外部脉冲计数的计数器,一个用于对内部高频脉冲计数的定时器,用于调整、预定定时时间。从分析可以看出89C51能满足系统要求,不须另外扩展计数器,外部中断分别用于定时/计数同步中断和响应,定时器利用其溢出中断来预定测量的时间,该时间要求准确,可根据测量高、中、低转速来进行调整。2.3.本系统单片机采用Atmel公司生产的89C51作为主控制器,用6位LED数码管作为显示。1.显示局部89C51单片机的I/O口输出特性是有较大的灌入电流能力,其中P0口的灌电流能力可达20mA,完全可以用于数码管的驱动。2.上电复位89C51的RST端通过电阻和电容直接和电源端相连,实现上电复位,理论上只要复位管脚出现2个机器周期以上的高电平即可完成复位,阻容元件的时间常数可以很小,但考虑到开机时,电源有个上升过程,以及振荡电路尚未完全起振等因素,这里选用的电阻为1K,电容为10u。上电瞬间,RESET端的电位与Vcc相同,随着充电电流减小,RESET端的电位逐渐下降,按电路参数可选择电阻为1kΩ,电容为10μF。那么时间常数,这个时间常数,足以完成复位操作。系统还可以采用另一种复位方式,即利用X5045芯片提供的上电复位功能进行复位。X5045是集上电复位、看门狗、掉电复位、串行EEPROM四种功能于一体的多功能芯片,当系统要求较高时,应采用该芯片进行复位,当然,这会使系统性价比有所下降。本系统暂不采用。3.脉冲发生器为了说明转速测量原理,减少硬件的复杂程度和投入,在不影响分析的根底上,这里使用了脉冲发生器产生方波来替代,并通过程序中设置,模拟码盘每转的线数及通过调节NE555构成的脉冲发生器的频率来模拟转速的快慢。没有考虑波形畸变和干扰,在实际应用中也可以用整形和抗干扰电路来调整。该脉冲直接加到单片机的P3.4,即计数器T0的输入端,下降沿触发计数。4.单片机时钟单片机的18、19脚接晶体和两个27PF的电容,这里选用振荡频率为12MHz的晶体。5.键盘为使系统更有灵活性及有扩展性,本系统在设计时,预留了键盘部份,利用该键盘,可以进行设置系统允许的最高/低转速值等操作,以便在今后的工作中对此板作进一步的开发。6.数据存储为使系统更有灵活性及有扩展性,本系统预留了串行EEPROM接口,以便存储系统允许的最高/低转速,记录运行中出现的最高/低转速等工作。可以使用一块X5045芯片作为数据存储,该芯片中带有512字节EEPROM,可以用电擦除的方式进行改写,改写的次数可达1000000次,掉电之后数据保证40年不会丧失。本系统暂不讨论。3系统程序设计和调试3.1程序设计初步硬件电路设计完毕,即进行程序设计,在程序设计之前,首先要确定定时器的工作方式,方式控制字,确定串行口的工作模式等,下面分别讨论。3.1.1.定时/计数器T0本系统设计中,T0被用于计数,我们当然希望计数量大为好,这样,可以获得较大的测量范围,因此,T0选定为工作方式1〔16位的计数方式〕,设计中,没有使用外部控制端,仅用指令置位/清零TR0来进行计数的启动/停止,这样,电路较为简单,但精度会受到一定的影响,但在本设计中,认为采用这种方式,精度可到达要求,因此,T0采用自由计数的方式,不用预置初值。2.定时/计数器T1本系统设计中,T1被用于数码管显示及形成闸门信号,由于系统中用到5位数码管,动态显示时,一组数码管显示的总时间以不超过20ms为宜,因此,这里选择T1的定时时间为4ms,5位数码管显示完毕,正好用于20ms,这里选用T1的工作状态1。确定了定时/计数器T1的定时时间以后,就要计算定时初值,本系统用了12M的晶振,恰好是一个机器周期为1us,因此,4ms定时时间意味着只要计数4000次即可,由于定时/计数器T1是向上计数,因此,要化为16进制,并分别送入T1的高8位和低8位。这里,采用的keil汇编软件有较强的预处理功能,能够处理较复杂的运算,因此,程序中可写为:MOVTH1,#HIGH(65536-4000)MOVTL1,#LOW(65536-4000)这里使用了两条指令#High和#Low,它们的用途分别是取其后括号中数值的高8位和低8位,因此,这两行语句的含义就是取65536-4000的高8位和低8位,写成65536-4000而不是写出其结果61536可以提高程序的维护性,直观地看到定时初值。由于80C51单片机在中断时,会附加延时3-8个周期,在满足一定条件的情形下,验证这个数值是否正确,可以在进入仿真调试时通过观察Keil提供的有关变量看到,如果不正确,可以根据实际情况略作调整,保证定时时间为4ms。3.定时/计数器的方式控制字定时/计数器的方式控制字TMOD,其地址为89H,复位值00H,不可位寻址。其8位控制内容如表3.1:定时/计数器的方式控制字说明:GATE:门控位。由GATE、软件控制位TR0/1和INT0/1共同决定定时/计数器0/1的翻开或关闭。当GATE=0,只要用指令置TR0/1=1即可启动定时/计数器0/1工作。GATE=1,只有INT0/1引脚为高电平且用指令置TR0/1=1时,才能启动定时/计数器0/1的工作。C/T:定时器/计数器选择位。C/T=1,工作于计数器方式;C/T=0工作于定时器方式。M1M0:定时/计数工作模式选择位。M1M0=00,13位计数;M1M0=01,16位计数;M1M0=10,自动再装入8位计数;M1M0=11,工作于模式3状态。根据前面的描述,可以确定TMOD的控制字应为00010101B。程序中用:MOVTMOD,#00010101B将控制字送入TMOD。4.定时/计数控制存放器TCONTCON地址88H,可进行位寻址,复位值00H。定时/计数控制存放器TF0、TF1分别为定时器T0和计数器T1的溢出标志位,TR0和TR1在正常情况下,都没有溢出标志,只有当计数值或定时值超过65536时,才能有溢出中断请求,这两位是由硬件置位和硬件清零,不需另行设置。可在T0和T1的溢出中断效劳程序中,以供使用。TR1、TR0分别用于开启T1和T0的开关位,其中TR1由系统开启时,直接置位,翻开T1,开始定时,经运行判断后,翻开TR0。3.在程序开始之前,首先进行变量的分配,使用EQU伪指令定义了一些符号变量,使得程序阅读时较为直观。程序的初始化,根据硬件电路的要求,将各硬件电路置于其规定的状态;根据需要,设置堆栈;对定时器、计数器、串行口等设置工作状态,预置初值等[12]。以下是程序定义变量及进行初始化的程序行。DISPBUFEQU5AH;显示缓冲区从5AH开始,共5个单元。SecCounEQU59H;秒计数器单元,用于累计T1的中断次数,每250个为一秒。SpCounEQU57H;速度计时器单元57H和58H,高位在前〔57H单元中〕CountEQU56H;显示时的计数器SpCalcbit00h;要求计算速度的标志,该位为1时主程序计算速度,然后清该位HiddenEQU10;消隐码;以上分配变量MOVSP,#5FH;设置堆栈MOVP1,#0FFH;将P1置位高电平。MOVP0,#0FFH;将P0置位高电平。MOVP2,#0FFH;将P2置位高电平,以上三行熄灭所有LED及数码管。MOVTMOD,#00010101B;定时器T1工作于方式1,定时器T0工作方式1。MOVTH1,#HIGH(65536-4000)MOVTL1,#LOW(65536-4000)SETBTR1SETBET1;开定时器1中断SETBEA3.定时计数器T1每4ms中断一次,用以进行数码管显示和每1秒读取一次计数器T0中的数值。1.秒信号的产生中断产生后:INCSecCounMOVA,SecCounCJNEA,#250,Go2判断SecCoun是否到达250了,如果到达250,那么说明1秒时间已到,程序将关闭T0计数器,然后对T0中已计得的数据进行处理,然后再去进行显示,否那么直接转去显示。这部份的程序流程图如图3.1所示。图3.1秒信号子程序2.数码管的显示数码管显示采用动态方式,即每次中断点亮一位数码管,依次循环。由于数码管共有5位,因此,每20ms即可轮流点亮每个数码管一次,利用人的视觉暂留现象,可以稳定地显示各位数码管的值。图3.2是显示部份的流程图,从图中可以看出,程序中利用了一个显示计数器,该计数器的值在0~4之间变化,对应第一至第五位数码管,当计数值到5时,即回零。下面以显示计数器值等于2为例,加以说明。当显示计数器值等于2时,意味着此时应点亮第3位数码管去进行显示。程序中首先取显示缓冲区初值:MOVA,#DISPBUFF该值为5AH,加上显示计数器的值即5CH:ADDA,COUNT因此将从5CH中取出待显示数据:MOVR0,AMOVA,@R0图3.2数码管显示流程图然后查字表码表,并将该字形码送往P0:MOVDPTR,#DISPTABMOVCA,@A+DPTRMOVP0,A因为P0是段驱动。下面是要点亮第3位数码管,程序中再次取计数值,即2,然后查位码:MOVA,COUNTMOVDPTR,#BitTabMOVCA,@A+DPTR位码的值:BitTab:DB0FDH,0FEH,0FBH,0F7H,0EFH因此,查出来的值是0FBH,即11111011,这个值被送往P2口:ORLP2,#00011111B;先将P2口的低5位置1(关闭原点亮的数码管)ANLP2,A;将查得的位码与P2相与,点亮相应的数码管观察硬件,即可发现P2.2驱动第3位数码管,因此即实现了点亮第三位数码管的要求,而其他各位不被点亮。这种处理方法使得该程序具有很强的通用性,只要改变计数值,改变位码表,即可用于不同位数、不同接法的数码管驱动。3.2系统流程本系统的主程序参考图3.3,在完成初始化工作以后,即循环等待,每1s时间到之后,T1中断程序将会读取T0中的计数值,并将其放入约定的存储单元中,并且置位“要求计算〞的标志,当该标志位为1时,主程序即转入计算,第一步将16进制数的结果转化为BCD码,第二步,将BCD码转化并送入显示缓冲区。图3.3主程序流程图3.3程序调试及固化单片机应用系统的程序必须有调试好的应用程序,系统才能运行。通常,单片机的开发工具至少需要仿真机和编程器两种,前者用以调试程序,后者用于将调试完成后的程序代码写入单片机芯片中[13]。3.单片机开发工具的作用有这样一些:〔1〕有较齐全的开发软件工具,如配置有汇编语言,用户可用汇编语言编制应用软件。开发工具能自动生成目标文件;配有反汇编软件,能将目标程序转换为汇编语言程序文本;有丰富的子程序库可供用户调用[16]。〔2〕有全速跟踪调试、运行的能力开发装置占用单片机硬件资源少。并具有单步运行、设断点运行、状态查询等功能。〔3〕能进行系统硬件电路的诊断与检查;为了方便模快化软件调试,还应配置软件转储、程序文本打印、能将程序固化到单片机芯片或系统FLASHROM芯片中。3.3.1.keilC51软件集成开发环境随着单片机开发技术的不断开展,单片机的开发软件也在不断开展,Keil软件是目前流行的用于开发51系列单片机的软件。该软件提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境〔μVision〕将这些局部组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20MB以上空闲的硬盘空间、Win98、NT、Win2000、WinXP等操作系统[18]。2.程序调试〔1〕源文件建立使用菜单file/new在工程窗口右侧翻开一个文本编辑界面,可在其中写入指令或将已编辑完成的程序调入,保存。本程序保存为*.asm。〔2〕建立工程文件点菜单Project/NewProject出现对话框,给工程命名为test保存,在弹出的对话框选择CPU的型号,选择Atmel公司的89C51,确定回到主界面,在工程窗口文件页中点Target1/SourceGroup1/AddfiletoGroup/*.asm,双击参加。〔3〕编译连接选择菜单Project/Buildtarget进行连接,此时编译过程的信息将出现在编译窗口中,出现的语法错误会有提示,根据提示,修改源程序,直到编译通过。图3.4系统程序编译界面〔4〕进入调试编译通过后的源程序,只表示没有语法错误,但是否能够存在逻辑或其他错误,还需要进行仿真才行[19]。编译完成后,翻开菜单Debeg/Start/StopSession对软件模拟调试,如图3.5所示。在调试中,可以采用单步运行对程序进行检查,修改错误,并通过各参数窗口,观察数值是否与设定值相同,如图3.6所示程序运行至显示第2位数码管时的情形。图3.5进入调试调试还可以使用设置断点的方式,在定时器T1的中断效劳程序的起点处设了一个断点,记录下的运行时间为16.781239000(s),如图3.7左侧所示,再次运行并停止后,可看到,时间为16.78528200(s),如图3.8左侧所示,计算可知,中断时间为4.043(ms),可以根据这一结果,对定时常数略作修改,使得定时时间最接近于4(ms)。图3.6显示第3位数码管反复修改,直到所有功能完全正确,即可产生.hex文件,该文件可用编程器烧录到单片机芯片中[20]。图3.7进入定时器T1中断效劳程序后停止运行,观察时间sec图3.8进入定时器T1中断效劳程序后停止运行,观察时间sec3.4技术指标分析根据华南国家计量测试中心公布的JJG326-1983标准转速装置试行检定规程(30~40000)r/min时,误差标准为(0.06~0.81)r/min在实际产品中,如国内时代集团公司生产的几种转速表指标如下:SE-1100发电机转速表:量程:100~20000rpm精度:±1rpm/±2rpm(10000rpm以上时)多功能转速表HT-5100量测范围:10.0~100,000rpm±1r/min~±10r/min(±0.02r/min~±0.06r/min)从上述数据可知,到达测试中心的标准,只要选择适当的测量方法和高精度的转速传感器,用单片机构成的系统完全可以实现,而在实际应用中,往往对转速精度的要求不是很高。下面将本系统可实现的技术指标做一分析[15]。本程序采用M法进行测速,硬件电路较简单,这种测量方法所适用的测速范围及测量精度可通过设置及选用适宜的转速传感器加以控制。1.测速范围程序中,采用的闸门时间是1s,T0的最大计数值是65536,因此,最大的计数量应该是在1s内不超过65535,这样,即可算出最高计数频率。设计数频率为f,其周期为1/f,计到65535个数据时,所用时间为:T=65535*1/f按上述要求:当T=1s时,为极大值1=65536*1/ff=65535(Hz)本设计在实现时,设采用了12点的码盘,即轴每转一周,产生12个脉冲,因此,轴实际输出频率为:f=65535/12=5460〔Hz〕,折算到转速:r=f*60=327600r/min〔3〕用这种方法可以测的电机的转速是很高的。如果这样的转速仍不能满足要求,或者系统采用多点数的光电编码器,那么还可以采用软件计数器的方法,进一步扩大其上限,这样,其上限仅取决于定时/计数器的最大允许输入频率,而采用12M的晶振,定时/计数器的最大允许频率可以达500KHz,考虑到测量的对象的特性,因此,可以认为,采用M法进行测量,其上限足够使用[21]。这种测速方式的下限理论上也可以很低,但是当转速低到一定程度时,其误差已较大,因此,其测速下限与允许的测量误差有关。3.5结果分析和有待解决的问题1.结果分析当电路板加上5V电源后,系统开始工作,用示波器观察NE555产生的脉冲工作正常,调整电位器,显示出脉冲数值,间接反映出转速的数值。理论误差约千分之一。但最后一位〔个位〕显示不稳定,原因分析有以下两点:〔1〕脉冲发生器的振荡频率不稳定,导致输入脉冲个数的变化,电路是使用NE555加RC构成振荡器以产生脉冲信号,而RC振荡器稳定性不够好,因此,频率有漂移。通过使用示波器观察振荡信号。〔2〕由于M法所存在的±1的误差,即由于闸门启/闭与信号不同步而造成某次多计一个数或少计一个数而造成的误差,由于采用12个点的码盘,因此,在计得1s脉冲数后,乘以5而得到每分钟的转速,因此,反映在显示上,每变化都是以5为单位。如果观察到数据的变化都是以5为单位,那么,这就是由于M法的固有缺陷而引起的。2.有待解决的问题〔1〕定时和计数同步问题由于本系统的对外来计数采用软件翻开计数器的,因此定时和计数存在不同步问题,相差指令周期及一个脉冲的误差,这将给转速产生一定的误差,解决的方法有如下几种想法:用硬件即加一个D触发器外部计数的同时开启定时,关闭时,利用一回复信号,停止定时器的工作,这种方法实时性高,开启和关闭还有防止误触发和抗干扰功能,只是增加了硬件的复杂程度。利用外部中断的方式来同步。定时和计数,这种方法简单可行,仍然有执行指令的延时但对大局部应用场合都可以使用。〔2〕采用实际的码盘输入能更准确反映测量转速的状况。本系统采用模拟的方法存在一定的问题,应予以改良。3.6设想与改良1.串行通信当前智能化仪表的一个开展趋势是给仪器增加通信接口,使得仪器具有连网或与上位机通信的能力,因此,本系统在设计时,作了这样的一些考虑,在硬件设计时增加RS232串接口。RS232接口关于高、低电平的规定与单片机所使用的TTL电平不同,所以单片机上必须做上232接口电路,目前比拟常用的方法是直接选用现成的232接口芯片。当串行口工作于方式1时,需要有一个波特率发生器,在80C52单片机中,可以利用定时器T1作为波特率发生器,也可以用T2作为波特率发生器,由于本系统中T1已被用于定时,故拟采用T2作为波特率发生器。在开发实际的产品,需要与上位机编程人员配合,规定双方的通信协议。2.键盘编程拟增加键盘局部程序,主要实现以下一些功能:1〕设定最高转速2〕设定最低转速3〕设定光电编码器的码点数4〕设定其他一些工作参数使得本仪器接能够真正地进入实用性的阶段。在硬件电路在设计时,可以预留按键接口及串行EEPROM存储器,因此,上述的要求是完全可以实现的。4结论本文对单片机用于转速测量的理论、原理进行了系统的分析、比拟,并对每种测量方法定性、定量的予以阐述,设计了显示接口电路和应用程序。以下从四个方面进行总结:1.硬件电路单片机用于转速测量种类较多,方法各有不同,在硬件设计上根据使用场合、功能和要求,采用的电路也有差异,单片机有用80C51系列的80C31、80C51等,并对其进行扩展,接口采用8155、8255等用于显示。本系统采用89C51单片机,充分利用单片机内部自带的两个16位定时/计数器进行设计,较完全的开发了单片机自身的功能,接口利用了89C51的P0口具有较大的电流驱动能力的特点,未扩展驱动芯片,直接由单片机驱动,简化了硬件电路。有一定的实用价值和较高的性价比,可用于工业控制中的转速检测、民用电器及其他应用。2.测量方法在测量原理上采用先进的M的测量方法,保证了高转速的测量中获得较高的精度。应用范围广泛,可通过扩展进行二次开发。3.程序调试本系统进行了全面的程序设计,显示程序、中断效劳程序和初始化程序,并对这些程序在uVision2软件上进行编译和调试,可以运行和转换成HEX文件,通过编程器写入芯片中。根本到达了设计的要求。4.改良方法和进一步的工作转速的定时时间长、短,其设定值是人为估计的,可以针对具体的应用,根据转速的实际情况来调整定时时间。下步工作能制作完整电路工作板,即硬件电路,用示波器测量其参数。更深入的分析其精度和误差。附录:部份源程序DISPBUFEQU5AH;显示缓冲区从5AH开始SecCounEQU59HSpCounEQU57H;速度计时器单元57H和58H,高位在前〔57H单元中〕CountEQU56H;;显示时的计数器SpCalcbit00h;要求计算速度的标志,该位为1那么主程序进行速度计算,然后清该位HiddenEQU10;消隐码ORG0000HAJMPSTARTORG1BHJMPTIMER1;定时中断1入口ORG30HSTART:MOVSP,#5FH;设置堆栈MOVP1,#0FFHMOVP0,#0FFHMOVP2,#0FFH;初始化,所有显示器、LED灭MOVTMOD,#00010101B;定时器T1工作于方式1,定时器0工作方式1,计数器MOVTH1,#HIGH(65536-4000)MOVTL1,#LOW(65536-4000)SETBTR1SETBET1;开定时器1中断SETBEALOOP:JNBSpCalc,LOOP;如果未要求计算,转本身循环;标号:MULD功能:双字节二进制无符号数乘法;入口条件:被乘数在R2、R3中,乘数在R6、R7中。;出口信息:乘积在R2、R3、R4、R5中。;影响资源:PSW、A、B、R2~R7堆栈需求:2字节MOVR2,SpCounMOVR3,SpCoun+1MOVR6,#0MOVR7,#5;测得的数值是每秒计数值,转为分〔每一转测12次,故乘5而非60〕CALLMULDSETBTR2;标号:HB2功能:双字节十六进制整数转换成双字节BCD码整数;入口条件:待转换的双字节十六进制整数在R6、R7中。;出口信息:转换后的三字节BCD码整数在R3、R4、R5中。;影响资源:PSW、A、R2~R7堆栈需求:2字节MOVA,R4MOVR6,AMOVA,R5MOVR7,A;将乘得的结果送R6R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论