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

SimpleFOC STM32教程10|基于STM32F103+CubeMX,速度闭环控制(有电流环)

导言


SimpleFOC STM32教程09|基于STM32F103+CubeMX,ADC采样相电流
在这里插入图片描述
如上图所示, 增加了电流环.
效果如下:

20250123-200906

RTT
在这里插入图片描述
如上图所示,三相占空比依然是马鞍波。当我用手去给电机施加阻力时,PID要维持目标转速,将马鞍波变大,提高扭矩抵抗阻力。
项目源码:https://github.com/q164129345/MCU_Develop/tree/main/simplefoc10_stm32f103_vel_close_with_current

一、代码


1.1、user_main.cpp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、细节补充


2.1、电流环的两种控制模式dc_current与foc_current

在这里插入图片描述

  • dc_current模式只闭环扭矩分量Iq, Id默认为0(如果设置了相电感, Id也会有相应的值, 但不需要加入PID控制).
  • foc_current模式同时闭环扭矩分量Iq与励磁分量Id.

为什么分两种模式?基于现在我对FOC的认知水平.了解到:

  1. 当控制的无刷电机不会超过额定转速时, 用dc_current模式更合适. 此时, 只需要控制好扭矩分量Iq即可.
  2. 当控制的无刷电机需要超过额定转速时, 需要用foc_current. 此时, 需要励磁分量Id参与控制才能实现稳定的控制.
    在这里插入图片描述
    如上所示, 在BLDCMotor.cpp的函数void BLDCMotor::loopFOC()看到, 分别对dc_current模式与foc_current模式的算法区分开.

2.2、STM32F103完成一次FOC速度闭环控制一共需要多长时间?

STM32F103完成一次FOC速度闭环控制需要约431us. 运行一次loopFOC()方法与move()方法. STM32F103属于Cortex-M3架构,没有硬件浮点运算器,所以执行浮点运算的效率很差。相比之下,STM32F407之类的Cortex-M4架构的MCU,有硬件浮点运算器,执行浮点运算的效率就比较高。后续,会更新STM32F407的SimpleFOC的实验。
在这里插入图片描述
在这里插入图片描述
如上所示, 通过示波器测量出来, 一次FOC速度闭环控制约431us.


http://www.kler.cn/a/522014.html

相关文章:

  • STM32标准库移植RT-Thread nano
  • Android车机DIY开发之学习篇(七)NDK交叉工具构建
  • 支持selenium的chrome driver更新到132.0.6834.110
  • 省市区三级联动
  • 目标跟踪之sort算法(3)
  • 每日一道算法题
  • IO进程线程复习
  • 新项目上传gitlab
  • 日志收集Day007
  • RK3588平台开发系列讲解(ARM篇)ARM64底层中断处理
  • 一文讲解Java中的equals和hashCode方法
  • VSCode 设置为中文(Configure Display Language)
  • HarmonyOS:ForEach:循环渲染
  • HPO3:提升模型性能的高效超参数优化工具
  • 24小R的随机播放顺序
  • 使用TensorFlow实现逻辑回归:从训练到模型保存与加载
  • 信息学奥赛一本通 2110:【例5.1】素数环
  • 2025数学建模美赛|A题成品论文
  • 神经网络|(六)概率论基础知识-全概率公式
  • 爱快 IK-X9 吸顶AP 简单开箱评测和拆解,三频WiFi7,BE5000,2.5G网口
  • Continuous Batching 连续批处理
  • 基于ESP8266的多功能环境监测与反馈系统开发指南
  • 嵌入式C语言:结构体
  • KF-GINS 和 OB-GINS 的 Earth类 和 Rotation 类
  • 安卓日常问题杂谈(一)
  • Java-数据结构-二叉树习题(3)