STM32电机控制固件架构

目录

一、应用程序剖析

二、面向现场的控制实现体系结构

1、参考计算循环

2、电流调节环路

3、安全回路


一、应用程序剖析

上图显示了由ST MC SDK构建的电机控制应用程序。首先,这样的应用程序是由电机控制工作台生成的软件项目,这要归功于STM32CubeMx。该软件项目由几个不同的部分组成,这些部分相互反应:

  • 这些部分中最重要的是应用程序。在这种情况下,该应用程序由ST Motor Control SDK的用户开发,它专注于最终应用程序的用途,将纯粹的电机控制方面留给ST MCSDK生成的代码。
  • UI库提供了用户在应用程序开发过程中可以从中受益的功能,以控制和调试它:它处理硬件功能,例如用于启动和停止电机的按钮,用于设置转子速度参考的电位器。更重要的是,它还提供调试功能,如电机控制协议套件,允许将电机控制应用与ST Motor Pilot工具或DAC功能连接。电机控制应用程序中是否存在 UI 库是可选的。它通常不会出现在最终应用程序中。
  • ST MCSDK固件的核心是电机控制库。该库由一组组件组成,每个组件都实现了 SDK 提供的一项功能。对于其中的大多数功能,提供了几个组件来实现它的不同变体。电机控制工作台的任务之一是选择用户应用所需的正确组件。
  • 为应用程序选择的“电机控制库”组件由“电机控制驾驶舱”部件使用。这部分实际上实现了电机驱动的核心算法。它将选定的组件集成在一起。电机控制驾驶舱的最后一个主要作用是充当电机和应用程序之间的主接口。
  • 应用程序和 UI 库都使用电机控制应用程序编程接口 (MC API) 来访问电机控制主控舱。MCAPI 是应用程序与系统其余部分之间的主接口。它提供了正确控制应用驱动的电机所需的所有功能。
  • 但是,有时,应用程序可能需要微调某些内部参数或获取比 MCAPI 所能提供的更详细的信息。对于这些情况,它可以使用“**MC 低级 API**”,它由电机控制应用程序的所有组件提供的接口功能组成。请参阅组件页面,了解 MC 低级 API 文档的入口点。
  • **STM32Cube 驱动程序**块表示项目中所需的 STM32 外设驱动程序 – HAL 或 LL,具体取决于用户的选择。电机控制库本身仅使用LL,硬件外设初始化可以使用HAL或LL。这些驱动程序被复制到为电机控制应用程序生成的软件项目中。

二、面向现场的控制实现体系结构

1、参考计算循环

需要应用程序设置的扭矩参考或转子速度参考作为输入。在后一种情况下,参考计算环路还执行转子速度调节。

该循环在名为“中频任务”的函数中实现,该函数在STM32 MCU的SysTick中断上执行。通常,中频任务的频率为 1 毫秒。但是,在电机控制工作台中,这可配置为低至 500 μs 和高达数毫秒的 ms。

500 μs 是电机控制工作台生成的电机控制应用程序的默认 SysTick 中断频率。而且,通常中频任务和参考计算循环每隔一个 SysTick 中断运行一次。

2、电流调节环路

电流调节环路是 FOC 实施的核心。

它的任务是测量流经电机相位的电流,并对其进行调节,使它们达到参考计算回路设置的参考值。为此,电流调节回路需要知道(在无传感器配置的情况下,这意味着:估计)受控电机转子的位置和速度。

电流调节环路通过克拉克和帕克变换实现了 FOC 算法的核心,即我d和我d电流调节和空间矢量脉冲宽度调制。当读取电机相电流时(它可以在ADC中断或DMA中断上),它会在中断环境中触发,并执行以下操作:

  • 读取IaIb 和 Ic 相电流
  • 计算转子的位置
  • 调节相电流,这将导致施加相电压
  • 使用占空比对PWM定时器进行编程

3、安全回路

安全循环在 SysTick 中断上运行,就像参考计算循环一样。但是,它在每次出现 SysTick 时都会运行,而后者并不总是如此。它的任务是评估许多故障条件,以确定它们是否处于活动状态。故障条件包括过流、欠压或过热条件。当检测到其中之一时,电机的运行将停止,并释放对其的任何最终控制。请参阅文档的 MC 状态机、命令和故障管理页面的故障部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/539658.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中国手机频段介绍

中国目前有三大运营商,分别是中国移动、中国联通、中国电信,还有一个潜在的运营商中国广电,各家使用的2/3/4G的制式略有不同 中国移动的GSM包括900M和1800M两个频段。 中国移动的4G的TD-LTE包括B34、B38、B39、B40、B41几个频段,…

纯css实现switch开关

代码比较简单&#xff0c;有需要直接在下边粘贴使用吧~ html: <div class"switch-box"><input id"switch" type"checkbox"><label></label></div> css&#xff1a; .switch-box {position: relative;height: 25px…

SFP光模块和媒体转换器的区别

SFP光模块和媒体转换器都是光电转换设备。它们是否可以互换使用&#xff1f;它们之间有什么区别&#xff1f; SFP光模块与媒体转换器&#xff1a;它们是什么&#xff1f; SFP模块是一种可热插拔的光模块&#xff0c;用于连接网络交换机。它可以将电信号转换为光信号&#xff…

Java - JDK8 下载 安装教程(Mac M芯片)

下载 JDK 安装包 在个人的电脑上&#xff0c;我是比较喜欢使用 zulu 的 JDK&#xff0c;因为它比较早的支持了苹果的 M1 芯片 不论是版本还是功能都非常齐全&#xff0c;各个系统都有对应版本&#xff0c;基于 OpenJDK&#xff0c;免费&#xff0c;下载也方便 官网下载&…

算法——马尔可夫与隐马尔可夫模型

HMM&#xff08;Hidden Markov Model&#xff09;是一种统计模型&#xff0c;用来描述一个隐含未知量的马尔可夫过程&#xff08;马尔可夫过程是一类随机过程&#xff0c;它的原始模型是马尔科夫链&#xff09;&#xff0c;它是结构最简单的动态贝叶斯网&#xff0c;是一种著名…

Qt---控件的基本属性

文章目录 enabled(控件可用状态)geometry(位置和尺寸)简单恶搞程序 windowIcon(顶层 widget 窗口图标)使用 qrc 机制 windowOpacity(窗口的不透明值)cursor(当鼠标悬停空间上的形状)自定义鼠标图标 toolTip(鼠标悬停时的提示)focusPolicy(控件获取焦点的策略)styleSheet(通过CS…

数据集学习

1&#xff0c;CIFAR-10数据集 CIFAR-10数据集由10个类的60000个32x32彩色图像组成&#xff0c;每个类有6000个图像。有50000个训练图像和10000个测试图像。 数据集分为五个训练批次和一个测试批次&#xff0c;每个批次有10000个图像。测试批次包含来自每个类别的恰好1000个随机…

C++的stack和queue类(三):适配所有容器的反向迭代器

目录 前言 list的反向迭代器 list.h文件 ReverseIterator.h文件 test.cpp文件 前言 迭代器按性质分类&#xff1a; 单向&#xff1a;forward_list双向&#xff1a;list随机&#xff1a;vector / deque 迭代器按功能分类&#xff1a; 正向反向const list的反向迭代器…

uni-app web端使用getUserMedia,摄像头拍照

<template><view><video id"video"></video></view> </template> 摄像头显示在video标签上 var opts {audio: false,video: true }navigator.mediaDevices.getUserMedia(opts).then((stream)> {video document.querySelec…

分布式技术---------------消息队列中间件之 Kafka

目录 一、Kafka 概述 1.1为什么需要消息队列&#xff08;MQ&#xff09; 1.2使用消息队列的好处 1.2.1解耦 1.2.2可恢复性 1.2.3缓冲 1.2.4灵活性 & 峰值处理能力 1.2.5异步通信 1.3消息队列的两种模式 1.3.1点对点模式&#xff08;一对一&#xff0c;消费者主动…

架构设计-订单系统之订单系统的架构进化

1、单数据库架构 产品初期&#xff0c;技术团队的核心目标是&#xff1a;“快速实现产品需求&#xff0c;尽早对外提供服务”。 彼时的专车服务都连同一个 SQLServer 数据库&#xff0c;服务层已经按照业务领域做了一定程度的拆分。 这种架构非常简单&#xff0c;团队可以分开…

Pytorch: 利用预训练的残差网络ResNet50进行图像特征提取,并可视化特征图热图

1. 残差网络ResNet的结构 2.图像特征提取和可视化分析 import cv2 import time import os import matplotlib.pyplot as plt import torch from torch import nn import torchvision.models as models import torchvision.transforms as transforms import numpy as npimgname…

汽车咨询|基于SprinBoot的汽车资讯管理系统设计与实现(源码+数据库+文档)

汽车资讯管理系统目录 基于SprinBoot的汽车资讯管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&#xff…

Promise简单概述

一. Promise是什么&#xff1f; 理解 1.抽象表达&#xff1a; Promise是一门新的技术(ES6规范) Promise是JS中进行异步编程的新解决方案(旧方案是单纯使用回调函数) 异步编程&#xff1a;包括fs文件操作&#xff0c;数据库操作(Mysql)&#xff0c;AJAX&#xff0c;定时器 2.具…

STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978(3)

接前一篇文章&#xff1a;STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978&#xff08;2&#xff09; 本文参考以下文章及视频&#xff1a; STM32CbueIDE Audio播放音频 WM8978 I2S_stm32 cube配置i2s录音和播放-CSDN博客 STM32第二十二课&#xff08;I2S&#xff0c;HAL&am…

vue,table页签里的一列,点击时,会弹出时间线提示,高度自适应

需求&#xff1a;点击商品来源这一列 弹出一个时间线&#xff0c;查看商品的来源记录 <el-popover></el-popover> 弹出框组件 <el-timeline-item></el-timeline-item>时间线组件slot-scopescope slot是插槽&#xff0c;slot-scope“scope“语义更加明…

无惧烈日!看小米SU7的防晒杀手锏

小米SU7&#xff0c;为颜值设计&#xff0c;更为体验设计。 其中&#xff0c;女性车主占比近30%&#xff0c;算上给太太/女朋友、姐姐、妹妹等亲友买的&#xff0c;实际女车主预计占比是40%甚至50%。 为啥呢&#xff1f;因为小米SU7好看、防晒、收纳&#xff0c;丰富优雅。 小米…

全排列 和 排列 模板

3429. 全排列 - AcWing题库 #include<bits/stdc.h> using namespace std; string s; int n; vector<char> path; vector<vector<char>> res; bool check[10]; void dfs() {if(s.size()path.size()){res.push_back(path);return;}for(int i0;i<s.siz…

vue将html生成pdf并分页

jspdf html2canvas 此方案有很多的css兼容问题&#xff0c;比如虚线边框、svg、页数多了内容显示不全、部分浏览器兼容问题&#xff0c;光是解决这些问题就耗费了我不少岁月和精力 后面了解到新的技术方案&#xff1a; jspdf html-to-image npm install --save html-to-i…

Day:007(2) | Python爬虫:高效数据抓取的编程技术(scrapy框架使用)

Scrapy 数据的提取 Scrapy有自己的数据提取机制。它们被称为选择器。我们可以通过使用的选择器re、xpath、css提取数据 提示 不用再安装与引入Xpath,BS4 获得选择器 Response对象获取 正常使用 response.selector.xpath(//span/text()).get() response.selector.css(span::…