AT32F403A/421 SVPWM驱动无刷电机开环速度测试

news2025/1/15 20:07:04

AT32F403A/421 SVPWM驱动无刷电机开环速度测试


  • 📌相关篇《HAL STM32F4 +ARM DSP库跑SVPWM开环速度测试》

✨本测试工程基于上面的运行例程移植而来。主要用来测试驱动无刷电机性能方面的差异。

  • 🔖工程基于AT32_Work_Bench创建。

🔰AT32F403A和AT32F421对比差异

  • 🌿AT32F403A:主频240MHz,支持单精度浮点运算单元(FPU)及数字信号处理器(DSP)。

  • 🌿AT32F421:主频120MHz,支持数字信号处理器(DSP),不带单精度浮点运算单元(FPU)。

  • 🌿工程配置差异:

  • AT32F421:
    在这里插入图片描述
  • AT32F403A:

在这里插入图片描述

  • ⚡针对AT32F403A工程中配置的重要一步:需要添加相对应的宏,来开启单精度浮点运算单元(FPU): “__CC_ARM,__TARGET_FPU_VFP, __FPU_PRESENT=1U,ARM_MATH_CM4
    在这里插入图片描述

📘测试条件

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

  • 🌿一块无刷电机驱动板。(硬件参考开源项目:https://github.com/MengYang-x/STM3F401-FOC/tree/main

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

  • 驱动桥逆变部分电路:
    在这里插入图片描述

🛠AT32_Work_Bench定时器配置

  • 🌿选择一个高级或通用定时器

在这里插入图片描述

  • 采用中心对齐计数方式,频率f=30000/2=15KHz
  • 🌿各通道配置:
    在这里插入图片描述
  • 🌿刹车和死区关闭,保持默认即可:
    在这里插入图片描述

🛠PWM开启和输出配置

  • 🌿开启PWM输出通道
// 使能TIMx的通道
void PWM_Init(void)
{

    /* enable tmr1 CHANNEL*/
    tmr_channel_enable(TMR1, TMR_SELECT_CHANNEL_1, TRUE);
    tmr_channel_enable(TMR1, TMR_SELECT_CHANNEL_2, TRUE);
    tmr_channel_enable(TMR1, TMR_SELECT_CHANNEL_3, TRUE);

}
  • 🌿占空比输出
// 输入参数0.0f ~ 1.0f,输出3路PWM
void Set_PWM(float _CCR1, float _CCR2, float _CCR3)
{
    // TMR1->c1dt = _CCR1 * PWM_ARR;
    // TMR1->c2dt = _CCR2 * PWM_ARR;
    // TMR1->c3dt = _CCR3 * PWM_ARR;
    /* channel 1 */
    tmr_channel_value_set(TMR1, TMR_SELECT_CHANNEL_1, _CCR1 * PWM_ARR);
    /* channel 2 */
    tmr_channel_value_set(TMR1, TMR_SELECT_CHANNEL_2, _CCR2 * PWM_ARR);
    /* channel 3 */
    tmr_channel_value_set(TMR1, TMR_SELECT_CHANNEL_3, _CCR3 * PWM_ARR);

}
  • 🌿AT32F421 main执行代码:
int main(void)
{
  /* add user code begin 1 */

    /* add user code end 1 */

  /* system clock config. */
  wk_system_clock_config();

  /* config periph clock. */
  wk_periph_clock_config();

  /* nvic config. */
  wk_nvic_config();

  /* init usart1 function. */
  wk_usart1_init();

  /* init tmr1 function. */
  wk_tmr1_init();

  /* add user code begin 2 */
	delay_init();
	PWM_Init();
    /* add user code end 2 */

  while(1)
  {
    /* add user code begin 3 */
        OpenVelocity(1.0f); //编译器gb2132环境下, 中文注释,AT32 Work Bench重新生成会变成乱码
				 delay_us(240);
        /* add user code end 3 */
  }
}
  • 🌿AT32F403A main执行代码:
int main(void)
{
  /* add user code begin 1 */

  /* add user code end 1 */

  /* system clock config. */
  wk_system_clock_config();

  /* config periph clock. */
  wk_periph_clock_config();

  /* init debug function. */
  wk_debug_config();

  /* nvic config. */
  wk_nvic_config();

  /* init usart2 function. */
  wk_usart2_init();

  /* init tmr1 function. */
	delay_init();
  wk_tmr1_init();

  /* add user code begin 2 */
		PWM_Init();
  /* add user code end 2 */

  while(1)
  {
    /* add user code begin 3 */
 OpenVelocity(1.0f); //1.6-220us 2.0-280us 数值越大,电机旋转的速度越快
	delay_us(140);	
    /* add user code end 3 */
  }
}
  • 👉需要注意,AT32F403A和F421它们运行的速度不一样,它们的延时时间不是相同的。
  • ✨如果设置的目标角度值过大,电机抖动无法转起来,那么需要调整参数或者改变后面的间隔执行的延时时间。
  • 🌿如果没有硬件测试条件,可以开启串口打印,配合vofa+串口调试工具,查看波形,正常的电机驱动波形为马鞍波。
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

📚测试工程
  • 🌿AT32F403A_SVPWM
链接:https://pan.baidu.com/s/1vfGDHZj4UK1i0QAiFcs4kw?pwd=b87i 
提取码:b87i
  • 🌿AT32F421_SVPWM
链接:https://pan.baidu.com/s/1k2B3kx_lnhmmEORgCiXagQ?pwd=xuid 
提取码:xuid

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

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

相关文章

卷积神经网络随记

1.问题描述:一般而言,几个小滤波器卷积层的组合比一个大滤波器卷积层要好,比如层层堆叠了3个3x3的卷积层,中间含有非线性激活层,在这种排列下面,第一个卷积层中每个神经元对输入数据的感受野是3x3&#xff…

Verilog语言和C语言的本质不同点是什么?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「c语言的资料从专业入门到高级教程」,点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!! 在c语言中,如果你…

7.Redis的Hash类型

Hash类型,也叫散列,其value是一个无序字典,类似于HashMap结构。 问题 String结构是将对象序列化为json字符串后存储,当需要修改对象某个字段是不是很方便。 key value…

【计算机遥感方向】SCI期刊推荐!水刊、顶刊齐聚在此,速投!

本期将为您带来五本计算机SCI 妥妥毕业神刊! IEEE TRANSACTIONS ON GEOSCIENCE AND REMOTE SENSING International Journal of Applied Earth Observation and Geoinformation INTERNATIONAL JOURNAL OF REMOTE SENSING Geocarto International RADIO SCIEN…

蔚来智驾的大模型之路:自研芯片 + 世界模型 + 群体智能

作者 |德新 编辑 |王博 7月27日上周末,蔚来举办第二届NIO IN。 李斌说,2023年的第一届NIO IN像是一个大纲,第一次对外完整展示了蔚来布局的12大技术领域。 而这届,更像第一个交付的章节。它重点展示了5项阶段性的进展&#xff…

智能电池管理,soc、soh、comsol锂电池仿真

锂离子电池,作为能源转型与电动车市场崛起的基石,正迎来研发与应用的飞跃。面对繁杂设计参数与实验盲点,电池仿真技术,尤以COMSOL为代表的多物理场仿真,精准解析电池内部机理,从微观行为到宏观性能&#xf…

LoRA:大模型的轻量级高效微调方法

文章目录 1. 模型微调的两种方式2. LoRA 实现 LoRA是一种轻量化且效果非常突出的大模型微调方法,与使用Adam微调的GPT-3 175B相比,LoRA可以将可训练参数的数量减少10000倍,并将GPU内存需求减少3倍。 paper:LoRA: Low-Rank Adapta…

二维码门楼牌管理应用平台建设:流程优化与全面考量

文章目录 前言一、工作流程优化:移动端采集与实时更新二、数据完整性与准确性保障三、效率提升与成本节约四、扩展性与未来发展五、数据安全与隐私保护六、用户培训与技术支持 前言 随着智慧城市建设的不断深入,二维码门楼牌管理应用平台作为城市管理的…

电脑浏览器缓存怎么清除 Mac电脑如何清理浏览器缓存数据 macbookpro浏览器怎么清理

浏览器已经成为我们日常生活中不可或缺的工具。然而,随着时间的推移,浏览器缓存的积累可能会逐渐影响我们的上网体验,导致网页加载速度变慢、浏览器运行卡顿等问题。因此,定期清理浏览器缓存变得尤为重要。那么Mac怎么清除浏览器缓…

Springboot学习-day16

Springboot学习-day16 Springboot是spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。在以往我们通过SpringMVCSpringMybatis框架进行开发的时候,我们需要配置web.xml,spring配置,mybatis配置,然后整…

layui+jsp框架下实现对pdf或图片预览功能

功能 对上传的文件实现预览功能&#xff0c;文件类型为图片或pdf。 效果展示 实现 引入 jQuery&#xff1a; <script src"https://code.jquery.com/jquery-3.5.1.min.js"></script>引入 Bootstrap 的 CSS 和 JavaScript&#xff1a; <link href&quo…

Java面试必看!知己知彼才能百战百胜,如何做好面试前的准备?

随着 Java 这个赛道的不断内卷&#xff0c;这两年&#xff0c;Java 程序员的面试&#xff0c;从原来的常规八股文&#xff08;有 标准答案&#xff09;到现在&#xff0c;以项目、场景问题、技术深度思考为主&#xff0c;逐步转变成没有标准答案&#xff0c; 需要大家基于自己的…

【大厂笔试】翻转、平衡、对称二叉树,最大深度、判断两棵树是否相等、另一棵树的子树

检查两棵树是否相同 100. 相同的树 - 力扣&#xff08;LeetCode&#xff09; 思路解透 两个根节点一个为空一个不为空的话&#xff0c;这两棵树就一定不一样了若两个跟节点都为空&#xff0c;则这两棵树一样当两个节点都不为空时&#xff1a; 若两个根节点的值不相同&#xff…

【时时三省】(C语言基础)函数的嵌套调用和链式访问

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ——csdn时时三省 嵌套调用 每一个函数都只能在大括号的外面独立存在 不能在一个函数的里面还有一个函数 这样是不行的 函数是不能嵌套定义的 但是函数可以嵌套调用 比如在外面建立函数1&函数 然后在mai…

小区房布置超五类网线,怎么网络只有100Mbps?

前言 最近有粉丝找到小白&#xff0c;说家里的网络怎么一直都是100Mbps&#xff0c;宽带明明是1000Mbps的&#xff0c;只用了十分之一。 一开始小白以为是家里的网络使用的是两对双绞线的那种网线&#xff08;一共四芯&#xff09;。 随即她说水晶头接的都是8根&#xff0c;…

JSP分页写法

一、写界面框架&#xff1a; <html> <head><title>学生管理系统</title><style>body { font-family: 微软雅黑; background-color: #e0f7fa; margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; margin-top…

log4j2漏洞练习

log4j2 是Apache的一个java日志框架&#xff0c;我们借助它进行日志相关操作管理&#xff0c;然而在2021年末log4j2爆出了远程代码执行漏洞&#xff0c;属于严重等级的漏洞。apache log4j通过定义每一条日志信息的级别能够更加细致地控制日志生成地过程&#xff0c;受影响的版本…

C++·哈希

1. unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到logN。后来在C11中STL又提供了4个unordered系列的关联式容器&#xff0c;这四个容器与红黑树结构的使用方法类似&#xff0c;但是底层结构不同&…

【C++】类和对象——Lesson2

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C &#x1f680;本系列文章为个人学习笔记…

最全架构学习路线图,海量大厂架构案例

很多读者经常抱怨&#xff0c;工作中涉及不到太多架构设计&#xff0c;对于架构的理解少之又少。 零散地做过一些架构工作&#xff0c;但完全不知道架构设计的全流程是怎样的。 想要成长为架构师&#xff0c;缺乏系统的方法论指导。 无论是程序员&#xff0c;还是产品经理&a…