您好,欢迎来到小奈知识网。
搜索
您的当前位置:首页基于光电传感器的直流电机转速测量系统设计-课设报告

基于光电传感器的直流电机转速测量系统设计-课设报告

来源:小奈知识网


北京信息科技大学

测控综合实践 课程设计报告 题 目: 基于光电传感器的直流电机转速测量系统设计

学 院: 仪器科学与光电工程学院

专 业: 测控技术与仪器

学生姓名:

摘要

摘 要

基于单片机的转速测量方法较多,本次设计主要针对于光电传感器测量直流电机转速的原理进行简单介绍,并说明它是如何对电机转速进行测量的。通过实验得到结果并进行了数据分析。

本次设计应用了STC89C52RC单片机,采用光电传感器测量电机转速的方法,其中硬件系统包括脉冲信号的产生模块、脉冲信号的处理模块和转速的显示模块三个模块,采用C语言编程,结果表明该方法具有简单、精度高、稳定性好的优点。

关键词:直流电机;单片机;PWM调节;光电传感器

Abstract

目 录

摘要 ……………………………………………………………………………………I 第一章 概述 …………………………………………………………………………1

1.1 课设目标 ……………………………………………………………………1 1.2 内容 …………………………………………………………………………1

第二章 系统设计原理 ………………………………………………………2

2.1 STC89C52单片机介绍 …………………………………………………2 2.2 STC89C52定时计数器 ………………………………………………4 2.3 STC89C52中断控制………………………………………………………6 2.4 光电传感器 ……………………………………………………………………6 2.5 数码管介绍 …………………………………………………………………7

第三章 硬件系统设计 ………………………………………………………………10 3.1 测速信号采集及其处理 ………………………………………………10 3.2 单片机处理电路设计 …………………………………………………11 3.3 显示电路 ……………………………………………………………12 3.4 PWM驱动电路 …………………………………………………………13

第四章 软件设计 ……………………………………………………………14 4.1 语言选用 ……………………………………………………………14 4.2 程序设计流程图 ………………………………………………………14 4.3 原程序代码 …………………………………………………………15

第五章 数据分析 ……………………………………………………………19

总结 …………………………………………………………………………20 附件 ……………………………………………………………………………………21 参考文献 ………………………………………………………………………………23

1

第一章 概述

在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电动机、卷扬机、机床主轴等旋转设备的试验、运转和控制中,常需要分时或连续测量和显示其转速及瞬时转速。目前国内外测量电机转速的方法有很多,按照不同的理论方法,先后产生过模拟测速法(如离心式转速表、用电机转矩或者电机电枢电动势计算所得)、同步测速法(如机械式或闪光式频闪测速仪)以及计数测速法。计数测速法又可分为机械式定时计数法和电子式定时计数法。其中应用最广的是光电式,光电式测系统具有低惯性、低噪声、高分辨率和高精度的优点。加之激光光源、光栅、光学码盘、CCD器件、光导纤维等的相继出现和成功应用,使得光电传感器在检测和控制领域得到了广泛的应用。而采用光电传感器的电机转速测量系统测量准确度高、采样速度快、测量范围宽和测量精度与被测转速无关等优点,具有广阔的应用前景。这次设计的内容包含了多个方面,从脉冲信号的产生模块、脉冲信号的处理模块和转速的显示模块三个模块入手,全面锻炼了我们信号采集,处理和分析的工作能力。

1.1 课设目标

通过51单片机进行PWM驱动直流电机转动,然后使用对射式红外光电传感器通过检测直流电机上的光电码盘进行脉冲测量,单片机处理脉冲最后数码管显示实际转速。

1.2 内容

1.2.1 总体方案

本文针对电机的转速进行测量,以单片机为核心对光电开关产生的数字信号进行运算,从而测得电机的转速,然后用数码管把电机的转速显示出来。即通过光电开关将电机的转数转换成0,1的数字量,只要转轴每旋转一周,产生一个或固定的多个脉冲,并将脉冲送入单片机中进行计数和计算,就可获得转速的信息。

系统主要由STC89C52单片机处理系统、电机、传感器检测单元、信号处理单元和显示系统等几个部分组成,如图1.1:

单片机 STC89C52 PWM驱动直流电机 光电传感器测量脉冲 数码管显示转速

图1.1

1

第二章 系统设计原理

2.1 STC89C52单片机介绍

2.1.1 STC89C52主要功能及PDIP封装

STC89C52是由深圳宏晶科技公司生产的与工业标准MCS-51指令集和输出管脚相兼容的单片机。STC89C52主要功能如表2.1所示,其PDIP封装如图2.1所示

主要功能特性 兼容MCS51指令系统 32个双向I/O口 3个16位可编程定时/计数器中断 2个串行中断 2个外部中断源 2个读写中断口线 低功耗空闲和掉电模式 8K可反复擦写Flash ROM 256x8bit内部RAM 时钟频率0-24MHz 可编程UART串行通道 共6个中断源 3级加密位 软件设置睡眠和唤醒功能 表2.1 STC89C52主要功能 2.1.2 STC89C52引脚介绍

① 主电源引脚(2根)

VCC(Pin40):电源输入,接+5V电源 GND(Pin20):接地线 ②外接晶振引脚(2根)

XTAL1(Pin19):片内振荡电路的输入端 XTAL2(Pin20):片内振荡电路的输出端 ③控制引脚(4根)

RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。 ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号

EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。

④可编程输入/输出引脚(32根)

STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。

P0口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7 P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7 P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7 P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7

2

P1.0P1.1P1.2P1.3P1.4MOSI/P1.5MISO/P1.6SCK/P1.7RSTRXD/P3.0TXD/P3.1INTO/P3.2INTI/P3.3T0/P3.4T1/P3.5WR/P3.6RD/P3.7XTAL2XTAL1GND12345678910111213141516171819204039383736353433323130292827262524232221VccP0.0(AD0)P0.1(AD1)P0.2(AD2)P0.3(AD3)P0.4(AD4)P0.5(AD5)P0.6(AD6)P0.7(AD7)EA/VppALE/PROGPSENP2.7(AD15)P2.6(AD14)P2.5(AD13)P2.4(AD12)P2.3(AD11)P2.2(AD10)P2.1(AD9)P2.0(AD8)STC89C52

图2.1 STC89C52 PDIP封装图

2.1.3 STC89C52最小系统

最小系统是指能进行正常工作的最简单电路。STC89C52最小应用系统电路如图2.2所示。它包含五个电路部分:电源电路、时钟电路、复位电路、片内外程序存储器选择电路、输入/输出接口电路。其中电源电路、时钟电路、复位电路是 保证单片机系统能够正常工作的最基本的三部分电路,缺一不可。

①电源电路 芯片引脚VCC一般接上直流稳压电源+5V,引脚GND接电源+5V的负极,电源电压范围在4~5.5之间,可保证单片机系统能正常工作。为提高电路的抗干扰性能,通常在引角Vcc与GND之间接上一个10uF的电解电容和一个0.1uF陶片电容,这样可抑制杂波串扰,从而有效确保电路稳定性。

②时钟电路 单片机引脚18和引脚19外接晶振及电容, STC89C52芯片的工作频率可在2~33MHz范围之间选,单片机工作频率取决于晶振XT的频率,通常选用11.0592MHz晶振。两个小电容通常取值3pF,以保证振荡器电路的稳定性及快速性。

③复位电路 一般若在引脚RST上保持24个工作主频周期的高电平,单片机就可以完成复位,但为了保证系统可靠地复位,复位电路应使引脚RST保持10ms以上的高电平。如图复位电路带有上电自动复位功能,当电路上电时,由于C1电容两端电压值不能突变,电源+5V会通过电容向RST提供充电电流,因此在RST引脚上产生一高电平,使单片机进入复位状态。随着电容C1充电,它两端电压上升使得RST电位下降,最终使单片机退出复位状态。正常运行时,可按复位按钮对单片机复位

3

1234567891011121314151617191820P10/TP11/TP12P13P14P15P16P17RESETRXDTXDINT0INT1T0T1WRRDX1X2GND8052VccP00P01P02P03P04P05P06P07EA/VPALE/PPSENP27P26P25P24P23P22P21P204039383736353433323130292827262524232221+5VVCCC50.1uFC410uF+5VVCCC110uFR1200R210KGND复位按键GNDXTC330uFC230uFGND 图2.2 STC89C52最小系统原理图

2.2 STC89C52定时计数器

2.2.1定时/计数器的结构和工作原理

51系列单片机有2个16位定时/计数器:T0和T1 ;

2个定时器都有定时或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合; 定时/计数器实际上是16位加1计数器。

T0由2个8位持殊功能寄存器TH0和TL0构成, T1由2个8位持殊功能寄存器TH1和TL1构成。 T0和T1都可由软件设置为定时或计数工作方式; T0和T1受2个特殊功能寄存器TMOD和TCON控制。

4

图2.3定时/计数器T0(或T1)的内部结构和控制信号

S开关: S打向上,定时; S 打向下,计数。 计数满,标志置位,产生中断。

K开关: GATE=0时,TR0=1,定时/计数器启动工作;

GATE=1时,INT0和TR0 同时为1时,启动工作。

2.2.2 定时/计数器的寄存器

寄存器有2个:控制寄存器TCON(88H)和工作方式寄存器TMOD(89H) 1.工作方式寄存器TMOD

工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。

其格式如下:

GATE:门控位。

GATE=0时,以运行控制位TRX(X=0,1)来启动定时/计数器运行;

GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作;

C/T计数器模式和定时器模式选择位

C/T=1时,选择计数器模式,计数器对外部输入引脚T0(P3.4)或T1(P3.5)的外部脉冲计数; C/T=0时,选择定时器模式。

M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。

2.控制寄存器TCON

TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下:

5

TF1(TCON.7):

T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。 TR1(TCON.6):

T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。 TF0(TCON.5):

T0溢出中断请求标志位,其功能与TF1类同。 TR0(TCON.4):

T0运行控制位,其功能与TR1类同。

2.2.3 定时器的四种工作方式

1.方式0 M1M0=00

T0(或T1)工作于13位定时、计数方式。

16位寄存器(THX+TLX)只用13位,TLX的高3位未用。 2.方式1 M1M0=01 (与方式0类似)

16位定时/计数方式,寄存器THx和TLx以16位参与操作。 最大计数 216=65536(个外部脉冲)

3.方式2 M1M0=10

8位的可自动重装载的定时/计数方式。

16位的计数器被拆成两个8位,其中TLx用作8位计数器, THx用以保持计数初值。 当TLx计数溢出,置位TFx,THx中的初值自动装入TLx,继续计数,循环重复计数。 4.方式3 M1M0=11 (仅适用于T0)

TL0和TH0被分成为两个互相独立的8位计数器。

TL0可作为定时或计数方式。占用定时器0的各控制位、引脚和中断源。

TH0只能用作定时功能,占用定时器1的控制位TR1和中断标志位TF1,其启动和关闭仅受TRl的控制。

这种情况下,T1仍可工作于方式0、1、2,但不能使用中断方式。

只有将T1用做串行口的波特率发生器时,T0才工作在方式3,以便增加一个定时器。

2.3 STC89C52中断控制

CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。

EX0(IE.0),外部中断0允许位;

ET0(IE.1),定时/计数器T0中断允许位; EX1(IE.2),外部中断0允许位;

6

ET1(IE.3),定时/计数器T1中断允许位; ES(IE.4),串行口中断允许位;

EA (IE.7),CPU中断允许(总允许)位。

2.4光电传感器

目前,光电开关已被用作物位检测、液位控制、产品计数、宽度判别、速度检测、定长剪切、孔洞识别、信号延时、自动门传感、色标检出、冲床和剪切机以及安全防护等诸多领域。此外,利用红外线的隐蔽性,还可在银行、仓库、商店、办公室以及其它需要的场合作为防盗警戒之用。

光电开关把发射端和接收端之间光的强弱变化转化为电流的变化以达到探测的目的。由于光电开关输出回路和输入回路是电隔离的(即电缘绝),所以它可以在许多场合得到应用。光电传感器具有线性度好、分辨率高、噪音小和精度高、无触点、无机械碰撞、响应快、控制精度高,而且能识别色标等优点,在此我们选择光电转速传感器来进行转速的检测。 2.4.1光电开关的工作原理

本课题中使用的光电开关是根据光敏二极管工作原理制造的一种感应接收光强度变化的器件,当它发出的光被目标反射或阻断时,则接收器感应出相应的电信号。它包含调制光源,由光敏元件等组成的光学系统、放大器、开关或模拟量输出装置,其工作原理如图2.3 所示。光电式传感器由独立且相对放置的光发射器和收光器组成。当目标通过光发射器和收光器之间并阻断光线时,传感器输出信号。它是效率最高、最可靠的检测装置。槽形(U形)光电开关是对射式的变形,其优点是无须调整光轴。

图2.3光电传感器的原理图

2.4.2 光电开关的分类

(1)漫反射式光电开关:它是一种集发射器和接收器于一体的传感器,当有被检测物体经过时,物体将光电开关发射器发射的足够量的光线反射到接收器,于是光电开关就产生了开关信号。当被检测物体的表面光亮或其反光率极高时,漫反射式的光电开关是首选的检测模式

(2)镜反射式光电开关:它亦集发射器与接收器于一体,光电开关发射器发出的光线经过反射镜反射回接收器,当被检测物体经过且完全阻断光线时,光电开关就产生了检测开关信号。

(3)对射式光电开关:它包含了在结构上相互分离且光轴相对放置的发射器和接收器,发射器发出的光线直接进入接收器,当被检测物体经过发射器和接收器之间且阻断光线时,光电开关就产生了开关信号。当检测物体为不透明时,对射式光电开关是最合适的检测装置

(4)槽式光电开关:它通常采用标准的U字型结构,其发射器和接收器分别位于U型槽的两边,并形成一光轴,当被检测物体经过U型槽且阻断光轴时,光电开关就产生了开关量信号。槽式光电开关比较适合检测高速运动的物体,并且它能分辨透明与半透明物体,使用安全可靠

(5)光纤式光电开关:它采用塑料或玻璃光纤传感器来引导光线,可以对距离远的被检测物体进行检测。通常光纤传感器分为对射式和漫反射式。 2.4.3 光电开关的特点

MGK系列光电开关是现代微电子技术发展的产物,是HGK系列红外光电开关的升级换代产品。与以

7

往的光电开关相比具有自己显著的特点:

(1) 具有自诊断稳定工作区指示功能,可及时告知工作状态是否可靠;

(2) 对射式、反射式、镜面反射式光电开关都有防止相互干扰功能,安装方便;

(3)对ES外同步(外诊断)控制端的进行设置可在运行前预检光电开关是否正常工作。并可随时接受计算机或可编程控制器的中断或检测指令,外诊断与自诊断的适当组合可使光电开关智能化; (4)响应速度快,高速光电开关的响应速度可达到0.1ms,每分钟可进行30万次检测操作,能检出高速移动的微小物体;

(5)采用专用集成电路和先进的SMT表面安装工艺,具有很高的可靠性;

(6)体积小(最小仅20×31×12mm)、重量轻,安装调试简单,并具有短路保护功能。

2.5数码管的介绍

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

图2.4 数码管

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

内部结构:

图2.5 共阳型LCD

共阴型(图2.6)就是七个发光管的负极都连在一起 ,作为一条引线。A~G段用于显示数字,字

8

符的笔画,(dp显示小数点),每一段控制A~G~dp的亮与来.

内部结构:

图2.6 共阴型LCD

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

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

动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划\"a,b,c,d,e,f,g,dp\"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

LED段码表如下表所示:

显示字符 共阴极段选码 共阳极段选码 显示字符 共阴极段选码 共阳极段选码 9

0 1 2 3 4 3FH 06H 5BH 4FH 66H C0H F9H A4H B0H 99H 5 6 7 8 9 6DH 7DH 07H 7BH 6FH 92H 82H F8H 80H 90H 表1 LED段码表 第3章 硬件系统设计

(本部分由本组成员吴辉负责)

根据系统设计要求本系统分为PWM直流电机驱动模块,测速信号采集与处理模块,单片机模块以及显示模块四大部分。

3.1.1测速信号采集及其处理

本设计中采用对射式光电传感器如图3.1(b)测量电机转速。使用专用的光电编码盘如图3.1(a)所示,安装在电机转轴上,

图:3.1(a) 图:3.1(b)

3.1.2 检测装置安装

此检测装置按照发动机上传感器的实际安装位置进行安装。如图3.2,将码盘固定在电动机转轴上,光电转速传感器正对着码盘。光电转速传感器接有3根导线,红线接+5V,黑线连接GND,蓝线为脉冲信号输出口。

10

图:3.2

3.2 单片机处理电路设计

如下图所示,采用11.0592MHz的晶振,9口为复位接口,通过开关控制。如图3.3所示:

图3.3

3.2.1 时钟电路

单片机各功能部件的运行都是以时钟控制信号为基准,有条不紊地一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。

本设计中此采用内部时钟方式,如图3.4所示,以石英晶体振荡器和两个片电容组成外部振荡源。片内的高增益反相放大器通过XTAL1、XTAL2外接,作为反馈元件的片外晶体振荡器与电容组成的并联谐振回路构成一个自激振荡器,向内部时钟电路提供振荡时钟。振荡器的频率取决于晶振的振荡频率,振荡频率范围为1.2—12MHz。工程应用时通常采用6MHz或12MHz。图中X1为11.0592MHz,

11

电容C2、C4为33pF,它们一起构成此单片机的自激振荡器。

图:3.4

3.2.2 复位电路

单片机的RST引脚为复位(Reset)端。当单片机振荡器工作时,该引脚上出现持续两个机器周期的低电平,就可以实现系统复位,使单片机回到初始状态。如图3.5所示,本设计采用手动复位,用一个电容与一个10K电阻串联组成,电阻接VCC,电容接地,RESET脚接在它们中间,RC选择10uF,按键与200R电阻串联,在电容两端并联,就成了按键复位电路,未上电时,RST端为高电平,只要按下这个按键,RST端转换为低电平,经过两个机器周期后,单片机就能复位。

图:3.5

3.3 显示部分

LED静态显示的亮度高,占用CPU的时间短,但它的成本高。为了简化硬件电路,降低成本,在单片机应用系统中常采用动态扫描的方法,解决多位LED显示的问题。 动态扫描显示的硬件接口简单,只需一个公共的七段码输出口(字形口),即所有显示位的段选线并联在一起,由一个8位I/O口控制。一个选择显示为的数位选择口(字位口),由其它的I/O口控制。显示时,从左到右轮流点亮每位显示器,由于视觉的暂留,只要保证扫描周期不超过一定的限度(一般在20ms以下),即每一时刻位选只选通一个显示位,同时段选控制口输出显示字符对应的段选码,使该位显示的字符,一定时间后,再选其他显示位,如此循环,使每个显示器件显示该位相应的字符。则可达到“同时”显

12

示各位不同的数字或字符的目的。

如下图所示为四连数码管,其中A、B、C、D、E、F、G、DP分别对应数码管的8段,连接单片机的I/O口(P0口)。使用两个锁存器,一个控制数码管的段选,一个控制 4位数码管的位选。通过单片机P2.0~P2.1口控制锁存器的锁存。

图3.6

3.4 PWM驱动电路

图3.7

13

第4章 软件设计

4.1 语言的选用

本设计中采用的处理器是STC89C52单片机,由此可采用面向MCS-51的程序设计语言,包括ASM51汇编语言和C51高级语言,这两种语言各有特点。汇编语言更接近机器语言,常用来编制与系统硬件相关的程序,如访问I/O端口、中断处理程序、实时控制程序、实时通信程序等;而数学运算程序则适合用C51高级语言编写,因为用高级语言编写运算程序可提高编程效率和应用程序的可靠性。 C语言是一种通用的计算机程序设计语言,在国际上十分流行,它即可用来编写计算机系统程序,也可以用来编写一般的应用程序。以前计算机的系统软件主要是用汇编语言编写的,对于单片机应用系统来说更是如此。由于汇编语言程序的可读性和可移植性都较差,采用汇编语言编写单片机应用程序的周期长,而且调试和排错也比较困难。C语言具有很好的可移植性和硬件控制能力,表达和运算能力也较强。它具有以下特点:

1.语言简洁,使用方便灵活。 2.可移植性好。 3.表达能力强。 4.表达方式灵活。

5.可进行架构化程序设计。 6.可以直接操作计算机硬件。 7.生成的目标代码质量高。

为了提高编制计算机系统和应用程序的效率,改善程序的可读性和可移植性,在此采用高级语言编程。

4.2 程序设计流程图

本系统用外部中断程序采集信号脉冲,用定时器产生PWM脉冲,每1秒就计算一次转速并对数码管刷新和缓冲区数据进行更新,辅以数码管进行显示。程序流程如图4.1。

14

图4.1

当开始工作时,单片机通过控制P2.4口输出PWM波,经过驱动电路,直流单机开始转动。光电传感器通过检测直流电机的光栅通断,产生输出高低电平,输入单片机P3.2口。用于测量转速的脉冲通过P3.2输入单片机,用STC89C52的外部中断INT0对脉冲信号进行计数(负边沿触发),用定时计数器T0进行定时,定时0.5ms,产生2000个中断后(即1s),进行一次转速处理,再通过单片机对INT0的脉冲数进行运算转换后,最后用四连数码管显示电机的转速。

4.3 原程序代码

#include

typedef unsigned int u16; typedef unsigned char u8; sbit key1=P1^1;//独立按键 sbit key2=P1^2;//独立按键

sbit p20=P2^0;//数码管显示 sbit p21=P2^1;//数码管位选

sbit p22=P2^4;//pwm控制直流电机 sbit p32=P3^2;//接受传感器数字信号 u8 code tab1[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};//数字 u8 code tab2[]={0x08,0x04,0x02,0x01, };//位选

u16 counter1=0,tmp=0,counter2,flag=0;

void delay(u16 num) {

u16 x,y;

for(x=num;x>0;x--) for(y=110;y>0;y--) {;}

}//10us左右

void display(u8 wei,u8 num) {

p21 = 1;//D[7..0] = Q[7..0] P0 = tab2[wei-1]; p21 = 0;

p20 = 1;

P0 = tab1[num]; p20 = 0; }

15

void timer_init() {

TMOD = 0x01;//设置tmod工作在定时模式

TCON |=0x01;//设置外部中断0,为负边沿触发

TH0 = (65535-461)/256;//计算初值 TL0 = (65535-461)%256;//计算初值 ET0 = 1;//开放定时器0的溢出中断 EA = 1;//开放总中断 EX0 = 1;//开放 TF0 = 0;//清除溢出

TR0 = 1;//打开定时计数器T0

PT0 = 1;//将定时器0设为最高优先级}

void jishu() {

if(counter1>=2000) {

counter2 = tmp/100; tmp = 0;

counter1 = 0;

} }

void display2(u16 num) {

u16 wan,qian,bai,shi,ge; wan = num/10000;

qian = num%10000/1000; bai = num%1000/100; shi = num%100/10; ge = num%10; display(4,qian); delay(2);

display(3,bai); delay(2);

display(2,shi); delay(2);

display(1,ge); delay(2); }

16

void main(void) {

timer_init(); P0 = 0xff;

P1 = 0xff;//端口初始化 p20 = 0;

p21 = 0;//LE禁止锁存 while(1) {

jishu();

display2(counter2); if(key1 == 0) {

delay(5);//消除抖动 if(key1 == 0) flag=1; }

while(!key1);//松键检测 if(key2 == 0) {

delay(5);//消除抖动 if(key2 == 0) flag=2; }

while(!key1);//松键检测 } }

void t0(void) interrupt 1 {

TH0 = (65535-461)/256;//计算初值0.5ms周期1ms//真实是0.542ms TL0 = (65535-461)%256;//计算初值 counter1++; if(flag==1) {

if(p22==1) {

TH0 = (65535-681)/256;//计算初值 //低电平时间 TL0 = (65535-681)%256;//计算初值 p22 = 0;

} else {

TH0 = (65535-231)/256;//计算初值/高电平时间 TL0 = (65535-231)%256;//计算初值 p22 = 1;

17

} }

else if(flag==2) {

if(p22==1) {

TH0 = (65535-231)/256;//计算初值 //低电平时间 TL0 = (65535-231)%256;//计算初值 p22 = 0;

} else {

TH0 = (65535-681)/256;//计算初值/高电平时间 TL0 = (65535-681)%256;//计算初值 p22 = 1; } } else { {

if(p22==1) {

TH0 = (65535-461)/256;//计算初值 //低电平时间 TL0 = (65535-461)%256;//计算初值 p22 = 0;

} else {

TH0 = (65535-461)/256;//计算初值/高电平时间 TL0 = (65535-461)%256;//计算初值 p22 = 1; } } } }

void into(void) interrupt 0 {

tmp++; }

18

第五章 数据分析

实验数据记录:

PWM占空比 电机转速r/s 10% 53 25% 107 40% 164 50% 206 60% 242 75% 297 100% 395

通过实验证明电机转速与PWM占空比基本呈线性,转速误差为±4% r/s,可以实现对高转速的测量。

19

总结:

设计采用光电开关测速法,利用对射式光电开关采集转速信号,通过信号处理电路得到适合的脉冲后,输入单片机进行处理、计算,得出实际的转速值,辅以数码管显示。此系统实现了设计的要求: (1)光电开关与电机转换平台简单适用 (2)采集电路能实时采集转速信息

(3)单片机处理系统运算快速简单,程序可读性强,条理分明,能形成独立模块以便于其他类似系统的计算

(4)数码管为主体的人机界面能准确显示速度值 存在的问题:

(1)系统采取的晶振是11MHZ。机器周期为1.086us,定时上不是整数,导致定时上有误差。

(2)购买直流电机时没有问清型号,导致不知晓其额定转速,虽然测速系统测量的转速线性很好,但没有有实际额定转速比较。 改进方法:

(1)采用高的整数晶振,既提高了数据处理的速度,又使定时准确。 (2)采用已知额定转速的直流电机。 经验与教训:

1.注意IO口的初始化。因为IO口作为输入时初始被置1, 这样就可以被外部器件拉低, 检测IO口的电平高低就可以知道有没有被外部器件拉低了

如果IO口置0的话, 那么外部器件无论是高电平还是低电平, IO口都是0, 就没法检测了 2.注意单片机与电路的公地。

3.51单片机,一般只有P0口才需要外加上拉电阻,其它三个端口芯片内部已经设置有上拉功能,无需外接上拉电阻。P0口作为I/O口输出的时候时 输出低电平为0 输出高电平为高组态(并非5V,相当于悬空状态)。也就是说P0 口不能真正的输出高电平,给所接的负载提供电流,因此必须接上拉电阻(一电阻连接到VCC),由电源通过这个上拉电阻给负载提供电流。一般上拉电阻大小可以在3.3K-10K之间都可以,由你需要的电流而定,但不能太小。

综上所述,在测速过程中,实现了对高速的测量。而且本装置结构简单、实用,方便使用与调试。提高测速稳定性及可靠性等方面有一定价值,而且可以达到一般工业测速的测量标准,具有广泛的前景。

20

附件

成品图

21

22

参考文献

[1]李华.弱信号放大电路研究[J].应用电子技术,2004,18(5),15~19.

[2]饶睿坚,陈英梅.开关电容滤波器的分析设计新方法[J].现代电子技术,2006,17(4),158~162.

[3]龙姝明,朱杰武,孙彦清,等.数学物理方法&Mathematica[M].西安:陕西人民教育出版社,2002,64~81. [4] 蓝厚荣.单片机的PWM控制技术[J].工业控制计算机.2010,23(3):97—98

[5] 郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社.2009.342—344

[6] 胡汉才.单片机原理及其接口技术[M](第2版).北京:清华大学出版社.2004.49—77. [7] 胡全. 51单片机的数码管动态显示技术[J] .信息技术,2009,13:25—26 [8] 谭浩强.C程序设计[M](第三版).北京:清华大学出版社.2005.37—65. [9] 孙号. Proteus软件在设计电子电路中的应用[J].仪表技术,2009,8:74—75

[10] 楼俊军.基于Proteus和Keil的单片机演奏乐曲的实现[J] .科技信息,2010,23:

[11] 王文海,周欢喜.用Proteus实现51单片机的动态仿真调试[J].IT技术,2006,20:10—11

23

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

Copyright © 2019- huatuo3.com 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务