资讯 > 正文

基于CPLD的二相步进电机驱动设计

发布时间:2009-11-09 作者:郭能武

        0 引 言
        步进电机是一种将电脉冲转化为角位移的执 行机构,具有转矩大、惯性小、响应频率高等优点。 步进电机作为执行元件,是机电一体化的关键产 品之一, 广泛应用于各种自动化控制系统。由于 其步矩角较大,一般为1. 5°~3°,往往满足不了 某些高精密定位、精密加工等方面的要求。实际 应用中大多数都对步进角进行细分,这是减小步 距角、提高步进分辨率、增加电机运行平稳性的一 种有效方法。
        本文在选择合理电流波形的基础上,提出了 基于Altera公司MAXII系列复杂可编程逻辑器 件(CPLD)控制和STMicroelectronics的L6207PD 芯片作为电机驱动的步进电机恒转矩细分驱动方 案,该方案特点是集成度高,运行功耗小,可靠性 高,通用性好,具有很强的实用性。
        1 控制原理
        步进电机的细分控制,实质上是通过对步进 电机励磁绕组中电流的控制,使步进电机内部形 成均匀的圆形旋转磁场,从而实现步进电机步距 角的细分。合成磁场矢量的幅值决定了步进电机 旋转力矩,相邻两合成磁场矢量之间的夹角决定 了步距角。因此,要实现对步进电机的恒转矩均 匀细分控制,必须合理地控制电机绕组中的电流, 使步进电机内部合成磁场的幅值恒定,而且每个 进给脉冲所引起的合成磁场角度变化也要均匀。
        本文介绍的步进电机细分驱动系统,在细分 控制上采用CPLD设计,保证对电机二相电流的 严格控制,实现二相输出电流的相位、方向和大小 控制,达到步进电机恒转矩细分驱动的目的。本 系统最高细分达到256 细分,最大电流达到2. 8 A,能适应大多数中小微型步进电机的可变细分 控制、较高细分步距角精度及平滑运行等要求。
        

图1

        2 系统设计
        系统框图如图1 所示,其中: CAN 通信接口 用于和上层软件通信,完成命令数据的接收与发 送;MCU控制软件实现系统与上层软件的数据交 换,包括主机命令的接收、执行和响应;步进电机 控制模块产生电机驱动控制信号,实现对步进电机的细分控制;电机驱动电路实现步进电机绕组 的电流驱动和控制。
        3 硬件设计
        硬件设计框图如图2所示。

 硬件设计框图如图2所示。


        CAN通信接口采用SJA1000 + 82C250 的方 案实现; MCU 控制软件采用宏晶科技的 STC89C54RD +单片机。这两个模块在其他资料 中有较多的介绍,本文不再详述。下面重点介绍 步进电机控制和电机驱动电路两个模块。
        3. 1 步进电机控制
        3. 1. 1 CPLD设计
        CPLD采用Altera 公司MAXII CPLD 系列器 件,基于0. 18um Flash工艺,是即用型和非易失 器件,并具有用户Flash (UFM) ,可根据需求自行 编写UFM的内容,容量高,价格低。本系统采用 一片EPM240来实现逻辑控制功能。逻辑设计包 括以下四个模块。
        (1) 寄存器读写:完成MCU对CPLD各个寄 存器的读写操作,包括读写时序产生、译码等。 MCU通过写入控制寄存器,可实现对电机驱动的 各种控制,如细分值、方向、速度、起停、锁定、休眠 等,同时通过读取状态寄存器的值获得系统的当 前状态。
        (2) 时钟分频:以输入的24 MHz主时钟为 全局时钟,产生其他模块所需时钟,同时通过控制 寄存器不同的设置值,产生不同的步进脉冲频率。
        (3) 驱动控制信号:产生电机驱动电路所需 的控制信号,如方向、使能等。
        (4) 正余弦数据和DAC 转换信号: 利用 CPLD内置的Flash产生正余弦数据,再通过外部 的DAC芯片,将这些数据转化成模拟的正余弦波,作为电机驱动芯片脉宽调制( PWM)电流控制 电路的参考电压,从而实现步进电机恒转矩斩波 恒流细分。
        3. 1. 2 UFM容量计算
        根据最高采用256细分的要求,半个正弦波 需要256 ×2 = 512个数据,另外半周数据相同,只 需切换电流方向;采用8 bit数据进行DAC转换; 产生一个正弦和一个余弦波需要的数据容量为 512 ×8 bit ×2 = 8 Kbit。查看EPM240 的UFM 资源,刚好能够满足要求。设计中选择并行、只 读、9位地址宽度, 16位数据的Flash,并通过编辑 初始化文件,将Flash的内容初始值设置为正余 弦波型, 16位数据中, bit7~0为正弦, bit15~8为 余弦,这样确保每个输出相位一致,从而确保合成 后的矢量幅度不变。由于Flash的内容设置后无 需更改,所以将其设为只读,内容在编程时写入芯 片。
        要实现不同的细分,只需改变每次读取数据 的地址间隔即可。如读取地址间隔为1,则实现 最高的256细分控制;如果间隔为2,则实现128 细分;间隔为3,则实现64细分;依此类推。由于 细分所需的时钟都是统一从24 MHz的全局时钟 分频得到,所以保证每个输出电流的间隔一致,即 保证了合成矢量的均匀旋转。
        

图3

        3. 1. 3 DAC转换模块
        正、余弦波形的数据需要通过DAC转换成 正、余弦模拟波形,所以还需要增加2 路8 位的 DAC转换电路。由于DAC数据的产生和DAC转 换起动需要满足相应的时序,所以还需在CPLD 产生DAC 转换所需的时钟信号, 此信号是在 Flash数据读出后再加上一定的延迟产生, 即 Flash每读出一个数据,经过固定的延迟后就产生 一个DAC转换时钟。波形示意图如图3所示,其 中: Clk_rd是Flash的数据读取时钟, Clk_DAC是 DAC转换的时钟, T表示Clk_DAC落后Clk_rd一 个固定的时间,保证T 大于Flash数据的传输延 迟时间Tpd与DAC芯片的建立时间Tsu之和。根据实际情况, Tdelay < 30 ns, Tsu < 10 ns,所以设计 中取T = 125 ns (即3个24MHz时钟周期) 。pdf

标签:CPLD,步进电机,驱动

相关文章