本文紧接上文,详细讲解LPC553x双伺服电机控制方案的演示环境。
4.演示操作
4.1.项目文件结构
项目中源文件(*.c)和头文件(*.h)的总数较多。因此,我们只详细介绍关键项目文件,其余的将被分组描述。
主工程文件夹分为以下目录:
oardsdual_servo - 包含硬件板的初始化配置文件。
oardsdual_servoiar - 包含编译器所需的必要文件。
oardsdual_servomc_drivers - 包含各模块的驱动文件。
oardsdual_servomotor_control - 包含电机控制算法文件和状态机文件。
oardsdual_servoparameter - 包含参数头文件和配置文件。
CMSIS - Cortex微控制器软件接口标准。
deviceLPC55S36 - LPC55S36软件开发工具包。
FM_ControlPage - FreeMASTER控制页面文件。
middlewarefreemaster - FreeMASTER支持文件。
middlewareCM33F_RTCESL_4.6.2_IAR - 实时控制嵌入式软件电机控制和电源转换库。
文件夹中的文件:
M1_statemachine.c和M1_statemachine.h包含当应用程序处于特定状态或状态转换时执行的软件例程。
State_machine.c和state_machine.h包含应用程序状态机结构定义,并管理应用程序状态和应用程序状态转换之间的切换。
Motor_structure.c和motor_structure.h包含专门用于执行电机控制算法的结构定义和子程序(矢量控制算法、位置和速度估计算法、速度控制回路)。
Motor_def.h包含主控和故障结构定义。
4.2电机参数
本文中使用的电机是两个无刷直流伺服电机,带1000线的正交编码器。下表提供了电机的基本参数:
注:本文中的应用参数(位置、速度和电流控制器)是在电机轴上安装有塑料环的情况下设置的,使用参数空轴运行可能会出现速度振荡。
4.3建立双伺服演示
硬件需求:
LPC55S36-EVK板 REV.B
两个FRDM-MC-LVPMSM电机驱动板
两个24V伺服电机
一根Micro USB数据线
注意:请确保电源适配器在所有步骤之前关闭。使用FRDM-MC-LVPMSM板为EVK板供电时,板上的TPS54060 DC-DC转换器会产生电压毛刺。因此推荐将EVK板上的JP71跳线帽断开,并使用EVK板上的5V引脚为电机编码器供电以获得更好的效果。
要建立双伺服演示,请遵循以下步骤:
如图所示,将LPC55S36-EVK和FRDM-MC-LVPMSM电机驱动板通过Arduino接口连接在一起,并连接电机相线与编码器接口。
接通24V适配器,为电机驱动板供电。
将LPC55S36-EVK与PC间通过USB接口连接。
在软件包中打开“FM_DualServo.pmp”。(FREEMATER版本不应低于3.1.2)
选择Project->Options,配置串口通信属性与工程二进制文件地址。
点击GO!按钮,即可启用PC与LPC55S36-EVK之间的FreeMASTER通信,如下图所示。
打开DualServo页面。
单击Start按钮启用演示。
通过单击控制页面上的其他按钮来操作演示。
4.4参数配置
如果用户伺服电机的参数与本演示中默认电机的参数不同,则应重新配置参数以匹配不同的电机。
打开头文件M1_Params.h或M2_Params.h,将电机本体的基本参数输入到对应的位置。
转速环、位置环的PI控制参数需要在文件中手动输入并调试,而电流环被等效成二阶控制系统,可以通过设置衰减、带宽频率的方式自动生成对应的PI控制系数。而转速、电压的使用IIR滤波器,可以手动输入滤波器的截止频率进行调试。具体的控制器、滤波器参数会由公式计算得出并在程序运行时赋值到相关的结构体变量中执行。
4.5实验性能演示
首先,下面所有的实验结果都是在电机负载轻塑料环的情况下进行测试的,并且所有的实验波形与数据都来自FreeMASTER。
上图显示了电机启动到2500rpm时的速度和电流波形。
上方的显示窗口中红线是速度给定,绿线是电机实际转速,下方串口中红色线是转矩电流给定,蓝线是实际转矩电流。我们可以看到它可以在0.13s内加速到2500转,超调非常小,而且转矩电流的控制响应也很迅速。
上图显示了位置给定为10Hz正弦波且运动范围为180°机械角时的位置响应。我们可以看到转子位置(绿线)可以很好地跟踪给定值(红线)的变化,最大误差(蓝线)约为2°。
上图中顶部波形显示速度响应,底部波形显示位置响应。红线是转速与位置给定,绿线是实际响应值,蓝线表示它们之间的误差。设置电机反转180°位置给定的命令后,大约需要0.1秒就能到达预定位置。可以看到动态响应的误差很小,静态响应也很稳定。
如果我们先设定一个按照周期性变化的变量x,两个电机的位置给定分别设置为sin(x)与cos(x),然后将两个电机的转子位置分别作为横坐标与纵坐标,则坐标点的理想轨迹会是一个圆形,圆形的边沿越平滑意味着位置控制越精准。在FreeMASTER控制页面上点击“X-Y Graph ON”按键即可开启演示,实验结果如上图所示。
4.6CPU负荷和内存使用
以下信息适用于使用IAR Embedded WorkbenchIDE v8.50.9构建的演示应用程序,优化等级为高,开启Flash cache与预取指功能。表中显示内存使用和CPU负荷。内存使用是从.map文件(IAR IDE)计算的,包括在RAM中分配的4KB FreeMASTER记录器缓冲区。使用SysTick定时器测量CPU负荷。快速环周期数是在进入ADC中断后立即使能Systick计数器,并在快速环程序执行结束后停止计数,将两次计数器的差值用于计算CPU负载。需要注意的是,表中的CPU总负载一栏显示的是运行一段时间后统计的两个电机占用的负载的最大值之和,反映了最恶劣条件下的运行情况。
在此情况下,它适用于16kHz的快环频率和2kHz的慢环(速度和位置环)频率。
具体工程代码实现和更多详细细节请参考以下资料:
LPC553x参考手册:LPC553xRM
应用笔记:MCUXpresso SDK 3-Phase PMSM Control(LPC). (3PPMSMCLPCUG)
应用笔记:Dual Servo Motor Demo on LPC553x/LPC55S3x
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !