#基于单片机的步进电动机控制系统设计.docx
《#基于单片机的步进电动机控制系统设计.docx》由会员分享,可在线阅读,更多相关《#基于单片机的步进电动机控制系统设计.docx(32页珍藏版)》请在冰豆网上搜索。
#基于单片机的步进电动机控制系统设计
龙岩学院
毕业论文(设计)
题目:
基于单片机的步进电动机
控制系统设计
专业:
电气工程及其自动化
作者:
谢吉湖
指导教师(职称):
刘生建
(讲师)
二0 0九 年 三 月 日
龙岩学院
毕业论文(设计)开题报告
2009年 3月 日
论文(设计)题目:
基于单片机的步进电动机控制系统的设计
姓名
谢吉湖
年级
2006级
所在院系
物理和机电工程学院
专业
电气工程及其自动化
指导教师
刘生建
开展本课题的意义及工作内容:
数字化电动机控制技术的发展使电机这个古老的机电能量转换装置得到新的发展和广泛运用,极大的改善了工农业的生产效率,改善了人民的生活水平。
步进电动机是纯粹的数字控制电动机,它将电脉冲信号转变成角位移,即给一个脉冲信号,步进电动机就转一个角度,因此非常适合于单片机控制。
总体安排及进度:
第1周:
到图书管或上网查找资料
第2周:
整理所找来的资料
第3周:
初步完成本系统的设计给指导老师批改
第4周:
根据老师的点评完善本系统的设计
课题预期达到的效果:
本文以单片机为控制核心,达到理想的步进电动机位置控制和加减速控制。
指导教师意见:
签名:
基于单片机的步进电动机控制系统设计
学院:
物理和机电工程学院专业:
电气工程及其自动化
学号:
2006040632姓名:
谢吉湖指导老师:
刘生建
【摘要】数字化电机控制技术的发展使得电机这一古老的机电能量转换装置得到新的发展和广泛的使用,并极大地提高了工农业生产效率,改善了人民的生活水平。
步进电动机是纯粹的数字控制电动机,它将电脉冲信号转变成角位移,即给一个脉冲信号,步进电动机就转一个角度,因此非常适合于单片机控制。
为了提高步进电机控制系统的动态性能和控制精度提出基于单片机的步进电机控制系统设计方法,包括系统硬件、软件及加减速控制算法的设计。
【关键词】单片机步进电机控制系统位置控制加减速控制
摘要、关键词-----------------------------------------------------------------------------3
第一章三相反应式步进电动机原理及控制-------------------------5
一三相反应式步进电机的工作原理--------------------------5
二步进电动机控制----------------------------------------6
第二章系统硬件设计-----------------------------------------------------------------6
一脉冲分配电路---------------------------------------------------------------6
二功率放大电路设计---------------------------------------------------------8
第三章系统软件设计---------------------------------------------------------------8
一位置控制---------------------------------------------------------------------8
(一)位置控制设计--------------------------------------------8
(二)位置控制设计程序实现------------------------------------8
二加减速控制-------------------------------------------------------------------9
(一)加减速控制设计------------------------------------------9
(二)加减数控制程序实现--------------------------------------11
致谢词-------------------------------------------------------------------------------------12
参考文献----------------------------------------------------------------------------------12
附录1系统程序----------------------------------------------------------------------13
附录2位置控制单片机程序--------------------------------------------------------19
附录3加减速控制单片机程序-----------------------------------------------------21
引言:
随着微电子技术的发展,数字信号处理器以其强大的运算处理能力,较高的控制精度而在自动控制系统中普遍使用。
为了提高步进电机的控制性能和精度,本文以单片机AT89C51为控制核心,实现了三相反应式步进电机控制系统的设计。
第一章三相反应式步进电动机概述及控制
一、三相反应式步进电机的工作原理
三相反应式步进电动机由转子和定子两大部分组成如图1-1所示。
在定子绕组上有三对磁极,磁极上装有励磁绕组。
励磁绕组分为三相,分别为A、B、C三相绕组。
步进电机的转子是由软磁材料制成,在转子上均匀分布四个凸极,极上不装绕组,转子的凸极也称为转子的齿[1]。
图1-1三相反应式步进电动机原理图
当步进电动机的A相通电,B相和C相不通电时,由于A相绕组产生的磁通要经过磁阻最小的路径形成闭合磁路,这样将使转子齿13和定子A相对齐,如图中A相通电情况所示。
当A相断电,改为B相通电时,同A相通电情况一样,磁通也要经过磁阻最小的路径形成闭合回路,这样转子顺时针转过一定角度,使转子齿2、4和B相对齐,转子在空间转过的角度为
,如图B相通电所示。
当B相改为C相时,同时可使转子顺时针转过的角度为
空间角度,如图C相通电所示。
若按照A-B-C-A的通电顺序往复下去,则步进电机的转子将按一定速度沿逆时针方向旋转,步进电机转速取决于三相控制绕组的通、断电源的频率。
当按A-C-B-A顺时针通电时,步进电机的转动方向将改为顺时针。
在步进电机控制过程中,定子绕组每改变一次通电方式,称为一拍。
上述的通电控制方式,由于每次只有一相控制绕组通电,称为三相当三拍控制方式,除此控制方式外,还有三相单、双六拍工作方式和三相双三拍控制方式,在三相单、双六拍工作方式中,控制绕组通电顺序为A-AB-B-BC-C-CA-A或A-AC-C-CB-B-BA-A。
在三相双三拍控制方式中,控制绕组通电顺序为AB-BC-CA-AB或AC-CB-BA-AC。
步进电机每改变一次通电状态(一拍)转子转过的角度称为步进点饥的步距角,从图中可以看出三相单三拍的步距角为
,而三相单、双六拍步距角为
,三相双三拍的步距角为
。
步进电机的步距角
可通过下式计算
(1-1)
式中的m为步进电机的相数,对于三相步进电机
;C为通电状态系数,对于单拍或双拍方式工作时
;单双拍混合方式时
;
为步进电机转子的齿数。
步进电机的转速n可通过下式计算
(1-2)
式中,f为步进电机每秒的拍数,成为步进电机的通电脉冲频率。
二、步进电动机控制
步进电动机是数字控制系统中一种十分重要的自动化执行元件,在工业自动化装备,办公自动化设备中有着广泛的运用,近年来,控制技术、计算机技术以及微电子技术的迅速发展,有力地推动了步进电动机控制技术的进步,提高了步进电动机运动控制装置的使用水平。
过去电动机的控制多用模拟法,随着计算机使用技术的迅速发展,电动机的控制也发生了深刻的变化,步进电机常常和计算机一起组成高精度的数字控制系统。
模拟控制已经逐渐被使用单片机为主的混合控制和全数字控制所取代。
第二章系统硬件设计
步进电机是一种将电脉冲信号转换成角位移的执行机构,其转子角位移和输入脉冲的频率成正比,通过改变脉冲频率可以实现大范围的调速;同时,步进电机易于和计算机和其他数字元件接口,因此被使用于各种数字控制系统中[2],本设计的步进电动机控制系统由单片机(控制电路),脉冲分配电路、功率放大电路(驱动电路)、步进电动机及电源系统组成组成。
系统结构框图如图2-1所示。
图2-1系统结构框图
一、脉冲分配电路
由步进电动机的工作原理知道,要使电动机正常的一步一步地运行,控制脉冲必须按一定的顺序分别供给电动机各相。
给三相绕组轮流供电被称为脉冲分配,实现脉冲分配的方法有硬件法和软件法两种。
硬件分配法由环行分配器来实现,软件分配法由程序从计算机接口直接控制输出脉冲的速度和顺序[3]。
由于软件法在电动机运行过程中,要不停产生控制脉冲,占用大量CPU时间,可能使单片机无法同时进行其他工作(如监测等),所以本系统采用硬件法。
使用一种8713集成电路芯片。
8713属于单极性控制,用于控制三相和四相步进电机,可以选择以下不同的工作方式:
Ø三相步进电动机,单三拍,双三拍,六拍
Ø四相步进电动机,单四拍,双四拍,八拍
8713可以选择单时钟输入或双时钟输入;具有正反转控制、初始化复位、工作方式、和输入脉冲状态监视等功能;所有输入端内部都设有斯密特整形电路,提高抗干扰能力;使用4~18V直流电源,输出电流为20mA。
8713有16个引脚,各引角功能如表2-1所列[4]
表2-18713引脚功能
引脚
功能
说明
1
正转脉冲输入端
1.,2脚为双时钟输入端
2
反转脉冲输入端
3
脉冲输入端
3,4脚为单时钟输入端
4
转向控制端:
0--反转;1--正转
5,6
工作方式选择:
00为三(四)拍;01,10为单三(四)拍;11为六(八)拍
7
三/四相选择:
0--三相;1--四相
8
地
9
复位端。
低电平有效
10,11
12,13
输出端。
四相用13、12、11、10脚,分别代表A、B、C、D;三相用13、12、11脚,分别代表A、B、C
14
工作方式监视。
0为单三(四)拍;1为双三(四)拍;脉冲为六(八)拍
15
输出脉冲状态监视,和时钟同步
16
电源
8713脉冲分配器和单片机接口如图2-2
图2-28713脉冲分配器和单片机接口图
本系统选用单时钟输入方式,8713的3引脚为步进脉冲端,4引脚为转向控制端,这两个引脚的输入均由单片机提供和控制,所以5、6、7脚均接高电平。
由于采用了脉冲分配器,单片机只需提供步进脉冲,进行速度控制和转向控制,脉冲分配的工作交给脉冲分配器来自动完成。
因此CPU的负担减少很多。
二、功率放大电路
脉冲分配器8713的A、B、C三端输出电流很小,而所用的三相反应式步进电机驱动电流较大,每相静态电流为3A。
为满足驱动要求,系统设计了步进电机功率驱动电路,如图2-3所示(以A相为例)
图2—3步进电机功率驱动电路
电路采用三级晶体管放大,第一级用3DG6小功率管,第二级用3DK4中功率管,第三级用3DD15大功率管。
LA为步进电机A相绕组。
R15为限流电阻,保证电流稳态值;D2为续流二极管,防止3DD15关断时绕组反电势击穿管子。
C9为加速电容,动态工作时,利用其旁路作用,使电机绕组电流上升加快,来改善电流波形的前沿,提高电机高频性能[5]。
第二章系统软件设计
步进电机存在启动时失步,停止时振荡现象,这是影响步进电机控制精度的主要原因。
因此,软件设计主要介绍步进电动机位置控制和加、减速控制及程序实现。
1、位置控制
(一)位置控制设计
步进电动机每走一步,步数减1,如果没有失步的存在,当执行机构到达目标位置时,步数正好为0。
因此,用步数等于0来判断是否移动到目标位置,作为步进电动机停止运行信号。
绝对位置参数可作为人机对话的显示参数,或作为其他控制目的的重要参数,它和步进电动机的转向有关,当步进电动机正转时,步进电动机每走一步,绝对位置加1,当步进电动机反转,绝对位置随每次步进减1。
硬件连接如图2-2所示。
(二)位置控制设计程序实现
中断服务子程序框图,如图3-1所示,每次中断仍然改变一次P1.0的状态,每两次中断步进电动机才走一步。
图3-1中断服务子程序框图
本程序使用资源:
30H、31H——存放定时常数,低位在前;
32H~34H——存放绝对位置参数(假设用3字节),低位在前;
35H、36H——存放步数(假设最大值占2字节),低位在前。
步进电动机的正反转控制在主程序中实现,如果正转,使P1.1=1;如果反转,使P1.1=0。
二、加减速控制
(一)加减速控制设计
为满足加减速控制要求,本系统步进电机按照指数加减速曲线进行控制,如图3-2所示。
图3-2指数加减速曲线图
系统按指数曲线加减速时,驱动脉冲频率f和升数时间t的关系为:
(3-1)
式中fm为步进电机最高运行频率;是决定时间快慢的时间常数,实际工作中可由实验来确定。
实际运行中,若步进电机运行频率为fg,由式(公式3-1)可算出升速时间为:
(3-2)
由于DSP是用定时器比较中断方式来控制步进电机速度的,电机的加减速控制实际上是不断改变定时器周期寄存器的装载值。
为了编程的方便,可由阶梯曲线来拟合加速曲线,将升速段按照速度等间距均匀的离散为n档,如图3-3所示。
图3-3加速曲线离散化图
若步进电机启动脉冲频率为fg,稳定运行最高频率为fc,则相邻速度级的频率变化为:
(3-3)
则每一档频率fk为:
(3-4)
每一档运行时间Tk为:
(3-5)
式中tr(fk)、tr(fk+1)分别为运行频率fk及fk+1时的升速时间。
各分档速度的内运行速度Nk为:
(3-6)
则加速过程总步数Nr为:
(3-7)
执行加速控制时,对每档的速度读要计算在此台阶上应走步数,然后以递减方式查询。
当减至0时,表明该速度档步数已走完,进入下一档速度。
同时,递减加速过程总步数,直到加速过程走完。
以上是对步进电机加速过程的处理方法,减速过程的处理方法同加速过程[6]。
(二)加减数控制程序实现
本程序的资源分配如下:
R0——中间寄存器;R1——存储速度级数;R2——存储级步数;
R3——加减速状态指针,加速时指向35H,恒速时指向37H,减速时指向3AH;
32H~34H——存放绝对位置参数(假设用3字节),低位在前;
35H~36H——存放加速总步数(假设用2字节),低位在前;
37H~39H——存放恒速总步数(假设用3字节),低位在前;
3AH~3BH——存放减速总步数(假设用2字节),低位在前
定时常数系列存放在以ABC为起始地址的ROM中。
初始R3=35H,R1,R2都有初使值。
加减速程序框图如图3-4所示
图3-4加减速程序框图
致谢词:
在本设计完成之际,我要向所有给予我指导、关心、支持和帮助的人表示最衷心的感谢!
在设计本系统的过程中,我的指导老师刘生建老师给了我悉心的指导和帮助,他为本设计的研究和撰写提供了各种技术资料和技术咨询,特别是刘老师在许多关键问题上的正确指导才能使得我的设计得以顺利完成。
本人在设计之前也阅读了大量的相关的文献资料,从中汲取了丰富的知识,借此机会向我的导师和这些作者表示衷心的感谢!
参考文献
[1]许晓蜂。
电机及拖动。
[M]。
高等教育出版社,2007
[2]刘亚东,李从心,王小新。
步进电机速度的精确控制。
[J]。
上海交通大学出版社,2001,35,(10):
1517-1520
[3]周庆贵,黄章。
电气控制技术。
[M]。
化学工业出版社,2007
[4]王晓明。
电动机的单片机控制。
[M]。
北京航天航天大学出版社,2007
[5]孟武胜,李亮。
基于AT89C52单片机的步进电机控制系统的设计。
[J]。
测控技术,2006,25(11):
45-47。
[6]王瑾,基于DSP和CAN总线的步进电机控制系统。
[J]。
电子测量技术,2009,31
(1):
112-115
附录1系统程序
;相关参数定义
MAICHONGBITP1.0
FANGXIANGBITP1.1
FINISHBITP1.7
JUEDUIMAICHONG_LEQUR5
JUEDUIMAICHONG_MEQUR6
JUEDUIMAICHONG_HEQUR7
DANGQIANWEIZHI_LEQU30H
DANGQIANWEIZHI_MEQU31H
DANGQIANWEIZHI_HEQU32H
SHEDINGWEIZHI_LEQU33H
SHEDINGWEIZHI_MEQU34H
SHEDINGWEIZHI_HEQU35H
JIASU_STEP_LEQU36H
JIASU_STEP_HEQU37H
HENGSU_STEP_LEQU38H
HENGSU_STEP_MEQU39H
HENGSU_STEP_HEQU3AH
JIANSU_STEP_LEQU3BH
JIANSU_STEP_HEQU3CH
DANGQIANSUDUEQU3DH
ORG0000H
AJMPMAIN
ORG000BH;定时器0中断入口
LJMPTIME0_INT;调用定时器0中断子程序
ORG0040H
MAIN:
MOVR0,#00H
DJNZR0,$;等待系统电源稳定
MOVSP,40H;指定堆栈指针
CLRFINISH;清除完成标记
MOVDANGQIANSUDU,#0H;标示当前转速
;初始化定时器
MOVTMOD,#01H;定时器0设定在工作方式1,最大定时周期65536uS
MOVTH0,#3CH
MOVTL0,#0B0H;设定定时器0最大工作周期50mS
MOVIE,#82H;开定时器0中断
INIT_WEIZHI:
;手动设定当前位置和预定位置,模拟实际工作情况
CLRFINISH
MOVDANGQIANWEIZHI_L,#80H
MOVDANGQIANWEIZHI_M,#60H
MOVDANGQIANWEIZHI_H,#98H
MOVSHEDINGWEIZHI_L,#80H
MOVSHEDINGWEIZHI_M,#96H
MOVSHEDINGWEIZHI_H,#98H
LCALLINIT_JUEDUIMAICHONG;计算绝对偏差脉冲数
LCALLINIT_JIAJIANSU;计算加,恒,减速脉冲数
SETBTR0
JNBFINISH,$
JMPINIT_WEIZHI;返回初始化绝对位置脉冲数
;ORG
INIT_JUEDUIMAICHONG:
;计算绝对偏差脉冲数
CLRC
MOVA,SHEDINGWEIZHI_L
SUBBA,DANGQIANWEIZHI_L
MOVJUEDUIMAICHONG_L,A;计算绝对偏差脉冲数最低字节
MOVA,SHEDINGWEIZHI_M
SUBBA,DANGQIANWEIZHI_M
MOVJUEDUIMAICHONG_M,A;计算绝对偏差脉冲数中间字节
MOVA,SHEDINGWEIZHI_H
SUBBA,DANGQIANWEIZHI_H
MOVJUEDUIMAICHONG_H,A;计算绝对偏差脉冲数最高字节
JCQUFAN
SETBFANGXIANG
RET
QUFAN:
CLRC
MOVA,JUEDUIMAICHONG_L
CPLA;取反
MOVJUEDUIMAICHONG_L,A;计算绝对偏差脉冲数最低字节
MOVA,JUEDUIMAICHONG_M
CPLA;取反
MOVJUEDUIMAICHONG_M,A;计算绝对偏差脉冲数最低字节
MOVA,JUEDUIMAICHONG_H
CPLA;取反
MOVJUEDUIMAICHONG_H,A;计算绝对偏差脉冲数最低字节
CLRFANGXIANG
RET
;ORG
INIT_JIAJIANSU:
;加减速脉冲数计算
CLRC
CJNEJUEDUIMAICHONG_H,#01H,H_BUDENG;判断绝对位置脉冲数最高字节
CJNEJUEDUIMAICHONG_M,#86H,M_BUDENG;判断绝对位置脉冲数中间字节
CJNEJUEDUIMAICHONG_L,#0A0H,L_BUDENG;判断绝对位置脉冲数最低字节
MOVJIASU_STEP_H,#0C3H
MOVJIASU_STEP_L,#50H;设定加速脉冲数50000
MOVHENGSU_STEP_H,#0
MOVHENGSU_STEP_M,#0
MOVHENGSU_STEP_L,#0;设定恒速脉冲数0
MOVJIANSU_STEP_H,#0C3H
MOVJIANSU_STEP_L,#50H;设定减速脉冲数50000
H_BUDENG:
JNCDAYU
AJMPXIAOYU
CLRC
M_BUDENG:
JNCDAYU
AJMPXIAOYU
L_BUDENG:
JNCDAYU
AJMPXIAOYU
XIAOYU:
MOVA,JUEDUIMAICHONG_M
RRCA
MOVJIASU_STEP_H,A;设定加速脉冲数为绝对脉冲数的一半
MOVJIANSU_STEP_H,A;设定减速脉冲数为绝对脉冲数的一半
MOVA,JUEDUIMAICHONG_L
RRCA
MOVJIASU_STEP_L,A
MOVJIANSU_STEP_L,A
MOVA,#0
ADDCA,#0
MOVHENGSU_STEP_H,#0
MOVHENGSU_STEP_M,#0
MOVHENGSU_STEP_L,A;设定恒速脉冲数
RET
DAYU:
MOVJIASU_STEP_H,#0C3H
MOVJIASU_STEP_L,#50H;设定加速脉冲数50000
MOVJIANSU_STEP_H,#0C3H
MOVJIANSU_STEP_L,#50H;设定减速脉冲数50000
CLRC
MOVA,JUEDUIMAICHONG_L
SUBBA,#0A0H
MOVHENGSU_STEP_L,A
MOVA,JUEDUIMAICHONG_M
SUBBA,#086H
M