l遑 訇 似 基于FPGA的步进电机SPWM细分驱动系统的设计 Design of FPGA-based SPWM subdivision stepping motor drive system 张萍 ZHANG Ping (江阴职业技术学院电子信息工程系,江阴214405) 摘要:系统采用FPGA设计了步进电机正弦脉宽调制细分驱动电路,提高了步进电机的步进分辨率, 并设计了功率驱动电路,对细分电路输出信号进行了隔离和功率放大,以确保电机能够稳定 可靠地运行。经过对二相混合式步进电机测试表明,步进电机运行平稳,定位精度较高,改 善了步进电机的运行性能,适用于要求较高的实时控制系统。 关键词:SPWM细分驱动;双口ROM;SPWM调制;桥式驱动 中囝分类号:TM391.9 文献标识码:B 文章编号:1 009—01 34(2014)02(下)一011 5—05 Doi:1 0.3969/J.Issn.1 009-01 34.2014.02(下).33 0引言 步进电机在低频工作时,分辨率不高,容易 产生振荡,运行不够平稳,无法满足精确定位的 要求。而电流矢量恒幅均匀旋转的SPWM正弦细 分驱动技术n 减小了步进电机的步距角,并且能够 使细分后的步距角均匀,输出力矩恒定,从而提 高了电机的步进分辨率、运行的平稳性和电机的 恒幅均匀旋转法是使电机各相绕组分别通以幅值 大小均相等且有一定相位差的正弦电流,使各相 电流合成矢量在空间上作旋转运动,且电流合成 矢量的幅值保持不变,从而能够使细分后的步距 角均匀,输出力矩恒定。为了尽可能得到圆形的 合成磁场,使步距角变化均匀,各相绕组采用阶 梯状正弦波电流驱动较为理想。采用阶梯状正弦 定位精度,因此,SPWM细分驱动技术在步进电 机的驱动系统中得到了广泛应用。 目前,步进电机驱动控制系统普遍采用微处 波对电流进行细分时,阶梯越多,波形就越理 想,越接近正弦波,步距角也就越小,定位精度 也越高。如图1所示。 理器来构成,对于比较简单的步进电机控制应用 这是完全可行的,但是当需要对步进电机进行高 速、高精度、频繁细分控制时,就要占用微处理器 大量的运行时间和内部资源,从而严重影响了系统 其他应用功能的执行与实现。采用高速FPGA器件 设计的细分电路取代微处理器的细分功能程序, 图1八细分正弦电流 不但可以很好地解决这些问题,而且与程序相比 硬件电路具有更好的快速性和可靠性。 SPWM技术是把正弦波划分成宽度相等、幅 值不等的N个脉冲,再把这个序列脉冲用N个幅 值相等、宽度不等,宽度按正弦规律变化的脉冲 1 SPWM细分驱动原理 步进电机细分驱动通常分为等电流细分驱动 法和电流矢量恒幅均匀旋转法。对于等电流细分 代替,即为SPWM脉冲。具体实现方法是:根据 电机运行所要求的最大细分数N,在最小相电流 到最大相电流之间按正弦方式插入N个稳定的中 间电流状态,将对应每个状态的二进制量化值存 入ROM中。理论上来讲,细分数越多越好,兼顾 系统实现的可行性和电机定位的精确性,系统最 驱动法 ,由于电流合成矢量的幅值不断变化, 输出力矩也随之变化,不能实现步距角的均匀细 分,从而使电机运行不稳定,而且不均匀的步距 角也容易引起电机的振荡、甚至失步,降低了步 进电机定位的精度,系统不予采用。而电流矢量 大细分数确定为256,即在最小相电流和最大相电 收稿日期:2013-09-15 作者简介:张萍(1975一),女,湖北随州人,副教授,工学硕士,主要从事微型计算机控制及其应用方向的研究。 第36卷第2期2014—02(下) 【1151 l 流之间划分为256个正弦电流值,一个正弦周期共 插入1024个电流值。对于二相混合式步进电机, 勺 似 3 SPWM细分驱动电路的FPGA设计 3.1地址发生器的设计 地址发生器 是为双口ROM中存储的一个正 弦周期的1024个电流值提供1024个地址,地址 范围为0—1023。当地址在0—51 1之间时,表示电 流处于0~Ⅱ之间;当地址在512-1023之间时, 表示电流处于n~2 之间。图2中的启停控制信 号是用来控制电机启动和停止的,当启停控制信 号为低电平时,地址发生器输出电流值的地址, 电机运行;反之,电机停止运行。方向控制信号 是用来控制电机正反转的,当方向控制信号为 A、B两相电流值相差四分之一个周期,即相位相 差n/2,A、B两相电流I 和I 分别按如下细分控制 函数变化。 IA=Im sint IB=Imcost 2系统整体结构 系统由FPGA、高速光耦隔离电路和高速桥式 驱动电路组成 ,而系统中的分频器、倍频器、 地址发生器、双口ROM、数据变换器、SPWM 调制器和电流分配器是由FPGA设计而成,如图 2所示。系统中的FPGA采用的是ALTERA公司的 Cyclone系 ̄IJEPIC12Q240C8芯片M】,该芯片内核 采用1.5V供电,内部共有12060个逻辑单元,有 高电平时,地址递增输出,电机正转;反之, 电机反转。输入给地址发生器的时钟速率决定 了地址发生器产生地址的速度,并进而决定了 电机运行速度,因此通过改变分频器的分频系数 239616个存储单元位,完全满足系统设计需要。 来自时钟电路的5OMHz时钟信号经过分频器800分 可以改变电机运行速度。对于两相混合式步进电 机,A、B两相正弦电流值相位相差Ⅱ/2,也就 是1/4个周期,因此A、B两相电流值的地址相差 (1024/4)一1=255。地址发生器的仿真波形如图3 所示。 频后,得到62500Hz的时钟,作为地址发生器、双 HROM模块、数据变换器的工作时钟,50MHz的时 钟经过FPGA内部锁相环3倍频之后得到150MHz时 钟,作为SPWM调制器和电流分配器的工作时钟。 在启动信号和方向信号的控制下,地址发生 器产生1024个地址信号给双口ROM模块,将ROM 模块中存储的正弦电流值输出给数据变换器,由 从图3中可以看出,当方向控制信号dir=1 时,A、B两相地址addr—a和addr_b均为递增;而 当dir=0时,这两相地址则均为递减,并且这两相 地址相差255。当A相地址addr_a在0~Yf之间时, 数据变换器将双向正弦电流值变换为单向正弦电 流值,分别输出给A、B相SPWM调制器,从而将 正弦电流信号变换为SPWM脉冲,经过电流分配 器进行电机绕组AH、AL、BH和BL的电流分配, A相标志信号a为低电平;而当其在丌~2Ⅱ之间 时,其标志信号则为高电平。由于图中显示部分 的B相地址addr—b都处于0~Ⅱ之间,所以其标志 信号b一直为低电平。 经过分配之后的电流通过高速光耦进行光电隔 离,以防止电机端的干扰串入FPGA中,影响系统 可靠性,并通过高速桥式驱动电路驱动步进电机 按照要求进行工作。 3.2双口ROM的设计 对于二相混合式步进电机,采用双口ROM为 A、B两相绕组提供驱动电流值。双口R0M中存放 的是一个正弦周期中所需的1024个电流值,A相 I 5OMHZ时 分 频 器 -—— '_G ̄I 7 J ROM I r; "l ̄ 器 曩LA相 SPWM 调制器 A相电流 分配器 高速光I l高速桥f l A相 耦隔离H式驱动 绕组 62500Hz时钟 B相 l50MHZ SPWM _一 倍 频 器 L…………调制器 …………………B相电流 分配器 …一.— 襄蔫誊耦隔离 1式驱动 绕组H 图2系统整体框图 [1161 第36卷第2期2o14—02(下) 务l注 訇 似 0 ielk —l 2 dir p 3 口25 2B 圈Iddr一 t4 囝addr b 图3地址发生器仿真波形图 正弦电流波形如图4所示,B相正弦电流与A相相 300:0: 差Ⅱ/2。 3fe:1t9; 3if:lfc; end; 由图4可以看出,最大电流值为1023,用十六 进制表示为3FFH,所以mif文件中定义数据宽度 为10;电流值的个数为1024个,因此mif文件中 定义数据深度取为1024。对于图4所示波形,相 位为0时,地址为0,电流值为511(十六进制数 图4 A相正弦电流 1FFH);相位为Ⅱ时,地址为512(十六进制数 这1024个正弦电流值可以由C语言或者Matlab 200H),电流值为511(十六进制数1FFH);相 编程求得,并将其存入mif文件中,在设计双口 位为3 /2时,地址为768(十六进制数300H), ROM时只需指明其路径即可,该mi肢件如下: 电流值为0,与mif文件中的数据完全相符。载入 width=10; 该mif文件后双口ROM仿真波形如图5所示,图中 depth=1024; 显示的是方向控制信号direct为高电平时的仿真波 addressradix=hex; 形。A、B相输入地址da和db递增,相应地址的 .data电流值从输出口q_a和q—b输出,电机处于正转状 _radix=hex; content begin 态。 0:lff; 3.3数据变换器的设计 1:202; 数据变换器的功能是:将ROM中n~2 n之间 的正弦电流值沿轴i=512进行镜像,再将整个周期 fi:3fe; 的电流沿i轴下移512,从而将图4所示电流变换成 100:3if; 图6所示电流。 101:3fe; 1ff:202; 200:lff; 201:lfc; 图6变换器转换之后的电流波形 田d 圃曲 伍I L‘ 田 图5 正转时双H ROM模块仿真波形 第36卷第2期2014-02(下) [1171 、l 口吼- 髑 匐 出 ^}l 地 鞠 礼 图8步进电机细分驱动电路仿真波形 图9 A相绕组功率驱动电路 输出信号AH和AL首先经过高速光耦HCPL2630 进行光电隔离输出,以防止来自电机的干扰信号 串入FPGA中。经过HCPL2630隔离输出的信号送 AL、BH和BL进行隔离和功率放大,以便可靠驱 动电机绕组。系统对步进电机SPWM细分驱动电 路进行了仿真,仿真波形非常理想。将细分驱动 电路、功率驱动电路板和二相混合式步进电机连 接组成一个完整系统进行调试,步进电机运行平 入高压高速半桥驱动芯片IR21 13进行功率放大, IR2113是大功率MOSFET专用驱动集成电路,内 部具有高、低两路输出通道,芯片中采用高集成 度的电平转换技术,提高了驱动电路的可靠性。 引脚3和6之间的二极管是为了防止Q1导通时高电 压串入vcc端损坏IR2113,为了保证IR2113的两 个输出HO和LO跟随输入HIN和LIN变化,引脚SD 必须接地。当信号经过IR2113输出后,通过栅极 稳,有效克服了步进电机的低频振动和高频失步 等缺点,改善了步进电机运行性能,具有较好的 实用价值。 参考文献: 【1】孟军,张振兴,刘波.二相步进电机细分驱动的设计与实现 [J]_电气应用,2007,26(12):84-87. 控制由4个大功率MOSFET构成的H桥式电路。 IR2113的引脚HO输出的信号控制功率管Q1和Q4 [2]杨秀增,黄露.二相混合式步进电机SPWM细分驱动器的 FPGA设计[J】.微电机,2011,44(2):102・104. 的通断;引脚LO输出的信号控制功率管Q2和Q3 的通断。因此在正弦信号的整个周期,A相绕组获 【3】赵海洋,崔翠红,陈斌,张文超.基于FPGA的步进电机细 分驱动器[J].仪表技术与传感器,2009,12:67—69. 【4】潘松,黄继业.EDA技术实用教程【M】.北京:科学出版社, 2005:175.182. 得了脉宽调制后按正弦规律变化的电流值,从而 控制了步进电机按照SPWM细分驱动进行运行。 [5】吴云,陆锷,赵海洋,崔翠红,陈斌.基于FPGA的步进电机 5结束语 系统采用Cyclone系列芯片EP1C12Q240C8设 细分驱动器的设计【J].自动化仪表,2009,30(10):61—63. [6]李婧,金占雷.两相步进电机单极性细分驱动器的实现 [J]_电机与控制应用,2012,39(3):14・18. 计了步进电机正弦脉宽调制细分驱动电路,并设 计了功率驱动电路,对细分电路输出信号AH、 第36卷第2期2014—02(下) [1191