李宁 摘要:本文提出了一种基于 SOPC 片上可编程的全数字化步进电机控制系统,本系统是以 FPGA 为核心控制器件,将驱动逻辑功能模块和控制器成功地集成在 FPGA 上实现,充分 发挥了硬件逻辑电路对数字信号高速的并行处理能力,可以使步进电机绕组电流细分达到 4096,且细分数可以自动调节,极大地提高了控制精度和驱动器的集成度,减小了驱动器 体积。 关键词:FPGA,步进电机,正弦波,细分驱动器,可编程逻辑 1 引言
步进电机的细分控制本质上是对步进电机励磁绕组中的电流进行控制,在普通驱动方式下, 驱动电路只是通过对电动机绕组激磁电流的“开”和“关”,使步进电动机转子以其本身的步距 角分步旋转。步进电动机靠定子、转子磁极间的电磁力来进行工作,当它处于“双拍”状态工 作时, 其定位位置是正好位于两通电磁极的中间, 即依靠两通电磁极电磁吸引力的平衡而获
CPU 内部程序采用 C语言编写,并对电机的控制状态建立类。通过对电机的控制状态对 象的操作,即可输出各种控制命令到接口模块和 CP 脉冲发生模块,控制电机状态;同时在 程序主循环中监视用户的各种输入,更新电机的控制状态对象的成员变量。
步进电机是一种将电脉冲信号转换成相应的角位移(或线位移)的机电元件,具有结构简单 坚固耐用工作可靠的优点因此广泛应用于工业控制领域。 由于脉冲的不连续性又使步进电机 运行存在许多不足之处,如低频振荡、噪声大、分辨率不高及驱动系统可靠性差等,严重制 约了其应用范围。 步进电机的细分控制有效地解决了这一问题, 但是传统的步进电机驱动系 统大多数采用的是用单片机作为控制芯片, 外加分立的数字逻辑电路和模拟电路构成。 受单 片机工作频率的限制, 细分数不是很高, 因此驱动器的控制精度较低, 控制性能不是很理想。 随着高性能数字信号处理器 DSP 的出现,以 DSP 为控制核心,以软件方式实现电机控制 一度成为研究的热点。 近年来随着可编程逻辑器件的飞速发展, 使得可编程逻辑器件功能越 来越强大从而促使高集成化高精度驱动器的出现。因此本文提出了一种基于 SOPC 片上可 编程的全数字化步进电机控制系统,本系统是以 FPGA 为核心控制器件,将驱动逻辑功能 模块和控制器成功地集成在 FPGA 上实现,充分发挥了硬件逻辑电路对数字信号高速的并 行处理能力,可以使步进电机绕组电流细分达到 4096,且细分数可以自动调节,极大地提 高了控制精度和驱动器的集成度,减小了驱动器体积。
本系统是由集成在系统采用层次化开发方式, 顶层模块由多个子模块组合而成, FPGA 设计 系统框图如图 5 所示。系统由 Nios II 微处理器模块和数字逻辑模块组成。
PI 调节模块:将参考正弦电流与反馈电流差值进行 PI 调节,把调节后的控制信号,为了防 止 IPM 内上下半桥的 IGBT 同时导通,导致 IPM 短路,PI 模块内设置的了死区时间。
得的。由此可以推论:如果能够进一步仔细地控制两磁极电磁吸引力的大小,使转子磁极获 得更多种由于两相定子磁极的电磁吸引力差异而形成的平衡定位位置。 步进电机细分驱动方 式就是应用了这一原理, 在细分驱动时, 细分控制器通过控制各相激磁绕组电流的逐步增大 及逐步减小,让转子处于多个磁力平衡状态使电机内部的合成磁场为均匀的圆形旋转磁场, 实现步距角变小、 电动机的旋转得到细化的目的。 合成的磁场矢量的幅值决定了电机旋转力 矩的大小, 相邻两个合成磁场矢量的夹角大小决定了该步距角的大小。 对于三相步进电机而 言,向 A、B、C 绕组分别通以相位相差 2/3π,而幅值相同的正弦波电流(图 1),则合成的 电流矢量在空间做幅值恒定的旋转运动, 其对应的合成磁场矢量也作相应的旋转从而形成旋 转力矩(图 2)。
正弦查表控制模块:根据 CP 脉冲和细分等级进行查表产生参考电流,根据转向控制信号来
C 相电流计算模块:根据基尔霍夫电流定律 A、B、C 三相电流之和为零,由 A/D 采集的 A、 B 两相的电流计算出 C 相电流;
步进电机控制系统框图如图 4 所示。 采用 FPGA 作为主控制芯片, 将控制器与驱动器的数字 电路部分集成在一片 FPGA 上实现。为了控制绕组电流,在设计中引入电流跟踪型闭环反 馈, 反馈电流与给定的正弦电流 (离散的正弦表) 经过改进的比例积分 PI 调节后进行 SPWM 调制,输出 6 路 PWM 波,来控制驱动电路三个桥臂上的 6 个 IGBT 开通关断。如果忽略死 区时间控制每个桥臂的上下半桥的两路 PWM 波互补即上半桥 PWM 波为高/低电平时,下 半桥 PWM 波为低/高电平。 系统采用 14 位宽度 200MHz 计数器产生 PWM 载波, 载波频率 12.2KHz,电流数据全部采用 14 位精度进行离散化。200MHz 时钟由 50MHz 时钟经 PLL 倍频产生。FPGA 输出的 PWM 波经功率模块放大后,控制步进电机运行。步进电机运行状 态(转速和转向)通过 LED 指示。步进电机转速是由查表速度决定的,CP 是用来决定查 表频率,在细分等级一定的情况下 CP 速度越高电机转速越快。如果电机在高细分下高速旋 转则 CP 脉冲频率就会很高,导致 PWM 脉宽过小,使功率模块 IGBT 控制桥臂频繁开关, 其结果是开关损耗大为增加, 功率模块过热。 而高细分在步进电机高速旋转时其优势并不明 显, 所以在不影响电机运行精度的情况下, 系统根据转速对细分精度在 4096、 2048、 1024、 512、256、128、64、32 之间自动调节,使电机更加平稳可靠的运行。
模块在收到启动信号后,先寄存给定数据/反馈数据,再对二者扩宽符号位做有符号减法, 并启动 KI 乘法器计算 KI 乘以误差 e 的结果。对减法的计算结果取绝对值,并与阀值作比较 (常数比较器),比较的结果存入寄存器。计算 e 的误差增量,即 E(K)-E(K-1) ,并用 KP 乘
步进电机 A、B 两相电流通过霍尔元件进行采集,AD 采样模块通过采集采样电阻上的电压 来将电机 A、B 两相电流的模拟量转换为数字量,C 相电流模块由基尔霍夫电流定律 iaibic=0 计算得到。图 9 为两模块的端口。
PI 调节模块是对给定数据和反馈数据进行离散化 PI 调节。模块的数据宽度统一为 14 位, 即给定数据/反馈数据/控制数据都用 14 位宽度无符号整型数据表示。本模块实现一个 PI 控 制器功能,如图 10 所示。
在本控制器中利用 CPU 控制灵活的功能用来接受并处理外界控制号再将处理过的控制信号 送到各个功能模块,因此 Nios II 软核采用了经济型即 Nios II/e,加入了用于输入输出端口 (PIO)、片上存储器模块(On chip Memory)。控制器程序流程图软件程序工作流程如 图 7 所示。
CPU:接受外界控制信号把信号处理后得到相应的细分等级和与速度对应的控制信号送给 CP 发生器,把转向信号处理后送到查表控制模块,并把转速和转向信号送到 LED 数码管和 发光二极管来指示电机运行情况;
CP 发生器:接受转速控制信号发出与转速相对应的 CP 脉冲并给出相应转速下对应的最佳 细分等级;
细分驱动方式下,由于步距角小,步进电机的控制精度明显提高,同时这种驱动方式又有效 抑制低速运行中产生的噪声和振荡现象。
步进电机三相绕组的电流是正弦阶梯电流, 通过改变给定电流的每一次变化的阶梯数可以实 现可变细分功能。驱动器的任务就是控制绕组的电流,使之按正弦阶梯波的规律变化。每给 一个步进脉冲,A、B、C 三相绕组的电流沿正弦阶梯波前进一步,电机转动一个步距角。 步进电动机驱动主回路图如图 3 所示 IA、IB 为两个霍尔元件。图中 6 个 IGBT 集成在电源 控制模块 IPM 内。
法器计算 KP 乘以误差增量的结果。将 KI 乘法器计算的结果先送入累加器,然后再将 KP 乘法器计算的结果送入累加器; 模块的累加器在每次累加的时候会进行溢出处理和数据超出 边界处理,无论哪种情况都会置为边界值(最大/最小值)。
PWM 发生器模块将 PI 调节后输出的数据转化为 PWM 波形输出给 IGBT 模块,通过 IGBT 的通断切换调整相电压,进而改变相电流按照给定进行变化。PWM 波形的生成是通过将给 定控制数据和载波数据比较,通过比较二者大小情况确定 PWM 的高低电平,实现 PWM 调 制,如图 11 所示。
PatternGenerator 模块根据设置的电机转速产生相应的 CP 脉冲和在该转速下的最适宜的细 分等级,并把这些信号传送给查表控制模块。CP 发生器模块和查表控制模块如图 8 所示。
查表控制模块(interface)内部例化了一个只读存储器,存放一个周期的正弦数据表。正弦 表数据宽度与系统数据流数据宽度一致,因此选择 14 位宽度。正弦表深度决定了驱动器的 最大细分等级,关系式表示为:NMAX=2N,当 N=12 时,达到最高细分等级 4096 细分。 外部输入 CP 和 CCW 信号后,通过顺序的给出三相绕组对应的地址数据,即可查得三相相 电流的给定数据,并同时更新三个给定数据寄存器,送入下一个环节。转向交换也在本模块 实现。 输入的 CCW 信号将控制一个路选择器, 控制正弦表的查表方向来改变步进电机转向。 本模块通过输入的细分等级信号和 CP 脉冲信号共同决定三相绕组的地址数据的每次增量 大小。当细分等级最高时,地址计数器每次增 1 或减 1;当处于非最高细分精度时,地址计 数器每次递增 2 的 N 次幂,N 由当前的细分等级确定。