步进电机控制系统.docx
《步进电机控制系统.docx》由会员分享,可在线阅读,更多相关《步进电机控制系统.docx(24页珍藏版)》请在冰豆网上搜索。
步进电机控制系统
成绩
电机控制课程设计报告书
题目步进电机控制系统
院部名称机电工程学院/龙蟠学院
专业电气工程及其自动/自动化
班级M11电气工程及其自动化
组长姓名马凯文
学号1121109009
同组学生周黎飞耿培元
设计地点工科楼C
设计学时1周
指导教师周洪
金陵科技学院教务处制
摘要
随着微电子和计算机技术的发展,步进电机的需求量与日俱增,它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中,其在各个国民经济领域都有应用。
研究步进电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。
步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件,步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成。
采用单片机控制,用软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加。
软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式。
本设计是采用STC89C52单片机对步进电机的控制,通过IO口输出的时序方波作为步进电机的控制信号,信号经过芯片ULN2003驱动步进电机;同时,用4个按键来对电机的状态进行控制,并用4个LED发光二极管显示电机的转速。
系统由硬件设计和软件设计两部分组成。
其中,硬件设计包括STC89C52单片机的最小系统、电源模块、键盘控制模块、步进电机驱动(集成达林顿ULN2003)模块、LED指示灯模块。
软件采用在Keil软件环境下编辑。
关键字:
STC89C52、步进电机、ULN2003驱动
1绪论
1.1课题的背景
当今社会,电动机在工农业生产、人们日常生活中起着十分重要的作用。
步进电机是最常见的一种控制电机,在各领域中得到广泛应用。
步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。
随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。
步进电机是一种将电脉冲转化为角位移的执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机可以作为一种控制用的特种电机,其优点是结构简单、运行可靠、控制方便。
尤其是步距值不受电压、温度的变化的影响、误差不会长期积累的特点,给实际的应用带来了很大的方便。
它广泛用于消费类产品(打印机、照相机、雕刻机)、工业控制(数控机床、工业机器人)、医疗器械等机电产品中。
研究步进电机的控制和测量方法,对提高控制精度和响应速度、节约能源等都具有重要意义。
控制核心采用C51芯片,它以其独特的低成本,小体积广受欢迎,当然其易编程也是不可多得的优点为此,本文设计了一个单片机控制步进电机的控制系统,可以实现对步进电机转动速度和转动方向的高效控制。
1.2研究的主要内容
本设计的目的是以单片机为核心设计出一个单片机控制步进电机的控制系统。
本系统采用STC89C52作为控制单元,通过键盘实现对步进电机转动方向及转动速度的控制,并且将步进电机的转动用四个LED灯指示。
2总体方案设计
本步进电机控制系统,按照系统设计功能的要求,确定系统由4个模块组成:
主控制器、电机驱动模块、LED指示灯电路、键盘电路。
温度无线采集报警系统结构框图如图1所示
图1系统结构框图
2.1方案的选择
2.1.1主控芯片方案
方案一:
采用传统的STC89C52单片机作为主控芯片。
此芯片价格便宜、操作简便,低功耗,比较经济实惠。
方案二:
采用TI公司生产的MSP430F149系列单片机作为主控芯片。
此单片机是一款高性能的低功耗的16位单片机,具有非常强大的功能,且内置高速12位ADC。
但其价格比较昂贵,而且是TPFQ贴片封装,不利于焊接,需要PCB制板,大大增加了成本和开发周期。
方案三:
采用宏晶科技有限公司的STC12C5A60S2增强型51单片机作为主控芯片。
此芯片内置ADC和SPI总线接口,且内部时钟不分频,可达到1MPS。
而且价格适中。
考虑到此系统需要不用到ADC,从性能和价格上综合考虑我们选择方案一,即用STC89C52作为本系统的主控芯片。
2.1.2步进电机驱动方案
方案1:
采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整.此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。
方案2:
采用电阻网络或数字电位器调节电动机的分压,从而达到分压的目的。
但电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。
更主要的问题在于一般的电动机电阻很小,但电流很大,分压不仅会降低效率,而且实现很困难。
方案3:
采用ULN2003达林顿管电机驱动芯片,ULN2003芯片是高耐压、大电流达林顿阵列,由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成,具有同时驱动7组负载的能力,为单片双极型大功率高速集成电路。
功率电子电路大多要求具有大电流输出能力,以便于驱动各种类型的负载。
功率驱动电路是功率电子设备输出电路的一个重要组成部分。
ULN2003芯片高压大电流达林顿晶体管阵列产品属于可控大功率器件。
对步进电机控制方便灵活。
因此我们选用了方案3。
2.1.3显示模块方案
方案一:
选择主控为ST7920的带字库的LCD12864来显示信息。
12864是一款通用的液晶显示屏,能够显示多数常用的汉字及ASCII码,而且能够绘制图片,描点画线,设计成比较理想的结果。
方案二:
采用四个LED发光二极管显示,其成本低,简单明了,容易显示控制。
综合以上方案,我们选择了经济实惠LED来作为速度级别显示。
3硬件系统的设计与实现
3.1步进电机
3.1.1步进电机概述
步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电元件,它实际上是一种单相或多相同步电动机。
单相步进电动机有单路电脉冲驱动,输出功率一般很小,其用途为微小功率驱动。
多相步进电动机有多相方波脉冲驱动,用途很广。
使用多相步进电动机,单路电脉冲信号可先通过脉冲分配器转换为多相脉冲信号,在经功率放大后分别送入步进电动机各相绕组。
每输入一个脉冲到脉冲分配器,电动机各相的通电状态就发生变化,转子会转过一定的角度(称为步距角)。
正常情况下,步进电机转过的总角度和输入的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。
由于步进电动机能直接接收数字量的输入,所以特别适合于微机控制。
3.1.2步进电机的特性
步进电机转动使用的是脉冲信号,而脉冲是数字信号,这恰是计算机所擅长处理的数据类型。
从20世纪80年代开始开发出了专用的IC驱动电路,今天,在打印机、磁盘器等的OA装置的位置控制中,步进电机都是不可缺少的组成部分之一。
总体上说,步进电机有如下优点:
1.不需要反馈,控制简单。
2.与微机的连接、速度控制(启停和反转)及驱动电路的设计比较简单。
3.没有角累积误差。
4.停止时也可保持转距。
5.没有转向器等机械部分,不需要保养,故造价较低。
6.即使没有传感器,也能精确定位。
7.根椐给定的脉冲周期,能够以任意速度转动。
但是,这种电机也有自身的缺点:
1.难以获得较大的转矩
2.不宜用作高速转动
3.在体积重量方面没有优势,能源利用率低。
4.超过负载时会破坏同步,高速工作时会发出振动和噪声。
3.1.3步进电机的种类
目前常用的步进电机有三类:
表1步进电机分类
类别
结构
步距
力矩
动态性能
反应式步进电动机(VR)
采用高导磁材料构成齿状转子和定子
小
小
较差
永磁式步进电动机(PM)
转子采用多磁极圆筒形的永磁铁,其外侧配置齿状定子吸引和排斥力产生转动
大
大
好
混合步进电动机(HB)
这是PM和VR的复合产品,其转子采用齿状的稀土永磁材料,定子则为齿状的突起结构
小
大
好
3.1.4永磁步进电机的控制原理
在本设计以常用的永磁式步进电机为例,用单片机控制步进电机。
图2-1是CZ-2801型永磁步进电机的外形图,图2-2是该电机的接线图。
图2-1CZ-2801型永磁步进电机外形图图2-2CZ-2801型永磁步进电机接线图
从图中可以看出,电机共有四组线圈,四组线圈的一个端点连在一起引出,这样一共有5根引出线。
要使用步进电机转动,只要轮流给各引出端通电即可。
将COM端标识为C,只要AC、BC或/AC、/BC,轮流加电就能驱动步进电机运转,加电的方式可以有多种,如果将COM端接正电源,那么只要用开关元件(如三极管),将A、B或/A、/B轮流接地。
不难设计出控制电路,因其工作电压为12V,因此用一块开路输出达林顿驱动器(这里用ULN2003,关于ULN2003将在后面介绍)作为驱动,通过P1.0、P1.3来控制各线圈的接通与切断。
开机时,P1.0、P1.3均为高电平,依次将P1.0、P1.2(或P1.1、P1.3反向)切换为低电平即可驱动步进电机运行。
如果要改变电机的转动速度只要改变两次接通之间的时间。
改变转速,只要改变P1.0、P1.2(或P1.1、P1.3反向)轮流变低电平的时间即可达到要求,因为不会影响到其他功能的实现,这个时间可以用延时来实现,。
这里以定时的方式来实现。
下面首先计算一下定时时间。
按要求,最低转速为20转/分,而上述步进电机的步距角为7.5,即每48个脉冲为1周,即在最低转速时,要求为960脉冲/分,相当于62.5ms/脉冲。
而在最高转速时,要求为100转/分,即48000脉冲/分,相当于12.5ms/脉冲。
可以列出下表:
表2-2步进电机转速与定时器定时常数关系
转速
单步时间(ms)
TH0
TL0
20
62.5
1F
0
21
59.52380952
29
B6
22
56.81818182
33
74
23
54.34782609
3C
59
24
52.08333333
44
80
25
50
4C
0
26
48.07692308
52
EC
27
46.2962963
59
55
28
44.64285714
5F
49
…
…
…
…
93
13.44086022
CF
9C
94
13.29787234
D0
20
95
13.15789474
D0
A1
96
13.02083333
D1
20
97
12.88659794
D1
9B
98
12.75510204
D2
14
99
12.62626263
D2
8B
100
12.5
D3
0
表中不仅计算出了TH0和TL0,而且还计算出了在这个定时常数下,真实的定时时间,可以根据这个计算值来估算真实速度与理论速度的误差值。
表中TH0和TL0是根据定时时间算出来的定时初值,这里用到的晶振是12.000M。
有了上述表格,程序就不难实现了,使用定时/计数器T0为定时器,定时时间到后切换输出脚即可。
3.2步进电机控制系统的组成
步进电机控制系统共分为五个模块:
单片机最小系统模块、键盘控制模块、LED指示模块、步进电机驱动模块和电源模块。
1.单片机最小系统主要由复位电路和时钟电路组成。
复位电路为单片机系统提供可靠复位,使单片机能正常启动。
时钟电路采用外部时钟方式,保证单片机个功能部件都是以时钟频率为基准,有条不紊地一拍一拍地工作。
2.键盘控制模块包括方向控制键、加速键和减速键、启停键,分别与单片机的P3.4、p3.5、p3.6和P3.7相连。
实现对步进电机的控制。
3.四个LED发光二极管显示步进电机的速度等级。
分成四个等级,四个LED全亮速度最快,亮一个速度最慢。
4.步进电机驱动模块选用七个NPN达林顿连接晶体管ULN2003为步进电机提供脉冲信号,驱动步进电机转动。
该模块与单片机的P1.0—P1.3相连。
5.电源模块3接5号电池4.5V分别供给驱动模块和单片机模块。
3.3主控制模块
单片机最小系统包括单片机、复位电路、时钟电路构成。
STC89C52单片机的工作电压范围:
4V-5.5V,所以通常给单片机外界5V直流电源。
连接方式为单片机中的40脚VCC接正极5V,而20脚VSS接电源地端。
复位电路就是确定单片机的工作起始状态,完成单片机的启动过程。
单片机接通电源时产生复位信号,完成单片机启动确定单片机起始工作状态。
当单片机系统在运行中,受到外界环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。
一般有上电自动复位和外部按键手动复位,单片机在时钟电路工作以后,在RESET端持续给出2个机器周期的高电平时就可以完成复位操作。
本设计采用的是外部手动按键复位电路,需要接上上拉电阻来提高输出高电平的值。
时钟电路好比单片机的心脏,它控制着单片机的工作节奏。
时钟电路就是振荡电路,是向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。
XTAL1和XTAL2分别为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器。
如采用外部时钟源驱动器件,XTAL2应不接。
因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为1/12us。
主控制最小系统电路如图2所示。
图2单片主控电路
3.3.1STC89C52单片机简介
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
这一模块以单片机为中心把程序代码烧进去然后外围接上复位电路、振荡电路、键盘控制、LED显示电路、报警电路等子模块。
3.3.2单片机的引脚功能描述
下面对AT89C52各引脚的功能进行较为详细的介绍:
1)电源引脚Vcc和Vss
Vcc(40脚):
电源端为+5VVss(20脚):
接地端。
2)时钟电路引脚XTAL1和XTAL2
XTAL2(18脚):
接外部晶体和微调电容的一端。
在单片机内部它是振荡电路反向放大器的输出端,振荡电路的频率就是晶体固有频率。
若需采用外部时针电路时,该引脚输入外时钟脉冲。
要检查89C52的振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。
XTAL1(19脚):
接外部晶体和微调电容的另一端。
在片内,它是振荡电路反向放大器的输入端。
在采用外部时钟时,该引脚必须接地。
3)控制信号脚RSTALEPSEN和EA。
RST(9脚):
RST是复位信号输入端,高电平有效。
在此输入端保持两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。
ALE/PROG(30引脚):
地址锁存允许信号端。
当AT89C52上电正常工作后,ALE引脚不断向外输出正脉冲信号。
此频率为振荡器频率fosc的1/6,当CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控制信号。
在CPU访问片外数据存储时,每取值一次(一个机器周期)会丢失一个脉冲。
平时不访问片外存储时,ALE端也以1/6的振荡频率固定输出正脉冲,因而ALE信号可以用作对外输出时钟或定时信号。
如果你想看一下AT89C52芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出,如有脉冲信号输出,则AT89C52基本上是好的。
ALE的负载驱动能力为8个LS型TTL(低功耗高速TTL)。
PSEN(29脚);程序存储允许输出信号引脚,在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。
此引脚接ERROM的OE端。
PSEN端有效,即允许读出ERROM/ROM中的指令码。
CPU在从外部ERROM/ROM取指令期间,每个周期PSEN两次有效。
不过,在访问片外RAM时,要少产生两次PSEN负脉冲信号。
要检查一个AT89C52小系统上电后CPU能否正常到ERROM/ROM中读取指令码,也可用于示波器看PSEN端有无脉冲输出。
如有,说明基本上工作正常。
EA/VPP(31脚):
外部程序存储器地址允许输入端/固化编程电压输入端。
当EA引脚接高电平时,CPU只访问片内ERROM/ROM并执行内部程序存储器中的指令。
但在PC(程序计数器)的值超过OFFFH(对8751/8051为4k)时,将自动转向执行片外存储器的程序。
当出入信号EA引脚接低电平(接地)时,CPU只访问外部ERROM/ROM并执行外部程序存储器中的指令,而不管是否有片内程序存储器。
对于无芯片内的ROM的8031或8032,须外扩ERROM,此时必须将EA引脚接地。
如果使用有片内ROM的AT89C52,外扩ERROM也是可以的,但也要使EA接地。
4)I/O(输入/输出端口,P0,P1,P2,P3)
P0口:
P0口是一个漏极开路的8位准双向I/O端口。
P1口:
8位准双向I/O端口。
P2口:
即可以做地址总线输出地址高8位,也可以做普通I/O用,(此时为准双向口)。
P3口:
双功能口,即可以做普通I/O口用(此时为准向口,也可以按每位定义实现第二功能操作)。
见表1。
表1P3口的第二功能表
引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外部中断0)
P3.3
INT1(外部中断1)
P3.4
T0(定时器0外部中断)
P3.5
T1(定时器1外部中断)
P3.6
WR(外部存储器写选通)
P3.7
RD(外部存储器读写通)
3.3.3单片机的时钟电路与复位电路设计
本系统采用stc系统列单片机,相比其他系列单片机具有很多优点。
本系统采用内部方式的时钟电路和加电自复位的复位电路,如下图3图4所示:
图3时钟电路
图4复位电路
由于单片机P0口内部不含上拉电阻,为高阻态,不能正常地输出高/低电平,因而该组I/O口在使用时必须外接上拉电阻R6。
3.4电源电路设计
供电电源采用3接1.5V干电池给传感器,单片机供电。
电路如图5所示。
P2为电源接线端,SW1为电源总开关。
D4为电源指示灯。
图5电源电路
3.5步进电机驱动电路
步进电机采用ULN2003驱动,驱动原理图如图6。
图6蜂鸣器报警电路图
3.6按键电路
系统采用了4个,一个启动键,一个停止键,一个速度调节键,一个正反转切换键。
电路如图7。
图7按键电路
3.7速度等级指示灯电路
速度等级采用LED指示灯指示。
接口电路如图8所示
图8指示电路
4软件系统的设计与系统功能实现
4.1软件设计原则及编程思路
应用系统中的应用软件是根据系统功能要求设计的,应稳定正确的实现系统的各种功能。
在本系统中,软件设计要求做到以下几点:
1.软件结构清晰,简捷,流程合理。
2.各功能程序实现模块化。
这样,即便于调试,链接,又便于移植,修改。
3.程序存储区,数据存储区要合理规划,既能节约内存容量,又使操作方便。
4.运行状态实现标志化管理。
各个功能程序运行状态,运行结果以及运行要求都要设置状态标志以便查询,程序转移,控制都可通过状态标志条件来控制。
4.2程序设计前期准备
4.2.1程序设计平台
考虑到程序的易读性和简练,程序设计采用C语言。
程序编辑平台采用Keil。
图3-1Keil软件界面
4.2.2程序设计思路
步进电机控制系统的软件需要同时完成读取键盘、处理键盘、控制步进电机转动、控制数码管动态显示等任务,这就必须通过中断技术来实现。
在本设计中,主程序采用查询方式扫描键盘端口,检测按键动作是否发生,若有按键动作则处理键盘,根据按键值修改相应参数值,实现键盘的实时处理功能。
定时器0中断服务程序控制步进电机的转动:
根据当前显示的速度进行键盘手动改变T0定时时间常数,设置TH0和TL0的值,达到对转速精确控制的目的;根据转动方向控制位的值,控制脉冲信号循环移动的方向,达到对转动方向控制的目的。
说明如下:
1.单片机接受键盘信息,改变系统内部变量值。
2.单片机输出脉冲信号,控制步进电机转动。
3.单片机根据步进电机实际转动值,控制数码管显示。
4.3程序流程图
4.3.1主程序流程图
步进电机控制系统的主程序在对整个系统初始化后主要完成读键盘和处理键盘的功能,如图3-2所示:
图3-2步进电机控制系统主程序流程图
系统上电复位后,先调用初始化子程序,对步进电机各端口,相关参数进行初始化,设置T0工作方式控制时间常数。
初始化完成后,步进电机处于停止状态,T0定时器处于关闭状态。
然后循环调用读键盘子程序和键盘处理子程序,等待中断,以便实现步进电机转动控制。
4.3.2读键盘子程序流程图
首先初始化实际键值参数为0FH,然后扫描P2口,与初始值比较,相等则说明没有键按下,不相等则软件消抖,以便确认是否真的有键按下。
延时10ms后再次扫描P2口,第二次与初始值比较,若相等则表明前一次比较不相等是由抖动产生;如果相等则表明确实有键按下。
执行键盘之程序里的指令,将相应的变量值改变,为键盘处理子程序做准备。
图3-3扫描键盘字程序流程图
4.3.3键盘处理子程序流程图
按键处理子程序流程图如图3-3所示:
图3-3键盘处理子程序流程图
步进电机的启停控制通过启停定时器T0来实现,因为定时器T0控制着脉冲信号的输出,关闭定时器T0也就阻止了脉冲信号的输出。
4.3.4电机控制中断程序流程图
定时器中断0服务程序流程图如图3-4所示:
图3-4定时器中断0服务程序流程图
定时器中断0服务程序的中断时间由当前的转速决定。
进入中断程序后,首先要保护现场,再根据当前值设置TH0和TL0的值。
然后判断转动方向控制位的值,如果是0则控制脉冲信号P1.0、P1.2输出,如果是1则控制脉冲信号P1.1、P1.3输出。
最后恢复现场,返回,等待下次中断。
通过用当前转速控制中断时间,控制了脉冲的输出频率,也就到达了控制步进电机转动速度的目的;通过检测方向控制位