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.mzph.cn/diannao/68422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于蓝牙6.0的RSSI和UWB融合定位方法,可行性分析

融合RSSI(接收信号强度指示)和UWB(超宽带)两种技术进行蓝牙6.0定位是完全可行的,并且可以带来更高的定位精度和稳定性。本文给出分析和MATLAB仿真结果 文章目录 技术优势RSSIUWB融合的优势 实现方案数据融合算法硬件要…

团体程序设计天梯赛-练习集——L1-024 后天

前言 首先祝大家新年快乐,然后博主今点炮让炮崩了一下,水一天 这道题5分非常简单,有不少的做法 L1-024 后天 如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期…

C#:25大前沿特性揭秘

一、引言 C#,这门诞生于 2000 年的编程语言,自问世以来便在软件开发领域留下了浓墨重彩的一笔。它是微软.NET 框架的旗舰语言,由安德斯・海尔斯伯格(Anders Hejlsberg)领导的团队精心打造 ,设计哲学融合了…

LeetCode100之全排列(46)--Java

1.问题描述 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案 示例1 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例2 输入:nums [0,1] 输出&#xf…

富文本 tinyMCE Vue2 组件使用简易教程

参考官方教程 TinyMCE Vue.js integration technical reference Vue2 项目需要使用 tinyMCE Vue2 组件(tinymce/tinymce-vue)的第 3 版 安装组件 npm install --save "tinymce/tinymce-vue^3" 编写组件调用 <template><Editorref"editor"v-m…

Babylon.js 中的 setHardwareScalingLevel和getHardwareScalingLevel:作用与配合修改内容

在 Babylon.js 中&#xff0c;Engine类提供了setHardwareScalingLevel和getHardwareScalingLevel方法&#xff0c;用于管理和调整渲染分辨率与屏幕分辨率的比例。这些方法在优化性能和提升画质方面非常有用。尤其是在某些平台不支持硬件反锯齿时&#xff0c;可以考虑使用setHar…

从理论到实践:Django 业务日志配置与优化指南

在现代 Web 开发中,日志记录是确保系统可维护性和可观测性的重要手段。通过合理的日志配置,我们可以快速定位问题、分析系统性能,并进行安全审计。本文将围绕 Django 框架,详细介绍如何配置和优化业务日志,确保开发环境和生产环境都能高效地记录和管理日志。 © ivwdc…

项目集成Nacos

文章目录 1.环境搭建1.创建模块 sunrays-common-cloud-nacos-starter2.目录结构3.pom.xml4.自动配置1.NacosAutoConfiguration.java2.spring.factories 5.引入cloud模块通用依赖 2.测试1.创建模块 sunrays-common-cloud-nacos-starter-demo2.目录结构3.pom.xml4.application.ym…

doris:JSON

JSON 数据类型&#xff0c;用二进制格式高效存储 JSON 数据&#xff0c;通过 JSON 函数访问其内部字段。 默认支持 1048576 字节&#xff08;1 MB&#xff09;&#xff0c;可调大到 2147483643 字节&#xff08;2 GB&#xff09;&#xff0c;可通过 BE 配置string_type_length…

K8S 启动探测、就绪探测、存活探测

先来思考一个问题&#xff1a; 在 Deployment 执行滚动更新 web 应用的时候&#xff0c;总会出现一段时间&#xff0c;Pod 对外提供网络访问&#xff0c;但是页面访问却发生404&#xff0c;这个问题要如何解决呢&#xff1f;学完今天的内容&#xff0c;相信你会有自己的答案。 …

开源 CSS 框架 Tailwind CSS v4.0

开源 CSS 框架 Tailwind CSS v4.0 于 1 月 22 日正式发布&#xff0c;除了显著提升性能、简化配置体验外&#xff0c;还增强了功能特性&#xff0c;具体如下1&#xff1a; 性能提升 采用全新的高性能引擎 Oxide&#xff0c;带来了构建速度的巨大飞跃&#xff1a; 全量构建速度…

YOLOv10 介绍

YOLOv10 是清华大学多媒体智能组推出的新一代目标检测算法。以下是它的一些主要信息: 主要特点与优势: 实时性与准确性并重:在保持高准确性的同时,实现了毫秒级的实时检测速度。通过引入大核卷积和部分自注意模块,在较低计算成本下实现了更高的性能。优化的模型架构: 主干…

基于物联网的智能环境监测系统(论文+源码)

1系统的功能及方案设计 本课题为基于物联网的智能环境监测系统的设计与实现&#xff0c;整个系统采用stm32f103单片机作为主控制器&#xff0c;通过DHT11传感器实现智能环境监测系统温度和湿度的检测&#xff0c;通过MQ传感器实现CO2浓度检测&#xff0c;通过光照传感器实现光照…

过年之无用知识研究:std::is_assignable means?

std::pair的默认operator被delete掉了&#xff0c;取而代之的是两个enable_if版本。 为什么这么设计&#xff0c;我的理解是pair作为左值时&#xff0c;里面的first如果是const&#xff0c;那么就不允许了。比如&#xff0c;在std::map里&#xff0c;已经保存的元素的key值是不…

978.最长湍流子数组

目录 题目过程解法收获 题目 给定一个整数数组 arr &#xff0c;返回 arr 的 最大湍流子数组的长度 。 如果比较符号在子数组中的每个相邻元素对之间翻转&#xff0c;则该子数组是 湍流子数组 。 更正式地来说&#xff0c;当 arr 的子数组 A[i], A[i1], …, A[j] 满足仅满足…

【愚公系列】《循序渐进Vue.js 3.x前端开发实践》030-自定义组件的插槽Mixin

标题详情作者简介愚公搬代码头衔华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xff0c;阿里云签约作者&#xff0c;腾讯云优秀博主&…

学习第七十六行

提高github下载速度方法 1.github转码云 2.https://github.com.cnpmjs.org com后面加东西 对于面试笔试&#xff0c;最好方法刷力扣&#xff0c;1000题包进大厂的

leetcode刷题-贪心03

代码随想录贪心算法part03|134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列 134. 加油站【太牛了】135. 分发糖果860.柠檬水找零406.根据身高重建队列 134. 加油站【太牛了】 leetcode题目链接 代码随想录文档讲解 思路&#xff1a; 两个数组&#xff1a; …

基于SpringBoot电脑组装系统平台系统功能实现六

一、前言介绍&#xff1a; 1.1 项目摘要 随着科技的进步&#xff0c;计算机硬件技术日新月异&#xff0c;包括处理器&#xff08;CPU&#xff09;、主板、内存、显卡等关键部件的性能不断提升&#xff0c;为电脑组装提供了更多的选择和可能性。不同的硬件组合可以构建出不同类…

【某大厂一面】数组和链表区别

在 Java 中&#xff0c;数组&#xff08;Array&#xff09;和链表&#xff08;LinkedList&#xff09;是两种常见的数据结构&#xff0c;它们在存储和操作方式上有显著的区别。了解它们的差异有助于选择适合特定应用场景的结构。下面是数组和链表之间的详细比较。 1. 存储结构…