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

【代码库】K32W148 BLDC电机控制FreeRTOS应用程序

09/19 11:23
511
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

dm-bldc-motor-control-k32w148-main.zip

共1个文件

K32W148 BLDC电机控制FreeRTOS应用程序

该软件演示如何使用 K32W148 控制无刷直流 (BLDC) 电机。它提供了一个易于使用且便携的驱动程序,用于初始化并使用所需的外设来控制带霍尔传感器的 BLDC 电机。它实现了两个 PID 控制环路来监控速度和位置(转数),以及电流保护机制(硬件比较器)和电压保护机制(ADC)。一个简单的 FreeRTOS 演示应用程序展示了该驱动程序的使用方法。

主板:K32W148-EVK、KW45B41Z-EVK

类别:电机控制、RTOS

外设:ADC、GPIO、PWM

工具链:MCUXpresso IDE

目录

  1. 软件
  2. 硬件
  3. 设置
  4. 结果
  5. 流动
  6. 常见问题解答
  7. 支持
  8. 发行说明

1.软件

要构建和运行此演示,您需要:

2.硬件

此演示需要:

3. 设置

3.1 步骤 1 - 下载并安装所需软件

如果尚未完成:

  • 安装MCUXpresso IDE 11.8.0 或更高版本
  • 安装 K32W148-EVK SDK版本 2.12.7。
  • 安装任何串行控制台应用程序(例如 Tera Term 或 PuTTY)

3.2 第 2 步 - 打开、构建和烧录示例

首先,使用 micro-USB 线将 K32W148-EVK 连接到 PC。然后,从 MCUXpresso 执行以下操作:

  1. 转到“快速启动面板”并单击“从文件系统导入项目”
  2. 选择“项目目录(解压)”并浏览到克隆的项目文件夹。
  3. 选择导入的项目并按构建按钮
  4. 使用“GUI Flash Tool”按钮烧录镜像。如果您的开发板连接正确,镜像应该会出现在“Available attached probes”弹出窗口中。选择它,并完成烧录。

3.3 步骤 3 - 电路板连接

然后,将 FRDM-MC-LVBDLC 连接到 K32W148 和电机,如下所示:

| PIN 名称 | FRDM-MC-LVBLDC | K32W148-EVK | K32W148-EVK引脚名称 |
| ---------------- | ---------------- | -------------- | --------------------------- |
| 脉宽调制 | J3,引脚 15 | J1,引脚 8 | PTA21(TPM0CH0) |
| PWM
AB | J3,引脚 13 | J1,引脚 7 | PTA20(TPM0CH1) |
| PWM
BT | J3,引脚 11 | J1,引脚 4 | PTA19(TPM0CH2) |
| PWM
BB | J3,引脚 9 | J2,引脚 2 | PTA18(TPM0CH3) |
| PWM
CT | J3,引脚 7 | J1,引脚 1 | PTA16(TPM0CH4) |
| 脉宽调制CB | J3,引脚 5 | J1,引脚 2 | PTA17(TPM0
CH5) |
| ENCA | J3,引脚 3 | J1,引脚 6 | PTB0(PTB0GPIO) |
| ENCB | J3,引脚 1 | J2,引脚 5 | PTB1(PTB1GPIO) |
| ENCI | J1,引脚 3 | J2,引脚 6 | PTB2(PTB2GPIO) |
| 电压直流断路器 | J2,引脚 7 | J4,引脚 2 | PTD2(ADC0A6) |
| 当前
DCB | J2,引脚 9 | J4,引脚 4 | PTA4(CMP0IN0/BOOTCFG) |
| 接地 | J3,引脚 12/14 | J3,引脚 7/6 | 接地 |
| 3对3 | J3,引脚 4/8 | J3,引脚 2/4 | 维博 |

| PIN 名称 | FRDM-MC-LVBLDC | 电机线 |
| --------------- | ---------------- | ------------ |
| 阶段A(PHA) | J7,引脚 1 | 白色(厚) |
| 阶段 B(PHB) | J7,引脚 2 | 蓝色(厚) |
| 阶段
C(PHI) | J7,引脚 3 | 绿色(厚) |
| 1号厅(ENCA) | J8,引脚 5 | 白色(薄) |
| 2号馆 (ENCB) | J8,引脚 4 | 蓝色(薄) |
| 3号馆(ENCI) | J8,引脚 3 | 绿色(薄) |
| 接地 | J8,引脚 2 | 黑色(薄) |
| 5伏 | J8,引脚 1 | 红色(薄) |

然后将 12V 电源连接到 PWR 连接器 (J6)。

一种简单的连接方法是将 FRDM-MC-LVDLDC 扩展板插入 Arduino 接口上 K32W148-EVK 的顶部,并使用下图所示的线路。(在这种情况下,GND 和 3V3 会自动连接到 EVK 上的正确引脚)

替代文本

替代文本

4. 运行示例

打开串行控制台,选择相应的端口 COM,配置如下:

  • 速度:115200
  • 数据:8位
  • 奇偶校验:无
  • 停止位:1位
  • 流量控制:无

然后,按下 K32W148-EVK 上的重置按钮 (RST_SW)。控制台上应该会打印以下消息:

替代文本

以下是所有可能命令的简要说明:

  • ?0. 设置电机初始位置?:设置当前位置。重置后,电机初始位置默认为 0。?必须停止电机才能访问此命令?。
  • ?1. 设置目标位置?:设置电机应达到的位置(旋转圈数)。如果选定位置大于当前位置,电机将顺时针旋转以达到目标位置。否则,电机将逆时针旋转。在这两种情况下,“目标速度”的绝对值将用作最大速度。?可在运行时更新?。
  • ?2. 设置目标速度?:设置电机速度(单位为每分钟转数)。如果设置了目标位置,驱动器将使用此值作为最大速度。否则,电机将以选定的速度无限期运行。如果设置为 0(默认值),电机将无法启动。正值表示顺时针旋转,负值表示逆时针旋转。?可在运行时更新?。
  • ?3.启动电机?:启动电机

要与应用程序交互,只需使用键盘上的相应数字即可。打印的信息将根据所选命令进行更新。电机运行时,每 100 毫秒会打印并更新一些有关当前状态的信息,如下所示:

替代文本

5. 流程

该应用程序和 bldc 驱动器可以用下图来概括:

替代文本

您可以将逻辑分析仪连接到不同的信号上,以查看与霍尔输出相关的换向。

  • 在顺时针模式下,您应该观察到以下模式:

替代文本

  • 逆时针旋转时,应注意以下几点:

替代文本

  • 如果电流超过低功耗比较器中设定的阈值,PWM 将自动停止:

替代文本

6. 常见问题解答

  1. 重置后,控制台上没有打印任何内容:
    • 检查你的微型 USB 电缆
    • 由于电流探头连接到 PTA4 引脚(CMP0IN0/BOOTCFG),设备可能处于 ISP 模式。在这种情况下,您需要在重置设备之前断开此引脚的连接。
  2. 电机没有启动,并打印“电流过冲”错误信息:
    • 在 MainApp_InitMotor() 函数中调整 motorCfg.busCurrentMax 和/或 driverCfg 值(例如 busCurrentScaleFactor)。
    • 有时电机配置可能错误,导致启动电流过大,无法正常启动。请尝试停止电机,然后手动移动转子,再尝试启动。
  3. 未完美达到目标位置:
    • 目标位置和实际位置之间通常会有几圈的误差。您可以通过调整 MainApp_InitMotor() 函数中的 PID 值来改善这种情况。
  4. 如何将电机驱动器集成到另一个应用程序中:
    • 电机驱动器(位于 source/bldcdriver 文件夹下)已设计得尽可能通用,以方便移植。它只需要上层应用程序执行以下操作:
      • 导入所需的外设驱动程序:fsledma、fsllpadc、fsllpcmp、fsllpit、fsltpm、fsltrgmux、fslvref、fsltstmr
      • 定义:
        • GPIO IRQ 处理程序并调用BLDC

      HallIrqHandler() API

    • 从驱动程序接收事件的回调函数(参见 bldcEvtCallbackHandler())。
  5. 用途:
    • BLDCInit() API 用于初始化驱动器,提供电机和硬件特性,以及之前定义的回调函数(参见 MainAppInitMotor())。
    • BLDCSetupPIDs() API 用于设置 PID(参见 MainAppInitMotor())。
    • BLDCSetInitPos() API 用于设置初始位置。
    • BLDCStart() API 用于启动电机,提供目标位置和速度。
    • BLDCStop() API 用于停止电机。
  6. 可选使用:
    • BLDCUpdateRpmCmd() API 可随时更新速度命令。
    • BLDCUpdatePosCmd() API 可随时更新位置命令。
    • BLDCGetSectorCount() API 可随时获取当前位置(单位为整圈旋转的 1/6)。
    • BLDCGetSpeed() API 可随时获取当前速度(以 rpm 为单位)。
    • BLDCGetPidInfo() API 可随时获取 PID 输出(占空比和速度命令)。
  7. 在KW45B41Z-EVK上移植
    • KW45 与 K32W 引脚兼容,因此无需修改软件。但是,由于 KW45-EVK 作为 LIN 收发器连接到 PTA16(代码中用作 PWM 输出),因此必须从 PCB 上移除电阻 R172。

7. 支持

项目元数据

董事会徽章 董事会徽章

类别徽章 类别徽章

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

工具链徽章

来源:恩智浦appcodehub

  • dm-bldc-motor-control-k32w148-main.zip
    下载
恩智浦

恩智浦

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

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

查看更多

相关推荐