一种基于CPLD的步进电机驱动模块设计及实现
结构体部分
在软件设计中,重点是先正确写出双相八拍通电方式下的状态转换表。
![](../img/eep/emb/emb-45678kantb4efpwj.jpg)
表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部分组成:说明部分,主控时序进程,主控组合进程。在说明部分中定义相关的信号及常数;在主控时序进程中负责把计算好的次态的信息送入初态,并负责最后的输出;在主控组合进程中负责相关的计算,比如判断启动和停止,正转和反转,以及在正反转状态下如何取下一个状态。下面这段程序就是结构体里主控组合进程中,如何判断电机正反转和下一步电机将如何动作的程序段。
![](../img/eep/emb/emb-456794wu23s04r1l.jpg)
3.3系统仿真结果
整个控制程序的软件波形仿真如下:
![](../img/eep/emb/emb-45680h2dpydg04mf.jpg)
从图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可控制步进电机的启动、停止、以及正反转,本文通过软件仿真,验证了方案的正确性。本文所列举的电机是四相的,如果是三相或是五相电机,都可按本文的方法实现,如果对电机采用的单相通电的方法,也可按本文的方法实现,同样只须稍微修改参数即可。
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- 用CPLD实现FIR数字滤波器的设计(08-07)
- 基于DSP+CPLD的交流电机调速在水处理控制中的应用(11-27)
- 一种基于DSP的张力、深度、速度测量系统(04-15)
- 用双端口RAM实现与PCI总线接口的数据通讯(05-06)
- 基于DSP和CPLD的宽带信号源的设计(07-26)