ls毕设电气自动化专业.docx
- 文档编号:26907368
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:22
- 大小:104.87KB
ls毕设电气自动化专业.docx
《ls毕设电气自动化专业.docx》由会员分享,可在线阅读,更多相关《ls毕设电气自动化专业.docx(22页珍藏版)》请在冰豆网上搜索。
ls毕设电气自动化专业
1序言1
2系统要求分析2
2.1系统要求及任务2
2.2功能介绍2
3硬件电路3
3.1硬件电路设计3
3.2单片机模块3
3.2.1STC89C52介绍3
3.2.2时钟电路6
3.2.3复位电路7
3.2.4显示电路8
3.3欧姆龙E6B2-WZ6C介绍10
4软件设计13
4.1单片机转速程序设计及思路13
4.1.1转速计算原理13
4.1.2单片机转速的计算程序14
4.2程序设计15
5系统调试15
5.1硬件调试15
5.2软件调试16
5.3综合调试20
5.4结论21
附录1实物图22
附录2程序源代码24
参考文献28
致谢29
1序言
在工程实际应用中,经常遇到各种需要测量转速的场合,如机床主轴、发动机、电动机、卷扬机等旋转设备的测试、运转和控制中,测速环境和精度要求不同,相应的测量方法也不同。
对某一些问题,转速测量的精确度要求不高;而对另一些问题,除了要求能精确的测得转速外,还要保证测量实时性,要求能测得瞬时转速在工程实践中,经常会遇到各种需要测量转速的场合,在发动机、电动机、卷扬机、机床主轴等旋转设备的试验、运转和控制中,常需要分时或连续测量和显示其转速及瞬时转速。
而测量转速是必不可少的,例如检测发动机转速是为了实时从ECU(车载电脑)中调出相应程序,因为ECU的程序汽车出厂时多是实验室验证OK的,同型号的车ECU程序不同国家是不一样的。
总的来说就是为了决定负载的大小。
在科技越来越发达的今天,轿车的车速是越来越快,这就造成了许多事故的发生。
所以有些公路就限制车速60km/h,如果没有测速装置,那会是一件极其危险的状况,罚单会更多的开出。
这样测速装置就显得越来越重要。
要测速,首先要解决是采样问题。
在使用模技术制作测速表时,常用测速发电机的方法,即将测速发电机的转轴与待测轴相连,测速发电机的电压高低反映了转速的高低。
为了能精确地测量转速外,还要保证测量的实时性,要求能测得瞬时转速方法。
因此转速的测试具有重要的意义。
转速是电动机极为重要的一个状态参数,其测量精度将直接影响电动机其他参数的特性的测试以及故障检测与诊断的准确性。
因此,转速的测量具有重要的意义。
目前国内外测量电机转速的方法很多,按照不同的理论方法,先后产生过模拟测速法(如离心式转速表、用电机转矩或者电机电枢电动势计算所得)、同步测速法(如机械式或闪光式频闪测速仪)以及计数测速法。
计数测速法又可分为机械式定时计数法和电子式定时计数法。
传统的电机转速检测多采用测速发电机或光电数字脉冲编码器,也有采用电磁式(利用电磁感应原理或可变磁阻的霍尔元件等)、电容式(对高频振荡进行幅值调制或频率调制)等,还有一些特殊的测速器是利用置于旋转体内的放射性材料来发生脉冲信号。
其中应用最广的是光电式,光电式测系统具有低惯性、低噪声、高分辨率和高精度的优点。
加之激光光源、光栅、光学码盘、CCD器件、光导纤维等的相继出现和成功应用,使得光电传感器在检测和控制领域得到了广泛的应用。
而采用光电传感器的电机转速测量系统测量准确度高、采样速度快、测量范围宽和测量精度与被测转速无关等优点,具有广阔的应用前景。
2系统要求分析
2.1系统要求及任务
将编码器产生的脉冲信号输出入到单片机的外部中断0口,单片机工作在内部定时器工作方式0,对周期信号进行内部记数,调用计算公式算出转速,调用显示程序显示在LED上,同时通过串口向上位机发送转速数据。
主要内容:
(1)单片机部分主要完成电机转速的测量
(2)LED数码管部分主要是把转速显示出
2.2功能介绍
功能:
系统主要实现功能是:
STC89C52单片机接收编码器传来的脉冲信号,单片机根据外部中断,以及内部定时器进行记数计算出电机转速送到LED显示。
组成框图:
图2.1系统硬件电路
3硬件电路
3.1硬件电路设计
硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具体确定系统中所要使用的元器件,设计出系统的原理框图、电路原理图。
89C52单片机通过INT0输入传感器的脉冲信号,P0口P2口接LED动态显示。
本设计的总体硬件框图:
图3.1单片机部分硬件电路图
3.2单片机模块
根据系统功能要求以及单片机硬件电路设计思路(如图3-1)对单片机模块进行设计,要使单片机准确的测量电机转速,并且使测出的数据能显示出来,所以整个单片机部分分为传感器电路、时钟电路、复位电路、执行元件以及显示电路五个部分。
3.2.1STC89C52介绍
图3.2STC89C52管脚图
VCC:
电源
GND:
地
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻[3]。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号P1第二功能
P1.0:
T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1:
T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5:
MOSI(在系统编程用)
P1.6:
MISO(在系统编程用)
P1.7:
SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为STC89C52特殊功能(第二功能)使用。
在flash编程和校验时,P3口也接收一些控制信号[3]。
引脚号P3第二功能
P3.0RXD(串行输入)
P3.1TXD(串行输出)
P3.2INT0(外部中断0)
P3.3INT0(外部中断0)
P3.4T0(定时器0外部输入)
P3.5T1(定时器1外部输入)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器写选通)[3]
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/PROG:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,
ALE仅在执行MOVX或MOVC指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN:
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当STC89C52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接VCC。
在flash编程期间,EA也接收12伏VPP电压。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
单片机各功能部件的运行都是以时钟控制信号为基准,有条不紊地一拍一拍地工作。
因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
本设计中此采用内部时钟方式,如图3.3所示,以石英晶体振荡器和两个片电容组成外部振荡源。
片内的高增益反相放大器通过XTAL1、XTAL2外接,作为反馈元件的片外晶体振荡器与电容组成的并联谐振回路构成一个自激振荡器,向内部时钟电路提供振荡时钟。
振荡器的频率取决于晶振的振荡频率,振荡频率范围为1.2—12MHz。
工程应用时通常采用6MHz或12MHz。
图中X1为12MHz(本设计采用的也是12MHz),电容C2、C4为33pF,它们一起构成此单片机的自激振荡器。
图3.3时钟电路
单片机的RST引脚为复位(Reset)端。
当单片机振荡器工作时,该引脚上出现持续两个机器周期的低电平,就可以实现系统复位,使单片机回到初始状态。
如图3.4所示,本设计采用手动复位,用一个电容与一个10K电阻串联组成,电阻接VCC,电容接地,RESET脚接在它们中间,RC选择10uF,按键与200R电阻串联,在电容两端并联,就成了按键复位电路,未上电时,RST端为高电平,只要按下这个按键,RST端转换为低电平,经过两个机器周期后,单片机就能复位。
图3.4复位电路
数码管显示原理:
我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。
所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。
数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。
而共阳极就是将八个LED的阳极连在一起。
其原理图3.5如下[10]。
图3.5数码管原理图
[8]。
如下图3.6:
图3.6
共阳极的数码管0~f的段编码是这样的:
unsignedcharcodetable[]={//共阳极0~f数码管编码
0xc0,0xf9,0xa4,0xb0,//0~3
0x99,0x92,0x82,0xf8,//4~7
0x80,0x90,0x88,0x83,//8~b
0xc6,0xa1,0x86,0x8e//c~f
};
共阴极的数码管0~f的段编码是这样的:
unsignedcharcodetable[]={//共阴极0~f数码管编码
0x3f,0x06,0x5b,0x4f,?
?
?
?
//0~3
0x66,0x6d,0x7d,0x07,?
?
?
?
//4~7
0x7f,0x6f,0x77,0x7c,?
?
?
?
//8~b
0x39,0x5e,0x79,0x71?
?
?
?
//c~f
};
本设计的数码管(本设计数码管为共阳极数码管)与单片机的连接图如:
图3.7数码管连接电路
3.3欧姆龙E6B2-WZ6C介绍
欧姆龙E6B2-WZ6C编码器是集合观点传感器、放大电路等于一体的器件。
所谓编码器即是将某种物理量转换为数字格式的装置。
运动控制系统中的编码器的作用是将位置和角度等参数转换为数字量。
可采用电接触、磁效应、电容效应和光电转换等机理,形成各种类型的编码器。
运动控制系统中最常见的编码器是光电编码器。
光电编码器根据其用途的不同分为旋转光电编码器和直线光电编码器,分别用于测量旋转角度和直线尺寸。
光电编码器的关键部件是光电编码装置,在旋转光电编码器中是圆形的码盘(codewheel或codedisk),而在直线光电编码器中则是直尺形的码尺(codestrip)。
码盘和码尺根据用途和成本的需要,可由金属、玻璃和聚合物等材料制作,其原理都是在运动过程中产生代表运动位置的数字化的光学信号[12]。
编码器的原理图如下:
图3.8编码器原理图
在现代高分辨率码盘上,透光和遮光部分都是很细的窄缝和线条,因此也被称为圆光栅。
相邻的窄缝之间的夹角称为栅距角,透光窄缝和遮光部分大约各占栅距角的1/2。
码盘的分辨率以每转计数(CPR-countsperrevolution)表示,亦即码盘旋转一周在光电检测部分可产生的脉冲数。
例如某码盘的CPR为2048则可以分辨的角度为10,311.8”。
在码盘上,往往还另外安排一个(或一组)特殊的窄缝,用于产生nd或零位(zero)信号。
测量装置或运动控制系统可利用这个信号产生回零或复位操作。
?
从原理分析,光电器件输出的电信号应该是三角波。
但是由于运动部分和静止部分之间的间隙所导致的光线衍射和光电器件的特性,使得到的波形近似于正弦波,而且其幅度与码盘的分辨率无关。
?
?
在图12.1的设计中安排了六组这样的挡板和光电器件组合,其中两组用于产生定位(index)脉冲信号I(有的文献中为Z)。
其他四组由于位置的安排,产生4个在相位上依次相差90°的准正弦波信号,分别称为A、B、A和B。
将相位相差180°的A和A送到一个比较器的两个输入端,则在比较器的输出端得到占空比为50%的方波信号A。
同理,由B和B也可得到方波信号B。
这样通过光电检测器件位置的特殊安排,得到了双通道的光电脉冲输出信号A和B(见图12.3)。
这两个信号有如下特点:
?
?
?
(1)两者的占空比均为50%;图12.3双通道信号的形成
?
?
?
(2)如果朝一个方向旋转时A信号在相位上领先于B信号90°的话,那么旋转方向反过来的时候,B信号在相位上领先于A信号90°。
本文所用的E6B2-WZ6C有如下的特点:
(1)电压5~24V。
(2)输出A、B、Z三相。
(3)分辨率:
1000。
4软件设计
4.1单片机转速程序设计及思路
主程序是控制单片机系统按照预定的操作方式运转,它完成人机对话和各种控制功能,是单片机系统程序的框架。
主程序的主要任务是完成系统自检、初始化、处理键盘命令等功能。
本系统的主程序流程如下图:
4.1.1转速计算原理
转速计算公式:
r/min
本计算公式中,假设每秒接收的脉冲数位N,则N/1000就是每秒的转数,再除以1/60就是每分钟的转速。
因此,我们可以采集每秒内的脉冲数,然后再除以编码器的分辨率,再乘以60就是每分钟的转速。
由于本次设计的系统要实现的功能是将编码器的信号送到单片机的外部中断口,再对周期方波进行内部计数,调用计算程序把转速测出来。
可以说是核心部分,流程图如图所示:
计算程序如下
timer0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==20)
{
aa=0;
temp=temp+20*n;
shu++;
n=0;
if(shu==2)
{temp=temp/2;
qian=temp/1000;
bai=temp%1000/100;
shi=temp%100/10;
ge=temp%10;
shu=0;
temp=0;
}
}
4.2程序设计
根据以上设计思路和各个模块的流程图即可编写出本次毕业设计的程序,注意其中各个模块间的参数传递以及堆栈指针等问题,程序设计的任务即可完成,写出初始的程序,再进行上机调试,具体的程序详见附图2。
5系统调试
电路调试是整个系统功能否实现的关键步骤,我们将整个调试过程分为三大部分:
硬件调试、软件调试和综合调试。
5.1硬件调试
硬件调试主要是针对我的转速测量系统的单片机硬件电路分别进行调试。
这一上电前的调试
在上电前,我们必须确保电路中不存在断路或短路情况,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。
在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况等。
特别是数码管的连接部分,有PROTEL制作的PCB确保要和原理图上的图一致,有些在电路板上没法连接的线路,要用短接线把接好,对照着原理图部分,一部分一部分地用万用表测量,注意焊点之间,确保焊点没有短接在一起,同时注意焊点的美观,确保没有开路以及短路的现象出现。
上电后的调试
在确保硬件电路正常,无异常情况(断路或短路)方可上电调试,上电调试的目的是检验电路是否接错,同时还要检验原理是否正确,在本次课程设计中,上电调试主要只转速测量系统的单片机控制部分、数码管点亮部分、和上位机通信是的电平转换和串口通信部分的硬件调试。
由于本论文采用单片机开发板,因此只需烧写测试程序进行复位、按键等的测试即可。
5.2软件调试
本文设计运用c语言进行编程,我们首先来介绍一下keil-uVision软件:
Keil有两种模式:
(1)构建模式:
?
用于编辑和编译所有的程序文件,并生成最终的可执行程序。
在创建程序相关章节中,我们将详细描述此构建模式。
(2)调试模式:
?
提供一个强大的调试环境,帮助您跟踪调试程序。
在调试程序相关章节中,我们将详细描述此调试模式。
1)构建过程
在菜单或工具条上点击“BuildTarget”?
命令之后,将开始编译代码。
系统将自动检测文件依赖和关联性,因此只有修改过的文件才会被重新编译,这样可以显着的加快编译过程。
您或许可以设定全局优化选项,对C或其它模块执行增量式重编译。
通过Project菜单,您可以进入项目文件和项目管理设定的对话框。
点击Keil-Vision4图标打开Vision应用程序后,将下面下面这个窗口。
在这个窗口里,您将可以创建项目、编辑文件、配置开发工具、执行编译连接,以及进行项目调试。
2)创建项目
在开始写C代码之前,首先需要创建一个项目。
您可以在要保存项目的位置先建立一个新的文件夹,然后执行KeilVision4程序在其中建立项目。
通常需要以下几个步骤:
1.在您设定的路径上建立名为“CodeTemplate”的文件夹
2.执行KeilVision4程序,Start->Programs->KeilμVision4
3.创建一个新的项目。
从主窗口中,选择?
Project?
菜单,选择条目Newproject.然后会显示如下一个文件对话框。
4.在文件对话框中,切换到之前的文件夹(CodeTemplate);在底部的文件名输入框中,打入您的项目的名字,例如CodeTemplate,然后点击“保存”。
在这里我们只介绍创建C语言项目的过程:
在主窗口中,选择下拉菜单File->New,然后看到出现一个新的标题为
在写完最初的代码后,再次选择下拉菜单File->Save,然后将看到一个新的文件保存对话框。
请将此文件保存到之前创建的CodeTemplate文件夹中,名字可取为main.c。
然后在真正开始编译之前,我们还需要将main.c加入到项目文件里。
您需要右键点击Sourcefiles,选择AddFilestoGroupSourcefiles,然后选择文件夹CodeTemplate中的main.c,点击Add加入后关闭对话框。
3)?
编译C程序
4)选择Project菜单上的Rebuildalltargetfiles,或者点击工具条按钮Rebuildall开始编译。
然后您将看到所有的代码都将被编译和连接。
μVision4底部的Build窗口中会显示构建过程中的输出信息。
(这个例子显示了成功构建出文件名为CodeTemplate.axf和?
CodeTemplate.bin的过程,整个过程没有错误(errors),?
没有警告(warnings).)?
如果程序进过上述步骤的调试都通过一般都可以,然后具体烧写到单片机内进行具体的调试即可。
本人编写的程序及变异情况如下:
经编译显示没有错误。
5.3综合调试
在硬件和软件单独调试成功后进行软硬件综合调试,它可以分成以下几个步骤:
1.使编码器有方波信号输出;
2.使单片机获得中断信号,计算出转速值并存储;
3.通过LED数码管把测量的数据显示出来。
5.4结论
本文主要设计了一种基于单片机和编码器测量电机转速的测量系统,其中编码器为欧姆龙E6B2-WZ6C编码器。
编码器输出的脉冲通过单片机对连续脉冲计数来实现转速测控。
运行实验表明,该系统硬件系统接口电路简单,工作稳定可靠,满足调速要求具有一定的理论及实用价值。
附录1实物图
附录2程序源代码
#include
#defineuintunsignedint
uinttemp=0,qian,bai,shi,ge,aa,n;
sbitdula=P0;
sbitwela=P2;
sbitzd=P3^2;
sbitkaishi=P3^4;
sbitjieshu=P3^5;
intflag;
intshu=0;
uintcode
table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
voiddisplay(uintqian,uintbai,uintshi,uintge);
voiddelay(uintz);
voidinit();
voidmain()
{
display(0,0,0,0);
EA=1;//开总中断
EX0=1;//开外部中断0
init();//初始化子程序
while
(1)
{
if(!
kaishi)
{flag=1;
}
if(!
jieshu)
{flag=0;
}
if(flag==1)
display(qian,bai,shi,ge);
else
display(9,9,9,9);
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voiddisplay(uintqian,uintbai,uintshi,uintge)
{
P0=table[qian];
P2=0xf7;
delay
(1);
P2=0Xff;
P0=table[bai];
P2=0xfb;
delay
(1);
P2=0Xff;
P0=table[shi];
P2=0xfd;
dela
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ls 电气 自动化 专业