摘 要:本文论述了以单片机AT89C51为控制器的步进电机的控制系统,内容主要包括该系统的硬件组成,步进电机运行过程的详细分析,PC机与AT89C51单片机之间的串行通信以及AT89C51单片机对步进电机的控制程序流程图等。关键字:单片机; 通信; 步进电动机
1 引言
平为TTL电平,为了取得一致的传输信号,因此需要采用电平转换在电气时代的今天,电动机一直在现代化的生产和生活中起芯片MAX485。根据实际需求选用AT89C51单片机,但由于其数着十分重要的作用。无论是在工农业生产还是在日常生活中的家据存储区只有256个单元,需要扩展片外数据存储器6264。此外用电器,都大量地使用着各种各样的电动机。因此对电动机的控采用脉冲分配器CH250实现单片机对步进电动机的通电换向即脉制变得越来越重要了。电动机的控制技术的发展得力于微电子技冲分配,通过光电耦合器4N25实现步进电动机与单片机的电气隔术、电力电子技术、传感器技术、永磁材料技术、自动控制技术、离,由于单片机本身的驱动能力有限,因此需要采用专门的驱动电微机应用技术的最新发展成就。正是这些技术的进步使电动机控路单电压驱动来实现功率放大,从而为电动机提供足够大的电流。制技术在近二十多年内发生了翻天覆地的变化。其中电动机的控总体的硬件方框图如图1所示:制部分已由模拟控制逐渐让位于以单片机为主的微处理器控制。本文采用硬件和软件相结合的办法实现单片机对步进电动机的运动控制。
2 硬件部分
[2]
PC机与AT89C51单片机 之间的串行通信在硬件上是由转换器ATC-106和电平转换芯片MAX485来完成的。由于PC机图1 总体的硬件框图采用的是RS-232C接口标准,根据项目要求与生产中的实际情况,需要采用传输距离较远的RS-485,因此需要采用RS-232C
3 软件部分
收稿日期:2007-05-18
通过软件实现PC机与单片机间的异步串行通信。PC机采用查询的方式发送和接收数据,单片机采用中断的方式接收PC机 T —— 步进电动机运行第 +1 步时所用的时间
N
1+N
1
1
传送的信息,从而确定步进电动机的旋转方向,走的总的脉冲数; 即匀速运行每一步所需要的时间采用软件延时法控制脉冲的分配,从而控制步进电动机的整个运 由于采用软件延时的方法来控制单片机发出脉冲的时间间行过程。 隔即通过改变脉冲的频率来改变步进电动机的运行速度。在步进电动机匀加速运行阶段,只需按电动机每走一步所需要的时间
31 步进电动机运行的分析
[4]
来调用延时子程序即可。根据步进电动机 的加减速要有严格的控制要求,那就是保证在
-VV
1-
ii
不失步和过冲的前提下,用最快的速度和最短的时间移动到指定
=a
(6)
+
TT
1-
ii
位置。本设计要求步进电动机的速度按图2所示运行。
—— 步进电动机匀加速运行阶段走第i步时的速度
V
i
—— 步进电动机匀加速运行阶段走第i步时所用的时间
T
i
由于步进电动机在匀加速运行阶段走最后一步时的速度与匀速运行时的速度V相同
V
N
1
L
L
=V= 又因为 = 将其代入
=
且
V V
V
V
N
1+N
1
1
1-i
i
T
T
i
1-i
(2-6)
TL
TL
-
1-ii
整理得到
a=
+TT
-1ii
2
2
+
+
(7)
TaT
0=LT
TaTL
( )
-
1-ii
i
1-ii
图2 步进电动机的运行过程
通过软件调用一个开平方函数就可以求得首先令i=
N
1
由图可知匀加速阶段与匀减速阶段的加速度和减速度大小等直到 、T ,这样就可以求出步进电动机匀
、
、
T
1
T
T
T
2
1-N
3-N
2-N
1
1
1
相同,方向相反,加减速的时间相同,因此只需算出加速段走的步加速运行阶段从静止开始每走一步所用的时间。电动机在升速数就可以知道减速时所走的步数,二者是一样的。计算过程如下:过程中所走的总的步数即脉冲数为 ,从静止开始步进电动机
N
1
首先,恒速运行时的速度V是由用户设置的,因此是一个已在匀加速阶段每走一步,升速阶段的总步数就减1,通过软件延时知量。加速度a,一个脉冲走过的距离L,整个运行过程所走的步的方法来控制走每一步所用的时间,加速阶段的延时时间是逐渐数即总的脉冲数P也都是给定值。运行方向是根据用户的要求,这样进行下
、
直到 、 、
变短的,依次为 、
T
T
T
T
T
T
1
3-N
2
2-N
1
N
1-N
1
1
1
由软件确定的。去,直到 =0,加速过程结束,进入恒速运行阶段。步进电动机
N
1
接着计算步进电动机运行时间
N
在恒速过程中走的总步数为 ,从恒速运行开始,电动机每走一
3
—— 为步进电动机匀加速运行时所用
根据
tatV =1 1
步,恒速总步数就减1,因为恒速运行时走每一步用的时间都是相的时间同的,因此软件延时的时间均为 ,直到恒速总步数减为0,恒
T
V
1+N
1
可以求出t =
(1)
1
a
速过程结束,进入减速运行阶段。由于匀减速运行的过程是加速由于匀加速阶段与匀减速阶段的加速度大小相同,因此匀过程的逆过程,在匀加速运行阶段,步进电动机走的总的步数为
t
加速运行阶段所用的时间t 与匀减速运行时所用的时间 是相
2
1
,且 =N ,减速阶段电动机每走一步,减速总步数就减1,
N
N
1
1
2
2
2
at
。因为是匀加速运行,所以S=同的,即t =
,由a和t
t
1
1
1
2
2
软件延时的时间是逐渐变常的,依次为 、
、 、 直
T
T
T T
N
1-N
2-N 3-N
1
1
1 1
求出步进电动机匀加速运行阶段走过的总的距离,通过
2
到 、 ,减速总步数减为0,减速过程结束,电动机停止运行。
T
S
T
at
21
2
1
1
N
=
(2)
=
1
L
L 32 通信软件的设计
可以求出匀加速运行阶段步进电动机走的总步数即脉冲
[5]
PC机与AT89C51的串行通信程序 由两部分组成:一部分数。由于步进电动机匀减速运行阶段是匀加速运行阶段的逆过是PC机的通信程序,另一部分是AT89C51的通信程序。PC机程,因此匀减速运行阶段所走的步数与匀加速运行阶段所走
N
2
发送时,AT89C51单片机一定接收;PC机接收时,AT89C51单片的步数 是相同的,即 = ,由P、 和 可以求出步进电
N N N
N N
1
1
2
1 2
机肯定发送。而且对应发送和接收的字符要相同,否则不能达到动机匀速运行阶段走的总步数即脉冲数为 ,即
N
3
正常通信的目的。此次设计PC机采用8086/8088汇编语言编
N=P- - =P-2
(3)
N
N
N 1
3 1
2
写,AT89C51单片机端采用MCS-51语言编写。为了保证数据步进电动机匀速运行时走每一步即每一个脉冲所需要的时通信的可靠性,制定通信协议如下:间是相同的,根据
① PC机与AT89C51单片机都可以发送和接收
L
(4)
V=
② PC机与AT89C51单片机的通信波特率为9600bps,采
T
1+N
1
L
(5)
因此
T
=
用的晶振频率为24MHZ,定时器T1工作在模式2,SMOD设置
为1,TH1的预设值为0CH,TL1的预设值为00H。
③ PC机与AT89C51单片机均采用串行口方式3。
④ 帧格式为:1位起始位,8位数据位,1位偶效验位,1位停止位。
⑤ PC机发送的数据帧为:
表1 PC机发送数据帧表
帧起始标志为 02H,假设电动机的运行标号为5号,对应的ASCII码值为30H,35H两个字节表示。若命令为传送命令MOV则用0表示,其对应的ASCII码值为30H,用一个字节表示。D表示步进电动机运行的方向标志,若为0则表示电动机正转,其对应的ASCII码值为30H;若为1,则表示电动机反转,其对应的ASCII码值为31H。P表示PC机传送给单片机的总的走的脉冲数。若传送的命令为设置命令SET则用1表示,其对应的ASCII码值为31H,用一个字节表示。需要单片机设置的参数有:a, V和 L;为了便于PC机与AT89C51的通信编程,数据的长度取6个字节。传送的数据只有5个字节,剩余的1个字节均用ASCII码值30H补足,对应的为0。这样做不影响效验和。若为传送命令帧,则效验和定义为方向信号D与总的脉冲数P的十六进制之和再转换为相对应的ASCII码值。若为设置命令帧,则效验和定义为a、V与L的十六进制之和再转换为D对应的ASCII码值。帧结束标志为03H。
⑥ PC机采用查询的方式发送和接收数据,AT89C51单片机采用串行口中断的方式接收和发送数据。
33 控制软件的设计控制步进电动机匀加速、恒速、匀减速运行的程序流程图如图2。图2 控制步进电机的程序流程图
4 结束语
参考文献:
[1] 韩全立。单片机控制技术及应用[M]。北京:电子工业出采用本方案可以很好的实现对步进电动机的控制。目前此版社,2004方案已经成功应用于电机控制的工厂等并取得了良好的效益,并
[2] 求是科技。单片机典型模块设计实例导航[M]。北京:人正试图将其进一步完善以应用于压缩机、洗衣机等日常设备中。民邮电出版社,2004
[3] 胡汉才,单片机原理及系统设计[M]。北京:清华大学出当然,随着控制产品与控制技术的发展,步进电机的控制也会得到版社,2002进一步完善。
[4] 王晓明。电动机的单片机控制[M]。北京:北京航天航空大学出版社,2002
[5] 杨金岩,郑应强,张振仁。8051单片机数据传输接口扩展技术与应用实例[M]。北京:人民邮电出版社,2005
按照正常接线4个端口依次接A,A\,B,B\。
8拍实际上是这样的:A-AB-B-BA\-A\-A\B\-B\-B\A-A
这里面隐含了一个0的问题,就是比如第一拍A为1,则A\为0则AA\通电。BB\不通电。
第二拍A,B为1,则A\,B\为0AA\通电。BB\通电。依次类推,从而实现2细分,比如18度的电机就控制成09度的了。
扩展资料:
步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的,多相时序控制器。
虽然步进电机已被广泛地应用,但步进电机并不能像普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。
步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。
步进电机和驱动器的选择方法:
1 判断需多大力矩:静扭矩是选择步进电机的主要参数之一。负载大时,需采用大力矩电机。力矩指标大时,电机外形也大。
2 判断电机运转速度:转速要求高时,应选相电流较大、电感较小的电机,以增加功率输入。且在选择驱动器时采用较高供电电压。
3 选择电机的安装规格:如57、86、110等,主要与力矩要求有关。
4 确定定位精度和振动方面的要求情况:判断是否需细分,需多少细分。
5 根据电机的电流、细分和供电电压选择驱动器。
步进电机从其结构形式上可分为反应式步进电机(Variable Reluctance,VR)、永磁式步进电机Permanent Magnet,PM)、混合式步进电机(Hybrid Stepping,HS)、单相步进电机、平面步进电机等多种类型,在我国所采用的步进电机中以反应式步进电机为主。
步进电机的运行性能与控制方式有密切的关系,步进电机控制系统从其控制方式来看,可以分为以下三类:开环控制系统、闭环控制系统、半闭环控制系统。半闭环控制系统在实际应用中一般归类于开环或闭环系统中。
1 反应式:定子上有绕组、转子由软磁材料组成。结构简单、成本低、步距角小,可达12°、但动态性能差、效率低、发热大,可靠性难保证。
2 永磁式:永磁式步进电机的转子用永磁材料制成,转子的极数与定子的极数相同。其特点是动态性能好、输出力矩大,但这种电机精度差,步矩角大(一般为75°或15°)。
3 混合式:混合式步进电机综合了反应式和永磁式的优点,其定子上有多相绕组、转子上采用永磁材料,转子和定子上均有多个小齿以提高步矩精度。其特点是输出力矩大、动态性能好,步距角小,但结构复杂、成本相对较高。
按定子上绕组来分,共有二相、三相和五相等系列。最受欢迎的是两相混合式步进电机,约占97%以上的市场份额,其原因是性价比高,配上细分驱动器后效果良好。
该种电机的基本步距角为18°/步,配上半步驱动器后,步距角减少为09°,配上细分驱动器后其步距角可细分达256倍(0007°/微步)。由于摩擦力和制造精度等原因,实际控制精度略低。同一步进电机可配不同细分的驱动器以改变精度和效果。
参考资料:
可以将电机的任意两根线拧在一起,然后拧电机的轴,如果电机带力,说明拧在一起的两根线是同一绕组,另外2根线是另外一个绕组,然后将同一绕组的两根线分别接到驱动器的A+、A-或B+、B-。如果电机方向,可以将同一绕组的两根线进行交换就可以。
将同一绕组的两根线进行交换。
根据个人图书馆的相关资料显示,两相步进电机不要信号的接线方式为将同一绕组的两根线进行交换即可。
两相步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。
ULN2003,ULN2803都不能驱动2相4线步进电机(4相5线、4相6线、4相8线可以驱动)
ULN2003,只能向它灌入电流,输出为高阻态,zhi基本没输出电流。它一般用来吸收电流的。
比如数码管驱动,或者两相五线、两相六线的步进电机,这种步进电机有一个或两个公共端可以接电源正极,驱动电机,电流从其他各引线经过ULN2003流到地线上。通过控制ULN2003的输出状态来控制电机的节拍。
扩展资料:
ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLCULN2003芯片引脚图、数字量输出卡等控制电路中。可直接驱动继电器等负载。
输入5VTTL电平,输出可达500mA/50V。
ULN2003是高耐压、大电流达林顿系列,由七个硅NPN达林顿管组成。
该电路的特点如下: ULN2003的每一对达林顿都串联一个27K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
参考资料来源:百度百科-ULN2003
#include<reg52h>
#define uchar unsigned char
#define uint unsigned int
//--------------------------------
uchar step1[] = {0x05, 0x06, 0x0A, 0x09};
uchar stepx = 0;
//--------------------------------
void zs(uint a)
{
while(a--);
}
//--------------------------------
void zheng(void)
{
P0 = step1[stepx]; //走一步
stepx++;
if (stepx >= 4) stepx = 0;
}
//--------------------------------
void fan(void)
{
P0 = step1[stepx]; //走一步
stepx--;
if (stepx == 255) stepx = 3;
}
//--------------------------------
void main ()
{
uint i;
while(1) {
for(i = 0; i < 400; i++) {//正转400步
zheng(); //走一步
zs(90); //控制转速
}
for(i = 0; i < 400; i++) {//反转400步
fan(); //走一步
zs(90); //控制转速
}
}
}
//--------------------------------
以上就是关于单片机实现两相异步电机的SVPWM控制全部的内容,包括:单片机实现两相异步电机的SVPWM控制、2相4线步进电机怎么接线、两相步进电机如何接线等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)