当前位置:首页 期刊杂志

基于FPGA和LMD18200的步进电机控制系统

时间:2024-05-04

杜维康 王景存

摘 要: 实现了一种基于FPGA和LMD18200的步进电机闭环控制系统,给出控制步进电机的设计方法,结合MCU,FPGA和增量型编码器构成了一个完整的运动控制平台。该系统由总线接口单元、闭环控制单元、PWM脉宽调制单元和LMD18200驱动单元组成。实践表明,利用LMD18200驱动逻辑能够使步进电机高效稳定地运行,有效降低了电机运行中的噪音和启动、停止时的震动,使用效果好于大部分常规步进电机驱动方法。

关键词: FPGA; 步进电机; LMD18200; 闭环控制; 编码器; 驱动控制

中图分类号: TN876?34; TP274 文献标识码: A 文章编号: 1004?373X(2018)13?0142?05

Abstract: An FPGA and LMD18200 based closed?loop control system of stepping motor was implemented in this paper. The design method to control the stepping motor is given. The MCU, FPGA and incremental encoder are combined to form a whole motion control platform. The system is composed of bus interface unit, closed?loop control unit, pulse width modulation (PWM) unit and LMD18200 driving unit. The experimental results show that the driving logic of LMD18200 can make the stepper motor run stably and efficiently, effectively reduce the noise during the motor operation and vibration during start and stop, and the control effect of the method is better than that of most conventional stepping motor′s driving methods.

Keywords: FPGA; stepper motor; LMD18200; closed?loop control; encoder; driving control

0 引 言

步进电机是一种数字脉冲信号驱动的电机。通过改变步进电机输入的脉冲总数、频率以及各相绕组的通电顺序,可以得到不同的运行特性[1?2]。本文讨论了一种以FPGA控制为核心、结合专用H桥直流电机驱动芯片LMD18200,实现对步进电机全数字化驱动控制的一种方法。

1 系统总体设计

本设计采用MCU+FPGA的软硬件协同控制方式。MCU用于人机交互、接收上位机命令并解析后交给FPGA,FPGA接收指令的同时处理步进电机驱动信号复杂的时序以及完成位置闭环控制。MCU为STM32F103ZET6,FPGA采用Cyclone Ⅲ系列的EP3C25Q240C8芯片。系统结构框图如图1所示。本文主要介绍FPGA内部的闭环控制单元和PWM脉宽调制单元的设计方法。

FPGA主要由MCU总线接口单元、位置检测模块、闭环控制单元以及PWM脉宽调制单元组成。

MCU通过APB总线接口能够实现对总线接口单元中的寄存器进行读写操作,APB(Advanced Peripheral Bus)总线协议是ARM公司提出的AMBA总线结构之一,其控制信号简单,操作灵活[3?4]。

STM32写入的参数包括目标距离、加/减速距离、最大匀速速度、尖峰速度、编码器计数复位信号、方向和启动信号等信息。FPGA反馈的状态值包括编码器的实时计数值、实时速度值、限位开关量、电机闲忙信号等。表1~表3给出了接口单元中各寄存器的功能。基地址为0x65000000。

表2中,start:控制电机启动信号;dir:控制电机方向信号;mode:00=闭环模式,01=匀速模式,10=停止;reset:编码器值清零信号;enable:控制电机使能信号;con_speed:匀速模式下的速度等效值。

表3中,busy:电机闲忙标志信号;zeropoint:零点限位开关信号;limitpoint:终点限位开关信号;error:电机错误编码,如電机过热、过流、长时间没达到目标位置等;speed:电机实时速度等效值。

2 LMD18200步进电机驱动原理

本文的步进电机采用的是两相双四拍工作方式,即每次两邻绕组同时通电,四拍一循环,流程如图2所示。

LMD18200是美国国家半导体公司设计的专用于驱动电机的芯片。额定运行参数为:额定电流为3 A,峰值电流为6 A;电源电压可达55 V;功率晶体管导通电阻很小为0.3 Ω;输入信号兼容TTL和CMOS;内置过流报警和过热报警以及自动关断[5]。LMD18200内部电路框图如图3所示。

LMD18200一般用于驱动直流电机,内部只有一个H桥。因此,两相步进电机需要两片LMD18200驱动。系统的PWM脉宽调制单元输出信号链接LMD18200的方向控制端;LMD18200的PWM端保持畅通,使之电流最大。调整方向控制端PWM输入的占空比可以控制步进电机的电流,从而达到对电机转动方向以及输出转矩的控制。当方向控制端的占空比均为50%时,H桥输出平均电流为0,电机停止;当某一相占空比大于50%时,即为正转;反之为反转[6]。因此,PWM脉宽调制单元输出电流为[AB?AB?AB?AB]。

如果目标精度要求超过了步进电机的步距角,就需要对电机进行细分控制。下面以双四拍工作方式为例说明。电机非细分工作时,绕组通电状态转换表为AB,[AB],[AB],[AB],AB,…。当细分数设置为4时,状态之间的切换就不能一步完成,需要将励磁电流进行分化,即将每相绕组的励磁电流分为4份,依次递增,呈台阶状,这样每个台阶的磁通势即为原来的[14]。图4表明每相的励磁电流在细分时的状态,励磁电流呈台阶状依次增加或减少,使得电机状态转换不再是4次转变就完成,而是经过16次转变,从而实现细分。

综上可知,调整PWM脉宽调制单元输出信号的占空比可以实现步进电机的细分控制。因此,得到FPGA中PWM脉宽调制单元输出正弦波中一个周期内输出控制点的多少即可实现不同的细分。

3 控制单元的逻辑实现

根据设计电路的需求以及功能,最主要的两个控制逻辑为闭环控制单元和PWM脉宽调制单元,下面分别进行详细介绍。

3.1 闭环控制单元

为了实现电机平稳加减速,合理的速度曲线设计是非常重要的。常见的步进电机速度曲线有:梯形曲线、抛物线曲线和S型曲线[7?8],梯形曲线经过适当优化也可以实现S型曲线的效果。本设计将对梯形速度曲线算法进行研究并实现。

常用的梯形控制曲线如图5所示。x轴是时间T,y轴是速度V。步进电机启动速度为VD1,以恒定加速度[a0]运动,[a]步后达到最大速度[VC],并以此速度匀速运行[b]步后,以恒定加速度[a1]作减速运动,到[c]步后速度减小为[VD2]。根据[VD1,VC,VD2,a,b,c]等已知参数,需分别计算出加速度[a0]和[a1]。

系统可以预先判断目标距离值,从而选择适合的加减速曲线。当目标距离适当时,电机经过加速、匀速、减速、校准步骤后停止,电机匀速转动时的速度是参数MAX_SPEED的值;当目标距离较小时,不足以使电机完成加速阶段进入匀速阶段,此时选择三角加减速度曲线[9],因此电机运行过程中存在一个尖峰速度,由参数PEAK_SPEED决定。图6为目标距离对应的速度曲线,当目标距离小于10时,采用的是三角加减速度曲线;大于10时,采用的是梯形加速曲线。

为了使步进电机按照梯形速度曲线平稳加减速,且能够在编码器的精度范围内实现闭环控制,这里采用两段式的状态机来实现。

状态机总共划分为四种状态:IDLE(空闲状态),ACC(加速状态),CON(匀速状态),DEC(减速状态)。详细的状态跳转框图如图7所示。

在IDLE状态,程序会持续监测起始信号上升沿start_pos是否有效,如果有效则进入加速状态ACC;当编码器值达到加速目标距离即ACC_PRO时,加速完成信号acc_finish有效,电机进入匀速阶段CON;该阶段电机的速度是加速阶段的最大速度,是由上位机传递过来的参数MAX_SPEED决定的,当编码器值达到目标值与减速距离的差值时,进入减速状态DEC;在减速状态,电机速度由最大值曲线平滑下降,当编码器值达到目标距离goal,减速结束信号dec_finish有效,进入IDLE状态,等待上位机的下次任务。

3.2 PWM脉宽调制单元

PWM脉宽调制单元将闭环速度控制模块输出的速度信号调制为两相四拍的PWM信号,由A,B相分别输出到LMD18200的方向控制端,如图8所示。图中PLL模块产生的2 kHz和10.24 MHz的时钟供后续模块使用,方向信号direction作为加减计数器的控制信号对速度值进行自加或自减运算。两相双拍四相脉冲分配表存放的是相位相差90°的正弦波量化值,高八位作为A相的正弦幅值,低八位作为B相的正弦幅值。

为了提高电机步距的分辨率,采用32细分方案,量化值存放在FPGA内部ROM1表中,因此ROM1表的深度決定了驱动器的最大细分。寻址地址由加减计数器输出的speed_out决定。比例系数表ROM2中存放的是与速度值匹配的电流强度系数值,该系数决定了电机的驱动强度,但考虑到FPGA无法直接处理小于1的比例系数,代码中在比例系数ROM表中存放的是乘以256以后的值,在完成后续运算后右移8位即可。然后通过比例压缩模块将正弦波平移到中点128处,锯齿波计数器在脉宽时钟作用下递增计数,同时将产生阶梯型上升的周期性锯齿波与处理后的A,B相数据比较后输出。

4 LMD18200硬件电路设计

LMD18200通过24 V电源供电。DIR为方向信号连接脉宽调制单元的PWM输出,MT为过热保护信号,当芯片过热时该信号有效并反馈至MCU。芯片的刹车输入端BRAKE和PWM输入端由同一个信号控制。当MCU检测到芯片过热信号MT有效后,可以通过STOP信号控制BRAKE和PWM使其停止工作。另一方面,电流检测输出接1个对地电阻[R1],用于产生过流检测信号,该检测信号经过[U3](LM339比较器)与参考电压[VREF]([R2]和[R3]的分压)比较;当小于[VREF]时,电路按照控制流程控制电机;当大于[VREF]时,自动控制BRAKE信号和PWM信号,使电机停止工作,起到电机过流自动保护的作用,如图9所示。

5 实验结果

由于实际应用过程中有7个步进电机要同时控制。因此FPGA内部要有7套并行的闭环控制和脉宽调制单元逻辑。FPGA选用的是ALTERA公司的Cyclone Ⅲ系列EP3C25Q240C8,硬件上完全能够满足设计需要。利用Quartus 12.1平台进行FPGA逻辑功能模块的设计,测试过程中系统占用主要的逻辑资源情况如表4所示。

图10为步进电机加速过程中两相绕组驱动曲线图,其中红色为A相,蓝色为B相,当A/B相的占空比均为50%时,输出电流为0,电机停止。正弦波的幅值决定了输出的电流以及输出的扭矩大小。正弦波输出采样点数表明了细分的程度以及转速的大小(输出采样频率固定)。

图11为加速、匀速、减速过程中编码器实际采样图。图12为仿真工具ModelSim进行仿真得到的32细分的仿真图。图中rom的地址addr_rom由加减计数器模块的输出结果截位得到,深度为256。ROM表中存放了周期为2π、相位差为[π4]的正弦值,每次从ROM中读到的16 bit数据分配到A,B相的A_data,B_data上,作为后续与锯齿波运算的调制信号。从图12中可以看出,addr_rom的值在255后变为0,表示一个正弦波周期结束。以此作为分界点,前半部分波形对应的节拍为[AB],后半部分波形对应的节拍为AB。

6 结 论

LMD18200芯片通常作为直流电机的驱动芯片。本文对其控制步进电机进行了有益的尝试。给出基于FPGA和LMD18200对步进电机控制系统的设计方法。实践表明,尽管控制逻辑比较复杂,但利用LMD18200驱动逻辑能够使步进电机高效稳定的运行,有效降低了电机启动和停止时的震动和噪音,使用效果明显好于常规步进电机驱动方法。

参考文献

[1] 陈兴文,刘燕.基于FPGA实现步进电机脉冲信号控制器设计[J].机械设计与制造,2006(2):86?87.

CHEN Xingwen, LIU Yan. Design of pulse signal controller for stepping motor based on FPGA [J]. Mechanical design and manufacturing, 2006(2): 86?87.

[2] 欧海平,周砚江,张华叶,等.基于SOPC的步进电机加减速PWM控制器IP核设计[J].机电工程,2011,28(6):708?711.

OU Haiping, ZHOU Yanjiang, ZHANG Huaye, et al. The IP core design of PWM controller based on SOPC′s stepping motor and deceleration [J]. Electromechanical engineering, 2011, 28(6): 708 ?711.

[3] 刘军,郭立,段勃,等.AMBA 2.0总线IP核的设计与实现[J].微电子学与计算机,2005,22(6):145?148.

LIU Jun, GUO Li, DUAN Bo, et al. Design and implementa?tion of AMBA 2.0 bus IP core [J]. Microelectronics and computer, 2005, 22(6): 145?148.

[4] 时晨,张伟功.基于AMBA总线UART IP核的设计与实现[J].计算机应用,2003,23(z1):36?38.

SHI Chen, ZHANG Weigong. The design and implementation of UART IP core based on AMBA bus [J]. Computer applica?tions, 2003, 23(S1): 36?38.

[5] 张军,葛悦,刘超,等.一种高效的两相步进电机控制技术[J].计算机测量与控制,2012,20(8):2130?2132.

ZHANG Jun, GE Yue, LIU Chao, et al. An efficient two?phase stepping motor control technology [J]. Computer measurement and control, 2012, 20(8): 2130?2132.

[6] 王磊,艾晓庸,朱齐丹,等.基于LMD18200组件的直流电机驱动器的设计[J].自动化与仪表,2004,19(1):26?27.

WANG Lei, AI Xiaoyong, ZHU Qidan, et al. Design of DC motor drive based on LMD18200 components [J]. Automation and instrumentation, 2004, 19(1): 26?27.

[7] 王邦继,刘庆想,周磊,等.步进电机速度曲线的设计与FPGA实现[J].微电机,2012,45(8):67?71.

WANG Bangji, LIU Qingxiang, ZHOU Lei, et al. Design of stepper motor speed curve and FPGA implementation [J]. Micromotors, 2012, 45(8): 67?71.

[8] 杨超,张冬泉.基于S曲线的步进电机加减速的控制[J].机电工程,2011,28(7):813?817.

YANG Chao, ZHANG Dongquan. Control of acceleration and deceleration of stepper motor based on S curve [J]. Electromechanical engineering, 2011, 28(7): 813?817.

[9] 霍建伟,马海涛,王丽秋,等.全自动生化分析仪用分光光度计[J].光学精密工程,2003,11(5):457?460.

HUO Jianwei, MA Haitao, WANG Liqiu, et al. Automatic biochemical analyzer spectrophotometer [J]. Optical precision engineering, 2003, 11(5): 457?460.

[10] 周明安,朱光忠,宋晓华,等.步进电机驱动技术发展及现状[J].机电工程技术,2005,34(2):16?17.

ZHOU Mingan, ZHU Guangzhong, SONG Xiaohua, et al. Development and status of stepper motor driven technology [J]. Electromechanical engineering technology, 2005, 34(2): 16?17.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!