基于FPGA的嵌入式步进电机恒流控制系统设计与实现*
2022-06-11仇存凯姜海洋张晓慧岑启峰付培华
仇存凯,姜海洋,张晓慧,岑启峰,付培华
(1.上海航天控制技术研究所·上海·201109;2.上海惯性工程技术研究中心·上海·201109)
0 引 言
在轨补加功能是长期在轨运行的航天器的重要组成部分,为航天器进行姿态调整和轨道控制提供能源支持。由电机驱动的浮动连接机构安全可靠地运行是实现在轨补加功能的关键。基于步进电机具有启停响应迅速、运行精度高等特点,本文设计方案采用两相混合式步进电机驱动浮动连接机构。
步进电机是一种可将电脉冲信号转换为角位移或直线位移的机电执行元件,每输入一个脉冲,电机随之转过一定角度,从而可以通过控制电脉冲输入个数来控制电机运行的位置。步进电机每转过一周,其位置回到上一周起始位置,位置误差不会无限累积,但步进电机同样存在易失步、振动大等缺点。
此外,对于步进电机相电流的控制,文献[6-8]采用基于空间矢量的PID控制算法,文献[9]采用基于细分技术的PID控制算法,具有较高的控制精度。但PID控制算法各参数之间存在较为复杂的耦合性,且参数整定复杂,不利于产品调试和软件移植。
本文针对上述问题,提出了步进电机相电流自适应闭环控制方案。方案采用细分技术,由现场可编程门阵列(Field Programmable Gate Array, FPGA)根据硬件比较结果实现步进电机恒流斩波控制,在降低软件设计复杂度的基础上,将步进电机相电流误差限定在10%范围内,以提高步进电机驱动的平稳性,保证浮动连接机构的可靠运行。
1 细分技术
细分技术是指对步进电机每一个单步进行细分,将每一单步细分成步,称为细分。通过对步进电机进行细分控制,可以提高步进电机分辨率、减轻电机振动、降低噪声、减小失步概率,从而使电机运行更加平稳。
以两相步进电机为例,对步进电机进行细分控制。通常按正弦规律设定各相电流,使电机总电流处于恒定状态。两相电流矢量图如图1所示。
图1 步进电机两相电流随角度变化示意图Fig.1 Schematic diagram of stepper motor two phases current changing with angle
电机工作在恒流状态下,图1中总电流为恒值,各相电流计算如式( 1 )所示。
(1)
式中,、、、分别表示步进电机总电流、A相电流、B相电流、偏转角,其中偏转角定义为步进电机每运行一步,转子偏离初始位置的角度。
对两相步进电机进行两细分驱动控制,电机每相绕组通电一周,电机转子运行八拍,运行规律如图2所示。
根据式(1)可知,步进电机工作在恒流状态下,每一拍对应的各相电流在当前拍保持恒定。当转子位置变化时,各相电流随偏转角变化波形如图3所示,通过对每一相电流分别进行恒流斩波控制,即可实现步进电机总电流恒定。
(a)A相电流波形
2 步进电机控制系统设计
2.1 硬件设计
为实现在轨补加浮动连接机构步进电机的恒流控制,本文系统采用斩波的方式调节各相绕组通电时间,以控制绕组电流大小,其硬件设计架构如图4所示。
图4 步进电机驱动控制硬件设计架构Fig.4 Hardware design architecture of stepper motor driving control
图4中,FPGA接收中央处理器(Central Processing Unit, CPU)步进电机控制指令,分别输出A、B相的方向信号、刹车信号,以及脉冲宽度调制(Pluse Width Modulation, PWM)信号至18200驱动芯片,由18200分别输出A、B相驱动信号驱动步进电机。同时,FPGA根据图3所示相电流变化规律给定步进电机运行在相应位置时的电流数据,经DA转换后得到相电流设定值。由18200输出的A、B相采样电流经采样电阻转换成电压信号后分别输出至各自电压比较器,与相电流设定值进行比较,并将比较结果反馈至FPGA,由FPGA进行斩波处理,实现电流闭环控制。
斩波控制原理如下所述:当A相或B相在当前拍通电时,FPGA根据比较器输出信号对输出的A相或B相PWM信号进行斩波。以A相为例,当相电流实际值小于设定值时,比较器输出未过流信号(高电平),FPGA检测到未过流信号后,输出高电平PWM信号,绕组通电,相电流上升;当相电流实际值超过设定值时,比较器将输出过流信号(低电平),此时FPGA输出低电平PWM信号,绕组断电,相电流下降;当相电流实际值低于设定值时,绕组再次通电,相电流上升,如此循环往复,从而实现步进电机恒流控制。
2.2 软件设计
基于FPGA现场可编程、并行处理的优势,本系统采用FPGA作为处理器,构建图5所示状态机,实现在轨补加步进电机两细分驱动控制。
图5 步进电机两细分驱动控制状态机Fig.5 Two subdivision control state machine of stepper motor
图5中,状态机初始状态为IDLE状态,每检测到一个有效的步频脉冲step_pulse_p,状态机根据方向信号m_dir_c向不同方向跳转一次,在系统复位或因异常跳出状态机后重新进入初始状态。m_dir_c = ′1′,电机方向定义为正转;m_dir_c = ′0′,电机方向定义为反转。状态机各状态说明如表1所示。
表1 步进电机两细分控制状态机状态说明
各状态下,由FPGA输出相电流设定值至DA,经硬件电路处理后,由比较器反馈电流比较结果至FPGA。FPGA接收比较器反馈值,判断电机是否过流,并根据判断结果对通电绕组PWM信号进行斩波输出,其控制流程如图6所示。
图6所示流程为步进电机控制状态机处于每一动作状态时,FPGA根据当前所处状态进行绕组通电判断,绕组通电时,使能PWM信号输出,否则无输出。PWM使能输出情况下,FPGA判断通电相数,根据通电相数更新相电流设定值并输出至DA芯片。经硬件电路处理并反馈后,FPGA对电机过流状态进行判断,电机未过流,PWM输出有效电平,否则置无效,由此实现步进电机两细分恒流斩波闭环控制。
图6 步进电机PWM信号斩波控制流程Fig.6 Control process of stepper motor PWM signal chopping
3 测试验证
采用Modelsim仿真工具,对步进电机PWM信号斩波过程进行仿真,仿真结果如图7所示。
图7 步进电机PWM信号斩波仿真图Fig.7 Simulation diagram of stepper motor PWM signal chopping
图7中:clk_i、rst_n_i、cur_A_i(1)、m2_pwm_o(0)、cur_B_i(1)、m2_pwm_o(1)、curr_powerswitch_state分别定义为时钟信号(16MHz)、复位信号、A相过流信号(高电平有效)、A相PWM信号、B相过流信号(高电平有效)、B相PWM信号、两细分控制状态机当前状态。
从仿真图7中可以看出,在不同状态下,当绕组通电时,PWM信号输出电平跟随绕组过流状态变化,即各相绕组过流时,对应相PWM信号输出无效电平(低电平),反之输出有效电平(高电平),实现了步进电机PWM信号斩波输出。
为验证PWM信号斩波后对步进电机相电流的控制效果,搭建图8所示实验平台。
图8 在轨补加步进电机驱动实验平台示意图Fig.8 Schematic diagram of the in-orbit refueling stepper motor experimental platform
图8中,在轨补加控制系统接收上位机电机控制指令,解析控制指令后经驱动电路输出驱动信号至步进电机,并反馈遥测信号至上位机。为分析不同设定值下相电流的变化情况,通过示波器记录波形,具体如图9所示。
(a) 相电流设定值1A
根据示波器测量结果计算相电流误差百分比(误差最大值/设定值×100%),相电流设定值分别为1A、2A、3A时,对应的误差百分比分别为8%、4%、4%,控制结果符合需求。
4 结 论
本文提出了一种步进电机相电流自适应闭环控制方案,该方案通过比较器对相电流设定值和实际值进行比较,并将比较结果反馈给FPGA,由FPGA根据反馈值对电机PWM驱动信号进行斩波处理。这有效降低了FPGA软件控制流程的设计复杂性,同时省去了电流闭环控制参数调整环节,极大方便了步进电机恒流控制调试过程。
本文基于上述方法进行了系统软硬件设计,通过Modelsim仿真工具对FPGA输出的PWM信号斩波过程进行仿真,并搭建了实验平台对步进电机斩波控制效果进行测试验证。测试结果表明,采用FPGA、DA芯片、比较器、电机驱动芯片等器件构建闭环回路对电机PWM驱动信号进行斩波,实现了步进电机恒流控制,保证了浮动连接机构在恒转矩驱动下平稳进行在轨补加,为航天器长期稳定地工作奠定了坚实基础。