当前位置: 首页 > news >正文

基于GD32的直流无刷电机控制算法实现和验证

目录

1 项目概述

1.1 项目背景

1.2 系统功能介绍

1.3 系统使用的技术要点

2 系统硬件框架结构

2.1 电机PWM接口

2.2 电流采样接口

2.3 编码器接口

3 驱动程序实现

3.1 PWM 功能实现

3.1.1 PWM接口配置

3.1.2 验证PWM输出波形

3.2 AS5600的驱动

3.2.1 AS5600与MCU之间的电路结构

3.2.2 驱动程序实现

3.2.3 验证角度值

3.3 读取电流值驱动

3.3.1 MCU的ADC与驱动板接口

3.3.2 电流数据验证

3.4 RT-Thread Nano版本在GB32上的移植

4 控制算法实现

4.1 FOC控制算法

4.1.1 FOC控制算法的模型

4.1.2 Clarke和Park变换数学原理

4.2 PID算法实现原理

4.2.1 闭环控制系统模型

4.2.2 PID算法模型

5 功能验证

5.1 开环控制(设置Vq)

5.2 速度环实现和PID调参验证

5.2.1 电机加速-PID算法验证

5.2.2 电机减速-PID算法

5.2.3 kd参数对速度环的影响


测试视频:

【兆易创新 GD32F5】直流无刷电机控制FOC算法的实现和验证_哔哩哔哩_bilibili

【兆易创新 GD32F5】直流无刷电机控制FOC算法的实现和验证-角度、svpwm波形_哔哩哔哩_bilibili

【兆易创新 GD32F5】直流无刷电机控制FOC算法的实现和验证_哔哩哔哩_bilibili

1 项目概述

1.1 项目背景

如果要问当下那个行业最火,当属人形机器人行业。而机器人最核心的执行设备为关节,控制关节的动力来源一般为电机,而直流无刷电机控制需要专门的控制电路和软件控制算法,以实现其精确的位置,速度控制。

本项目主要是基于 GD32F527I-EVAL开发板,应用RT-Thread软件操作系统,设计一套直流无刷电机的控制算法,实现闭环速度、位置等功能的控制和参数验证。

1.2 系统功能介绍

基于GD32F527I-EVAL开发板实现如下功能:

1) 移植RT-Thread Nano,管理整个系统资源

2) 实现FOC控制算法,并计算个输出PWM控制波至BLCD直流无刷电机驱动驱动模块。

3)BLCD通过转换电路将PWM

4) 编码器模块

-- 1) GD32F527I驱动AS5600芯片获取编码器的角度值

-- 2) 将机械角度转换为电角度,在FOC算法中使用该角度计算SVPWM的值

5) 电机控制算法实现的主要功能:

--1) 开环控制: 该环主要验证FOC算法的是否能满足驱动电机的功能,无需加上PID算法

--2)闭环控制(速度环):使用编码器测试电机的转动角度,并根据该值计算速度值。基于该值使用PID算法形成闭环控制。

--3)闭环控制(位置环):使用编码器测试电机的转动角度,并根据该值计算电机当前转过的线性值。基于该值使用PID算法形成闭环控制。

1.3 系统使用的技术要点

1)主控模块基于RT-Thread 软件架构设计

2)使用的MCU: GD32F527I

  1. 硬件开发板: GD32F527I-EVAL,

  2. 开发软件和工具: RT-Studio , Keil, Visual Code ,VOFA

3)开发语言: C语言,

6) 控制算法: PID控制技术,FOC控制算法,SVPWM

7)编码器测试技术

8) I2C总线挂载多个设备,实时进行数据传输

9)控制:PWM调速,运动方向控制,直流无刷电机控制原理

10)RT-Thread Nano版本在GD32F527I上的移植

2 系统硬件框架结构

2.1 电机PWM接口

1) MCU上 IO接口位置: pwm波频率:20 K hz , 对应的时间为: 20 000 Hz 近似 5us

2)其对应摄像头上的插针接口位置

3) 原理图上位置:

2.2 电流采样接口

1) MCU上 IO接口位置

2) 其对应摄像头上的插针接口位置

3) 原理图上位置:

2.3 编码器接口

1) MCU上 IO接口位置

2) 其对应摄像头上的插针接口位置

3) 其对应摄像头上的插针接口位置

3 驱动程序实现

3.1 PWM 功能实现

3.1.1 PWM接口配置

1) 直流无刷电机的驱动板与MCU之间的通过PWM信号进行控制,其接口电路框架结构如下:

3)通过定时器配置PWM输出功能

3.1.2 验证PWM输出波形

配置PWM的的占空比,使用逻辑分析仪观察波形的占空比,其具体波形如下:

1) 程序中配置占空比参数如下:

2) 逻辑分析仪测试的波形

PWM-U路波形

PWM-V路波形

PWM-W路波形

3.2 AS5600的驱动

3.2.1 AS5600与MCU之间的电路结构

AS5600与MCU之间通过I2C接口连接,其与磁环和电机一起集成在电机控制单元中。具体连接结构图如下:

3.2.2 驱动程序实现

3.2.3 验证角度值

电机模块与开发板的连接结构图如下:

用手拨动电机旋转,使用VOFA接收编码器的数据,并显示波形数据

使用定时器单次读取AS5600的角度值数据所需要的时间为:

3.3 读取电流值驱动

3.3.1 MCU的ADC与驱动板接口

使用GB32的PA4和PA6接口采样电流值

电机驱动板上的电流输入接口位置如下图:

3.3.2 电流数据验证

电路连接方式如下:

驱动电机转动,并使用VOFA显示数据的波形,具体波形如下:

数据log如下:

3.4 RT-Thread Nano版本在GB32上的移植

笔者使用GB32板卡作为电机的控制模块,为了更好的利用GB32的资源,这里选用RT-Thread Nano版本作为该MCU的操作系统。在使用该系统之前,需要移植该系统,其具体步骤如下:

Step -1:在Keil IDE上选择RTOS(笔者已经安装了RT-Thread packet)

Step-2: 配置相关的代码

1)在board.c文件中添加MCU的时钟初始化函数

2)在rtconfig.h文件中使能RT_USING_CONSOLE

3) 实现console的相关接口

4)控制台命令接口

5) SysTick_Handler函数调用rt_os_tick_callback函数

step-3: 测试RT-Thread运行情况,当系统打印如下log信息,说明RT-Thread在板卡上已经移植成功。

4 控制算法实现

4.1 FOC控制算法

4.1.1 FOC控制算法的模型

模型介绍:

  1. 测量:通过电流传感器测量电机的两相或三相电流,通过编码器测量转子角度 (θ)。

  2. Clarke变换:将三相电流转换为两相静止坐标系下的 。

  3. Park变换:利用转子角度 θ,将转换为旋转坐标系下的直流分量

  4. PI控制:将测量到的与给定的目标值 进行比较,通过PI控制器计算出需要施加的电压

  5. Park逆变换:将控制器的输出利用角度 θ 反变换回静止坐标系下的

  6. SVPWM:利用 () 生成驱动三相逆变器的PWM信号,最终产生所需的三相电压施加到电机上。

4.1.2 Clarke和Park变换数学原理

矢量控制(FOC)中的完整流程 如下:

1) Clarke变换数学原理

Clarke变换是将坐标系从三相静止坐标系(a, b, c)变换到两相静止坐标系(α, β)。

假设三相电流是平衡的,即

等幅值变换(变换前后矢量幅值不变):

为了计算方便,通常假设:, 所以, 上式可以简化为:

等功率变换(变换前后功率不变):矩阵系数会有所不同,但在FOC中常用等幅值变换。

2) Park变换数学原理

Park变换是将坐标系从两相静止坐标系(α, β)变换到两相旋转坐标系(d, q)。 Park变换需要一个关键参数:转子当前的电角度 θ。这个角度通常通过编码器等位置传感器获得。

其逆变换(Park反变换)为:

4.2 PID算法实现原理

4.2.1 闭环控制系统模型

闭环(Closed Loop):控制器输出值给被控对象,同时获取被控对象的反馈,控制器知道被控对象的执行状态,可以根据反馈修改输出值以优化控制。其控制模型如下:

4.2.2 PID算法模型

核心思想:根据系统的“当前误差”(P)、“过去累积的误差”(I)和“未来误差的变化趋势”(D)这三个因素,通过线性组合的方式计算出控制量,从而让被控对象(电机转速)快速、准确、稳定地达到并维持在目标值(Setpoint)。PID算法是一种常用的反馈控制算法,全称为Proportional-Integral-Derivative。它根据测量值与设定值的差距,经过比例、积分和微分的处理,得到控制器的输出。 其定义如下:

具体控制模型如下图:

离散化的PID控制算法(位置式)公式如下:

5 功能验证

5.1 开环控制(设置Vq)

根据FOC 控制算法的原理,设置Vq的值,驱动电机转动,观察角度值的变化,同时逆变器输出的电压波形图,本测试不将加入PID相关的自动控制算法。

系统电源的工作最大电压为: 12V

电机Uq的取值范围为:(-6, 6),单位为: V

1) 设置Uq = 1(v)时,电压运行的状态

参数意义:

2)设置Uq = 4(v)时,电压运行速度明显加快,其波形如下:

3) 验证算法的运行时间:

使用示波器验证foc算法的运行时间, 通过波形可得,该算法消耗时间为: 256.688 ns

5.2 速度环实现和PID调参验证

5.2.1 电机加速-PID算法验证

目标速度值为: 20 rad/s

运行的波形图:

5.2.2 电机减速-PID算法

目标速度值为: 12 rad/s

运行的波形图:

当前运行速度: 20 rad/s

目标速度值为: 1 rad/s

运行的波形图:

5.2.3 kd参数对速度环的影响

更改PID参数如下:

当前运行速度:20 rad/s

目标速度值为:1 rad/s

运行的波形图如下,其和4.2.2中的运行波形相比,调节速度明显快很多。

当前运行速度: 1 rad/s

目标速度值为: 20 rad/s

http://www.jsqmd.com/news/140093/

相关文章:

  • “十五五”背景下的智慧农机治理,从作业感知到数据驱动的农业装备升级路径
  • 基于SpringBoot+Vue的健身管理系统(源码+lw+部署文档+讲解等)
  • Python机器学习入门(Scikit-learn)教程:从环境搭建到实战建模
  • 如何评估GEO公司的服务能力?2026优质GEO服务商推荐 - 品牌2025
  • 如何选择适合自己企业的GEO公司?(2026年1月更新) - 品牌2025
  • 2026年哪家AI公司的DeepSeek推广做的好? - 品牌2025
  • 文生图:AI 是怎么把文字变成画的?
  • Day41:四轴飞行器控制系统 (基础)
  • 深圳排针排母连接器生产厂家:技术与产业的深度解析
  • 基于SpringBoot的戏曲学习管理系统的设计与实现毕业设计项目源码
  • Win10 系统备份与还原实用指南:3 种方法筑牢数据安全防线
  • 委托构造函数和继承构造函数
  • 推荐几家好点的DeepSeek推广公司(2026年更新) - 品牌2025
  • 2026年主流DeepSeek推广公司大全 - 品牌2025
  • 电脑数据备份实用极简指南:内置工具 + 专业软件高效上手
  • nullptr用法
  • 城市数字治理中的大模型应用架构:以上海云宇星空大模型为例
  • Numpy_Part01
  • constexpr用法
  • 基于SpringBoot+vue的高校学生实习综合服务平台设计与实现(源码+lw+部署文档+讲解等)
  • 禅道—如何快速精通
  • 《AI 应用架构师秘籍:利用 AI 优化生产计划的高级技巧》
  • APS1604M:办公设备智能升级的“高性能内存引擎”
  • 任正非在位于上海的华为练秋湖研发中心与ICPC全球优胜者及教练座谈 : 关于 AI 和 技术的未来
  • [RL]协程asyncio.CancelledError
  • 如何轻松的写一篇内容
  • 精工品质,连接未来:如何选择一家可靠的排针排母连接器厂家?
  • 微爱帮监狱写信寄信小程序针对互联网黑灰产攻击防护体系
  • Keil逻辑分析仪配置GPIO引脚与捕捉数字波形教程
  • 微爱帮监狱寄信写信小程序与焦作邮政系统对接技术方案