基于开源项目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…

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

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

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

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

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

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

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

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

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

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

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

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

页面加载不出来,报错[@umijs/runtime] load component failed

问题描述 页面加载不出来数据,一直在旋转,控制台输出内容如下: 原因分析: 之前页面是没有问题的,在写当前页面突然出现页面加载不出来,控制台报错,主要是页面引入了这行代码报错 import { …

MX Component基础使用(多点位读取,多点位写入)

步骤,先连接PLC,然后在填入对应的点位 D10 然后去读取。 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;us…

边缘计算网关的主要功能有哪些?天拓四方

随着物联网(IoT)的快速发展和普及,边缘计算网关已经成为了数据处理和传输的重要枢纽。作为一种集成数据采集、协议转换、数据处理、数据聚合和远程控制等多种功能的设备,边缘计算网关在降低网络延迟、提高数据处理效率以及减轻云数…

民国漫画杂志《时代漫画》第13期.PDF

时代漫画13.PDF: https://url03.ctfile.com/f/1779803-1247458360-14efab?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络!

数组的定义、顺序存储及特殊矩阵的存储

目录 一、数组的定义 1.1概念 1.2抽象数据类型定义 二、数组的顺序存储 2.1一维数组元素的存储位置 2.2二维数组元素的存储位置 2.3三维数组元素的存储位置 三、特殊矩阵的压缩存储 3.1相关概念 3.2对称矩阵 3.3三角矩阵 3.4对角矩阵(带状矩阵&#xff0…

【机器学习300问】102、什么是混淆矩阵?

一、混淆矩阵的定义 混淆矩阵是一种用于评估分类模型性能的评估指标。当模型对数据进行预测并将数据分配到预定义的类别时,混淆矩阵提供了一种直观的方式来总结这些预测与数据实际类别之间的对应关系。具体来说,它是一个表格。 二、分类模型性能评估一级…

js setTimeout、setInterval、promise、async await执行顺序梳理

基础知识 async: 关键字用于标记一个函数为异步函数,该函数中有一个或多个promise对象,需要等待执行完成后才会继续执行。 await:关键字,用于等待一个promise对象执行完,并返回其中的值,只能在async函数内部使用。可…

云服务器平台AutoDL--基本介绍与使用感受

因为课程作业需要复现DreamBooth,找了几个教程之后,发现了AutoDL这个好东西,芜湖~ 相关概念 以下回答来自于ChatGPT。 云计算平台:云服务器平台是提供按需计算资源和服务的在线平台,通常包括存储、处理能力、数据库、…

System32文件夹千万不能删除,看完这篇你就知道为什么了

序言 C:\Windows\System32目录是Windows操作系统的关键部分,重要的系统文件存储在该目录中。网上的一些恶作剧者可能会告诉你删除它,但你不应该尝试去操作,如果你尝试的话,我们会告诉你会发生什么。 什么是System32文件夹 位于C:\Windows\System32的System32文件夹是所有…

【代码随想录】面试常考类型之动态规划01背包

前言 更详细的在大佬的代码随想录 (programmercarl.com) 本系列仅是简洁版笔记,为了之后方便观看 不同的二叉搜索树 96. 不同的二叉搜索树 - 力扣(LeetCode) 通过举例子发现重叠子问题 代码很简单,主要是思路问题&#xff0…

Windows内核函数 - 创建关闭注册表

在驱动程序的开发中,经常会用到对注册表的操作。与Win32的API不同,DDK提供另外一套对注册表操作的相关函数。首先明确一下注册表里的几个概念,避免在后面混淆。 图1 注册表概念 有5个概念需要重申一下: * 注册表项: 注…

unity接入live2d

在bilibili上找到一个教程,首先注意一点,你直接导入那个sdk,并且打开示例,显示的模型是有问题的,你需要调整模型上脚本的一个枚举值,调整它的渲染顺序是front z to我看教程时候,很多老师都没有提…

Android Compose 九:interactionSource 的使用

先上官方文档 InteractionSource InteractionSource represents a stream of Interactions corresponding to events emitted by a component. These Interactions can be used to change how components appear in different states, such as when a component is pressed or…