步进电机正反转启停控制的设计.docx
- 文档编号:24685010
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:25
- 大小:200.03KB
步进电机正反转启停控制的设计.docx
《步进电机正反转启停控制的设计.docx》由会员分享,可在线阅读,更多相关《步进电机正反转启停控制的设计.docx(25页珍藏版)》请在冰豆网上搜索。
步进电机正反转启停控制的设计
成绩
电机控制课程设计报告书
题目步进电机正反转启停控制的设计
院部名称机电工程学院
专业电气工程及其自动化
班级
组长姓名
学号
同组学生
设计地点工科楼C
设计学时1周
指导教师
金陵科技学院教务处制
一、设计任务和要求
二、设计思路
2.1系统总框图------------------------------------------------------------------------02
2.2设计原理--------------------------------------------------------03
三、系统硬件设置
3.1时钟信号控制电路原理介绍----------------------------------------03
3.1.1芯片89C51介绍--------------------------------------------03
3.1.2芯片管脚说明----------------------------------------------03
3.1.3时钟信号控制电路------------------------------------------05
3.2系统复位电路原理介绍--------------------------------------------06
3.2.1系统复位电路----------------------------------------------06
3.3驱动电路原理介绍------------------------------------------------06
3.3.1步进电机原理介绍-------------------------------------------06
3.3.2驱动电路---------------------------------------------------08
3.4正反转控制电路原理介绍------------------------------------------08
3.4.1正反转控制电路---------------------------------------------08
四、系统软件设置
4.1主程序流程图----------------------------------------------------09
4.2源程序----------------------------------------------------------09
五、调试过程与结果----------------------------------------------18
六、总结与体会---------------------------------------------------18
七、参考资料------------------------------------------------------19
八、附录-----------------------------------------------------------20
附录一总电路图
一、设计任务和要求
电机控制课程设计是考察学生利用所学过的电机控制专业知识,进行综合的电机控制系统设计并最终完成实际系统连接,能够使学生对电气与自动化的专业知识进行综合应用,培养学生的创新能力和团队协作能力,提高学生的动手实践能力。
最终形成一篇符合规范的设计说明书,并参加综合实践答辩,为后期的毕业设计做好准备。
本次设计考核的能力主要有:
1)专业知识应用能力,包括电路分析、电子技术、单片机、检测技术、电气控制、电机与拖动、微特电机及其驱动、计算机高级语言、计算机辅助设计、计算机办公软件等课程,还包括本专业的拓展性课程如变频器、组态技术、现场总线技术、伺服电机等课程。
2)项目设计与运作能力,团队协作能力,技术文档撰写能力,PPT汇报与口头表达能力。
3)电气与自动化系统的设计与实际应用能力。
要求完成的工作量包括:
1)制作实际成品,并现场演示效果。
2)学生结合课题进行PPT演讲与答辩。
3)学生上交课题要求的各类设计技术文档。
二、设计思路
2.1设计总体方框图
图2-1系统总体框图
2.2设计原理
本系统主要是由电源(+5V)及时钟信号模块、复位模块、电机驱动模块(ULN2003A)、键盘控制模块、步进电机等5个模块组成。
电源模块的功能是提供直流5V电源给其余几个模块供电,时钟信号模块的功能是对单片机89C51提供工作周期,使89C51能够正常工作,该电路也称最小模式电路,对于没有内部晶振的单片机,接上电源和晶振就是该单片机的最小系统。
89C51芯片内部有一个反相放大器,用于构成振荡器,反相放大器的输入端为XTAL1,输出端XTAL2,两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器(这里电容取值在30PF,石英晶体为12MHZ),复位电路的功能是使单片机初始化操作,只要给RESET引脚(9脚)加上2个机器周期以上的高电平信号,即可使单片机复位。
复位电路的功能是只对89C51单片机复位,除了进入系统的正常初始化之外,当程序运行出错或是操作错误使系统处于死锁状态时,为了摆脱死锁状态,也需要按复位键重新复位。
驱动模块的功能是通过驱动器ULN2003A来驱动步进电机,通过单片机的P1.0-P1.3输出脉冲到ULN2003A的1B-4B口,经信号放大后从1C-4C口分别输出到电机的A、B、C、D相。
键盘控制电路的功能是控制输入部分设置了正/反转控制、加减速和停止控制按钮,内部程序检测P0.0的状态来调用相应的来调用相应的启动和换向程序,实现步进电机的正反转控制。
在该步进电机的控制器中,电机实现正反转、加减速、停止控制。
三、系统硬件设计
3.1时钟信号控制电路原理介绍
3.1.1芯片89C51介绍
图3-189C51芯片引脚图
3.1.2芯片管脚说明:
1.VCC:
供电电压。
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口也可作为AT89C51的一些特殊功能口,如下表所示:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
7.RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
8.ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
9./PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
10./EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
11.XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
12.XTAL2:
来自反向振荡器的输出。
3.1.3时钟信号控制电路
图3-2时钟信号控制电路
该电路工作原理:
该电路也称最小模式电路,对于没有内部晶振的单片机,接上电源和晶振就是该单片机的最小系统。
89C51芯片内部有一个高增益反相放大器,用于构成振荡器,反相放大器的输入端为XTAL1,输出端XTAL2,两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器。
电容C1、C2通常取30pf左右,可以稳定频率并对振荡频率有微调作用。
振荡信号从XTAL2端输入到片内的时钟发生器上。
3.2系统复位电路原理介绍
3.2.1系统复位电路
图3-3系统复位电路
该电路工作原理:
复位电路是单片机的初始化操作,只要给RESET引脚(9脚)加上2个机器周期以上的高电平信号,即可使单片机复位。
除了进入系统的正常初始化之外,当程序运行出错或是操作错误使系统处于死锁状态时,为了摆脱死锁状态,也需要按复位键重新复位。
3.3驱动电路原理介绍
3.3.1步进电机原理介绍
该步进电机为四相步进电机,采用单极性直流电源供电。
只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。
下图是该四相反应式步进电机工作原理示意图:
图3-3四相步进电机步进示意图
开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。
当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。
而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。
依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。
四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。
单四拍与双四拍的步距角相等,但单四拍的转动力矩小。
八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
a.单四拍 b.双四拍 c.八拍
3.3.2驱动电路
图3-4驱动电路
该电路工作原理:
通过驱动器ULN2003A来驱动步进电机,如图3.3所示,通过单片机的P1.0-P1.3输出脉冲到ULN2003A的1B-4B口,经信号放大后从1C-4C口分别输出到电机的A、B、C、D相。
3.4正反转控制电路原理介绍
3.4.1正反转控制电路
图3-5正反转控制电路
该电路工作原理:
根据系统的控制要求,控制输入部分设置了正/反转控制、加速控制、减速控制和停止控制按钮,通过按键状态变化来实现电机的启动、加减速和换向功能。
当按键的状态变化时,内部程序检测P0.0的状态来调用相应的来调用相应的启动和换向程序,实现步进电机的正反转控制。
四、系统软件设计
4.1主程序流程图
4.2源程序
#include
#include
#include"key.h"
#defineucharunsignedchar
#defineuintunsignedint
//Motor
sbitA=P1^0;//定义管脚
sbitb=P1^1;
sbitC=P1^2;
sbitD=P1^3;
///////////////////////////////////////
//步进电机驱动
ucharvelocity=30;
unsignedcharMotorStep=0;
unsignedintMotorTimer=0;
unsignedintMotorDelay,Speed=1,TIM,CT;
bitflag=0;
//#definespeed8//调整速度数值不要设的太低低了会引起震动。
/*****************************************************
*初始化马达*
******************************************************/
voidInitMotor()
{
A=1;
b=1;
C=1;
D=1;
}
voidSetMotor1()
{
//if(Speed==0)return;
//MotorDelay=Speed;//调整速度
switch(MotorStep)
{
case0:
if(TIM)//A
{
A=0;//0xf1
b=1;
C=1;
D=1;
MotorStep=1;
TIM=0;
}
break;
case1:
//AB
if(TIM)
{
A=0;//0xf3
b=0;
C=1;
D=1;
MotorStep=2;
TIM=0;
}
break;
case2:
//B
if(TIM)
{
A=1;
b=0;//0xf2
C=1;
D=1;
MotorStep=3;
TIM=0;
}
break;
case3:
//BC
if(TIM)
{
A=1;
b=0;//0xf6
C=0;
D=1;
MotorStep=4;
TIM=0;
}
break;
case4:
//C
if(TIM)
{
A=1;
b=1;//0xf4
C=0;
D=1;
MotorStep=5;
TIM=0;
}
break;
case5:
//CD
if(TIM)
{
A=1;
b=1;//0xfc
C=0;
D=0;
MotorStep=6;
TIM=0;
}
break;
case6:
//D
if(TIM)
{
A=1;
b=1;//0xf8
C=1;
D=0;
MotorStep=7;
TIM=0;
}
break;
case7:
//DA
if(TIM)
{
A=0;
b=1;//0xf9
C=1;
D=0;
MotorStep=0;
TIM=0;
}
break;
}
}
voidSetMotor2()
{
switch(MotorStep)
{case0:
if(TIM)//A
{
A=0;//0xf1
b=1;
C=1;
D=0;
MotorStep=1;
TIM=0;
}
break;
case1:
//AB
if(TIM)
{
A=1;//0xf3
b=1;
C=1;
D=0;
MotorStep=2;
TIM=0;
}
break;
case2:
//B
if(TIM)
{
A=1;
b=1;//0xf2
C=0;
D=0;
MotorStep=3;
TIM=0;
}
break;
case3:
//BC
if(TIM)
{
A=1;
b=1;//0xf6
C=0;
D=1;
MotorStep=4;
TIM=0;
}
break;
case4:
//C
if(TIM)
{
A=1;
b=0;//0xf4
C=0;
D=1;
MotorStep=5;
TIM=0;
}
break;
case5:
//CD
if(TIM)
{
A=1;
b=0;//0xfc
C=1;
D=1;
MotorStep=6;
TIM=0;
}
break;
case6:
//D
if(TIM)
{
A=0;
b=0;//0xf8
C=1;
D=1;
MotorStep=7;
TIM=0;
}
break;
case7:
//DA
if(TIM)
{
A=0;
b=1;//0xf9
C=1;
D=1;
MotorStep=0;
TIM=0;
}
break;
}
}
voidsystem_Ini()
{
TMOD|=0x11;
TH0=0xDC;//11.0592M
TL0=0x00;
IE=0x8A;
TR0=1;
}
main()
{
ucharnum;
system_Ini();
InitMotor();
while
(1)
{
if(velocity!
=0)
{
if(flag==0)
SetMotor1();
else
SetMotor2();
}
else
InitMotor();
num=KeyScan();//循环调用按键扫描
switch(num)
{
case0:
CT=0;
flag=~flag;
//SetMotor();
break;
case1:
CT=0;
velocity=10;
//SetMotor();
break;
case2:
CT=0;
velocity=20;
//SetMotor();
break;
case3:
CT=0;
velocity=0;
//InitMotor();
break;
default:
break;
}
}
}
/************************************************
**
*定时中断延时*
************************************************/
voidTzd(void)interrupt1
{
TH0=0xfe;//11.0592
TL0=0x33;
if(CT++==velocity)
{
TIM=1;
CT=0;
}
}
5、调试过程与结果
本次调试过程及注意事项可分为三个步骤:
1.检查所有元件已被连接,电源线和接地线是否都连接完成,否则电路不能正常工作。
2.再将程序录入到单片机89C51中,并且保证5V电源提供给所有元件,使各模块可以正常工作;在调试过程中必须保证单片机可以正常工作,一旦不能正常工作,电路就不能运行;
3.将步进电机与电路连接时,保证四相线连接时正确的,确保步进电机正常运转;
六、总结与体会
在做本次课程设计的过程中,感触最深的当属查阅大量的设计资料了。
为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。
我们是在做微特电机课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。
其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:
汇编语言、模拟和数字电路知识等。
虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
后,要做好一个课程设计,就必须做到:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。
发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。
设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。
通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。
我觉得作为一名自动化专业的学生,单片机的课程设计是很有意义的。
更重要的是如何把自己平时所学的东西应用到实际中。
七、参考资料
[1]程明.微特电机及系统[M].
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 步进 电机 反转 控制 设计