请选择 进入手机版 | 继续访问电脑版
查看: 1430|回复: 5

[分享] LPC553x双伺服电机控制方案详解(上)

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    31998
    最后登录
    2024-4-9
    发表于 2022-8-31 17:36:20 | 显示全部楼层 |阅读模式

    LPC553x采用了ARM最新的Cortex-M33核心,运行速度高达150MHz。它改进了产品架构并提高了集成度,大幅改进了功耗,提供高级安全功能,同时强大的处理能力、实时特性和丰富的外围设备使其成为工业计算、电机控制、功率转换、智能消费产品、家庭和楼宇自动化等高性能应用的理想选择。

    本文中的方案的主要硬件包含LPC55S36-EVK,两个FRDM-MC-PMSM驱动板与两个三相伺服电机。

    LPC55S36处理器通过ADC采样电机的电流和电压,ENC模块接收编码器信号得到转子位置与速度,并基于FOC算法生成PWM来驱动电机,同时可以使用UART与FreeMASTER上位机进行通信,实现命令发送、变量观测等功能,便于用户调试,最终可以实现精准的位置控制与平滑的调速功能。

    1. LPC553x双伺服电机控制硬件结构

    这是LPC553x控制双伺服电机的硬件框图:
    11.png

    图的中间部分是LPC55S36评估套件(EVK),其中包含LPC55S36芯片与外围接口。

    图的右边是FRDM-MC-LVPMSM电机驱动板,包含驱动桥、模拟采样电路和编码器接口电路。

    M1和M2是两个伺服电机,带有精度为1000线正交编码器。

    eFlexPWM, ENC, ADC,HSCMP是片内外设,分别用于电机控制、编码器信号采集、模拟量采集和过流故障保护。

    InputMUX是输入复用模块,可以为芯片内部外设提供不同的信号通路选项,本演示中负责为PWM同步、ADC硬件触发提供信号连接。

    图的左边是运行在LPC55S36上的应用软件,包括磁场定向控制(FOC)算法、CM33_RTCESL_4.6.2(实时控制嵌入式软件电机控制和电源库)和SDK2.10。

    左下角的Flexcomm提供多种外设功能选择,可以通过软件配置成USART,SPI,I2C,I2S功能。这里我们配置成UART功能,实现FreeMASTER调试工具与LPC55S36通信,用于用户操作演示。

    2. 伺服控制系统结构
    本文中伺服控制系统是经典的电流环、速度环、位置环三环结构。

    最内部的回路是电流控制回路(快速回路),它包含模拟信号采样、FOC算法和PWM占空比更新。

    中间回路为速度控制回路。从速度测量方法获得的测量速度与给定速度之间的比较会产生速度误差。速度误差输入到速度PI控制器,为定子电流的转矩分量产生新的期望值。

    最外层回路为位置控制回路。从高级应用层输入位置命令。实际位置命令与电机实际位置的比较产生位置误差。位置误差输入到位置控制器,产生新的参考速度。需要说明的是,为了系统的流畅稳定运行,位置给定需要经过平滑的路径规划,如果位置给定信号是不连续的,则需要在位置控制器前增加斜坡与轨迹滤波器处理。
    12.png

    其中,FOC是基于定子磁场定向的矢量控制技术。其最基本的思想就是将定子电流解耦成一个控制磁场的分量和一个控制转矩的分量。经过解耦后,两个电流分量Id与Iq独立受控,互不干扰。这时电机的控制器结构就和他励直流电机控制器一样简单。

    为了实现FOC控制,需要执行以下步骤:
    检测电机物理量(相电流,电压,转子位置)
    使用Clarke变换将三相定子电流变换到两相坐标系(α,β)  
    使用Park变换将αβ轴定子电流旋转变换到dq坐标系
    分别独立控制转矩电流(iq)分量和励磁电流(id)分量
    使用解耦模块计算输出定子电压空间矢量
    定子电压空间矢量经过反Park变换从dq坐标系变换到αβ两相坐标系
    使用空间矢量调制,产生三相电压输出。

    为了将定子电流分解为转矩分量和磁通分量,必需知道电机励磁磁通的位置,这需要精确检测转子的位置和速度信息。在本文中,转子位置与转速信息由LPC55S36中的ENC模块采集电机编码器的输出信号得到。

    3. 关键外围设备配置
    下面介绍双伺服电机控制应用程序代码中的基本外设配置方法。

    3.1 模拟量采样(ADC)
    采用ADC0和ADC1对电流和直流母线电压进行电机控制模拟量的采样。

    ADC0和ADC1的时钟频率为48MHz,由Fro_hf时钟分频得到。

    ADC以16位工作,并选择单端转换和硬件触发模式。ADC硬件触发信号来自于eFlexPWM模块。

    两个ADC均有自己的触发链,触发采样后依次采集相电流与母线电压,并依次存入结果队列缓冲区。

    由于相电流在下桥臂晶体管导通的时刻测量,如果占空比很高(电压值在正弦曲线的最大值区域),如图所示,那么可以测量电流的时间将非常短。为了获得稳定的采样电阻压降,下桥臂晶体管必须至少导通一个临界脉冲宽度。因此我们使用ADC的双单端采样模式在同一时刻对两相电流进行并行采样,第三相电流根据公式计算得到。通道根据产生定子电压空间矢量的扇区来选择,在ADC中断服务程序结束时执行该分配。
    13.png

    表1. ADC采样通道配置

    14.png

    为了实现在双单端灵活采样的功能,需要在CMDLx[ALTBEN]寄存器使能备用通道功能,并在CMDLx[ALTB_ADCH]寄存器设置所需要的B通道号。并且在读取ADC结果寄存器时,根据当前SVM所在的扇区号及公式计算得到完整的三相电流值。

    两个触发器队列都有各自的转换完成中断,当ADC0转换完成时,触发ADC0中断,进入ADC0_IRQHandler执行电机1的快速控制回路程序。当ADC1转换完成时,触发ADC1中断,进入ADC1_IRQHa0ndler执行电机2的快速控制回路程序。

    3.2 增强柔性脉宽调制器(eFlexPWM)
    eFlexPWM包含4个PWM子模块,每个子模块都可以被设置为控制单个半桥功率器件,支持故障模式。

    此PWM模块可以产生各种开关模式,包括高度复杂的波形,能够通过预驱动器产生连接到MOSFET H桥的三相PWM信号。

    每个eFlexPWM模块拥有一个向上计数的16位计数器,它仅在向上方向计数至VAL1值,然后重置为 INIT 值。在计数过程中,计数值与VAL2/VAL3寄存器中的值作比较,控制输出电平高低翻转。如果计数范围恰好是2的倍数,则可以将INIT值与VAL1值设置成以0为中心的相反数,同样将VAL2与VAL3的值设置为正负符号不同,但数字相同。如果所有子模块的信号边沿遵循相同的约定,则信号彼此居中对齐。

    本文中使用的PWM子模块配置如下:
    IPBus时钟源:150MHz。
    运行频率为16kHz,周期62.5us。
    INIT寄存器-4687,VAL1 4686。
    死区时间为0.5us的互补模式。
    PWM模块的每个周期都会产生重载和初始化信号。
    PWM0_Submodule_0从VAL0(0)触发一个信号,用于通过INPUTMUX模块为电机2的PWM1提供同步。
    PWM0_Submodule_1从VAL4(-4687)触发一个信号,用于通过INPUTMUX模块为ADC触发采样提供同步。

    本演示中使用的电机2的三个PWM子模块配置如下:
    PWM1_Submodule_0从VAL4(-4687)触发一个信号,用于通过INPUTMUX模块为ADC触发采样提供同步。
    为了合理分配CPU负载,避免两台电机同时消耗电能,需要在两台电机的PWM波之间实现180度的滞后。

    如图所示,INIT和VAL1被合理地配置以使PWM计数器在正常周期内运行。实现180度滞后的关键是,每当PWM0计数器达到VAL0时,它会触发信号EXT_SYNC(外部同步)到PWM1模块以初始化计数器。
    15.png

    正如上文所说,双电机的PWM之间存在180度相位滞后,在此基础上ADC利用eFlexPWM产生的触发信号来实现双电机模拟信号的时分采样。

    一旦eFlexPWM0计数器达到PWM0SM1VAL4,将触发ADC采样电机1的模拟信号。在ADC转换完成后,将触发ADC0转换完成中断并进入ADC0_IRQHandler中断服务程序以运行电机1控制算法。

    一旦eFlexPWM1计数器达到PWM1SM0VAL4,将触发ADC采样电机2的模拟信号。在ADC转换完成后,将触发ADC1转换完成中断并进入ADC1_IRQHandler中断服务程序以运行电机2控制算法。
    16.png

    3.3 标准计数器/定时器(CTIMER)
    CTimer包含五个子模块CTIMER0, CTIMER1, CTIMER2, CTIMER3, CTIMER4。

    每个子模块拥有一个32位计数器与可编程分频器,可以以CTIMER时钟或外部提供的时钟为周期进行计数,并且可以根据四个匹配寄存器的内容在指定的定时器值上选择性地生成中断或执行其他操作。

    在本文中,使用CTIMER0与CTIMER1用于两个电机的慢速控制回路的同步,设定计数值为48000且开启中断使能,由于CTIMER的时钟源为96MHz,因此中断频率为2kHz。

    3.4 输入复用控制器(INPUTMUX)
    输入复用模块(INPUTMUX)可以为芯片内部外设提供不同的信号通路选项,外设的输入信号可以复用到多个输入源,可以是外部引脚、中断、其他外设的输出信号或者其他内部信号。

    在此双伺服电机控制演示中,下图显示了通过INPUTMUX在模块之间传输的所有信号。
    17.png

    3.5 正交解码器(ENC)
    LPC553x中包含两个正交解码模块ENC0与ENC1。它们拥有32位的计数器/定时器组,适用于编码器信号的解码。每个计数器/定时器组包含预分频器、滤波器、位置计数器、转数计数器、位置偏差计数器、保持寄存器、看门狗时钟、脉冲累加器等。

    在本应用中,ENC模块用于电机转子位置信息的获取与速度测量。
    18.png

    32位计数器在每个计数脉冲上由 PHASEA 和 PHASEB 的相位差决定向上或向下计数。位置计数器作为一个积分信息,其计数值与位置成正比。计数方向由 Count_Up和Count_Down信号决定。下图显示了增量式正交位置解码器的基本操作。

    如果PHASEA超前于PHASEB,则计数方向为正。

    如果PHASEA之后于PHASEB,则计数方向为负。
    19.png

    为了实现电机测速功能,ENC模块中有几个关键寄存器:POSD, POSDH, POSDPERH, LASTEDGEH。
    读取POSD寄存器可以使各个寄存器的值装载到对应的保持寄存器中,以实现数据的同步;
    POSDH是两次读取位置寄存器之间发生的位置值变化;
    POSDPERH存储的是使用由CTRL3[PRSC]预分频的外设时钟为基准,两次编码器脉冲之间的计数器值变化,反映了两次编码器脉冲之间的时间差;
    LASTEDGEH反映了距离上次编码器脉冲的时间;
    Ttimer为ENC模块的时钟周期;
    Line为电机编码器的线数。

    对于电机测速来说,M法与T法分别适合高速与低速条件,因此需要在不同转速条件下实现两种测速方法的灵活切换。对于高转速情况,可以通过M法计算速度:
    20.png

    而对于低转速条件,可以通过T法计算速度:
    21.png

    配合ENC模块可以轻松实现两种方法的自动切换以实现准确速度测量,具体算法细节可以参考LPC553xRM的ENC章节。

    3.6 FreeMASTER通信(Flexcomm)

    Flexcomm是一种可以提供多种外设复用功能选择的模块,可以通过软件配置成USART, SPI, I2C, I2S等接口进行通信,这里我们配置成UART功能用于LPC与PC之间的FreeMASTER通信,波特率设置为115200位/秒。

    3.7. 故障保护(HSCMP/DAC)
    故障保护是电机运行中需要的常用功能,当过流故障发生时,需要及时关停PWM输出以保护电机与驱动电路的安全。LPC553x拥有三个HSCMP模块与三个DAC模块来应对电机过流故障。

    在本文的演示中,我们使用HSCMP0和HSCMP1来对母线电流经过采样电阻产生的电压降落与DAC产生的参考电压进行比较,然后当母线电流预设值时产生故障信号。



    基于LPC553x 电机控制讲解






    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    91

    主题

    2924

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    7793
    最后登录
    2024-4-12
    发表于 2022-8-31 18:18:11 | 显示全部楼层
    知行合一,需要动手试才行。
    加油哦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:35
  • 签到天数: 480 天

    [LV.9]以坛为家II

    8

    主题

    1345

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2885
    最后登录
    2024-4-16
    发表于 2022-9-1 09:00:23 | 显示全部楼层
    感谢楼主,讲的非常的详细,对我很有帮助
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-1-4 14:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    172

    帖子

    0

    高级会员

    Rank: 4

    积分
    567
    最后登录
    2024-4-10
    发表于 2023-1-10 15:22:32 | 显示全部楼层
    学习了,多谢!
    每天登陆学习一下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-3-22 08:52
  • 签到天数: 437 天

    [LV.9]以坛为家II

    3

    主题

    1789

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3936
    最后登录
    2024-4-11
    发表于 2023-9-25 11:21:47 | 显示全部楼层
    有些难度
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-1-4 14:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    172

    帖子

    0

    高级会员

    Rank: 4

    积分
    567
    最后登录
    2024-4-10
    发表于 2024-4-1 15:04:02 | 显示全部楼层
    学习了,谢谢!
    每天登陆学习一下
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-17 01:08 , Processed in 0.168937 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表