单片机课程设计方案步进电机控制设计方案.docx
- 文档编号:17813353
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:23
- 大小:244.22KB
单片机课程设计方案步进电机控制设计方案.docx
《单片机课程设计方案步进电机控制设计方案.docx》由会员分享,可在线阅读,更多相关《单片机课程设计方案步进电机控制设计方案.docx(23页珍藏版)》请在冰点文库上搜索。
单片机课程设计方案步进电机控制设计方案
步进电机是一种将电脉冲转化为角位移的执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
结合对步进电机的了解,然后对步进电机的控制原理包括步进电机的控制方式和驱动方式作了系统的说明,采用8051单片机来控制步进电机,并给出了步进电机的双相三拍控制单片机控制和三相六拍的单片机控制的具体实现方法,用汇编程序进行控制运行。
控制系统通过单片机存储器、I/O接口、中断、键盘、LED显示器的扩展、步进电机的环形分频器、驱动及保护电路、人机接口电路、中断系统及复位电路、单电压驱动电路等的设计,实现了四相步进电机的正反转,急停等功能。
电机的控制系统由AT80C51单片机控制,具有抗干扰能力强,可靠性高而且系统扩展容易等优势。
本次课程设计中着重于通过控制脉冲数来控制位移,实现准确定位。
基于步进电机本身的优越性和应用的广泛性,这正是用单片机控制步进电机课程设计的实际意义。
关键字:
步进电机,角位移,单片机,脉冲
1课题描述1
2总体实现原理1
3步进电机原理及硬件设计2
3.1单片机电路2
3.1.1AT89C51单片机的组成结构2
3.1.2AT89C51单片机的引脚及功能4
3.2步进电机6
3.2.1步进电机的工作原理6
3.2.2控制原理7
3.2.3步进电机的驱动方式8
3.2.4最小系统9
3.3输入显示部分10
3.4电源11
4软件程序设计11
4.1主程序的设计12
4.2定时中断设计13
4.3外部中断设计13
4.4系统软件程序14
总结19
致谢20
参考文献21
1课题描述
传统的步进电机控制方法是由触发器产生控制脉冲来进行的,此种方法工作方式单一且难于实现人机交互,当步进电机的参数发生变化是,需要重新进行控制器的设计。
而且由传统的触发器构成的控制系统具有控制电路复杂、控制精度低、生产成本高等缺点。
由单片机控制的步进电机克服了以上缺点。
它具有很高的精度,一般用在精确定位方面。
步进电机是一种将数字信号直接转换成角位移或线位移的控制驱动元件,具有快速起动和停止的特点。
其驱动速度和指令脉冲能严格同步,具有较高的重复定位精度,并能实现正反转和平滑速度调节。
它的运行速度和步距不受电源电压的波动及负载的影响,因而被广泛应用于数模转换、速度控制和位置控制系统。
步进电动机以其显著的特点,在数字化制造时代发挥着重大的用途。
常见的步进电机分三种:
永磁式(PM)、反应式(VR)、混合式(HB),永磁式步进一般分为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。
在欧美等发达国家早已被淘汰;混合式步进是指混合了永磁式和反应式的优点。
它又分为两相和五相:
两相步进角一般为1.8度而五相步进角一般为0.72度,这种步进机应用最为广泛。
目前使用单片机控制,单片机为微控制器的下位机和以计算机为上位机的步进电机控制系统,用软件代替步进控制器,使得线路简单,成本低,可靠性大大增加,灵活改变步进电机的控制方案,无需逻辑电路组成时序发生器,软件编程可灵活产生步进电机励磁序列来控制步进电机的运行方式。
用此方式设计步进电机控制系统顺应了目前国内外控制系统微机化发展的趋势,充分利用了单片机的优点,使得通用性得到了提高。
伴随不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。
2总体实现原理
步进电机的系统总体框图如图1,在系统中采用AT89C51单片机产生A、B、C、D四相信号(更具实际需要,可以扩充更多相信好)。
当采用单片机控制时,需要在单片机和步进电机之间设置隔离电路以使强弱分开。
由于步进电机的驱动电流相对较大,可增设放大电路来提供步进电机的工作电流。
系统电路由5部分
组成,即:
输入显示部分。
AT89C51单片机;直流电压和步进电机。
图1系统总体框图
3步进电机原理及硬件设计
3.1单片机电路
本系统采用A89C51单片机产生控制信号单片机内部的内存即可满足要求。
如需要扩展较多的外部RAM和ROM可加上数据缓冲器。
步进电机控制信号通过AT89C51单片机其中一个口进行扩充。
为了增加步进电机工作的灵活性,在启动步进电机工作之后,当有键按下,设置产生外部中断,达到灵活控制电机的目的。
下面介绍一下AT89C51单片机。
3.1.1AT89C51单片机的组成结构
AT89C51单片机内部硬件结构框图如图2所示。
它由一个8位中央处理器(CPU)、一个256B片内RAM及4KBFlashROM、21个特殊功能寄存器、4个8为并行I/O口以及中断系统等部分组成,各功能部件通过片内单一总线连成一个整体,集成在一块芯片上。
(1)CPU
CPU是单片机的核心部分,CPU包括两个基本部分:
运算器和控制器。
①运算器
运算器即算术逻辑单元ALU,是进行算术或逻辑运算的部件。
可实现算术运算和逻辑运算。
操作的结果一般送回累加器ACC,而其状态信息送至程序状态寄存器PSW。
②控制器
控制器是用来控制计算机工作的部件。
控制器接收来自存储器的指令,使各部件协调工作,完成指令所规定的操作。
图2AT89C51单片机内部结构示意图
(2)内部存储器
①内部数据存储器
AT89C51芯片内共有256B(地址为00H-FFH)的数据存储器,其中高128B(地址为:
80H-FFH)被专用寄存器占用,能作为寄存器供用户使用的只是低128B(地址为:
00H-7FH),用于存放可读写的数据,如程序执行过程中的变量。
②内部程序存储器
AT89C51共有(地址为:
0000H-0FFFH)的flash程序存储器,用于存放程序、原始数据或表格常数。
(3)定时/计数器
AT89C51共有两个16位的定时/计数器都可以设置成计数方式,用于对外部事件进行计数;也可设置成定时方式,并可以根据计数或定时的结果实现对单片机运行的控制。
(4)并行I/O口
用于进行单片机内外的传输,4个8位的I/O口(P0、P1、P2、P3)。
每个8位的口,既可用作输入口,也可用作输出口,每个口即可以8位同步读写,又可对每一位进行单独的操作。
标准I/O口的主要功能相当于一个8位锁存器,能存储一个字节的二进制数据,以保持与之相连接的8条口线各自电位的高低状态。
3.1.2AT89C51单片机的引脚及功能
AT89C51共有40个引脚,下面介绍一下它们的主要功能。
(1)P0口
P0口某一位的结构图如图3所示,一个输出锁存器、两个三态缓冲器、一
图3P0口的结构示意图
个转换开关MUX、一个输出驱动电路(T1和T2)和一个与门及一个非门组成。
(2)P1,P2,P3口
P1口是唯一的单功能口,位结构图如图4所示,仅能作为通用I/O口使用,P1口是8位准双向口,作通用输入/输出口使用,Pl口有别于P0口,它接有内部上拉电阻。
P1口的每以一位可以独立地定义为输人或者输出,因此,P1口既可作为8位并行输入/输出口,又可作为8位输入/输出端。
CPU既可以对P1口进行字节操作,又可以进行位操作。
当作输入方式时,该位的锁存器必须顶写1。
P2口是8位准双向输入/输出接口,当外接程序存储据时,P2口给出地址的高8位,此时不能用作通用,I/O口。
当外按数据存储器时,若RAM小于256KB,用R0、R1作间址寄存器,只需要P0口送出地址低8位,P2口可以用
图4P1口的位结构图
作通用I/O;若RAM大于256KB,必须用16位寄存器DPTR作间址寄存器.则P2口只能在一定限度内作一股I/O口使用。
P3口是多功能口,同P0口一样,当做输入口时,必须先向锁存器写“1”,使场效应管T截止。
(3)主电源引脚GND和Vcc
GND(20):
接地;Vcc(40):
正常操作时接十5V电源
(4)外接晶体引脚XTAL1和XTAL2
当外接晶体振荡器时,XTAL1和XTAL2分别接在外接晶体两端,当采用外部时钟方式时,XTAL1接地,XTAL2接外来振荡信号。
(5)控制引脚
RST/Vpp(9):
当振荡器正常运行时,在此引脚上出现二个机器周期以上的高电平使单片机复位。
Vcc掉电期间,此引脚可接备用电源,以保持内部RAM的数据。
当Vcc下降掉到低于规定的水平,而VPD在其规定的电压范围内,VPD就向内部RAM提供备用电源。
ALE(30):
当访问外部存储器时,由单片机的P2口送出地址的高8位,P0口送出地址的低8位,数据也是通过P0口传送。
作为P0口某时选出的信息到底是低8位地址还是传送的数据,需要有一信号同步地进行分别。
当ALE信号(允许地址锁存)为高电平(有效).P0口送出低8位地址,通过ALE信号锁存低8位地址。
PSEN(29):
程序存储器读选通信号,低电平有效。
EA/Vpp(31):
当EA保持高电平时,访问内部程序存储器(4K8),但当PC(程序计数器)值超过OFFFH时,将自动转向执行外部程序存储器内的程序当EA保持低电平时,则只访问外部程序存储器(从0000H地址开始),不管单片机内部是否有程序存储器。
3.2步进电机
3.2.1步进电机的工作原理
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
它将脉冲信号转变成角位移,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。
设计中采用了20BY-0型步进电机,该电机为四相步进电机,采用单极性直流电源供电。
只要对步进电机的各相绕组按合适的时序通电,就能使步进电机转动。
当某一相绕组通电时,对应的磁极产生磁场,并与转子形成磁路,这时,如果定子和转子的小齿没有对齐,在磁场的作用下,由于磁通具有力图走磁阻最小路径的特点,则转子将转动一定的角度,使转子与定子的齿相互对齐。
其中步进电机的静态指标及术语如下。
(1)相数:
产生不同队N、S磁场的激磁线圈对数,常用m表示。
(2)拍数:
完成一个磁场周期性变化所需脉冲用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB→BC→CD→DA→AB,四相八拍运行方式即A→AB→B→BC→C→CD→D→DA→A。
(3)步距角:
对应一个脉冲信号,电机转子转过的角位移用θ表示。
(4)定位转矩:
电机在不通电的状态下,电机转子自身的锁定力矩(由磁场齿的谐波以及机械误差造成的)。
(5)静转矩:
电机在额定静态作业下,电机不做旋转运动时,电机转轴的锁定力矩。
此力矩是衡量电机体积的标准,与驱动电压及驱动电源等无关。
虽然静态转矩与电磁激磁匝数成正比,与定子和转子间的气隙有关。
3.2.2控制原理
根据系统的控制要求,控制输入部分设置了启动控制,换向控制,加速控制和减速控制按钮,分别是K1、K2、S2、S3,控制电路如图5所示。
通过K1、K2状态变化来实现电机的启动和换向功能。
当K1、K2的状态变化时,内部程序检测P1.0和P1.1的状态来调用相应的启动和换向程序,发现系统的电机的启动和正反转控制。
图5控制电路原理图
根据步进电机的工作原理可以知道,步进电机转速的控制主要是通过控制通入电机的脉冲频率,从而控制电机的转速。
对于单片机而言,主要的方法有:
软件延时和定时中断在此电路中电机的转速控制主要是通过定时器的中断来实现的,该电路控制电机加速度主要是通过S2、S3的断开和闭合,从而控制外部中断根据按键次数,改变速度值存储区中的数据(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,从而改变了电机的转速。
3.2.3步进电机的驱动方式
步进电机常用的驱动方式是全电压驱动,即在电机移步与锁步时都加载额定电压。
为了防止电机过流及改善驱动特性,需加限流电阻。
由于步进电机锁步时,限流电阻要消耗掉大量的功率,故限流电阻要有较大的功率容量,并且开关管也要有较高的负载能力。
图6步进电机驱动电路
通过ULN2803构成比较多的驱动电路,电路图如图6所示。
通过单片机的
P1.0-P1.3输出脉冲到ULN2803的1B-4B口,经信号放大后从1C-4C口分别输出到电机的A、B、C、D相。
步进电机的另一种驱动方式是高低压驱动,即在电机移步时,加额定或超过额定值的电压,以便在较大的电流驱动下,使电机快速移步;而在锁步时,则加低于额定值的电压,只让电机绕组流过锁步所需的电流值。
这样,既可以减少限流电阻的功率消耗,又可以提高电机的运行速度,但这种驱动方式的电路要复杂一些。
驱动脉冲的分配可以使用硬件方法,即用脉冲分配器实现。
3.2.4最小系统
单片机最小系统或者称为最小应用系统,即用最少的元件组成的单片机可以工作的系统,对单片机来说,最小系统一般应该包括:
单片机、复位电路、晶振电路。
复位电路:
使用了独立式键盘,单片机的P1口键盘的接口。
该设计要求只需4个键对步进电机的状态进行控制,但考虑到对控制功能的扩展,使用了6路独立式键盘。
复位电路采用手动复位,所谓手动复位,是指通过接通一按钮开关,使单片机进入复位状态,晶振电路用30PF的电容和一12M晶体振荡器组成为整个电路提供时钟频率。
如图7所示。
图7复位及时钟振荡电路
晶振电路:
89C51单片机的时钟信号通常用两种电路形式电路得到:
内部震荡方式和外部中断方式。
在引脚XTAL1和XTAL2外部接晶振电路器(简称晶振)或陶瓷晶振器,就构成了内部晶振方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。
内部振荡方式的外部电路如图7所示。
其电容值一般在5-30pf,晶振频率的典型值为12MHz,采用6MHz的情况也比较多。
内部振荡方式所得的时钟信号比较稳定,实用电路实用较多。
3.3输入显示部分
本系统是基于提高智能机灵活性而设计的,对于步进电机的频率、步数、位置和停止等通过键盘输入相应指令,由单片机输出步进电机控制信号来实现控制,用数码管显示输入的参数并在工作时动态显示剩下的步数。
显然,要显示一个字型就应该使此字型的相应发光二极管点亮,实际上就是送一个不同电平的组合代表的数据到数码管。
在该步进电机的控制器中,电机可以正反转,可以加速、减速,其中电机转速的等级分为七级,为了方便知道电机的运行状态和电机的转速的等级,这里设计了电机转速和电机的工作状态的显示电路。
在显示电路中,主要是利用了单片机的P0口和P2口。
采用两个共阳数码管作显示。
显示电路如图8所示。
图8显示电路
第一个数码管接的a、b、c、d、e、f、g、h分别接P0.0~P0.7口,用于显示电机正反转状态,正转时显示“1”,反转时显示“一”,不转时显示“0”。
第二个数码管的a、b、c、d、e、f、g、h分别接P2.0~P2.7口,用于显示电机的转速级别,共七级,即从1~7转速依次递增,“0”表示转速为零。
3.4电源
系统中包含弱电和强电两部分,需要提供两种电源电压。
这里采用集成稳压器CW7805和输出电压可变的LM317来分别提供5V和1.25V-37V电压,两电压不共地。
其中一路给单片机供电,另一路给步进电机供电。
将各部分合在一起总体电路如图9所示
图9总体电路
4软件程序设计
在步进电机系统中,相应的控制信号由单片机来产生,根据需要通过键盘输入电机的转动方向、转动速率和转动步数,在工作使用数码管来动态显示剩下的步数。
所以,软件部分由4大模块组成:
主程序部分、定时器中断部分、外部中断0和外部中断1部分,其中主程序的主要功能是系统初始参数的设置及启动开关的检测,若启动开关合上则系统开始工作,反之系统停止工作;定时器部分控制脉冲频率,它决定了步进电机转速的快慢;两个外部中断程序要做的工作都是为了完成改变速度这一功能。
下面分析主程序与定时器中断程序及外部中断程序。
4.1主程序的设计
主程序中要完成的工作主要有系统初始值的设置、系统状态的显示以及各种开关状态的检测判断等。
其中系统初始状态的设置内容较多,该系统中,需要初始化定时器、外部中断;对P1口送初值以决定脉冲分配方式,速度值存储区送初值决定步进电机的启动速度,对方向值存储区送初值决定步进电机旋转方向等内容。
若初始化P1=11H、速度和方向初始值均设为0,就意味着步进电机按相单四拍运行,系统上电后在没有操作的情况下,步进电机不旋转,方向值显示“0”,
速度值显示“0”,主程序流程图如图10所示
图10主程序流程图
4.2定时中断设计
步进电机的转动主要是给电机各绕组按一定的时间间隔连续不断地按规律通入电流,步进电机才会旋转,时间间隔越短,速度就越快。
在这个系统中,这个时间间隔是用定时器重复中断一定次数产生的,即调节时间间隔就是调节定时器的中断次数,因而在定时器中断程序中,要做的工作主要是判断电机的运行方向发下一个脉冲,以及保存当前的各种状态。
程序流程图如图11所示。
图11定时中断程序流程
4.3外部中断设计
外部中断所要完成的工作是根据按键次数,改变速度值存储区中的数据(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,也就是改变了电机的转速。
速度增加按钮S2为INT0中断,其程序流程为原数据,当值等于7时,不改变原数值返回,小于7时,数据加1后返回;速度减少按钮S3,当原数据不为0,减1保存数据,原数据为0则保持不变。
程序流程图如图12所示。
图12外部中断程序流程图
4.4系统软件程序
SPEEDEQU10H。
SPEED为转速等级标志,共7级,即1-7
FXEQU11H。
FX为方向标志COUNTEQU12H。
COUNT中断次数标志
ORG0000H
AJMPMAIN
ORG0003H。
外部中断0入口地址,加速子程序
AJMPUP
ORG0013H。
外部中断1入口地址,减速子程序
AJMPDOWN
ORG000BH。
定时器0中断入口地址,控制中断次数来达到控制转速
AJMPZDT0
ORG0030H
MAIN:
MOVSP,#60H
MOVTMOD,#01H。
工作于定时、软件置位启动!
模式1(16位计时器)
MOVTH0,#0CFH
MOVTL0,#2CH
MOVCOUNT,#01H
SETBET0。
定时/计数器允许中断
CLRIT0。
外部中断为电平触发方式,低电平有效
CLRIT1
SETBEX0。
外部允许中断
SETBEX1
SETBEA。
开总中断
MOVR1,#11H。
四相单四拍运行,共阳数码管方向显示8,速度值显示0
MOVSPEED,#00H
MOVFX,#00H
XIANS:
MOVA,SPEED
MOVDPTR,#LED
MOVCA,@A+DPTR。
查表获取等级对应数码管代码
MOVP2,A。
第二个数码管显示转速等级
MOVA,FX。
准备判断转向
CJNEA,#11H,ELS
MOVP0,#0F9H。
第一个数码管显示1,表示正转
AJMPQD
ELS:
CJNEA,#00H,ZHENG
MOVP0,#0C0H。
第一个数码管显示0,表示不转
AJMPQD
ZHENG:
MOVP0,#0BFH。
第一个数码管显示-,表示反转
QD:
JBP3.4,DD。
P3.4接启动开关K1,P3.4=1时启动
CLRTR0。
停止定时/计数器
MOVP0,#0C0H。
第一个数码管显示0,表示不转MOVP2,#0C0H。
第二个数码管显示0,表示转速为0
MOVSPEED,#00H。
重新赋初值
MOVFX,#00H
AJMPQD
DD:
MOVA,SPEED
JNZGO。
A不等于0,即初始速度不为零,则转移到GO
CLRTR0。
停止定时/计数器
AJMPQD
GO:
SETBTR0。
开启定时/计数器
ACALLDELAY
AJMPXIANS
DELAY:
MOVR6,#10。
延时子程序
DEL1:
MOVR7,#250
HERE1:
DJNZR7,HERE1
DJNZR6,DEL1
RET
。
以下ZDT0为定时器中断程序
ZDT0:
PUSHACC
PUSHDPH
PUSHDPL
MOVTH0,#0D8H
MOVTL0,#0F0H
DJNZCOUNT,EXIT
JBP3.5,NIZHUAN。
查询方向标志,P3.5接换向开关K2
MOVFX,#11H
NIZHUAN:
MOVA,FX
CJNEA,#11H,FZ。
若A不等于11,即正转,则转移到FZ
MOVA,R1。
R1记录上一次电机脉冲状态
MOVP1,A
RRA。
循环右一位
MOVR1,A
MOVP1,A
AJMPRE
FZ:
MOVA,R1
MOVP1,A
RLA。
循环左移一位
MOVP1,A
MOVR1,A
RE:
MOVA,SPEED
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVCOUNT,A。
把转速级别赋给COUNT
JBP3.5,FFX。
P3.5接换向开关K2,即换向位,若P3.5=1,则跳到FFXMOVFX,#11H
AJMPEXIT
FFX:
MOVFX,#0FEH。
只要FX不等于11H,就可以通过循环左移或右移进行换向
EXIT:
POPDPL
POPDPH
POPACC
RETI
。
以下UP为加速中断程序
UP:
PUSHACC
ACALLDELAY。
延时防抖动
JBP3.2,UPEX。
P3.2为外部中断0位,接增速开关S2,低电平有效,若P3.2=1,则退出
MOVA,SPEED
CJNEA,#7,SZ。
最大等级为7,若A不等于7,则转移到SZ
AJMPUPEX。
若A=7,则退出
SZ:
INCSPEED。
SPEED=SPEED+1
UPEX:
POPACC
HERE2:
JNBP3.2,HERE2。
本条指令为防止开关S2按下去后弹不起,导致一直产生中断
RETI
以下DOWN为减速中断程序
DOWN:
PUSHACC
ACALLDELAY
JBP3.3,DEX。
P3.3为外部中断1位,接减速开关S3,低电平有效,若P3.3=1,则退出
MOVA,SPEED
CJNEA,#0,SJ
AJMPDEX
SJ:
DECSPEED。
S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 方案 步进 电机 控制 设计方案