数控系统中基于CPLD的步进电机驱动模块的设计
扫描二维码
随时随地手机看文章
摘要:介绍一种采用大规模可编程逻辑器件CPLD来控制步进电机的方法,对电机的控制方式为四相八拍。通过对CPLD进行编程,从而对电机达到启动,停止,正转,反转的控制。采用的编程语言为VHDL语言,使用的编程环境为MAX+PLUSⅡ。最后通过软件仿真达到精确的仿真结果。
关键词:CPLD;控制;步进电机;VHDL
0 引言
数控技术是以数字量编程实现控制机械或其他设备自动工作的技术,数控机床就是采用了数控技术的机床,或者说装备了数控系统的机床。机床数控系统主要由几个部分组成:零件加工程序的输入、数据处理、插补计算和运动机构的控制。本文主要介绍最后一个部分运动机构的控制,即如何控制电机的动作。可选的电机有很多种,在这里我们选择步进电机。
步进电机是数字控制电机,是一种将电脉冲转换成角位移的精密执行元件。它的旋转是以固定的角度一步一步运行的,每给步进电机发一个脉冲电机就旋转一个固定的角度,只要脉冲数发的正确,电机就能走到位,无累积误差,所以对步进电机的控制可以采用开环控制方法。如何精确且经济的控制步进电机成为广大研究人员探讨的课题。本文将采用CPLD来实现对步进电机的控制。并最终通过实验仿真结果。
1 步进电机驱动原理
步进电机的驱动是靠给步进电机的各相励磁绕组通电,实现步进电机内部磁场方向的变化来使步进电机转动的。设我们所用的步进电机是四相的,这四相分别为A,B,C,D,对应于四对磁极。每个磁极的内表面都分布着大小,齿间距相同的多个小齿(不同的步进电机,小齿的个数不同),假设Ⅳ为转子中小齿的个数。当这4相按A—B—C—D的顺序通电时,步进电机的内部磁场变化一周(360°),此种通电方式为单相四拍通电方式,此时步进电机的步距角:
θ=90°/N
若N=50,则θ=1.8°
如果选择的通电顺序为A—AB—B—BC—C—CD—D—AD,此种通电方式为双相八拍通电方式,此时步进电机的步距角为:
θ=45°/N
若N=50,则θ=0.9°
步距角是步进电机一次能转过的最小角度,电机的步距角越小,说明电机走的越精确,所以本文选择驱动电机通电的方式为双相八拍通电方式。
2 设计方案
一个完整的,控制精度高的步进电机控制系统框图如图1所示。CPLD和步进电机的驱动器相连,驱动器把CPLD输出的信号放大后送入步进电机,由于数控机床的各个轴是靠电机的转动来带动的,所以电机的转动带动相应轴的动作。
各组成模块功能描述如下:
2.1 CPLD模块
使用CPLD来控制步进电机实现电机的启动、停止以及正反转。传统的方式是用单片机来控制步进电机,但是在一个数控系统中单片机要做的工作很多,比如单片机既要控制步进电机还要接受上位机的数据做相应的运算,还要控制显示模块,以及报警处理等,如果改用CPLD来驱动步进电机则可以减轻单片机的负担。用大规模可编程逻辑器件作为控制器,可以反映出CPLD在控制方面起到较高的作用,而不是仅仅作为逻辑器件来使用。并且CPLD具有较为经济的价格。
另外CPLD的外围接口也较多,比如以ALTERA公司生产的EPM7032为例,它的I/O口有36个,内部的逻辑门有600多个,除了驱动步进电机所用的资源外,其余剩余的资源还可在系统中做其他用途。
在实际电路板设计阶段,如果用传统的设计方法设计电路必须首先决定使用的器件类别和规格,然后从绘制硅片版图开始,逐级向上,直至整个系统的设计。在这个过程中如果有哪一级发生问题必须返工重来,整个电路板将报废。但是如果使用CPLD,设计方法是自顶向下的设计方法,就是在整个设计流程中各设计环节逐步求精的过程。比如在我们设计的一开始就可以先把CPLD和驱动器相连,再通过软件的设置来利用到我们已经连好的引脚,如果程序出现错误,可以同过ISP(在系统可编程的方法)把新的程序装载到CPLD中,而不用更换电路板。
2.2 驱动器模块
步进电机的运行要有一电子装置进行驱动,这种装置就是步进电机驱动器,由于CPLD输出的信号还不足以驱动电机使电机转动,所以在CPLD和步进电机之间要连接驱动器,放大CPLD输出的信号。CPLD每发一个脉冲信号,通过驱动器就使步进电机旋转一步距角。因而控制送入步进电机脉冲频率,可以对电机进行调速。脉冲发的快电机运行的快,脉冲发的慢电机运行的慢。对于电机转速的控制可以间接通过调整对送入CPLD中CLK脉冲的频率来实现;控制步进脉冲的个数,可以对电机进行精确定位。
3 软件实现
本文通过对CPLD进行编程来实现对步进电机的控制,使用的语言是VHDL语言,使用的编程环境是MAX+PLUSII。控制程序由两大部分构成,一是实体部分,二是结构体部分,实体的作用是描述端口的信息,结构体的作用是描述电路的功能。
3.1 实体部分
在实体中定义了6个端口。
CLK:时钟信号
reset:复位信号
DIR:正转信号
START:启动信号
STOP:停止信号
phase:输出信号
3.2 结构体部分
在软件设计中,重点是先正确写出双相八拍通电方式下的状态转换表。
表1中‘1’表示通电,‘0’表示断电,S0~S7分别表示按A—AB—B—BC—C—CD—D—AD通电方式下的8个状态。在此种状态顺序下电机正转,反之电机反转。表中的S0~S7都是以二进制数来表示,如果转换为十六进制数则分别为1,3,2,6,4,C,8,9。
程序的结构体部分由3部分组成:说明部分,主控时序进程,主控组合进程。在说明部分中定义相关的信号及常数;在主控时序进程中负责把计算好的次态的信息送入初态,并负责最后的输出;在主控组合进程中负责相关的计算,比如判断启动和停止,正转和反转,以及在正反转状态下如何取下一个状态。下面这段程序就是结构体里主控组合进程中,如何判断电机正反转和下一步电机将如何动作的程序段。
3.3 系统仿真结果
整个控制程序的软件波形仿真如下:
从图2中可以看到,在模拟步进电机启动、停止、正反转时电机的状态。比如在复位后当START=‘1’时,如果这时DIR=‘1’表示电机是正转,则电机的通电状态是A—AB—B—BC—C—CD—D—AD,对应的CPLD的输出状态就为S0~S7。当DIR=‘0’时表示电机是反转,就图2的截图来说在CLK的上升沿时,输出是状态S2,因为它的前一个状态从图上我们可以看出是S1。
4 结束语
在数控系统中我们希望达到准确、高效、经济的控制,在运动机构的控制这一环节,通过CPLD可以起到很好的效果,首先可以简化硬件电路,提高电路的可靠性,其次可以通过对器件进行编程来改变器件的结构,达到我们预期的功能,并且通过ISP在系统可编程的方法把程序加载到器件上。
通过CPLD可控制步进电机的启动、停止、以及正反转,本文通过软件仿真,验证了方案的正确性。本文所列举的电机是四相的,如果是三相或是五相电机,都可按本文的方法实现,如果对电机采用的单相通电的方法,也可按本文的方法实现,同样只须稍微修改参数即可。