三相步进电机的微机与单片机控制设计.docx
《三相步进电机的微机与单片机控制设计.docx》由会员分享,可在线阅读,更多相关《三相步进电机的微机与单片机控制设计.docx(15页珍藏版)》请在冰豆网上搜索。
三相步进电机的微机与单片机控制设计
目录
1设计目的及意义-1-
1.1设计目的-1-
1.2设计意义-1-
2方案论证-2-
2.1设计要求-2-
2.2方案论证-2-
3硬件电路设计-3-
3.1设计思路,元件选型-3-
3.2控制原理图-5-
3.3硬件连线图-6-
4软件设计-8-
4.1.1微机方案的软件设计-8-
4.1.2单片机方案的软件设计-8-
4.2方框图-9-
4.3程序清单-11-
5总结-16-
6参考文献-17-
1设计目的及意义
1.1设计目的
1.巩固和加深课堂所学知识;
2.学习掌握一般的软硬件的设计方法和查阅、运用资料的能力;
3.通过步进电机控制系统设计与制作,深入了解与掌握步进电机的运行方式、方向、速度、启/停的控制以及单三拍、双三拍和三相六拍等工作方式的控制。
1.2设计意义
步进电机是工业过程控制及仪表中的主要控制元件之一。
在数字控制系统中,由于它可以可以直接接受计算机来的数字信号,不需要进行数模转换,所以用起来更方便。
步进电机角位移与控制脉冲间的精确同步。
若将角位移的改变转变为线性位移、位置、体积、流量等物理量的变化,便可实现对它们的控制。
正因为步进电机具有快速启停,精确步进以及能直接接收数字量等特点,所以使其在定位场合中得到了广泛的应用。
特别在工业过程控制系统中,使用开环控制模式,微型计算机可以很容易控制步进电机的位置和速度,而不用使用位移传感器,所以应用越来越广泛。
学会使用微型计算机控制步进电机也就显得很重有必要了。
2方案论证
2.1设计要求
控制步进电机正转、反转,加速,减速。
完成步进电机单三拍、双三拍和三相六拍等工作方式的控制,画出控制步进电机的电路图,并编程完成软件部分。
2.2方案论证
方案一:
使用微机+8255A,外加驱动电路使用循环查表法实现
因为步进电机是通过改变其输入脉冲来改变步进电机的输出状态的,所以此方案考虑选择用开关电路来改变其调用的子程序已达到改变其输入的脉冲。
故此方案使用开关电路,8255A的若干端口来进行。
由步进电机的原理可以知道其状态的特点,所以,可以考虑通过改变其脉冲的顺序来改变步进电机的转向,实现正转与反转,通过均匀地改变其脉冲时间间隔的长短来实现步进电机的加速与减速。
故此方案可以用8255的PA口和开关电路来选择各种状态的改变。
方案二:
使用单片机,外加驱动电路使用循环查表法实现
与方案一的区别不大,就是不需要8255,AT89C51直接与开关、接口电路相接,电路更简单。
3硬件电路设计
3.1设计思路,元件选型
⑴用控制器输出接口的每一位控制一相绕组。
⑵三种控制方式的数学模型分别为如下所述。
表3-1-1三相单三拍
表3-1-2三相双三拍
步序
控制位
工作状态
控制模型
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
C相
P1.1
B相
P1.0
A相
1
0
0
0
0
0
0
0
1
A
01H
2
0
0
0
0
0
0
1
0
B
02H
3
0
0
0
0
0
1
0
0
C
04H
步序
控制位
工作状态
控制模型
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
C相
P1.1
B相
P1.0
A相
1
0
0
0
0
0
0
1
1
AB
03H
2
0
0
0
0
0
1
1
0
BC
06H
3
0
0
0
0
0
1
0
1
CA
05H
表3-1-3三相六拍
步序
控制位
工作状态
控制模型
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
C相
P1.1
B相
P1.0
A相
1
0
0
0
0
0
0
0
1
A
01H
2
0
0
0
0
0
0
1
1
AB
03H
3
0
0
0
0
0
0
1
0
B
02H
4
0
0
0
0
0
1
1
0
BC
06H
5
0
0
0
0
0
1
0
0
C
04H
6
0
0
0
0
0
1
0
1
CA
05H
本次设计我选择三相六拍的控制设计
微机控制部分:
步进电机接口的硬件部分主要是提供输送相序代码的并行数据线(6根),以及保护电机绕组的器件,所以接口电路以8255A为主芯片,将PA口作数据口,传送加电代码,再加上锁存器74LS373作绕组保护。
另外,还有功率驱动管TIP122,以及二极管、开关K0、K1、K2、K3。
本实验采用A口作为控制口,B口作为输出口,PA0、PA1、PA2、PA3分别接开关的K0、K1、K2、K3,PB0、PB1、PB2分别接步进电机的ABC。
单片机控制部分:
使用单片机控制的电路与使用微机实现的电路很相似,主要由:
AT89C51、TIP122驱动管,以及二极管、开关K0、K1、K2、K3组成。
3.2控制原理图
图3.1微机控制原理图
……
图3.2单片机控制原理图
……
负载
3.3硬件连线图
图3.3.1微机步进电机控制系统硬件接线图
如上图所示:
左边一芯片,从上到下,依次为开关K0、K1、K2、K3,与之相对应的接线端口为PA0、PA1、PA2、PA3口,最右端为步进电机,往左为驱动芯片,再次之为8255的扩展端口。
表3-3-1各开关对应的步行电机状态表
开关
步进电机状态
K3
K2
K1
K0
0
0
0
0
停止
0
0
0
1
启动正转
0
0
1
1
启动反转
0
1
0
1
正转加速
0
1
1
1
反转加速
1
0
0
1
正转减速
1
0
1
1
反转减速
图3.3.2单片机步进电机控制系统硬件接线图
如上图所示:
左边一AT89C51芯片,从上到下,依次为开关K0、K1、K2、K3、K4,与之相对应的接线端口为P3.0、P3.1、P3.2、P3.3、P3.4口,最右端为步进电机,往左为驱动芯片,再次为P1.0、P1.1、P1.2端口。
表3-3-2各开关对应的步行电机状态表
开关
步进电机状态
K0
正转
K1
反转
K2
加速
K3
减速
K4
停止
4软件设计
4.1.1微机方案的软件设计
实现步进电机运行方式、方向和加速、减速以及启/停的控制,是接口软件设计的主要任务。
为此,在编写程序之前,要建立一个相序表。
相序表的建立应根据步进电机运行方式的要求及各绕组与8255A端口连接情况来确定加电代码。
根据上图的连接情况,可以写出相序表中三相6拍运行方式的加电代码为:
01H,03,02H,06H,04H,05H。
在8255初始化完毕后,取出相序表的首地址,将其存入BX。
当要求步行电机正转时,首地址进行加1操作。
在次过程中要检查指针是否指到末地址。
若是,指针减5,回到首地址,如此循环。
当要求反转时,将首地址进行加5操作到达末地址,在进行减1操作,在次过程找要检查指针是否到达首地址。
如是,则将指针加5回到末地址。
根据设计流程图,软件设计部分将本系统分为6个子程序,分别是正向转子程序、反向转子程序、常速延时子程序、加速延时子程序、减速延时子程序、通用延时子程序。
4.1.2单片机方案的软件设计
使用单片机实现控制,接口软件与使用微机相类似,选择工作方式3来实现步进电机的正转、反转、加速、减速,即通过开端电路来实现步进电机在不换硬件接线的情况下实现各种状态的转换。
4.2方框图
反转减速
图4.2.2单片机控制方框图
停止
4.3程序清单
微机程序清单:
DATASEGMENT
LIUDB01H,03H,02H,06H,04H,05H
DATAENDS
STACKSEGMENTPARASTACK‘STACK’
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,DATA
MOVAX,STACK
MOVSS,AX
COUNT1EQU0C300H;初始转速延时
COUNT2EQU0B300H;高速延时
COUNT3EQU0FFF0H;慢速延时
COUNT4EQU0FEEH;步数,至少40步
MOVBX,OFFSETLIU
MOVDX,PORTCTR
MOVAL,90H
OUTDX,AL;送入8255控制字
LOOP1:
INAL,PORTA
MOVAH,AL
ANDAH,01H
CMPAH,01H;判断开关K0是否闭合
JNZLOOP1
MOVAH,AL
ANDAH,02H
CMPAH,02H;判断开关K2是否闭合
JNZZZ
JMPFZ
;…………………………………………………………………………….
ZZ:
MOVAH,AL;正向转子程序
INAL,PORTA
ANDAL,0CH
PUSHAX
MOVAL,[BX]
CMPAL,05H;检查是不是最后一个加电代码
JNZXH1
SUBBX,5
XH1:
INCBX;指针作加1运算,及实现向后移动
MOVDL,[BX]
OUTPORTB,AL;从B口输出
POPAX
CMPAL,00H
JNZX1
CALLCHANGSU;调用常速延时
X1:
CMPAL,04H
JZX2
CALLJIASU;调用加速延时
X2:
CMPAL,08H
JZX3
CALLJIANSU;调用减速延时
X3:
JMPSTART
;…………………………………………………………………………….
FZ:
MOVAH,AL;反向转子程序
INAL,PORTA
ANDAL,0CH
CMPAL,00H
PUSHAX
MOVAL,[BX]
CMPAL,01H;检查是不是第一个加电码
JNZFXH1
ADDBX,5;若是第一个加电码,则指针加5跳到最后一个加电码
FXH1:
DECBX;指针减1,实现向前移动
MOVAL,[BX]
OUTPORTB,AL
POPAX
CMPAL,00H
JNZX1
CALLCHANGSU;调用常速延时
X1:
CMPAL,04H
JZX2
CALLJIASU;调用加速延时
X2:
CMPAL,08H
JZX3
CALLJIANSU;调用减速延时
X3:
JMPSTART
;…………………………………………………………………………….
CHANGSU:
PUSHCX;短延时子程序
MOVCX,COUNT1;