0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详细讲解LPC553x双伺服电机控制方案的演示环境

恩智浦MCU加油站 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2022-08-25 11:51 次阅读

本文紧接上文,详细讲解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



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6812

    浏览量

    147668
  • LPC
    LPC
    +关注

    关注

    8

    文章

    135

    浏览量

    77349
  • 伺服电机控制

    关注

    0

    文章

    12

    浏览量

    7455
  • 直流伺服电机

    关注

    4

    文章

    40

    浏览量

    10243

原文标题:LPC553x双伺服电机控制方案详解(下)

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    交流伺服电机工作原理 交流伺服电机控制方式

    交流伺服电机是一种通过闭环反馈控制系统实现精确位置、速度和转矩控制电机。它在工业自动化、机械加工、机器人领域有着广泛的应用。本文将
    的头像 发表于 02-18 14:59 638次阅读

    一周新品推荐:NXP的 LPC553x/S3x MCU系列和PUI Audio 的触觉反馈元件

    DigiKey Daily  短视频 本期DigiKeyDaily 向大家推荐两款产品—— NXP的 LPC553x/S3x MCU系列和PUI Audio 的触觉反馈元件 1 产品一: NXP
    的头像 发表于 11-16 16:05 277次阅读
    一周新品推荐:NXP的 <b class='flag-5'>LPC553x</b>/S3x MCU系列和PUI Audio 的触觉反馈元件

    如何使用LPC553x的运放功能模块?

    如何使用LPC553x的运放功能模块?
    的头像 发表于 10-26 18:50 273次阅读
    如何使用<b class='flag-5'>LPC553x</b>的运放功能模块?

    总线伺服电机的回零控制方法

    通过总线控制伺服电机时,如何进行回零(寻参考点)控制?这里就CANOPEN伺服电机的回零
    的头像 发表于 10-23 11:42 1870次阅读
    总线<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>的回零<b class='flag-5'>控制</b>方法

    LPC553x/S3x MCU系列功能简介

    LPC553x/S3x MCU系列进一步扩展了恩智浦第一个基于Cortex-M33的通用MCU系列,提供了显著的性能增强、所有型号片上RAM具有奇偶校验或ECC、加强的安全功能模块和增加了精确模拟模块,充分利用高性价比的40 nm NVM工艺技术。
    发表于 09-22 11:42 451次阅读
    <b class='flag-5'>LPC553x</b>/S3x MCU系列功能简介

    PLC怎么控制伺服电机

    在回答这个问题之前,首先要清楚伺服电机的用途,相对于普通的电机来说,伺服电机主要用于精确定位,因此大家通常所说的
    发表于 09-08 11:22 839次阅读

    LPC553x/LPC55S3x上的无刷直流(BLDC)电机控制演示

    电子发烧友网站提供《LPC553x/LPC55S3x上的无刷直流(BLDC)电机控制演示.pdf》资料免费下载
    发表于 08-17 15:08 2次下载
    <b class='flag-5'>LPC553x</b>/<b class='flag-5'>LPC</b>55S3x上的无刷直流(BLDC)<b class='flag-5'>电机</b><b class='flag-5'>控制</b><b class='flag-5'>演示</b>

    PLC是怎么控制伺服电机的?

    在回答这个问题之前,首先要清楚伺服电机的用途,相对于普通的电机来说,伺服电机主要用于精确定位,因此大家通常所说的
    发表于 08-09 09:25 690次阅读

    伺服电机中的高低惯量是指什么意思

    伺服电机中的惯量、高低惯量、小中大惯量都是什么,本文就给大家详细讲解下。
    的头像 发表于 07-23 15:37 1270次阅读

    如何使用单片机控制伺服电机

    伺服电机是我们常用的一种电机,在本文的案例中,将学习如何使用单片机控制伺服电机,案例以PIC16
    的头像 发表于 07-06 10:53 3387次阅读
    如何使用单片机<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>?

    LPC553x PWM子模块时钟应通过工具启用,配置工具/SDK驱动程序不会自动执行此操作怎么解决?

    LPC553x 平台上,PWM 外设 SDK 驱动程序应在配置外设之前为使用中的子模块启用上游时钟。 SYSCON->PWM0SUBCTL 和 SYSCON->
    发表于 05-30 06:18

    集成先进的模拟特性:LPC553x实现电机控制

    LPC553x电机控制子系统有两个灵活的脉宽调制(PWM)模块,提供多达12个PWM输出、2个正交编解码器输入和2个AOI(And/Or/Invert,与或非)模块,可直接馈入外设以实现快速响应
    的头像 发表于 05-25 10:19 678次阅读
    集成先进的模拟特性:<b class='flag-5'>LPC553x</b>实现<b class='flag-5'>电机</b><b class='flag-5'>控制</b>

    LPC553x ADC VREF依赖性问题求解

    在我使用的 LPC553x 系统上,除非在使用 ADC 模块之前启用内部 VREF 模块和低功率带隙,否则 ADC 会产生糟糕的结果。我最初没有打开 VREF 模块,因为我的电路板设计通过
    发表于 05-22 09:04

    从配置工具/MCUxpresso为LPC553x系统生成的代码的问题求解

    嗨,我遇到了从配置工具/MCUxpresso 为 LPC553x 系统生成的代码的问题。 时钟工具不了解电源管理控制器 (PMC) 对 FRO1M 或 FRO12M 时钟的依赖性。时钟工具可以配置为
    发表于 05-22 07:29

    使用Arduino控制伺服电机

    伺服电机是一个闭环系统,它使用位置反馈来控制其运动和最终位置。伺服电机有多种类型,其主要特点是能够精确
    发表于 05-06 10:08 2次下载
    使用Arduino<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>