步进电机调速控制系统.docx
《步进电机调速控制系统.docx》由会员分享,可在线阅读,更多相关《步进电机调速控制系统.docx(20页珍藏版)》请在冰豆网上搜索。
步进电机调速控制系统
物联网控制课程设计说明书
院(部):
信息与电气工程学院专业:
物联网工程
所在班级:
物联121
姓名:
李明钰
学号:
20120815032
指导教师:
汪明
成绩:
2015年7月
目录
控制原理与技术课程设计1
摘要2
一、设计的目的与要求2
1.1设计目的2
1.2设计要求2
二.方案的设计3
2.1设计分析3
2.2方案选择3
2.2.1核心单片机的选择3
2.2.2步进电机选择8
2.2.3程序流程图10
2.2.4结构框图12
2.2.5程序设计12
结论16
致谢16
参考文献17
摘要
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的
本文应用单片机AT89C52和步进电机驱动器等,构建了步进电机控制器和驱动器为一体的步进电机控制系统。
通过AT89C52完成步进电机的各种运行控制方式,实现步进电机的正反转控制和加减速控制。
整个系统采用模块化设计,通过人机交互换接口可实现各功能设置,操作方便,结构简单。
该系统可应用于步进电机在机电一体化控制等大多数场合。
一、设计的目的与要求
1.1设计目的
(1)完成转速负反馈直流调速控制系统设计(所设计系统可以是同学们自行选定的控制系统),要求运用已学过的各类传感器、执行器、微控制器、I/O接口等知识,完成该系统的硬件方案、设备选型和系统设计.
(2)通过课程设计,巩固和加深了对“微机原理与接口技术”课程中所学的理论知识和实验能力,基本掌握计算机接口应用电路的一般设计方法,提高电子电路的设计和实验能力。
(3)加深对计算机软硬知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。
1.2设计要求
按照电路设计的一般规范、产品设计流程进行系统设计,做到“成本低、功能强、使
用方便、可靠性高”的基本要求。
要求撰写设计说明书并绘制相关图纸。
二.方案的设计
2.1设计分析
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
本次课程设计所设计的步进电机的控制系统可通过键盘设定转速和方向,并能显示转速。
2.2方案选择
2.2.1核心单片机的选择
单片机选用STC公司的STC89C52
STC公司的STC89C52型CPU。
STC89C52是STC公司生产的8位CMOS微控制器,储存器是8K容量,它拥有很高的性能,但是同时却只消耗很少的电能。
STC89C52虽然也是采用经典的51内核,但是对其作了许多改进,使其相比传统51单片机的芯片,有更多实用功能。
它的8k容量,足够为种类繁多的嵌入式控制应用系统提供特别灵巧、特别有效的解决方案。
具备下列标准配置:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
此外STC89C52提供两种软件可选择节电模式,原理是降至0Hz静态逻辑操纵。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护模式下,RAM保持原来的内容,振荡器不工作,直到下一个中断或硬件复位为止,单片机都不会工作。
最高运行频率24MHz,6T/12T可选。
1.MCS-52单片机内部结构:
MCS-51单片机是在一块芯片中集成了CPU,RAM,ROM、定时器/计数器和多种功能的I/O线等一台计算机所需要的基本功能部件。
MCS-51单片机内包含下列几个部件:
◆一个8位CPU;
◆一个片内振荡器及时钟电路;
◆4K字节ROM程序存储器;
◆128字节RAM数据存储器;
◆两个16位定时器/计数器;
◆可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;
◆32条可编程的I/O线(四个8位并行I/O端口);
◆一个可编程全双工串行口;
可编程
串行口
◆具有五个中断源、两个优先级嵌套中断结构。
CPU
CPU是单片机的核心部件。
它由运算器和控制器等部件组成。
⑴运算器
运算器的功能是进行算术运算和逻辑运算。
可以对半字节(4位)、单字节等数据进行操作。
例如能完成加、减、乘、除、加1、减1、BCD码十进制调整、比较等算术运算和与、或、异或、求补、循环等逻辑操作,操作结果的状态信息送至状态寄存器。
8051运算器还包含有一个布尔处理器,用来处理位操作。
它是以进位标志位C为累加器的,可执行置位、复位、取反、等于1转移、等于0转移、等于1转移且清0以及进位标志位与其他可寻址的位之间进行数据传送等位操作。
也能使进位标志位与其他可位寻址的位之间进行逻辑与、或操作。
程序计数器PC
程序计数器PC用来存放即将要执行的指令地址,共16位,可对64K程序存储器直接寻址。
执行指令时,PC内容的低8位经P0口输出,高8位经P2口输出。
令寄存器
指令寄存器中存放指令代码。
CPU执行指令时,由程序存储器中读取的指令代码送入指令寄存器,经译码后由定时与控制电路发出相应的控制信号,完成指令功能。
定时与控制部件
①时钟电路
8052片内设有一个由反向放大器所构成的振荡电路,XTAL1和XTAL2分别为振荡电路的输入和输出端,时钟可以由内部方式产生或外部方式产生。
内部方式时钟电路如图2-2所示。
在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。
定时元件通常采用石英晶体和电容组成的并联谐振回路。
晶振可以在1.2MHz到12MHz之间选择,电容值在5-30PF之间选择,电容的大小可起频率微调作用。
XTAL1
XTAL2
时钟电路
外部方式的时钟很少用,若要用时,只要将XTAL1接地,XTAL2接外部振荡器就行。
对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于12MHz的方波信号。
时钟发生器把振荡频率两分频,产生一个两相时钟信号P1和P2供单片机使用。
P1在每一个状态S的前半部分有效,P2在每个状态的后半部分有效。
②时序
MCS-52典型的指令周期(执行一条指令的时间称为指令周期)为一个机器周期,一个机器周期由六个状态(十二振荡周期)组成。
每个状态又被分成两个时相P1和P2。
所以,一个机器周期可以依次表示为S1P1,S1P2……,S6P1,S6P2。
通常算术逻辑操作在P1时相进行,而内部寄存器传送在P2时相进行。
存储器
MCS-52单片机的程序存储器和数据存储器空间是互相独立的,物理结构也不同。
程序存储器为只读存储器(ROM)。
数据存储器为随机存取存储器(RAM)。
单片机的存储器编址方式采用与工作寄存器、I/O口锁存器统一编址的方式。
有关存储器的内容将在下一节中详述。
I/O端口
I/O端口又称为I/O接口,也叫做I/O通道或I/O通路,I/O端口是MCS-51单片机对外部实现控制和信息交换的必经之路,I/O端口有串行和并行之分,串行I/O端口一次只能传送一位二进制信息,并行I/O端口一次能传送一组二进制信息。
并行I/O端口
MCS-52单片机设有四个8位双向I/O端口(P0、P1、P2、P3),每一条I/O线都能独立地用作输入或输出。
P0口为三态双向口,能带8个LSTTL电路。
P1、P2、P3口为准双向口(在用作输入线时,口锁存器必须先写入“1”,故称为准双向口),负载能力为4个LSTTL电路。
总线
MCS-52单片机属总线型结构,通过地址/数据总线可以与存储器(RAM、EPROM)、并行I/O接口芯片相连接。
在访问外部存储器时,P2口输出高8位地址,P0口输出低8位地址,由ALE(地址锁存允许)信号将P0口(地址/数据总线)上的低8位锁存到外部地址锁存器中,从而为P0口接受数据作准备。
在访问外部程序存储器(即执行MOVX)指令时,PSEN(外部程序存储器选通)信号有效,在访问外部数据存储器(即执行MOVX)指令时,由P3口自动产生读/写(
/
)信号,通过P0口对外部数据存储器单元进行读/写操作。
2.MCS-52单片机外部结构:
1)单片机的引脚分布及功能
MCS-52的引脚说明:
MCS-52系列单片机中的8032、8052及8752均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
现在我们对这些引脚的功能加以说明:
STC89C52的引脚图
Pin9:
RESET/Vpd复位信号复用脚,当8052通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8052的初始态。
1、8位微处理器和控制器
2、内部含有4KB的程序ROM。
3、2个16位的计数/定时器。
4、内部时钟振荡器
5、全双工方式的串行接口(UART)种寻址方式。
6、最高时钟振荡频率可达12MHZ,大部分指令执行时间为1µs,乘、除指令为4µs。
2.2 信号引脚介绍:
1.输入/输出口线
2.ALE地址锁存控制信号
3.在系统扩展时,ALE用于控制把口输出的底8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。
此外由于ALE是以十二分之一晶振频率的固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲使用。
4.外部程序存储器读选通信号
5.在读外部ROM时有效(低电平),以实现外部ROM单元的读操作
6.访问程序存储器控制信号
7.当信号为低电平时,对ROM的读操作限定在外部程序存储器;而当信号为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延续至外部程序存储
8.RST复位信号
当输入的复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位操作。
9.XTAL1和XTAL2外接晶体引线端
当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
10.VSS地线
11.VCC+5V电源
2.2.2步进电机选择
步进电机选用四相步进电机。
该步进电机为一四相步进电机,采用单极性直流电源供电。
只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。
图1是该四相反应式步进电机工作原理示意图。
四相步进电机步进示意图
开始时,开关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方向转动。
四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。
单四拍与双四拍的步距角相等,但单四拍的转动力矩小。
八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.a、b、c所示:
a.单四拍 b.双四拍 c八拍
步进电机工作时序波形图
2.2.3程序流程图
按键检测
判断是否为低速
减速按键是否按下
速度标识减1
YN
Y
加速按键是否按下
判断是否为高速
Y
速度标识加1
N
Y
正反转是否按下
正反转标志取反
Y
N
查看正反转标志为0
反转
N
Y
正转
取反转码
取正转码
取正转码
是否为结束码
是否为结束码
YY
是否为结束码
NN
根据速度标识设定速度值得显示时间,从而以达到控制输出脉冲的频率来控制电机速度
根据速度标识设定速度值得显示时间,从而以达到控制输出脉冲的频率
数码管显示速度
数码管显示速度
Y
显示时间是否结束
显示时间是否结束
N
N
Y
2.2.4结构框图
按键电路
显示电路
STC
89C52
步进电机
驱动电路
传感器
反馈电路
2.2.5程序设计
#include
#defineucharunsignedchar
sbitdula=P2^6;//数码管显示段选I/O口定义
sbitwela=P2^7;//数码管显示段选I/O口定义
sbitjia_key=P3^6;//电机加速I/O口定义
sbitjian_key=P3^7;//电机加速I/O口定义
sbitzf_key=P3^5;//电机正反转I/O定义
bitflag=0;//电机正反转标志位
ucharnum=0,show_num=2,maichong=4,table_begin=0;
ucharcodetable1[]={0x01,0x02,0x04,0x08,0x08,0x04,0x02,0x01};
//电机正反转I/O口的高低电平对应表
ucharcodetable1[]={0x09,0x03,0x06,0x0c,0x08,0x04,0x02,0x01};
ucharcodetable1[]={0x01,0x04,0x02,0x08,0x08,0x02,0x04,0x01};
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//数码管显示I/O口对应表
voiddelay(uchari)//延时函数
{
ucharj,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
voiddisplay()//显示函数
{
dula=0;
P0=table[show_num];
dula=1;
dula=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);
P0=table[0];
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay(5);
}
voidkey()//按键检测处理函数
{
if(jia_key==0)
{
delay(5);//加速键按下,消抖
if(jia_key==0)
{
num++;//速度表示加1
if(num==4)
num=3;//达到最大3则保持
while(jia_key==0);//等待松开按键
}
}
if(jian_key==0)
{
delay(5);//减速键按下
if(jian_key==0)
{
if(num!
=0)
num--;//速度标示减1
else
num=0;//达到最小0则保持
while(jian_key==0);
}
}
if(zf_key==0)
{
delay(5);//正反转按键按下
if(zf_key==0)
{
flag=-flag;//正反转表示取反
while(zf_key==0);
}
}
}
voiddispose()//根据速度标识进行数据处理
{
switch(num)
{
case0:
show_num=2;//数码管第一位显示的数字
maichong=5;//利用maichong数据控制送给电机脉冲的频率,控制速度
break;
case1:
show_num=4;
maichong=4;
break;
case2:
show_num=6;
maichong=3;
break;
case3:
show_num=8;
maichong=2;
break;
}
if(flag==0)
{
table_begin=0;//flag为0,正转
}
else
table_begin=4;//flag为1,反转
}
voidqudong()//电机速度,和正反转控制
{
uchari,j;
for(j=0+table_begin;j<4+table_begin;j++)
{
P1=table1[j];//读取控制电机转动I/O口表
for(i=0;i{
display();//利用显示函数起延时作用,控制电机速度
}//这样也不影响数码管显示,一举两得
}
}
voidmain()
{
while
(1)
{
key();
dispose();
qudong();
}
}
结论
本设计通过单片机AT89C51来控制步进电机的正反转,加减速,以实现步进电机的控制。
本设计实现了占用CPU时间少,效率高;易于控制步进电机的转向转速;提高了步进电机的步进精度等。
再有,本设计过程考虑比较周全,系统中不仅采用光电隔离电路有效地抑制电磁干扰以提高系统的可靠性,而且还可以方便灵活地控制步进电机的运行状态,以满足不同用户的要求,因此常把单片机步进电机控制电路称之为可编程步进电机控制驱动器。
步进电机控制(包括控制脉冲的产生和分配)使用软件方法,即用单片机实现,这样既简化了电路,也减低了成本。
基于单片机的步进电机控制系统性能优于传统的步进控制器,具有相应快,控制方便可靠等一系列优点,在机电一体化、数模转换装置、计算机外围设备、自动记录仪、钟表、印刷设备等中亦得到广泛地应用,发展前景广阔。
更重要的是对单片机步进电机的设计,不仅让自己对自己学习的单片机有一个好的总结,更好的是通过对硬件电路的设计以及软件知识的应用来提升自己对单片机的认识,归纳各种单片机的应用,同时对软件的应用开发打下一个坚实的基础;为以后的硬件设计,软件开发提供更多的经验和方法。
总之,对于学好单片机,需要以正确的态度,持之以恒的毅力,科学的方法来完成这门课程的学习,不管在理论上还是在实践上都要这种精神来学习,并且要以学到的知识来扩展自己的思维,同时要不断看书,不断查阅资料来填补自己在专业知识的盲区;为自己以后在专业的发展打下一个基础。
由于知识水平的局限,设计中可能会存在着一些不足,希望得到老师的批评和指正。
致谢
老师严谨的治学态度、丰富渊博的知识、精益求精的工作态度以及侮人不倦的师者风范是我终生学习的楷模,老师们的高深精湛的造诣与严谨求实的治学精神,将永远激励着我。
这三年中还得到众多老师的关心支持和帮助。
在此,谨向老师们致以衷心的感谢和崇高的敬意!
另外,感谢校方给予我这样一次机会,能够独立地完成一个课程设计,并在这个过程当中,给予我们各种方便,使我们在这学期快要结束的时候,能够将学到的知识应用到实践中,增强了我们实践操作和动手应用能力,提高了独立思考的能力。
参考文献
[1]郭天祥51单片机C语言教程[M].北京:
电子工业出版社,2012:
439.
[2]刘宝延、程树康,步进电动机及其驱动控制系统[M].1997年11月第一版:
134-167
[3]史敬灼,步进电动机伺服控制技术[M].2007年3月第2版:
23-35
[4]李海滨、片春媛、许瑞雪,单片机技术课程设计与项目实例[J].中国电力出版社, 2009版:
56-65
[5]刘国永,陈杰平.单片机控制步进电机系统设计.安徽:
安徽技术师范学院学报,2002,16(4):
61-63
[6]孙笑辉,韩曾晋.减少感应电动机直接转矩控制系统转矩脉动的方法[J].电气传动,2001
(1):
8-11
[7]孙进平,张大鹏,丁金滨,51单片机系列单片机原理、开发与应用实例,中国电力出版社,2009
[8]赵建领,51单片机开发宝典,电子工业出版社,2008
[9]李群芳,肖看,清华大学出版社,2005