《四相步进电机控制系统设计.docx》由会员分享,可在线阅读,更多相关《四相步进电机控制系统设计.docx(25页珍藏版)》请在优知文库上搜索。
1、更乱匕大学秦皇今相NortheasternUniversityatQinhuangdao单片机课程设计设计报告设计题目:四相步进电机限制系统设计系别:自动化工程系专业:测控技术与仪器班级学号:姓名:李建华指导老师:吕江涛张宝健设计时间:20111229书目述.12 四项步进电机22.1 1步进电机.22.2 步进电机的限制.22.3 步进电机的工作过程.23 电路图设计.43.1 1AT89S52概述43.2 最小系统43.3 复位电路53.4 拨码电路.53.5 电机驱动电路64 程序设计74. 1主程序框图74.2 步进电机速度限制程序框图84.3 拨码开关输入程序框图.105总结.115
2、. 1心得115.2收获.11附录一源程序.12附录二电路原理图.151概述本试验旨在通过限制AT89S52芯片,实现对四相步进电机的转动限制。详细功能主要是限制电机正转、反转、加速与减速。详细工作过程是:给试验箱上电后,拨动启动开关,步进电机根据预先设置的转速和转动方式转动。调整正反转按钮,步进电机实现正反转切换;拨动加速开关,步进电机转速加快,速度达到最大值,不再加速;拨动减速开关时,电机减速转动,速度减到最小速度,停止减速。系统限制框图试验详细用到的仪器:AT89S52(试验箱上为89C58)芯片、拨码开关单元、四项步进电机等硬件设备。试验详细电路单元有:单片机最小系统、步进电机连接电路
3、、拨码开关连接电路。2四项步进电机2. 1步进电机步进电机是一种将电脉冲转化为角位移的执行机构。电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变更的影响,即给电机加一个脉冲信号,电机则转过一个步距角。2.2步进电机的共组原理2步进电机的限制1.换相依次限制:通电换相这一过程称为脉冲安排。例如:混合式步进电机的工作方式,其各相通电依次为A-B-C-D,通电限制脉冲必需严格根据这一依次分别限制A,B,C,D相的通断。2 .限制步进电机的转向限制:假如给定工作方式正序换相通电,步进电机正转,假如按反序通电换相,则电机就反转。3 .限制步进电机的速度限制:假如给步进电机发一个限制脉冲
4、,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。2. 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方向转动。四相步进电机根据通电依次的不同,可分为
5、单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高限制精度。单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图3. a、b、c所示:脉冲 JiULnJUlLUULLA相J-IB 相 _n_n_ C 相-_L “目 Irlnrl-TLnJLULLrLrLnTLrL TJ-L-FT-J -J-L-FTJ-L-T-LJuLnnnnnnnJVUXnnnra.单四拍b.双四拍C八拍步进电机工作时序波形图对步进电机四个绕组依次实现如下方式的循环通电限制:单四拍运行:正转A
6、-B-C-D;反转D-C-B-A双四拍运行:正转AB-BC-CD-DA;反转DCYB-BA-AD八拍运行:正转A-AB-B-BC-C-CD-D-DA本试验运用的是单双八拍循环限制3电路图设计3. 1AT89S52概述AT89S52单片机是ATMEL公司推出的高档型AT89S系列单片机中的增加型产品。关于其功能原理与其应用不再赘述。这里只介绍本试验用到的端口和功能。Pl:用户运用的通用I0,8位准双向,编程和校验时,可做为高8位地址线;PLO和PLl引脚另有其次功能(此试验没用到,不再介绍)P3:8位准双向I/O口RST:复位信号输入端,高电平有效EA:访问芯片内部和芯片外部程序存储器的选择信号
7、XTALI,XTAL2:芯片内振荡器反相放大器的输出端和输入端3.2 最小系统单片机最小系统或者称为最小应用系统,就是用最少的元件组成的单片机可以工作的系统,对52系列单片机来说,最小系统一般应当包括:单片机、复位电路、晶振电路。3.3 复位电路复位电路采纳手动复位和上电自动复位。上电自动复位:在单片机上电的瞬间,RC电路充电,由于电容上电电压不能突变,所以RST引脚出现高电平,RST引脚出现的高电平将会随着对电容C的充电过程而渐渐回落。手动复位:当按下复位按钮时,RST出现高电平,实现复位。R10Wk2930131RSTPSEN ALE EA3.4 拨码电路拨码开关和P3口相连,拨动开关sw
8、l、sw2sw3sw4来限制电机的启停、正反转、速度的加减。POO/ADOPO1AD1P02AD2P03AD3P04AD4PO5AD5P06AD6P07AD7P2.0A8P21A9P2.2A10P2.3A11P2.4A12P2.5A13P26A14P2.7A15P30RDP31/TXDP32INT0P33INT1P34T0P351P36WRP37RD12345678 O 122222222 1 13.5 电机驱动电路将步进电机的A、B、C、D分别接到PL0、PLI、PL2、PL3管脚实物连接4程序设计4.1主程序框图系统分为电机转动、电机正转、电机反转、电机加速、电机减速和电机停止这几个部分组
9、成,其主程序框图如图下所示声明定义延时函数声明定义定时器初始化函数声明定义按键处理函数电机运转与停止电机加速电机减速电机正转与反转4.2 步进电机速度限制程序框图正转部分:送Pl口不同的值,从而变更电机电源的相序,是电机正转,数值分别为0xf8,Oxfc,0xf4,0xf6,0xf2,0xf3,Oxfl,Oxf9o流程图如下有外部中断?有外部中断?运用up_date反转部分:送Pl口不同的值,从而变更电机电源的相序,是电机反转,数值分别为0xf9,Oxfl,0xf3,0xf2,0xf6,0xf4,Oxfg0xf8。流程图如下down_date加速部分:当电机处于正转或反转的时候,按下K2,调用
10、加速程序,是电机每转动一部的延时时间变短,从而实现电机的加速。速度增加减速部分:当电机处于正转或反转的时候,按下K3,调用加速程序,是电机每转动一部的延时时间变长,从而实现电机的减速。运行与停止:按下Kl键,系统默认是停止,拨动一次是运行,在拨动一次是停止,即是基数次运行,偶数次停止(一般不会拨动N次,为了看到现象,就拨动少数几次)4.3 拨码开关输入程序框图用于推断P3.1、P3.2、P3.3、P3.4,5总结5.1心得这次课程设计,历时多天,失败多次,不断总结失败的阅历,从中取得进步。经过这次课程设计,我明白了详细怎么来实现一个单片机的项目,熟识了流程,获得信息的途径。彻底的了解了单片机的
11、用途。5.2收获1、能够将理论学问与实践相结合,对理论的理解更透彻。2、对单片机C语言编程,有了初步的了解,为以后的进一步学习打下了基础。3、增加了自己的团队意识,在以后的学习和工作中能够更好的与他人合作。【附录一】源程序名称:四项步进电机的限制功能:实现电机的正反转,以与电机的转速指导老师:吕江涛张宝健#include#include#defineucharunsignedchar#defineuintunsignedintsbitKl=P30;sbitK2=P3l;sbitK3=P32;sbitK4=P33;ucharspeed=0;定义转速变量,初始uchar k=0;值为25用来记录驱
12、动数组的位bitflagcon=0;定义正反转ucharcodeup_data8=0xf8,Oxfc,0xf4,0xf6,0xf2,0xf3,Oxfl,OXf9;正向驱动数组ucharcodedown_data8=0xf9,Oxfl,0xf3,0xf2,0xf6,0xf4,Oxfc,OXf8;反向驱动数组ucharcodemotor_h=0x9e,Oxae,Oxba,0xc3,0xc9,Oxcf,0xd3,0xd7,Oxda,Oxdd,Oxdf,0xel,0xe3,0xe4,0xe6,0xe7;步进电机计数值THl高位表ucharcodemotor_l=0x58,0xa2,0x3c,0xla,
13、Oxbe,0x2c,Oxad,0x4c,0x6c,0xle,0x76,0x7e,0x4a,0xe4,Oxcl,0x96;步进电机计数值TLl低位表名称:延时函数功能:定量延时,延时时间=x*lmsvoidDelay_ms(uintx)uinti,j;for(i=x;i0;i-)for(j=112;j0;j-);延时约ImS毫秒)名称:定时器Tl初始化函数voidtimer()(TMOD=0x10;/定时器Tl均为工作模式1,16位定时方式THl二:Oxff;TLl二:Oxff;装定时器Tl计数初值EA=I;开总中断ETl=I;开定时器Tl中断TRl二0;短暂不启动定时器Tl按键处理voidKeyProcess()(if(Kl=O)(Delayms(10);if(Kl=O)(TR1=TR1;/Kl键按下后,启动定时器Tl)再次按下关闭Tl,限制步进电机启停)if(K2=0)(Delayms(10);if(K2=0)&(speed!=15)(speed+;转速加1)if(K3=O)Delayms(10);if(K3=O)&(speed!=O)