1、电气及自动化课程设计报告题 目 步进电机控制系统设计 课 程 电机与拖动 学生姓名: 学生学号: 年 级: 2014级 专 业: 自动化 班 级: 2班 指导教师: 机械与电气工程学院制2017年3月目录1设计的任务与要求11.1 课程设计的任务11.2 课程设计的要求12 步进电机控制系统设计方案制定12.1 步进电机工作的原理12.2 单片机的原理33 仿真软件介绍43.1 Proteus软件介绍43.2 Keil-uvision4软件介绍54 步进电机控制系统电路仿真设计54.1驱动部分54.2时钟部分54.3 复位部分64.4状态指示部分64.5按键部分74.6系统程序框图74.7 系
2、统整图84.8 元器件清单95 步进电机控制系统电路仿真设计方案的仿真实现96.总结167 参考文献16附录:17步进电机控制系统设计1设计的任务与要求1.1 课程设计的任务步进电机是用电脉冲信号进行控制,将电脉冲信号转换成相应的角位移或线位移的微电动机,它突出的优点是可以在宽广的频率范围内通过改变脉冲频率来实现调速,快速启停,正反转控制及制动等,并且用其组成的开环系统既简单、廉价,又非常可行,因此在打印机等办公自动化设备以及各种控制设备等众多领域有着极其广泛的应用。随着微电子和计算机技术的发展,步进电机的需求与日俱增,研制步进电机驱动器及其控制系统具有十分重要的意义。1.2 课程设计的要求本
3、次实验是基于单片机的控制系统设计,用汇编语言和C语言编写出电机正转、反转、调速、停止程序,通过单片机、电机的驱动芯片ULN2001以及相应的按键实现以上功能,并且步进电机的工作状态要用LCD液晶显示器显示出来。本次课程设计介绍步进电机以及单片机工作原理、该系统的硬件电路、程序组成,同时对软、硬件进行了调试。该设计具有思路明确、可靠性高、稳定性强等特点,通过调试实现了上述功能。2 步进电机控制系统设计方案制定2.1 步进电机工作的原理步进电机的工作原理就是步进转动,其功能是将脉冲电信号变换为相应的角位移或者是直线位移,就是给一个脉冲信号,电动机转动一个角度或是前进一步。步进电机的角位移量与脉冲数
4、成正比,它的转速与脉冲频率(f)成正比,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化影响,即给电机加一个脉冲信号,电机则转过一个歩距角。步进电机不能直接接到交直流电源上工作,而必须使用专用设备步进电机驱动器。典型的步进电机驱动系统是由步进电机控制器、步进电机驱动器和步进电机本体三部分组成,步进电机控制器发出步进脉冲和方向信号。每发一个脉冲,步进电机驱动器驱动步进电机转子旋转一个歩距角,即步进一步。步进电机转速的高低、升速或降速、启动或停止都完全取决于脉冲的有无或频率的高低。控制器的方向信号决定步进电机的顺时针或者逆时针旋转。通常,步进电机驱动器由逻辑控
5、制电路、功率驱动电路、保护电路和电源组成。步进电机驱动器一旦接收到来自控制器方向的信号和步进脉冲,控制电路就按预先设定的电机通电方式产生步进电机各相励磁绕组导通或截止信号。控制电路输出的信号功率很低,不能提供步进电机所需的输出功率,必须进行功率放大,这就是步进电机驱动器的功率驱动部分。功率驱动电路向步进电机控制绕组输入电流,使其励磁形成空间旋转磁场,驱动转子运动。保护电路在出现短路、过载、过热等故障时迅速停止驱动器和电机的运行。如图1所示的步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图1是该四项反应式步进电机工作原理图。图
6、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.八拍图2 步进电机
7、工作时序波形图2.2 单片机的原理(1)单片机原理概述单片机是把微型计算机主要部分都集成在一块芯片上的单芯片微型计算机。图3中表示单片机的典型结构。由于单片机的高度集成化,缩短了系统内的信号传送距离,优化了系统配置,大大地提高了系统的可靠性及运行速度,同时它的指令系统又很适合于工业控制的要求,所以单片机在工业过程及设备控制中得到了广泛的应用。图3 典型单片机结构(2)AT89C51简介 AT89C51含EPROM电可编闪速存储器。有两级或三级程序存储器保密系统,防止EPROM中的程序被非法复制。不可用紫外线擦除,调高了编程效率。程序存储器EPROM容量可达20K字节。AT89C51的主要参数如
8、表1所示。表1 AT89C51的主要参数表型号定时器I/O串行口中断速度其他特点89C512321624低电压 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,用工业标准的MCS51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。其引脚如图4所示。图4 单片机的引脚排列3 仿真软件介绍3.1 Proteus软件介绍 Proteus软件是英国Labcebter e
9、lectronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。 Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列
10、处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。3.2 Keil-uvision4软件介绍 KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(Vision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。C51工具包的整体结构,其中Vision与Ishell分别是C51forW
11、indows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。4 步进电机控制系统电路仿真设计4.1驱动部分 如图5所示,此电路是步进电机的驱动部分,选用
12、的是ULN2001芯片来驱动的,ULN2001系列是一款高耐压,大电流达林顿管驱动器,包含7个NPN达林顿管。图5 驱动部分 4.2时钟部分时钟电路它控制计算机的工作节奏,可以通过提高时钟频率来提高CPU的速度,本次设计采用的晶振为12MHz。如图6所示。图6 时钟部分4.3 复位部分根据应用的要求,复位操作通常有两种基本形式:上电位复位和上电或者开关复位。本次设计使用上电复位。如图7所示。 图7 复位部分 基本电路的最后一个部分是存储器的设置,如果31引脚接电源,则采用内部存储器,如果31脚接地,则采用外部存储器。将时钟电路、复位电路连接并设置好存储器,就构成了最小系统。这是做任何单片机设计
13、都必须有的部分。4.4状态指示部分状态指示用P0口控制LCD的显示,STA显示的是转动的速度,RUN显示的是机器是否运转,用它来表示步进电机所处的状态。如图8所示。图8 状态指示部分4.5按键部分 本次设计选用的是单片机的P2口来控制信号的输入,所以把按键开关和P2口连接起来,当按下开关KEY1时,相当于给P2.0口一个低电平,开始转动;当按下开关KEY2时,相当于给P2.1口一个低电平,步进电机反转,相反则正转;当按下开关KEY3时,相当于给P2.2口一个低电平,调节转速。如图9所示。图9 按键部分4.6系统程序框图 系统分为电机正转、电机反转、开始与转速的几部分组成,其主程序框图如图10所
14、示。图10 系统程序图4.7 系统整图 系统整图如图11所示,本系统采用外部中断方式,P2口为信号的输入部分,P0口为发光LCD显示部分,P1口作为电机的驱动部分。图11 系统整图4.8 元器件清单 根据以上原理图,本次设计所需要的一些元器件如下表:表2 元器件列表序号标号器件名称数值1C1、C2电容30PF、30PF2R1、R2、R3、R4电阻1K、10K、10K、10K3X1晶振12MHz4C3电解电容30PF5LCD1液晶显示屏6RP1排阻7按钮8步进电机5 步进电机控制系统电路仿真设计方案的仿真实现 (1)速度1正转。运行程序,闭合开始按钮,断开正/反转按钮,速度按钮为速度1。LED1
15、液晶显示屏显示数据如下:STA:Z SPD:1UN RUN:ON 步进电机显示转速为+127。如图12所示。图12 速度1正转 (2)速度1反转。运行程序,闭合开始按钮,闭合正/反转按钮,速度按钮为速度1。LED1液晶显示屏显示数据如下:STA:F SPD:1UN RUN:ON 步进电机显示转速149。如图13所示。图13 速度1反转 (3)速度1正转停止。运行程序,断开开始按钮,断开正/反转按钮,速度按钮为速度1。LED1液晶显示屏显示数据如下:STA:Z SPD:1UN RUN:OFF 步进电机显示转速+138。如图14所示。图14 速度1正转停止 (4)速度1反转停止。运行程序,断开开始
16、按钮,闭合正/反转按钮,速度按钮为速度1。LED1液晶显示屏显示数据如下:STA:F SPD:1UN RUN:OFF 步进电机显示转速117。如图15所示。图15 速度1反转停止 (5)速度2正转。运行程序,闭合开始按钮,断开正/反转按钮,速度按钮为速度2。LED1液晶显示屏显示数据如下:STA:Z SPD:2UN RUN:ON 步进电机显示转速为+205。如图16所示。图16 速度2正转 (6)速度2反转。运行程序,闭合开始按钮,闭合正/反转按钮,速度按钮为速度2。LED1液晶显示屏显示数据如下:STA:F SPD:2UN RUN:ON 步进电机显示转速为223。如图17所示。图17 速度2
17、反转 (7)速度2正转停止。运行程序,断开开始按钮,断开正/反转按钮,速度按钮为速度1。LED1液晶显示屏显示数据如下:STA:Z SPD:2UN RUN:OFF 步进电机显示转速为+221。如图18所示。图18 速度2正转停止(8)速度2反转停止。运行程序,断开开始按钮,闭合正/反转按钮,速度按钮为速度2。LED1液晶显示屏显示数据如下:STA:F SPD:2UN RUN:OFF 步进电机显示转速为241。如图19所示。图19 速度2反转停止 (9)速度3正转。运行程序,闭合开始按钮,断开正/反转按钮,速度按钮为速度3。LED1液晶显示屏显示数据如下:STA:Z SPD:3UN RUN:ON
18、 步进电机显示转速为+307。如图20所示。图20 速度3正转 (10)速度3反转。运行程序,闭合开始按钮,闭合正/反转按钮,速度按钮为速度3。LED1液晶显示屏显示数据如下:STA:F SPD:3UN RUN:ON 步进电机显示转速为332。如图21所示。图21 速度3反转 (11)速度3正转停止。运行程序,断开开始按钮,断开正/反转按钮,速度按钮为速度3。LED1液晶显示屏显示数据如下:STA:Z SPD:3UN RUN:OFF 步进电机显示转速为+315。如图22所示。图22 速度3正转停止 (12)速度3反转停止。运行程序,断开开始按钮,闭合正/反转按钮,速度按钮为速度3。LED1液晶
19、显示屏显示数据如下:STA:F SPD:3UN RUN:OFF 步进电机显示转速为346。如图23所示。图23 速度3反转停6.总结 本次步进电机控制系统课程设计采用单片机为控制核心,利用其强大的功能,把按键电路和LCD显示电路,电机驱动电路有机的结合起来,组成一个操作方便,交互性强的简单系统。通过系统的设计实现了预期的设计目标。完成了整个硬件设计和软件编程,能通过按键电路控制步进电机的转速控制,能实现启动、正转、反转、速度控制;通过编程实现了通过单片机能输出四相八拍的脉冲控制序列。驱动电路能提供12V,0.38A的驱动信号;整个电机的转速,转动方向等都能通过LCD管显示出来。在本设计中作为电
20、机正常工作比较重要的电机驱动模块,本设计中采用驱动芯片ULN2001来实现的,其特点是成本低,可靠性高,出现问题容易维护,实现相对容易等特点。在电机工作模式上本设计实现了四相八拍的脉冲控制方式。7 参考文献1张友德.单片机微型机原理、应用与实验M .上海:复旦大学出版社 ,2005年:85-92.2李夙.异步电机直接转矩控制M. 北京:机械工业出版社,1998年:56-78.3王鸿钰.步进电机控制入门M.上海:同济大学出版社 ,1990年:88-94.4王秀和.永磁电机M.北京:中国电力出版社,2007:119-136.5房玉明,杭柏林.基于单片机的步进电机开环控制系统M. 北京:电子工业出版
21、社,2010年:156-161.6吴玉香,李艳,刘华,毛宗源.电机及拖动. 北京:化学工业出版社,2013年:117-125.附录:C程序:#includereg51.h#includeintrins.h#includeabsacc.h#define busy 0x80#define uchar unsigned char#define unit unsigned intsbit RS=P23;sbit RW=P24;sbit E=P25;sbit KEY1=P20;sbit KEY2=P21;sbit KEY3=P22;uchar code tab8=0x02,0x06,0x04,0x0C,
22、0x08,0x09,0x01,0x03;uchar temp;void delay(uchar k)unit i,j;for(i=0;ik;i+)for(j=0;j60;j+);void test_1602busy()P0=0xFF;E=1;RS=0;RW=1;_nop_();_nop_();while(P0&busy)E=0;_nop_();E=1;_nop_();E=0;void write_1602Command(uchar co)test_1602busy();RS=0;RW=0;E=0;_nop_();P0=co;_nop_();E=1;_nop_();E=0;void write_
23、1602Data(uchar Data)test_1602busy();P0=Data;RS=1;RW=0;E=1;_nop_();E=0;void init_1602(void)write_1602Command(0x38);delay(5);write_1602Command(0x01);delay(5);write_1602Command(0x06);delay(5);write_1602Command(0x0F);delay(5);write_1602Command(0x0C);void DisplayOneChar(uchar X, uchar Y, uchar DData) Y&=
24、1; X&=15; if(Y)X|=0x40; X|=0x80; write_1602Command(X); write_1602Data(DData); void display_1602(uchar *DData,X,Y) uchar ListLength=0; Y&=0x01; X&=0x0F; while(X16) DisplayOneChar(X,Y,DDataListLength) ; ListLength+; X+; void main()uchar i=0;uchar delay_v=100;uchar flag=0;P1=0xFF;P2=0xFF;init_1602();di
25、splay_1602(STA: SPD: ,0,0);display_1602(RUN: ,0,1);while(1)if(KEY2=1)DisplayOneChar(4,0,Z);else DisplayOneChar(4,0,F);if(KEY3=0)i+;i=i%3;while(KEY3=0);switch(i)case 0:delay_v=100;DisplayOneChar(13,0,1);break;case 1:delay_v=75;DisplayOneChar(13,0,2);break;case 2:delay_v=100;DisplayOneChar(13,0,3);bre
26、ak;if(KEY1=0)display_1602( RUN:ON ,0,1);if(flag=0) if(KEY2=1) temp=0;P1=tabtemp;flag=1;delay(delay_v);if(KEY2=0) temp=6;P1=tabtemp;flag=1;delay(delay_v);if(KEY2=1) temp+;if(temp=8)temp=0;P1=tabtemp;delay(delay_v);if(KEY2=0) temp-;if(temp=0xFF)temp=7;P1=tabtemp;delay(delay_v);else display_1602( RUN:off ,0,1);28指导教师评语成绩(60%)指导教师签字:年 月 日答辩过程及评价成绩(40%)答辩小组签字:年 月 日院综合意见综合成绩分管院长签字(盖章):年 月 日