ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

这篇具有很好参考价值的文章主要介绍了ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

编者:沉尸 (5912129@qq.com)

引言:

      我们通过一系列的运算最后通过反park计算出了αβ方向的电流,那么如何将这两个电流值换算成pwm控制duty的实际参数呢?

本文结合ST电机库中的源代码,生成源代码的电路板采用的是野火公司的407电机控制板。

为了让整个控制流程的脉络更加清晰,这里贴出调用的框架代码:

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

原理上请首先阅读我的博文:

https://blog.csdn.net/danger/article/details/128214441

这里截取文章中部分内容

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

6个空间向量(U1~U6)的作用时间和αST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系βST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系方向的电压的关系总结

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

 ST马达库中采用的αST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系- βST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系坐标系中的βST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系的方向和我们上面的数学模型相反,ST的模型如下:

 ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

现在我们开始对照ST源代码中的相关内容,也就是文件“pwm_curr_fdbk.c”中函数“PWMC_SetPhaseVoltage()” 

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

 ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

 根据源代码中定义的wX、wY和wZ等值以及它对应的数学模型,我们可以画出如下图:

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系看上面的图示,然后对照源代码,怎么分sector就一目了然了。

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

瞧!已经和我们推导出来的“CntA、CntB和CntC”神似,只需要令:

      K = 1 / 262144

那么就能完美吻合,也就是理论和实践(ST的源代码)已经很吻合了。

我们后面再来探讨这个K值的问题,下面继续看看源代码中针对计算出来的值的使用...

函数“PWMC_SetPhaseVoltage()”中最后将计算出来的“wTimePhA”等值送入了“pHandle->CntPhA”中

 ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

为什么这个pwm波形中高电平时间的1/2直接送入比较器?

为了解决这个问题我们来看看TIM1以及它对应的pwm波形输出之设定配置

文件:“main.c”中有:

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

注意上图中红框标注处的设置

我们找到stm32f407的手册中的相关部分:

 ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

 ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

 ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

查看“R3_2_GetPhaseCurrents()”函数,发现直接将采样电阻处的ADC之转换值当做电压值进行Clarke等等一系列计算,也就是ADC采样count值等效成了电压值

再看ADC的控制设置(ADC1和ADC2的设置几乎一样)

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

 ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

 ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系

 ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系文章来源地址https://www.toymoban.com/news/detail-458419.html

到了这里,关于ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spark 3.2 MemoryManager源代码分析

    MemoryManager 统一管理 Execution 内存和 Storage 内存。 Execution 内存包括 shuffles, joins, sorts and aggregations。 Storage 内存包括 caching 和传播内部的数据结构,如 broadcast 的对象等。 在 UnifiedMemoryManager 中,Execution 和 Storage 内存可以共享堆内存,这两部分可以占用的总内存为 (the total hea

    2024年02月13日
    浏览(32)
  • ChatGPT在源代码分析中可靠吗?

    ChatGPT自发布以来,它在各行各业都掀起了一股学习热潮。由于其惊人的语言理解和生成能力,ChatGPT已经备受全世界瞩目。它在智能对话、翻译、摘要、文本生成等领域中展现出了非凡的能力,让人们对其充满了好奇、敬畏和赞叹之情,同时开始怀疑自己的行业是否马上就会

    2024年02月05日
    浏览(43)
  • TCP/IP协议栈源代码分析

    在 Linux 内核启动过程中,inet_init 是在网络子系统初始化的一部分,负责初始化 TCP/IP 协议栈。下面是从 start_kernel 到 inet_init 的调用路径: start_kernel: start_kernel() 是 Linux 内核启动的入口函数,位于 init/main.c 文件中。 kernel_init: kernel_init() 在 start_kernel 中被调用,它位于 init/ma

    2024年02月03日
    浏览(44)
  • 数学建模之回归分析算法(含matlab源代码)

    目录 一、一元线性回归 1、步骤  2、matlab命令(多元线性回归) 3、举例  二、一元非线性回归  三、多项式回归 1、一元多项式回归  应用  2、多元二项式 应用  四、非线性回归  应用 五、 逐步回归  应用    r²和F越大越好 p越小越好      从残差图可以看出,除第二个

    2024年02月09日
    浏览(64)
  • 网络程序设计:TCP/IP协议栈源代码分析

    从调用栈中可以看到inet_init被调用的过程 start_kernel函数位于 init/main.c中,是内核的入口位置, 它在系统引导过程中被调用。执行该函数后,内核初始化各种子系统,包括调度器、内存管理、文件系统等。在函数最后,会调用 rest_init 函数来继续剩余的初始化工作。 在rest_in

    2024年01月15日
    浏览(51)
  • python+pygame之飞机大战-第一版源代码分析

    目录 一、源代码 二、源代码梳理分析: (一)代码的主要结构 1、引用需要的模块 2、定义的类 3、定义main()函数:主程序 (二)代码分析收获 最好的学习方法是学习别人的代码,加上自己以前比较喜欢雷电这款游戏,所以就从飞机大战入手了,从网上下的源代码和图片素材

    2023年04月10日
    浏览(40)
  • TCP/IP协议栈源代码分析:GDB调试环境搭建及源码分析

    Ubuntu 22.04 LTS Linux-5.4.34 busybox-1.36.0 2.1 安装相关工具 axel是一款多线程下载工具,用于下载Linux内核源代码及其他大文件;build-essential软件包里面包含了很多开发必要的软件工具,比如make、gcc等;QEMU是一种通用的开源计算机仿真器和虚拟器,为自己编译构建的Linux系统运行提供

    2024年02月03日
    浏览(56)
  • 网络程序设计实验:TCP/IP协议栈源代码分析

    深入理解TCP/IP协议栈的源代码结构和功能,探究其与上层套接口和下层数据链路层的关联方式。 分析TCP的三次握手过程,理解其状态转换和数据传输机制。 掌握send和recv操作在TCP/IP协议栈中的执行路径,探究其与上层应用程序的交互方式。 了解路由表、ARP缓存以及IP到MAC地址

    2024年02月03日
    浏览(58)
  • 网络程序设计实验-TCP/IP协议栈源代码分析

    ​ inet_init代码如下: 调用inet_init的过程中,涉及到的函数如下: 1. start_kernel: start_kernel 是Linux内核的启动函数,定义在 init/main.c 文件中。 在启动过程中,首先执行 start_kernel ,这个函数负责进行内核的初始化工作。 2. rest_init: 在 start_kernel 中,会调用 rest_init 函数,该函数的

    2024年02月03日
    浏览(63)
  • Linux内核中的TCP/IP协议栈源代码分析

    目录 背景知识-Linux源码简介 TCP/IP协议栈相关问题 inet_init是如何被调用的?从start_kernel到inet_init调用路径 1.start_kernel(): 2.inet_init() : 3.fs_initcall() 跟踪分析TCP/IP协议栈如何将自己与上层套接口与下层数据链路层关联起来的? TCP的三次握手源代码跟踪分析,跟踪找出设置和发

    2024年02月02日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包