华佗养生网
您的当前位置:首页基于单片机的转速测量仪设计

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

来源:华佗养生网
基于单片机的转速检测系统设计

第一章 概述

1.1转速测量系统的发展背景

随着超大规模集成电路技术提高,尤其是单片机应用技术以其功能强大,价格低廉的显著特点,使全数字化测量转速系统得以广泛应用。由于单片机在测量转速方面具有体积小、性能强、成本低的特点,越来越受到企业用户的青睐。转速是工程中应用非常广泛的一个参数,其测量方法较多,而模拟量的采集和模拟处理一直是转速测量的主要方法,这种测量方技术已不能适应现代科技发展的要求,在测量范围和测量精度上,已不能满足大多数系统的使用。随着大规模及超大规模集成电路技术的发展,数字系统测量得到普遍应用,特别是单片机对脉冲数字信号的强大处理能力,使得全数字量系统越来越普及,其转速测量系统也可以用全数字化处理。在测量范围和测量精度方面都有极大的提高。

常用的检测方法有机械式,光电式,霍尔式,频闪法,高压应变法等,本课题主要是针对转速测量系统的硬件和软件系统的设计。运用51系列单片机设计一种全数字化测速系统,从提高测量精度的角度出发,分析讨论其产生误差的可能原因。同时从实际硬件电路出发,分析电路的工作原理,根据设计具体情况提出修改方案和解决办法。

本课题以单片机为核心,设计的全数字化测量转速系统,在工业控制和民用电器中都有较高使用价值。一方面它可以应用于工业控制中的某一部分,如数控车床的电机转速检测和控制、水泵流量控制以及需要利用转速检测来进行控制的许多场合,如车辆的里程表、车速表等。另一方面由于该转速测量系统采用全数字结构,因而可以很方便的和工业控制机进行连接,实行远程管理和控制,进一步提高现代化水平。并且,几乎不需做很大改变就能直接作为单独的产品使用。

1.2本设计课题的目的和意义

在工程实践中,经常会遇到各种需要测量转速的场合, 例如在发动机、电动机、卷扬机、机床主轴等旋转设备的试验、运转和控制中,常需要分时或连续测量和显示其转速及瞬时转速。要测速,首先要解决是采样问题。在使用模技术制作测速表时,常用测速发电机的方法,即将测速发电机的转轴与待测轴相连,测速发电机的电压高低反映了转速的高低。为了能精确地测量转速外,还要保证测量的实时性,要求能测得瞬时转速方法。因此转速的测试具有重要的意义。

第 1 页 共 36 页

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

1.3设计的应用前景

现代工业、军事、航天技术的发展越来越离不开电机和机电一体化技术的发展和应用,在很多应用中,特别是一些军事、航天和精密加工行业对电机的转速有着较高的要求。因此,对电机转速进行精确的测量就显得十分重要。测量电机转速的方法有很多,常用的测量方法有机械转速测量、光电转速测量、频闪转速测量和磁性传感器测量(包括磁敏、磁电和霍尔)。单片机虽然问世不久,然而体积小、价廉、功能强的特点决定了其高增长的销售额,其性能也不断的提高,适用范围也越来越广。故采用单片机作为控制元件。由于光电传感器结构牢固,体积小,重量轻,寿命长,安装方便,又具有不怕灰尘油污、水气及盐雾,耐震动等优点,适合野外、露天等工作环境比较差的场合。而电机的工作环境一般比较复杂,光电传感器本身的特性又恰好适合比较复杂的环境,所以本次设计传感器采用光电传感器。另外,在实际应用中,很多场合要求测量系统具有报警功能,所以该系统有报警功能。以满足对电机转速的监控。满足工程实际的需要。

第 2 页 共 36 页

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

第二章 系统工作原理及方案

通过对该题目的设计,使学生初步掌握电子产品的设计方法和步骤,使学生进一步掌握单片机的工作原理,接口技术,软件编制方法及熟练地使用单片机的开发装置,为毕业后从事电子产品的设计、维护、维修打下一定的基础。

2.1转速测量方法

转速是指作圆周运动的物体在单位时间内所转过的圈数,其大小及变化往往意味着机器设备运转的正常与否,因此,转速测量一直是工业领域的一个重要问题。按照不同的理论方法,先后产生过模拟测速法(如离心式转速表) 、同步测速法(如机械式或闪光式频闪测速仪) 以及计数测速法。计数测速法又可分为机械式定时计数法和电子式定时计数法。本文介绍的采用单片机和光电传感器组成的高精度转速测量系统,其转速测量方法采用的就是电子式定时计数法。

对转速的测量实际上是对转子旋转引起的周期脉冲信号的频率进行测量。在频率的工程测量中,电子式定时计数测量频率的方法一般有三种:

(1)测频率法:在一定时间间隔t 内,计数被测信号的重复变化次数N ,则被

测信号的频率fx可表示为

f x =N/t

(2)测周期法:在被测信号的一个周期内,计数时钟脉冲数m0,则被测信号频

率fx = fc/ m0 ,其中, fc 为时钟脉冲信号频率。

(3)多周期测频法:在被测信号m1个周期内, 计数时钟脉冲数m2,从而得到

m1由测量准确度确定。被测信号频率fx ,则fx可以表示为fx =m1 fc/m2,

电子式定时计数法测量频率时,其测量准确度主要由两项误差来决定:一项是时基误差;另一项是量化±1误差。当时基误差小于量化±1 误差一个或两个数量级时,这时测量准确度主要由量化±1 误差来确定。对于测频率法,测量相对误差为:

Er1 =测量误差值/实际测量值×100 % =1/N×100 %

由此可见,被测信号频率越高, N越大,Er1就越小,所以测频率法适用于高频信号(高转速信号) 的测量。对于测周期法,测量相对误差为:

Er2 =测量误差值/实际测量值×100 % =1/m0×100 %

对于给定的时钟脉冲fc ,当被测信号频率越低时,m0越大,Er2就越小,所以测周期法适用于低频信号(低转速信号) 的测量。对于多周期测频法,测量

第 - 3 - 页 共 36 页

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

相对误差为:

Er3 =测量误差值/实际测量值100%=1/m2×100 %

从上式可知,被测脉冲信号周期数m1越大,m2就越大,则测量精度就越高。它适用于高、低频信号(高、低转速信号) 的测量。但随着精度和频率的提高, 采样周期将大大延长,并且判断m1也要延长采样周期,不适合实时测量。

2.2转速测量原理

在此采用频率测量法,其测量原理为,在固定的测量时间内,计取转速传感器产生的脉冲个数,从而算出实际转速,然后显示出转速。如图2.1所示

图2.1 系统原理图 各部分模块的功能:

1、传感器:用来对信号的采样。

2、放大、整形电路:对传感器送过来的信号进行放大和整形,在送入单片机进行数据的处理转换。

3、单片机:对处理过的信号进行转换成转速的实际值,送入LED。 4、LED显示:用来对所测量到的转速进行显示。 5、键盘:用来开启和关闭数码管。

第 - 4 - 页 共 36 页

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

第三章 系统方案的选择

转速测量的方案选择,一般要考虑传感器的结构、安装以及测速范围与环境条件等方面的适用性;再就是二次仪表的要求,除了显示以外还有控制、通讯和远传方面的要求。本文中给出两种转速测量方案,经过查资料、构思和自己的设计,总体电路我们有两套设计方案,部分重要模块也考虑了其它设计方法,经过分析,从实现难度、熟悉程度、器件用量等方面综合考虑,我才最终选择了一个方案。下面就看一下我对两套设计方案的简要说明。

3.1方案一:霍尔传感器测量方案

霍尔传感器是利用霍尔效应进行工作的。其核心元件是根据霍尔效应原理制成的霍尔元件。霍尔转速传感器的测速原理图如图3.1所示

在非磁性材料的圆盘边上粘一块磁钢,霍尔传感器放在靠近圆盘边缘处,圆盘旋转一周,霍尔传感器就输出一个脉冲,从而可测出转数(计数器),若接入频率计,便可测出转速。

图3.1 霍尔转速传感器的测速原理图

传感器的定子上有2 个互相垂直的绕组A 和B, 在绕组的中心线上粘有霍尔片HA 和HB ,转子为永久磁钢,霍尔元件HA 和HB 的激励电机分别与绕组A 和B 相连,它们的霍尔电极串联后作为传感器的输出。

第 - 5 - 页 共 36 页

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

图3.2霍尔转速传感器的结构原理图

缺点:采用霍尔传感器在信号采样的时候,会出现采样不精确,因为它是靠磁性感应才采集脉冲的,使用时间长了会出现磁性变小,影响脉冲的采样精度。

3.2方案二: 光电传感器方案

光电传感器是采用光电元件作为检测元件的传感器。它首先把被测量的变化转换成光信号的变化,然后借助光电元件进一步将光信号转换成电信号。光电传感器一般由光源、光学通路和光电元件三部分组成。光电检测方法具有精度高、反应快、非接触等优点,而且可测参数多,传感器的结构简单,形式灵活多样。

光电传感器是应用非常广泛的一种器件,有各种各样的形式,如透射式、反射式等,基本的原理就是当发射管光照射到接收管时,接收管导通,反之关断。 脉冲发生源的硬件结构图如图3.3所示。

图3.3脉冲发生源硬件结构图(左为正视图,右为侧视图)

设计采用了红外光电传感器,进行非接触式检测。系统在光电传感器收发端间加入电动机,并在电动机的转轴上安装一转盘。在这个转盘的边沿处挖出若干

第 - 6 - 页 共 36 页

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

个圆形过孔,把传感器的检测部分放在圆孔的圆心位置。当有物体挡在红外光电发光二极管和高灵敏度的光电晶体管之间时,传感器将会输出一个低电平,而当没有物体挡在中间时则输出为高电平,从而形成一个脉冲。光源发出的光通过测速齿盘上的齿槽照射到光电元件上,使光电元件感光,从而发出脉冲。每当转盘随着后轮旋转的时候,传感器将向外输出若干个脉冲。将转速信号变为电脉冲,利用微机在单位时间内对脉冲进行计数,再经过软件计算获得转速数据。

图3.4 光电传感器的原理图 图3.5遮光叶片

一般的转速长期测量系统是预先在轴上安装一个有60 齿的测速齿盘,当测速齿槽旋转一周,光敏元件就能感受与开孔数相等次数的光次数,即每转一周产生60个电脉冲信号。临时性转速测量系统,多采用光电传感器,从转轴上预先粘贴的一个标志上获得一转一个转速脉冲,随后利用电子倍频器和测频方法实现转速测量。不论长期或临时转速测量,都可以在微处理器的参与下,通过测量转轴上预留的一转一齿的鉴相信号或光电信号的周期,换算出转轴的频率或转速。即通过速度传感器,将转速信号变为电脉冲,利用微机在单位时间内对脉冲进行计数,再经过软件计算获得转速数据。 即:

n=N/ (mT) (1)

◆n ———转速、单位:转/ 分钟; ◆N ———采样时间内所计脉冲个数; ◆T———采样时间、单位:分钟;

◆m ———每旋转一周所产生的脉冲个数(通常指测速码盘的齿数) 。 通常m=60, 那么1 秒钟内脉冲个数N就是转速n, 即:

n=N/ (mT) =N/60×1/60=N

综上所述,方案二使用光电传感器来作为本设计的最佳选择方案。

第 - 7 - 页 共 36 页

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

第四章 系统硬件电路的设计

根据系统功能要求以及单片机硬件电路设计思路对单片机模块进行设计,要使单片机准确的测量电机转速,并且使测出的数据能显示出来,所以整个测量系统分为信号产生和处理(传感器电路)、测量系统主体(单片机)、键盘及显示电路。

硬件电路设计流程如图4.1所示,以下是对各个模块的具体设计介绍。

图4.1 硬件电路设计流程图

4.1转速信号产生

在设计中采用光电传感器采集信号,这种传感器是把旋转轴的转速变为相应频率的脉冲,然后用测量电路测出频率,由频率值就可知道所侧转速值。这种测量方法具有传感器结构简单、可靠、测量精度高的特点。是目前常用的一种测量转速的方法。整个测量系统的组成框图如图4.2所示。

第 - 8 - 页 共 36 页

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

图4.2 测量系统的组成框图

测速齿盘装在发射光源(红外线发光二极管)与接收光源的装置(红外线接收三极管)之间,红外线发光二极管负责发出光信号,红外线接收三极管负责接收发出的光信号,产生电信号,每转过一个齿,光的明暗变化经历了一个正弦周期,即产生了正弦脉冲电信号。

图4.3所示为转速传感器电路,由于红外光不可见,无法用肉眼识别发光信号是否在工作,故将红外线的输出回路串接了一个普通光电二极管作为判别光源发生回路是否为通路。

转速传感器输出电压幅度在0—1.6mV呈正弦波变化,红外线接收三极管的光信号转化为电信号的电压Uo很微弱(一般为mV量级),需要进行信号处理.

第 - 9 - 页 共 36 页

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

图4.3 转速传感器电路图

4.2转速信号处理

转速信号处理电路包括信号放大电路、整形及三极管整形电路。由于产生

的电压信号很小,所以要进行放大处理,一般要放大至少1000倍,然后在进行信号处理工作。信号放大装置选用运算放大器CF0741CW作为放大电压放大元件,采用两级放大电路,每一级都采用反响比例运算电路如图4.4所示.设计的电压放大倍数为3000倍。其中第一级放大倍数为30,第二级放大倍数为100.放大后电压变化范围为0~4.8V。CF0741CW采用12V双电源供电,由于电源的供电电压在一定范围内有副值上的波动,形成干扰信号。为起到消除干扰,实现滤波作用,故供电电源两端需接10UF的电容接地。

第 - 10 - 页 共 36 页

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

图4.4信号处理电路图

整形电路的主要作用是将正弦波信号转化为方波脉冲信号,正弦波信号电压的最大幅值约为4.8V,最小幅值为0V。整形电路设计的是一种滞回电压比较器,它具有惯性,起到抗干扰的作用。在整形电路的输入端接一个电容C5(103),起到的作用是阻止其他信号的干扰,并且将放大的信号进行滤波,解耦。R7和R11是防止电路短路,起到保护电路的作用。

一次整形后的信号基本上为±5V的电平的脉冲信号,在脉冲计数时,常用的是+5V的脉冲信号。如果直接采用-5V的脉冲计数,会增加电路的复杂性,故一般不直接使用,而是先进行二次整形。

第二次用三极管整形电路,当输出为-5V的信号时,三极管VT2(8050)的基-射极和电阻R14组成并联电路电流经过R14.R13,三极管T2处于反向偏置状态,所以,VT2的集-射极未接通,故处于截止状态。电源回路由R15,三极管VT2的集-射极组成,采用单电源+12V供电,由于集射极截止,处于断路状态,故输出电压U0为+12。当第一次整形输出为+5V的信号时,三极管VT2基-射极处于正向偏置状态,有电流I通过,故此时三极管的集-射极处于通路状态。电源电流流经电阻R15,三极管的集-射极到地端,由于集-射极导通时的电阻很小,可以忽略不计。电源电压主要在R15上,其输出电压约为0V。综上所述,三极管整形的电路的输入关系是:信号为-5V时,U0=+12V;信号为+5V时,U0=0V。

第 - 11 - 页 共 36 页

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

选用的传感器型号为SZGB-3(单向)

SZGB-3型传感器特点介绍如下: 1)供单向计数器使用,测量转速和线速度. 2)采用密封结构性能稳定.

3)光源用红外发光管,功耗小,寿命长.

4.3单片机介绍

单片机我们采用ATC51(其引脚图如图4.5),相较于INTEL公司的8051它本身带有一定的优点。ATC51是Atmel公司生产的一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable ReadOnly Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。,

本设计用的ATC51是一个低功耗高性能单片机,8位数据总线,40个引脚,32个外部双向输入/输出(I/O)端口,六个中断源,两层中断优先级,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,ATC51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。另外,ATC51是以静态逻辑运行到零频率的方式设计的,并且支持两种可利用软件选择的掉电保护模式。休眠模式停止CPU运行,但允许数据存储器、定时/计数器、串行口和中断系统继续运行。掉电模式保存数据存储器的内容,但停止了晶振,是其他所有芯片停止工作直到下一次复位为止。ATC51其工作电压范围为2.7~6V(实际使用+5V供电),片内含4k bytes的可反复擦写的Flash只读程序存储器和128Kbytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位处理器和Flash存储单元,内置功能强大的微型计算机的ATC51提供了高性价比的解决方案。

第 - 12 - 页 共 36 页

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

图4.5 ATC51引脚图

主要特性: ·与MCS-51 兼容

·4K字节可编程闪烁存储器 寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24Hz ·三级程序存储器锁定 ·128*8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 管脚说明: 1.VCC:供电电压;

第 - 13 - 页 共 36 页

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

2.GND:接地;

3.P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

4.P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

5.P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。 并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

6.P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为ATC51的一些特殊功能口,如下表4-1所示:

7.RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

8.ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。

引 脚 P3.0 P3.1 P3.2

第二功能 RXD TXD INT0

第 - 14 - 页 共 36 页

信 号 名 称 串行数据接收 串行数据发送 外部中断0请求

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

P3.3 P3.4 P3.5 P3.6 P3.7

INT1 T0 T1 WR RD

外部中断1请求 定时器/计数器0计数输入 定时器/计数器1计数输入

外部RAM写选通 外部RAM读选通

P3口的第二功能

P3口同时为闪烁编程和编程校验接收一些控制信号。

此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略 拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

9./PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

10. /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施 12V编程电源(VPP)。

11.XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 12.XTAL2:来自反向振荡器的输出。 振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石英振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 芯片擦除:

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,ATC51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

第 - 15 - 页 共 36 页

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

4.4晶振电路设计

时钟电路是计算机的心脏,它控制着计算机的工作节奏。MCS-51单片机允许的时钟频率是因型号而异的典型值为12MHZ

MCS-51内部都有一个反相放大器,XTAL1、XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部的各个部件。ATC51是属于CMOS8位微处理器,它的时钟电路在结构上有别于NMOS型的单片机。

CMOS型单片机内部(如ATC51)有一个可控的负反馈反相放大器,外接晶振(或陶瓷谐振器)和电容组成振荡器,图4.6为CMOS型单片机时钟电路框图。振荡器工作受/PD端控制,由软件置“1”PD(即特殊功能寄存器PCON.1)使/PD=0,振荡器停止工作,整个单片机也就停止工作,以达到节电目的。清“0”PD,使振荡器工作产生时钟,单片机便正常运行。图中SYS为晶振或陶瓷谐振器,振荡器产生的时钟频率主要由SYS参数确定(晶振上标明的频率)。电容C1和C2的作用有两个:其一是使振荡器起振,其二是对振荡器的频率f起微调作用(C1、C2大,f变小),其典型值为30pF。

第 - 16 - 页 共 36 页

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

图4.6 CMOS型单片机时钟电路框图

判断单片机芯片及时钟系统是否正常工作有一个简单的办法,就是用万用表测量单片机晶振引脚(18、19脚)的对地电压,以正常工作的单片机用数字万用表测量为例:18脚对地约2.24V,19脚对地约2.09V。对于怀疑是复位电路故障而不能正常工作的单片机也可以采用模拟复位的方法来判断,单片机正常工作时第9脚对地电压为零,可以用导线短时间和+5V连接一下,模拟一下上电复位,如果单片机能正常工作了,说明这个复位电路没有问题。

4.5复位电路

MCS-51 单片机复位电路是指单片机的初始化操作。单片机启运运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。因而,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。

第 - 17 - 页 共 36 页

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

图4.7复位电路

①复位功能:

复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。

单片机的复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位(如图4.8a)和按钮复位(如图4.8b)两种方式。

第 - 18 - 页 共 36 页

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

图4.8 RC复位电路

②单片机复位后的状态:

单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值,见表4-1。

值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解

单片机的初态,减少应用程序中的初始化部分是十分必要的。 说明:表4-1中符号*为随机状态:

表4-1 寄存器复位后状态表

特殊功能寄存

器 A B

00H

PSW

00H

SP

07H

TH0 TL0

00H 00H

TCON

00H

00H 初始状态

特殊功能寄存

器 TMOD

00H 初始状态

DPL 00H TH1 00H

DPH 00H TL1 00H

P0—P3 FFH SBUF 不定

IP ***00000B SCON 00H

IE 0**00000B PCON 0********B

第 - 19 - 页 共 36 页

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

PSW=00H,表明选寄存器0组为工作寄存器组; SP=07H,表明堆栈指针指向片内RAM 07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;Po-P3=FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出 。IP=×××00000B,表明各个中断源处于低优先级; IE=0××00000B,表明各个中断均被关断; 系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。

51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。51单片机在系统复位时,将其内部的一些重要寄存器设置为特定的值,至于内部RAM内部的数据则不变。

4.6键盘电路

设计使用的键盘主要为完成一个功能—转速测量的启动/停止;我们将开关直接与ATC51单片机的P1接口相连,通过读I/O口,判定各I/O线的电平状态,即可识别出按下的按键。操作员通过键盘可以输入数据或指令,实现简单的人机通信。我们采用了式键盘电路,按键均采用了上拉电阻,这是为了保证在按键断开时,I/O口有确定的高电平,同时,还备用两个按键方便扩展,其具体电路如图4.9所示:

图4.9.键盘电路

第 - 20 - 页 共 36 页

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

4.7显示部分设计

(1)数码管的介绍

许多电子产品上都有跳动的数码来指示电器的工作状态,其实数码管显示的数码均是由八个发光二极管构成的。每段上加上合适的电压,该段就点亮。

LED数码有共阳和共阴两种,把这些LED发光二极管的正极接到一块(一般是拼成一个8字加一个小数点)而作为一个引脚,就叫共阳的,相反的,就叫共阴的,那么应用时这个脚就分别的接VCC和GND。再把多个这样的8字装在一起就成了多位的数码管了。实物如图4.10所示

图4.10 数码管

共阳型如图4.11所示就是八个发光管的正极都连在一起 ,作为一条引线.A~G段用于显示数字,字符的笔画,(dp显示小数点),每一段控制A~G~dp的亮与来。 内部结构:

第 - 21 - 页 共 36 页

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

图4.11 共阳型LCD

共阴型如图4.12所示就是七个发光管的负极都连在一起 ,作为一条引线。A~G段用于显示数字,字符的笔画,(dp显示小数点),每一段控制A~G~dp的亮与灭. 内部结构:

4.12 共阴型LCD

数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。

静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划\"a,b,c,d,e,f,g,dp\"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码

第 - 22 - 页 共 36 页

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

管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。 (2)段码表

表4-2为LED段码表

表4-2 LED段码表

显示字符 0 1 2 3 4

共阴极段选码 3FH 06H 5BH 4FH 66H

共阳极段选码 C0H F9H A4H B0H 99H

显示字符 共阴极段选码

共阳极段选码 92H 82H F8H 80H 90H

5 6 7 8 9

6DH 7DH 07H 7BH 6FH

第 - 23 - 页 共 36 页

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

图4.13显示电路仿真

第五章 系统软件设计

硬件电路完成以后,进行系统软件设计。首先要分析系统对软件的要求,然后进行软件的总体的设计,包括程序的总体设计和对程序的模块化设计。按整体功能分为多个不同的模块,单独设计、编程、调试,然后将各个模块装配联调,组成完整的软件。下面作简单介绍:系统软件主程序的功能是完成系统的初始化、显示程序。

5.1 主程序初始化

(1)定时器的初始化

ATC51有两个定时器/计数器T0和T1,每个定时器/计数器均可设置成为16位,也可以设置成为13位进行定时或计数。计数器的功能是对T0或T1外来脉冲的进行计数,外部输入脉冲负跳变时,计数器进行加1。

定时功能是通过计数器的计数来实现的,每个机器周期产生1个计数脉冲,即每个机器周期计数器加1,因此定时时间等于计数个数乘以机器周期。定时器工作时,每接收到1个计数脉冲(或机器周期)则在设定的初值基础上自动加1,当所有位都位1时,再加1就会产生溢出,将向CPU提出定时器溢出中断身请。当定时器采用不同的工作方式和设置不同的初值时,产生溢出中断的定时值和计数值将不同,从而可以适应不同的定时或计数控制。

定时器有4种工作方式:方式0、方式1、方式2和方式3,在此对工作方式不做具体介绍。

工作方式寄存器TMOD的设定: GATE

C/T

M1-

M0

GATE

C/T

M1

M0

TMOD各位的含义如下:

◆GATE:门控位,用于控制定时/计数器的启动是否受外部中断请求信号的影

第 - 24 - 页 共 36 页

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

响。

◆C/T:定时或计数方式选择位,当C/T=1时工作于计数方式;当C/T=0时工作于定时方式。

M1、M0为工作方式选择位 ,用于对T0的四种工作方式,T1的三种工作方式进行选择,选择情况如表5-1所示:M1M0=00为方式0;M1M0=01为方式1;

表5-1 M1、M0为工作方式选择位

MO 0 0 1 1

M1 0 1 0 1

工作方式

0 1 2 3

方式说明 13位定时/计数器 16位定时/计数器 8位自动重置定时/计数器 两个8位定时/计数器(只有T0有)

(2)中断允许控制

MCS-51单片机中没有专门的开中断和关中断指令,对各个中断源的允许和屏蔽是由内部的中断允许寄存器IE的各位来控制的。中断允许寄存器IE的字节地址为A8H,可以进行位寻址.

表5-2中断位寻址表

IE

D7

D6

D5 ET2

D4 ES

D3 ET1

D2 EX1

D1 ET0

D0 EX0

(A8H) EA

◆EA:中断允许总控位。EA=0,屏蔽所有的中断请求;EA=1,开放中断。 ◆ET2:定时器/计数器T2的溢出中断允许位 ◆ES:串行口中断允许位。

◆ET1:定时器/计数器T1的溢出中断允许位。 ◆EX1:外部中断 INT1的中断允许位。 ◆ET0:定时器/计数器T0的溢出中断允许位。 ◆EX0:外部中断 INT0的中断允许位。

5.2程序流程图

1主程序流程图

如图5.1所示

初始化定时器计时器 第 - 25 - 页 共 36 页 开始 刷新数码管 基于单片机的转速检测系统设计

图5.1 主程序流程图 2显示子程序流程图

显示子程序如图5.2所示

开始 显示缓存初始化 LED显示初始数码显示

图5.2 显示子程序流程图

3定时计数子程序流程图

定时计数子程序流程图如图5.3所示

第 - 26 - 页 共 36 页

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

开始 开定时器 开计数器 定时1s 计数1s 读出计数器值并清零,定时器重装初值。 图5.3 定时计数子程序流程图

结 论

采用单片机技术来实现转速的测量,可以提高转速的测量,可以提高转速测量的精确度,并且加快了采样的速率,具有较好的实时性。本文介绍的转速方法使用于高、低转速的测量,测量精确度与转速无关,因而具有较宽的应用范围和广阔的应用的前景。

基于单片机的转速测量系统,具有硬件电路简单,程序简单和运算速度快,测速范围广,抗干扰性能好的特点。在设计的信号处理电路中经过滤波,能够进一步减少误差,是测速精度得到提高。

第 - 27 - 页 共 36 页

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

致 谢

关于本次毕业设计,感受颇多。总的来说是可以的,富有收获的,尽管其中充满了艰辛与困难。但看到自己的成果时,所有的艰辛与疲倦都抛到了九霄云外。一种成就感在心头油然而生。另外一方面,在自己的亲身实践中,也发现了自己的一些不足的地方,有待进一步提高与改善。此次毕业设计任务是高精度大范围的电机转速测量系统,在实际调试中遇到的种种问题使我在设计与调试中学习到了许多知识。

第 - 28 - 页 共 36 页

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

整个毕业设计过程是对自己大学三年所学知识归纳总结和应用,也就是把理论知识用到实践之中去。让理论和实践相结合,以此产生实际的成果。而这正是我们学习理论知识的目的之所在。

除此之外,我们要在拥有扎实的专业知识的前提条件下,在整个设计与调试过程中要有信心和耐心,对自己有信心,相信自己能够很好的完成本次设计任务。在调试中不断发现问题进而解决问题,这是一个再学习的过程,其本身就是对自己的一次锻炼,培养了自己思考,动手解决问题的能力。从而从各个方面得到提高与完善了自己,使自己的各个方面提高到一个新的台阶,同时为以后的工作打下基础。

在本次毕业设计中,特别要感谢闾琳老师以及张龙同学给我们的热心帮助和鼓励,才使得我们的毕业设计能够很好的完。

参考文献

[1] 曾一江.单片微机原理与接口技术.北京:科学出版社,2006

[2] 楼然苗.51系列单片机设计实例(第二版).北京:北京航空航天大学出版社2006 [3] 周雪.模拟电子技术(第二版).西安:西安电子科技大学出版社,2005 [4] 马忠梅.单片机的C语言应用程序设计(第四版).北京:北京航空航天大学出版社,2006

第 - 29 - 页 共 36 页

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

[5] 王秀杰.张畴先.模拟集成电路应用.西安:西北工业大学出版社,2003 [6] 何立民.MCS-51系列单片机应用系统设计.北京:北京航空航天大学出版社,1990

[7] 蒋智勇.单片微型计算机原理及接口技术.沈阳:辽宁科学技术出版社,1992 [8]何立民.MCS-51系列单片机应用系统设计.北京:北京航空航天大学出版社,1990

第 - 30 - 页 共 36 页

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

附录A 系统总电路图

第 - 31 - 页 共 36 页

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

附录B 系统总程序清单

#include

#define uchar unsigned char #define uint unsigned int uint mm=0;m=0;n=0; uchar kk;k=0;

uchar code table[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};

//共阳极七段码表

delay(uint m) //延时函数 { uint i,j; for(i=m;i>0;i--) for(j=60;j>0;j--); }

xian_shi() // 显示函数 { uchar qian,bei,shi,ge; uint jj; jj=mm; qian=jj/1000; bei=jj%1000/100; shi=jj%100/10; ge=jj%10;

P2=0x10; //显示千位 P0=table[qian]; delay(1); P2=0;

P2=0x20; //显示百位 P0=table[bei];

第 - 32 - 页 共 36 页

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

delay(1); P2=0;

P2=0x40; //显示十位 P0=table[shi]; delay(1); P2=0;

P2=0x80; // P0=table[ge]; delay(1); P2=0; }

timer_init() //{ EA=1; // ET0=1; // ET1=1; // TMOD=0X51; // TH0=(65535-50000)/256; // TL0=(65535-50000)%256;

TH1=0; // TL1=0;

TR0=1; // TR1=1; //}

main() //{

timer_init();

P0=0xff; // while(1) // {

显示个位 定时器计数器初始化函数 开启总中断 开启定时器中断 开启计数器中断

设置定时和计数器的工作方式 设置定时时间 计数器清零 启动定时器 启动计数器

主函数 开始数码管不显示 设置为按键按下开启数码管 第 - 33 - 页 共 36 页

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

if(P1==0xfe) { m=1;n=0; }

if(P1==0xff) { n=1; }

if(m==1&&n==1) {

k+=1;m=0;n=0; }

if(k%2==1) // {

if(mm>=3000) // {

P2=0x01; // delay(10); }

else // xian_shi();

}

if(kk==20) // {

mm=0;

mm|=TH1; // mm=(mm<<8)|TL1; TH1=0; // TL1=0;

当按键按下数码管开始显示 判断转速是否大于3000转 大于3000转报警,数码管不显示小于3000转数码管显示 判断是否定时1s钟 将计数器值赋给mm

计数器清零 第 - 34 - 页 共 36 页

|

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

kk=0; }

delay(1); //数码管刷新时间单位毫秒

} }

void timer0() interrupt 1 //中断服务函数 { TR0=0; // TR1=0; // TH0=(65535-50000)/256; // TL0=(65535-50000)%256; kk++;

TR0=1; // TR1=1; //}

void timer1() interrupt 3 //{ TR0=0; // TR1=0; // mm=0; // TH1=0; // TL1=0; // TR1=1; }

关闭定时器 关闭计数器 设置定时器初值 启动定时器

启动计数器 显示0000说明出错 关闭定时器 关闭计数器

第 - 35 - 页 共 36 页

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

附录C 元器件清单

名 称 型 号 数 量 备 注

单片机 4位显示数码

管 光电传感器 晶振 电阻(6K) 电阻(10K) 电阻(250) 300K)5.1K)电阻(1K) 4.7K)电容(30p) 30np)电容(103) 电容(1nf)

非门 开关 蜂鸣器 电阻(200)

ATC51 共阳极

SZGB-3 SK12.000MHZ

7406

第 - 36 - 页 共 36 页

1 1

1 1 1 2 1 2 4 1 2 1 7 1 1 4 1 2

电阻( 电阻( 电阻( 电容(

15

因篇幅问题不能全部显示,请点此查看更多更全内容