基于开源项目HAL STM32F4 +DSP库跑SVPWM开环速度测试

HAL STM32F4 +ARM DSP库跑SVPWM开环速度测试


  • ✨本篇硬件电路和代码来源于此开源项目:https://github.com/MengYang-x/STM3F401-FOC/tree/main
  • 📍硬件电路和项目介绍,立创开源广场:https://oshwhub.com/shadow27/tai-yang-neng-wu-ren-chuan
  • 🌼测试效果:
    在这里插入图片描述
  • 🌿通过vofa+输出的三路马鞍波波形:
    在这里插入图片描述
  • 📝原作者介绍过的内容,这里就不多做介绍了,详情可以前往立创开源主页了解详情。程序这一块,主要针对stm32F4系列。

📘测试条件

  • 🌿STM32F4或者M4内核的相关型号的mcu即可。工程时基于HAL库STM32CubeMX生产的配置工程,移植非常简单。

  • 🌿有感或无感无刷电机,个人测试使用的是:2204-1400KV无感无刷电机,参数:12N14P(12槽14极),也就是,极对数是14/2=7极对数。(程序中需要填写)

  • 🌿一块无刷电机驱动板。(可以参考原作者的硬件。)

  • ✨由于原作者使用的是EG2133驱动芯片,驱动电路中上下桥是连一块的,3路PWM输出即可实现无刷电机转动,如果自己使用的是上下桥独立驱动(6路输出控制),那么需要将定时器的PWM输出通道配置为互补输出通道,(即3路互补输出),同时需要注意输出极性。
    在这里插入图片描述

在这里插入图片描述

  • 🌿SVPWM开环速度测试,工程中所需要的必要驱动文件:
    在这里插入图片描述
  • 🔖MT6701这里SVPWM开环速度测试,没有使用到,可以屏蔽掉:
    在这里插入图片描述
  • 🔖DSP库文件,可以自己从安装的Keil软件ARM文件夹内找到相关驱动库文件:例如:D:\Keil_v5\ARM\CMSIS\DSP_Lib\Source\FastMathFunctions;或者在STM32CubeMX,安装的对应pack包解压文件夹内,:C:\Users\Administrator\STM32Cube\Repository\STM32Cube_FW_F4_V1.28.0\Drivers\CMSIS\DSP\Source或者标准库STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\DSP_Lib中找到对应的所需驱动文件。
    • 🔖Keil ARM路径下位置:
      在这里插入图片描述
      在这里插入图片描述
  • 👉也可以到ARM官方的GitHub账号(https://github.com/ARM-software/CMSIS)下载所有ARM Cortex-M内核的DSP外设库。
    • 🔖STM32CubeMX,pack解压安装文件位置:
      在这里插入图片描述
      在这里插入图片描述
  • 同样在标准外设库中也可以找到:
    在这里插入图片描述
  • 🌿数字信号库包含在路径:STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\DSP_LibSTM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\Lib下,或者Keil安装目录下D:\Keil_v5\ARM\CMSIS\Lib\ARM将它们拷贝到目标工程文件夹下。其中Lib文件夹中包含的是经过不同编译器编译后能够运行在Cortex-M4内核上的底层数学库,DSP_Lib文件夹中包含的是调用底层函数封装而成的API函数源码:
    • 🍃Lib文件夹中包含的底层库包括:
	arm_cortexM4lf_math.lib	//---->stm32f4 DSP库跑SVPWM开环速度测试需要使用到的arm_cortexM4bf_math.libarm_cortexM4l_math.libarm_cortexM4b_math.libarm_cortexM3l_math.libarm_cortexM3b_math.libarm_cortexM0l_math.libarm_cortexM0b_math.lib

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

    • 🔰对应工程中所用到的:arm_cortexM4lf_math.lib库文件来源。
      在这里插入图片描述
  • 🎉STM32F4 DSP和标准外设库(STSW-STM32065) ST官网下载地址:https://www.st.com.cn/zh/embedded-software/stsw-stm32065.html
    • 📚当前stm32F4 最新版本:STSW-STM32065 STM32F4 DSP and standard peripherals library 1.9.0
链接:https://pan.baidu.com/s/1J8VD2re8SRWOGnZXZKcyvQ?pwd=o5an 
提取码:o5an

🛠STM32CubeMX配置

  • 🌿选择一个高级定时器:(注意这里是按照原作者的EG2133驱动芯片配置的,上下桥驱动控制端连一块,进行配置的)

在这里插入图片描述

  • 🌿为了查看输出波形,还需要配置一个串口,方便观察波形。
    在这里插入图片描述

⛳SVPWM开环速度测试工程说明

  • 🌿待测试电机参数配置:motor.c中修改测试电机的极对数。
    在这里插入图片描述
📑极对数测量

✨如果知道电机型号,可以找到对应资料查阅多更好。如果无刷电vofa+机外转子不是全部密封,看的到外转子内壁上永磁体的,可以直接自己数出来。上门贴了有多少块强磁铁,即可得到此数据。对应外转子密封看不到内壁磁体的测量方法:

  • 🌿如果有示波器的情况下,用示波器的探头夹住电机的一根线,另一根接探头,然后旋转电机一圈,截取波形,数下峰的个数(上下峰都算),为偶数值除以2,就是电机的极对数。
  • 🌿有低压直流可调电源情况下,限制一定的电流,加载一个小电压到三相中的任意两相,用手转动电机一圈,有稳定位置的个数就是极对。
  • 🔧SVPWM开环速度参数设定:
 OpenVelocity(6.0f); //数值越大,电机旋转的速度越快 

🔬串口数据vofa+观测

  • 🔨vofa+设置:添加波形图控件到主窗口
    在这里插入图片描述

  • 🔱设置串口端口号以及数据类型:
    在这里插入图片描述

  • 🪓🍭打开串口,并添加数据到波形图控件中:
    在这里插入图片描述

  • 🌟最终测试效果:
    在这里插入图片描述

  • ✨需要注意一点,所测得的马鞍波形,并不代表实际电机真实的驱动转动效果,电机的运转效果与驱动电路和电机参数有关,这个波形是理论推导得来的理想模型。
  • 🍁在SVPWM开环速度测试运行下,无刷电机的U-V-W相波形:
    在这里插入图片描述
  • 🧨MCU 定时器对应输出通道的PWM驱动波形:
    在这里插入图片描述
  • 🥕H桥NMOS管栅极驱动波形:
    在这里插入图片描述

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

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

相关文章

走进智慧仓储:3D可视化工厂园区革新物流新纪元

在快节奏的现代生活中,物流仓储行业扮演着至关重要的角色。随着科技的飞速发展,传统仓储模式正面临一场前所未有的变革。今天,就让我们一起看看3D可视化技术如何为物流行业带来前所未有的便利与效率。 什么是3D可视化工厂园区? 3…

2024华为OD机试真题-最长子字符串的长度(一)-C++-OD统一考试(C卷D卷)

题目描述 给你一个字符串 s,首尾相连成一个环形,请你在环中找出 o 字符出现了偶数次最长子字符串的长度。 输入描述 输入是一个小写字母组成的字符串 输出描述 输出是一个整数 备注 1 ≤ s.length ≤ 500000 s 只包含小写英文字母 用例1 输入 alol…

vim常用指令——001

vim常用指令 Vim的命令模式常用操作一、定位移动光标二、行的基本操作【复制、粘贴、删除】三、查找、替换四、分屏命令 总结给大家总结下四个运行模式: Vim的命令模式常用操作 一、定位移动光标 按h:将光标向左移动一个字符,等同于方向键左…

UI学习笔记(二)—— 深入了解导航控制

「OC」UI学习笔记&#xff08;二&#xff09; 文章目录 「OC」UI学习笔记&#xff08;二&#xff09;手动布局子视图自动布局子视图导航控制器高级使用 手动布局子视图 //父视图的.h文件 #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGINinterface JCSuperView : UIVie…

【最新区块链论文录用资讯】CCF A—INFOCOM 2024 共17篇

Conference&#xff1a;IEEE International Conference on Computer Communications CCF level&#xff1a;CCF A Categories&#xff1a;计算机网络 Year&#xff1a;2024 Num&#xff1a;17 A Generic Blockchain-based Steganography Framework with High Capacity via …

Python: 使用pyotp实现OTP一次性密码验证

使用pyotp实现OTP一次性密码验证 OTP的基本原理 生成一个共享秘钥作为随机数的种子服务端通过种子计算出当前的密码客户端也通过相同的种子计算出当前的密码验证客户端生成的密码和服务端生成的密码是否匹配 服务端和客户端计算的方式一样 共享密钥 时间因子 算法 > 密…

多个文本如何一键导出二维码?在线批量生码的制作方法

当存在多条文本数据并且需要将每条数据生成单独的二维码来使用&#xff0c;很多小伙伴可能还在用一个一个来制作的方法&#xff0c;在二维码生成器上将文本转二维码。这种方式操作起来比较的繁琐&#xff0c;需要浪费大量的时间&#xff0c;那么有什么方法可以简化这个过程吗&a…

【Android-Compose】ViewModel 的 init 初始化函数中使用非主线程上的协程闪退问题

问题&#xff1a; 在 Compose- kotlin 中&#xff0c;如果在 ViewModel 中的 init 函数中使用非主线程上的协程会导致闪退问题&#xff0c; 具体代码为&#xff1a; HiltViewModel class ApkScreenViewModel Inject constructor(... ) : ViewModel() {// 1. 在非 主线程的协程…

#学习方法#笔记#微信

飞鸟写作是一个非常好用、靠谱且方便的论文写作工具&#xff0c;可以帮助用户高效地完成论文写作任务。无论是学生还是研究人员&#xff0c;使用飞鸟写作都能极大地提升写作效率和质量。 首先&#xff0c;飞鸟写作具有强大的查重降重功能&#xff0c;能够帮助用户快速检测论文…

【数据库】数据库学习(MySQL,Oracle,PostgreSql)

数据库语句学习 摘要&#xff1a;文章主要内容是数据库语句的基本操作&#xff0c;以及一些基本的数据库标准库函数 重点&#xff1a;SQL语句对大小写不敏感 数据库操作语句 SELECT - 从数据库表中获取数据UPDATE - 更新数据库表中的数据DELETE - 从数据库表中删除数据INSERT …

OSPF的扩展配置

1、认证——直连的邻居或邻接关系间,进行认证配置后,5种数据包中均携带身份核实的密码&#xff0c;且华为设备会对更新信息进行加密--前提为认证方式选择密文认证 1)接口认证 [r1-GigabitEthernet0/0/1ospf authentication-mode md5 1 cipher 123456 直连的邻居间秘钥和编号、模…

行列视(RCV)能否同时支持多个实时数据库?

行列视&#xff08;RCV&#xff09;生产数据应用系统在设计时考虑到了多数据源的需求&#xff0c;因此它支持同时连接多个实时数据库。这意味着用户可以轻松地将来自不同实时数据库的数据整合到行列视&#xff08;RCV&#xff09;系统中&#xff0c;实现数据的集中管理和分析。…

Android14 WMS-窗口添加流程(二)-Server端

上一篇文章讲到了Client端窗口添加流程&#xff0c;本文接着上文往下讲&#xff0c;讲一下Server端的窗口添加流程。 1. WindowManagerService#grantInputChannel 由grantInputChannel我们可以看到&#xff0c;Client端传入了session对象&#xff0c; 发起者Uid-callingUid&am…

X.509数字证书

在国密标准文件《GMT 0015-2012 基于SM2密码算法的数字证书格式》里有对X.509数字证书格式的详细描述。 数字证书的定义 由国家认可的&#xff0c;具有权威性、可信性和公正性的第三方证书认证机构&#xff08;CA&#xff09;进行数字签名的一个可信的数字化文件。 数字证书…

YOLOv10代码详细介绍(附录训练教程和权重)

前言 YOLOv10 是清华大学研究人员在 UltralyticsPython 清华大学的研究人员在 YOLOv10软件包的基础上&#xff0c;引入了一种新的实时目标检测方法&#xff0c;解决了YOLO 以前版本在后处理和模型架构方面的不足。通过消除非最大抑制&#xff08;NMS&#xff09;和优化各种模型…

【几何角度】感知机

本质&#xff1a;将n维空间中的一些点线性投影到一维&#xff0c;在一维轴上找一个阈值对这些点进行二分类。 程序&#xff1a; import numpy as npclass Perceptron:def __init__(self, learning_rate0.01, n_iterations1000):self.learning_rate learning_rateself.n_itera…

【Python基础】一文搞懂:Python 中 “requirements.txt“ 文件生成和使用

文章目录 1 引言2 什么是 requirements.txt&#xff1f;3 如何生成 requirements.txt&#xff1f;3.1 方法一&#xff1a;使用 pip freeze3.2 方法二&#xff1a;使用 pipreqs 3.3 使用 pip freeze 和 pipreqs 的对比4 如何使用 requirements.txt&#xff1f;4.1 安装依赖4.2 更…

[从零开发JS应用] 如何在VScode中配置Javascript环境,常见的调试方法有哪些?

一、安装VSCode和Node.js 记录环境配置&#xff1a;本文配置的环境主要针对单独JS文件的断点调试&#xff0c;主要是为了调试LeetCode里面的代码。 首先在官网下载对应的版本&#xff1a;https://nodejs.org/en/ 开始安装&#xff0c;可以自定义选择安装路径。 这里选择Add Pa…

【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk

背景&#xff1a;部分客户需求将自己网站打包成app&#xff0c;供用户在浏览器安装使用、 网页网址快速生成app 准备材料操作流程第一步&#xff1a;打开HBuilder X新建项目第二步创建Wap2App项目第三步修改App图标第四步发布app第五步查看apk 准备材料 1.需要打包的网页 2.ap…

在网页开发中,前后端如何更好地协同工作?

在网页开发中&#xff0c;前后端如何更好地协同工作是非常关键的&#xff0c;以下是一些方法和技巧可以帮助前后端更好地协同工作&#xff1a; 1.明确需求和规范&#xff1a;前后端应该共同讨论和明确项目的需求和规范&#xff0c;包括功能、界面、数据格式等。确保双方对项目…