news 2026/3/20 7:01:05

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/20 5:47:25

Win10 系统备份与还原实用指南:3 种方法筑牢数据安全防线

在数字化时代,电脑里的系统文件、工作文档、个人资料等都是核心资产,一旦遭遇硬件故障、病毒攻击或误操作,数据丢失可能造成不小损失。Windows 10 自带了实用的备份还原工具,同时也有更高效的第三方方案,下面就为大家精…

作者头像 李华
网站建设 2026/3/14 21:17:48

EHR+AI助手:远程办公模式下HR与IT的合规协同方案

摘要:随着数字经济的深度发展,远程办公已从应急选项升级为企业运营的战略配置,但其带来的跨地域用工、数据流转、流程管控等问题,对HR与IT部门的协同合规提出了严峻挑战。EHR系统作为人力资源数字化的核心载体,与AI助手…

作者头像 李华
网站建设 2026/3/20 6:09:32

《jQuery UI API 文档》

《jQuery UI API 文档》 引言 jQuery UI 是一个基于 jQuery 的用户界面库,它提供了丰富的交互组件和效果,帮助开发者快速构建出具有丰富交互体验的网页应用。本文档将详细介绍 jQuery UI 的 API,包括其组件、方法和事件,旨在帮助开发者更好地理解和运用 jQuery UI。 一、…

作者头像 李华
网站建设 2026/3/4 6:03:51

还在用 Figma 画饼?我用这个平台,把原型上线从 3 天压到 3 分钟

作为一名产品经理,我最怕听到的话就是“这个需求排满了,下周吧”。一个在会议上让所有人兴奋的灵感,在漫长的排期和等待中,逐渐变得平庸和乏味。我曾经以为,这是无法改变的宿命。直到我发现,原来我可以自己…

作者头像 李华
网站建设 2026/3/10 18:31:39

夸克网盘下载不限速_在线解析站

今天教大家一招能解决夸克网盘限制的在线工具。这个工具也是完全免费使用的。下面让大家看看我用这个工具的下载速度咋样。地址获取:放在这里了,可以直接获取 这个速度还是不错的把。对于平常不怎么下载的用户还是很友好的。下面开始今天的教学 输入我给…

作者头像 李华