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

目录

[1 项目概述](#1 项目概述)

[1.1 项目背景](#1.1 项目背景)

[1.2 系统功能介绍](#1.2 系统功能介绍)

[1.3 系统使用的技术要点](#1.3 系统使用的技术要点)

[2 系统硬件框架结构](#2 系统硬件框架结构)

[2.1 电机PWM接口](#2.1 电机PWM接口)

[2.2 电流采样接口](#2.2 电流采样接口)

[2.3 编码器接口](#2.3 编码器接口)

[3 驱动程序实现](#3 驱动程序实现)

[3.1 PWM 功能实现](#3.1 PWM 功能实现)

[3.1.1 PWM接口配置](#3.1.1 PWM接口配置)

[3.1.2 验证PWM输出波形](#3.1.2 验证PWM输出波形)

[3.2 AS5600的驱动](#3.2 AS5600的驱动)

[3.2.1 AS5600与MCU之间的电路结构](#3.2.1 AS5600与MCU之间的电路结构)

[3.2.2 驱动程序实现](#3.2.2 驱动程序实现)

[3.2.3 验证角度值](#3.2.3 验证角度值)

[3.3 读取电流值驱动](#3.3 读取电流值驱动)

[3.3.1 MCU的ADC与驱动板接口](#3.3.1 MCU的ADC与驱动板接口)

[3.3.2 电流数据验证](#3.3.2 电流数据验证)

[3.4 RT-Thread Nano版本在GB32上的移植](#3.4 RT-Thread Nano版本在GB32上的移植)

[4 控制算法实现](#4 控制算法实现)

[4.1 FOC控制算法](#4.1 FOC控制算法)

[4.1.1 FOC控制算法的模型](#4.1.1 FOC控制算法的模型)

[4.1.2 Clarke和Park变换数学原理](#4.1.2 Clarke和Park变换数学原理)

[4.2 PID算法实现原理](#4.2 PID算法实现原理)

[4.2.1 闭环控制系统模型](#4.2.1 闭环控制系统模型)

[4.2.2 PID算法模型](#4.2.2 PID算法模型)

[5 功能验证](#5 功能验证)

[5.1 开环控制(设置Vq)](#5.1 开环控制(设置Vq))

[5.2 速度环实现和PID调参验证](#5.2 速度环实现和PID调参验证)

[5.2.1 电机加速-PID算法验证](#5.2.1 电机加速-PID算法验证)

[5.2.2 电机减速-PID算法](#5.2.2 电机减速-PID算法)

[5.2.3 kd参数对速度环的影响](#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

  1. 编码器模块

-- 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

  1. 实现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)时,电压运行速度明显加快,其波形如下:

  1. 验证算法的运行时间:

使用示波器验证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

相关推荐
清风6666662 小时前
基于单片机的十字路口交通信号灯控制系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
渡我白衣3 小时前
计算机组成原理(10):逻辑门电路
android·人工智能·windows·嵌入式硬件·硬件工程·计组·数电
清风6666663 小时前
基于单片机的雨量检测智能汽车雨刮器模拟系统设计与实现
单片机·嵌入式硬件·汽车·毕业设计·课程设计·期末大作业
少一倍的优雅3 小时前
hi3863 (ws63) 智能小车 (二)信息交互
单片机·嵌入式硬件·交互·harmonyos·hi3863
三佛科技-187366133973 小时前
LP2177B(输出电压可调3.3V/5V 400mA)兼容BP2525电源芯片方案
单片机·嵌入式硬件
llilian_1614 小时前
总线授时卡 CPCI总线授时卡的工作原理及应用场景介绍 CPCI总线校时卡
运维·单片机·其他·自动化
禾仔仔15 小时前
USB MSC从理论到实践(模拟U盘为例)——从零开始学习USB2.0协议(六)
嵌入式硬件·mcu·计算机外设
The Electronic Cat16 小时前
树莓派使用串口启动死机
单片机·嵌入式硬件·树莓派
先知后行。19 小时前
常见元器件
单片机·嵌入式硬件