这一设计理念进一步建立在之前将步进电机驱动器集成到 CPLD 中的设计理念之上(参考文献 1)。然而,这个想法不仅集成了驱动器,还集成了一个简单的单轴步进电机运动控制器。根据目标 CPLD 的大小,您可以在单个设备中实现多个运动控制器。例如,单轴运动控制器使用 68 个或 63% 的可用宏单元安装到 Xilinx XC95108 中。运动控制器以给定的速度曲线随时间顺时针或逆时针旋转步进电机给定的步数。当运动开始时,控制器加速直至达到巡航速度,然后减速直至停止(图1)。
图 1:该设计可以控制 16 种速度的电机。巡航阶段的最大速度是电机每 16 个时钟周期步进或半步。
控制器可以将电机速度调整为 16 个值,V=V MAX ×speed/16,其中 speed 为 1 到 16 之间的整数。在加速阶段,速度从 1 增加到 16;在加速阶段,速度从 1 增加到 16。在巡航阶段,速度保持在16;最后,在减速阶段,速度在停止前降至 1。如果控制器到达巡航阶段的步数不足,则控制器直接从加速阶段进入减速阶段。您可以通过常量“accel”来调整程序中的加/减速度,该值可以是 1 到 255。accel 值较高时加减速度较慢,值较小时加减速度较快。CPLD 步进电机控制器的输入包括时钟、方向、全步/半步、复位、Nstep、启动和停止。
时钟输入在时钟脉冲的正边沿有效。电机最大速度为每 16 个时钟步进一步。方向输入决定电机的旋转方向。电机顺时针或逆时针运行,具体取决于该输入的电平和电机连接。该值在启动变高后的第一个时钟上升沿被锁存。全步/半步输入确定每个时钟脉冲的电机旋转角度。在低电平状态下,电机对每个施加的时钟脉冲进行全步,在高电平状态下,电机进行半步。复位输入上的高电平将电机设置为定义的状态。当复位为高电平时,电机忽略任何时钟脉冲。16 位 Nstep 值定义下一个运动将执行的步数。该值在启动变高后的第一个时钟上升沿被锁存。启动输入上的高电平开始运动,停止输入上的高电平停止运动,中止当前运动。
图 2: FPGA/CPLD 需要外部驱动器。
CPLD 步进电机驱动器的输出为 A、A_N、B 和 B_N(图 2)。A 和 A_N 输出通过功率驱动器控制电机的一个线圈,B 和 B_N 输出通过功率驱动器控制电机的第二个线圈。
CPLD/FPGA不能直接驱动电机,因此需要外部驱动器。驱动器必须达到电机的额定电压。每个驱动器输出端的肖特基二极管允许电机线圈中的电流续流。如果使用 MOSFET 驱动器,则不需要外部肖特基二极管,因为 MOSFET 具有内置二极管;Microchip TC4424A 双驱动器可将电机线圈驱动至 18V 和 3A。
参考
Roche、Stephan,“在 CPLD 中实现步进电机驱动器”,EDN,2007 年 2 月 15 日,第 90 页。