I.MX93-EVK 电机控制算法的实现
使用 MCIMX93-EVK 开发套件实现电机控制算法。其中包含硬件配置详情、设置说明以及软件实现流程概述。
主板:MCIMX93-EVK
类别:电机控制
外设:PWM、GPIO、ADC
工具链:IAR
目录
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.硬件
- MCIMX93-EVK
- FRDM-MC-LVPMSM。
- AdaptBoardMCXN94LCMC
- 原理图包含在Base Board.zip文件中。
- 定制基板
- 请参阅Base Board.zip文件中的电路板设计。
- 电机 MCG IB 23810
- J-Link 调试探针
- 个人电脑
3. 设置
3.1 功率级
功率级由定制基板、AdaptBoard 和 Freedom LVPMSM 板组成。
定制基板对于将 LVPMSM 引脚排列适配到 MCIMX93-EVK GPIO 接口 (J1001) 以及降低 ADC 电压至关重要。此外,直流总线过流保护也通过该板进行管理。
3.1.1 定制基板
该板用于连接 MCIMX93-EVK 和 Freedom LVPMSM。原理图和电路板视图如下所示。
这些电路板通过一条线缆连接,从基板上的连接器 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 组中。
- 需要初始化 MCIMX-EVK 上的 GPIO 扩展器。这些 IC 充当 GPIO 输出的开关。
GPIO_SEL_Init()应使用功能。- 此功能利用 I2C 与 GPIO 扩展器进行通信。
- 必须初始化 GPIO 扩展器,因为 PWM 信号要经过它。
- 时钟和引脚应初始化。
- 下表总结了使用的 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 | 输入 | 直流母线过电流保护 | - 故障处理通过函数
PWM_GPIO_INIT()和进行初始化GPIO_Fault_Handler()。PWM_GPIO_INIT()将用于 PWM 的所有 GPIO 输出初始化为逻辑 0,并设置用于输出的 GPIO。GPIO_Fault_Handler()当直流总线电流过大时,启用 GPIO 引脚 0 的 IRQ。
- PWM 使用函数初始化
InitPWM(TPM_Type *base1, TPM_Type*base2)。PWM 在上下计数模式下为 TPM4 和 TPM6 初始化。 EncoderInit(TPM_Type *TPM)初始化 TPM5 Ch0 和 Ch1 以用于编码器输入。InitADC()用于ADC初始化。- 信号按顺序测量。
- 通道 0 – 3 用于电机控制应用,如下表所示:
| ADC通道 | 测量信号 |
| ---------------- | -------------- |
| SARADC通道0 | A相电流 |
| SARADC通道1 | B相电流 |
| SARADC通道2 | C相电流 |
| SARADC 通道 3 | 直流母线电压 |- 仅当剩余足够时间时,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。
- 在 IAR EW(v. 9.50.1)中创建新的工作区
- 项目 -> 导入项目文件
- 浏览项目位置(
...MCIMX93352_PMSM)。 - 打开文件“ iMX93PMSMControl.ewp ”。
- 浏览项目位置(
- 在“源”组中打开文件“main.c”。
- 使用 Project –> Make (F7) 构建项目。
- 根据硬件配置连接电缆和连接器。
- 使用 SW301 打开 MCIMX93-EVK 的电源。
- 下载并调试项目:
- 在组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_OFF为1。这将启用观测器。要更改观测器的动态特性,请将变量的值更改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.fltD或foc.i_DQ_Req.fltQ。这将允许您控制电机的磁通和产生扭矩的部件。如果您想运行电机,则需要更改 q 轴(产生扭矩的轴)所需的电流值。电机将以与该轴可用电压值相对应的速度旋转。
4.1.6 算法调优
电流和速度环路的动态特性可以通过变量f_i_PI、f_w_PI、进行调整E_w_PI。频率f值越高,调节速度越快。要启用控制器调整,需要分别将变量set_i_PI、的值更改set_w_PI为1。
4.2 故障状态
应用程序在各种状态下运行,当应用程序出现状态故障时,必须消除故障原因,否则将无法启动应用程序。您可以在“故障”子块中检查故障。要清除故障,请向变量写入 1。cntrState.switchFaultClear这将使应用程序进入“初始化”状态。在此状态下,所有变量都将初始化为默认值。
5.结果
现在可以使用 i.MX93 控制 PMSM。源代码可以更新,添加更多控制策略。
6. 常见问题解答
尚未发现针对该项目的常见问题解答。
7. 支持
8.已知问题
- 第二次下载源代码后,ADC中断不起作用。需要重置EVK,可以通过关闭/打开开发板或使用重置按钮来实现。
- 个别错误在 FreeMASTER 应用程序中不可见。
项目元数据
来源:恩智浦appcodehub
1361
