• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

【代码库】I.MX93-EVK 电机控制算法的实现

07/29 17:07
1361
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

dm-motor-control-demo-for-i-mx93-main.zip

共1个文件

I.MX93-EVK 电机控制算法的实现

 

使用 MCIMX93-EVK 开发套件实现电机控制算法。其中包含硬件配置详情、设置说明以及软件实现流程概述。

主板:MCIMX93-EVK

 

类别:电机控制

 

外设:PWM、GPIO、ADC

 

工具链:IAR

 

目录

 

  1. 软件
  2. 硬件
  3. 设置
  4. 使用 IAR 启动应用程序
  5. 结果
  6. 常见问题解答
  7. 支持
  8. 已知问题
  9. 发行说明

1.软件

 

  • 下载并安装IAR Embedded Workbench for ARM v 9.50.1或更高版本。
  • 下载并安装最新版本的FreeMASTER(3.2.2.2)或更高版本。
  • 下载并安装最新版本的CM33F_RTCESL _4.7.1或以上版本。
  • 具有最新可用版本的 J-Link FW
  • 从这里下载 J-Link 调试探针补丁以支持 i.MX93 ,并按照下载文件夹中 README.txt 文档中的说明进行操作。

2.硬件

 

3. 设置

 

图 1

3.1 功率级

 

功率级由定制基板、AdaptBoard 和 Freedom LVPMSM 板组成。

定制基板对于将 LVPMSM 引脚排列适配到 MCIMX93-EVK GPIO 接口 (J1001) 以及降低 ADC 电压至关重要。此外,直流总线过流保护也通过该板进行管理。

3.1.1 定制基板

 

该板用于连接 MCIMX93-EVK 和 Freedom LVPMSM。原理图和电路板视图如下所示。

图 2

图3

这些电路板通过一条线缆连接,从基板上的连接器 J9 连接到 MCIMX93-EVK 上的 GPIO 接口 J1001。该接口包含 PWM 输出、编码器信号(通道 A、通道 B)、Freedom LVPMSM 的 3V3 电源电压以及 GND 连接。

对于 ADC 连接,使用接头 J10,该接头通过焊接线连接到 MCIMX93-EVK 上的连接器 J1003。来自 Freedom LVPMSM 板的 ADC 电压通过分压器降至 1V8,然后连接到连接器 J10。

由于 MCIMX93-EVK 上仅提供 4 个 ADC 通道,因此测量的直流总线电流电压比较器 U3 管理。它可作为过流故障保护。当电压超过 6.65 A 的阈值时,GPIO2 引脚 0 将设置为逻辑 0,触发中断并将 PWM 切换至关闭状态。输出连接到连接器 J9 上的引脚 27。

Freedom LVPMSM 板上的 IC 需要 3V3 电源。该电压由 MCIMX93-EVK 提供。

3.1.2 适配板

 

开发板的连接器 JC1 连接到基板连接器 J5 和 J7,而连接器 JC2 连接到 J6 和 J8。务必确保 JC2 连接器的第一个引脚与 J8 连接器的第一个引脚对齐。

^注:由于现有硬件的限制,我们引入了适配板。如果定制底板的引脚能够适配?Freedom LVPMSM 板?,则未来使用 i.MX93 电机控制算法时无需使用适配板。^

3.1.3 Freedom LVPMSM板

 

LVPMSM 板应直接连接到 AdaptBoard。

根据电路板的示意图,电机相位应连接到连接器 J7。

根据电路板的原理图,编码器应连接到连接器 J8。

3.2 MCIMX93-EVK配置

 

使用 USB-C 转 USB-A 线缆将 PC 连接到 MCIMX93-EVK 上的 J1401,以实现串行通信。这将用于使用 FreeMASTER 对应用程序进行实时控制。

将 J-Link 调试探针连接到电路板上的 JTAG 连接器 (J1405)。

启动开关应设置为从 FlexSPI 串行 NOR 启动。将 SW1301 设置为 1101 [4-1]。

将 USB-C 电源线连接到连接器 J301。

将自定义基板连接器 J10(引脚 2、4、6、8)的 ADC 输入连接到连接器 J1003 引脚 1、3、5、7,这些引脚对应 SAR_ADC0 的通道 0、1、2、3。

将 GPIO 接头 J1001 连接到自定义基板上的接头 J9。

3.3 软件初始化

 

定时器、PWM、ADC 和 GPIO 选择器(板载芯片)的外设驱动程序定义在Peripherals.h文件中,该文件位于“sourceperipherals”组下。FreeMASTER 驱动程序位于 Freemaster 组中。

  1. 需要初始化 MCIMX-EVK 上的 GPIO 扩展器。这些 IC 充当 GPIO 输出的开关。
    • GPIO_SEL_Init()应使用功能。
    • 此功能利用 I2C 与 GPIO 扩展器进行通信。
    • 必须初始化 GPIO 扩展器,因为 PWM 信号要经过它。
  2. 时钟和引脚应初始化。
    • 下表总结了使用的 GPIO 引脚。
    • TPM4、TPM5 和 TPM6 的默认时钟为 24 MHz。

    | GPIO引脚 | 丙氨酸 | 输入/输出 | 功能 |
    | ---------- | ------------ | ----------- | -------------------- |
    | GPIO05 | TPM4 通道0 | 输出 | 脉宽调制 |
    | GPIO21 | TPM4 通道1 | 输出 | 脉宽调制AB |
    | GPIO13 | TPM4 通道2 | 输出 | 脉宽调制蓝牙 |
    | GPIO25 | TPM4 通道3 | 输出 | 脉宽调制BB |
    | GPIO19 | TPM6通道2 | 输出 | 脉宽调制电流互感器 |
    | GPIO27 | TPM6通道3 | 输出 | 脉宽调制断路器 |
    | GPIO06 | TPM5 Ch0 | 输入 | 编码器通道A |
    | GPIO22 | TPM5 通道1 | 输入 | 编码器通道B |
    | GPIO04 | GPIO04 | 输出 | 蓝色LED |
    | GPIO12 | GPIO12 | 输出 | 绿色 LED |
    | GPIO00 | GPIO00 | 输入 | 直流母线过电流保护 |

  3. 故障处理通过函数PWM_GPIO_INIT()和进行初始化GPIO_Fault_Handler()
    • PWM_GPIO_INIT()将用于 PWM 的所有 GPIO 输出初始化为逻辑 0,并设置用于输出的 GPIO。
    • GPIO_Fault_Handler()当直流总线电流过大时,启用 GPIO 引脚 0 的 IRQ。
  4. PWM 使用函数初始化InitPWM(TPM_Type *base1, TPM_Type*base2)。PWM 在上下计数模式下为 TPM4 和 TPM6 初始化。
    • PWM_PERIODPWM周期由文件Peripherals.h中的宏设置。
    • 用于 PWM 生成的死区时间通过宏设置DEAD_TIME
    • 由于定时器硬件限制,占空比受到限制。这可以通过宏来处理MAX_DUTY
  5. EncoderInit(TPM_Type *TPM)初始化 TPM5 Ch0 和 Ch1 以用于编码器输入。
  6. InitADC()用于ADC初始化。
    • 信号按顺序测量。
    • 通道 0 – 3 用于电机控制应用,如下表所示:

    | ADC通道 | 测量信号 |
    | ---------------- | -------------- |
    | SARADC通道0 | A相电流 |
    | SAR
    ADC通道1 | B相电流 |
    | SARADC通道2 | C相电流 |
    | SAR
    ADC 通道 3 | 直流母线电压 |

  7. 仅当剩余足够时间时,TPM 通道才会更新。执行所需的最短时间Update3PWM(frac16_t phaseA, frac16_t phaseB, frac16_t phaseC)为 4.25μ秒。如果算法计算时间过长,TPM 寄存器将不会更新。

4. 使用IAR启动应用程序

 

IAR 中的项目使用 4.7.1 版 RTCESL 库 (CM33FRTCESL4.7.1_IAR)。为了确保应用程序正常运行,该库应保存在 C:nxpRTCESL 中。

注:要支持 i.MX93,必须安装 IAR 和 Segger J-Link 补丁。下载请访问https://www.nxp.com/webapp/Download?colCode=SDK_MX93_3RDPARTY_PATCH&appType=license

  1. 在 IAR EW(v. 9.50.1)中创建新的工作区
  2. 项目 -> 导入项目文件
    • 浏览项目位置(...MCIMX93352_PMSM)。
    • 打开文件“ iMX93PMSMControl.ewp ”。
  3. 在“源”组中打开文件“main.c”。
  4. 使用 Project –> Make (F7) 构建项目。
  5. 根据硬件配置连接电缆和连接器。
  6. 使用 SW301 打开 MCIMX93-EVK 的电源。
  7. 下载并调试项目:
  8. 在组sourcefreemaster中可以找到FreeMASTER应用程序,双击它即可打开FreeMASTER。

4.1 FreeMASTER 应用程序

 

在 FreeMASTER 中,您需要找到正确的 COM 端口。将开发板连接到 PC 后,会出现 4 个新端口。要与 FreeMASTER 进行串行通信,您需要选择最后一个端口。在本例中,选择 COM7:

大多数应用程序控制可以通过位于应用程序左侧的“foc”子块完成。

电机控制所需的变量显示在屏幕底部的“变量监视”窗口中:

4.1.1 运行应用程序

 

1可以通过将或0分别写入变量 来打开/关闭该应用程序cntrState.switchAppOnOff。控制模式可以在标量控制、电压控制、电流(扭矩)控制和速度控制之间切换。 switchSensor 变量用于在各种无传感器方法之间切换。您可以使用屏幕左侧的示波器或记录仪实时观察变量。电流不得超过 2 A。

4.1.2 无传感器算法实现

 

要启用反电动势观测器的计算,请导航至Back-EMF Obs子块。需要将变量更改BemfObs_ON_OFF1。这将启用观测器。要更改观测器的动态特性,请将变量的值更改set_BemfObs_SL为。现在,您可以更改、和 的1值,这将导致观测器的动态特性发生变化。要将观测器的速度用作速度控制中的反馈,请将变量更改为或。f_BemfObs E_BemfObs f_BemfObs_ATO E_BemfObs_ATO``f_BemfObs_LPF``switchSensor``1``Bemf_SL

4.1.3 标量和速度控制

 

在标量和速度控制模式下,可以使用FOC_n_Mech_Req变量设置电机所需的速度。更改变量值后,电机将以所需的速度开始旋转。您可以在示波器/记录仪“foc->n Mech – i_DQ”中检查此值。要使用速度控制,需要使用传感器(编码器)或无传感器算法。

4.1.4 电压控制

 

要改变 d 轴或 q 轴上的电压,您需要分别改变变量foc.uDQReq.fltD或。foc.uDQReq.fltQ

4.1.5 电流(扭矩)控制

 

要改变 d 轴或 q 轴的电流,您需要分别更改变量foc.i_DQ_Req.fltDfoc.i_DQ_Req.fltQ。这将允许您控制电机的磁通和产生扭矩的部件。如果您想运行电机,则需要更改 q 轴(产生扭矩的轴)所需的电流值。电机将以与该轴可用电压值相对应的速度旋转。

4.1.6 算法调优

 

电流和速度环路的动态特性可以通过变量f_i_PIf_w_PI、进行调整E_w_PI。频率f值越高,调节速度越快。要启用控制器调整,需要分别将变量set_i_PI、的值更改set_w_PI1

4.2 故障状态

 

应用程序在各种状态下运行,当应用程序出现状态故障时,必须消除故障原因,否则将无法启动应用程序。您可以在“故障”子块中检查故障。要清除故障,请向变量写入 1。cntrState.switchFaultClear这将使应用程序进入“初始化”状态。在此状态下,所有变量都将初始化为默认值。

5.结果

 

现在可以使用 i.MX93 控制 PMSM。源代码可以更新,添加更多控制策略。

6. 常见问题解答

 

尚未发现针对该项目的常见问题解答。

7. 支持

 

8.已知问题

 

  • 第二次下载源代码后,ADC中断不起作用。需要重置EVK,可以通过关闭/打开开发板或使用重置按钮来实现。
  • 个别错误在 FreeMASTER 应用程序中不可见。

项目元数据

 

董事会徽章

类别徽章

周边徽章 周边徽章 周边徽章

工具链徽章

来源:恩智浦appcodehub

  • dm-motor-control-demo-for-i-mx93-main.zip
    下载
恩智浦

恩智浦

恩智浦半导体创立于2006年,其前身为荷兰飞利浦公司于1953年成立的半导体事业部,总部位于荷兰埃因霍温。恩智浦2010年在美国纳斯达克上市。恩智浦2010年在美国纳斯达克上市。恩智浦半导体致力于打造全球化解决方案,实现智慧生活,安全连结。

恩智浦半导体创立于2006年,其前身为荷兰飞利浦公司于1953年成立的半导体事业部,总部位于荷兰埃因霍温。恩智浦2010年在美国纳斯达克上市。恩智浦2010年在美国纳斯达克上市。恩智浦半导体致力于打造全球化解决方案,实现智慧生活,安全连结。收起

查看更多

相关推荐