ST电机库v5.4.4源代码分析(2): 磁链圆限制之计算以及一个小bug
编者:沉尸 (5912129@qq.com)
FOC流程图 Circle_Limitation所在位置
图1
图2
现在计算出了和,需要限制:
如果
显然需要一个缩小的系数i (i < 1)进行校正
这个开根号的计算对于一般单片机来说,运算还是很耗时的,所以这里要采取牺牲精度的快速查表计算方式。
下面的内容结合ST的电机库5.4.4中的源码进行说明
结合上图2中所示
S16_MAX = 32767 (S16_MAX是16位有符号数之最大值)
我们选取的“MAX_MODULE”的值不会直接让它等于S16_MAX,留一点余量,比如取99%或者98%等等。
M = 32767 * 99% = 32439.33
这里选择 32439,源代码“Inc\parameters_conversion.h”中也是如此定义:
下面开始推导表格中的缩小因子。以index=62区间段为例进行计算:
取区间段中的最大值:63*0x1000000-1,最大值的缩小程度最“狠”,每个区间当然是选择最“狠”的那个了。
根据上面的式子1-1,计算出来的缩放因子是一个小于1的小数,在计算机中不好存放,实际应用中将它放大32768倍,于是公式1-1变形为
当index = 62时
归纳为:
上面表格中的数据明显和源代码中的数据表格不符合
图5
经过推导分析,源代码中表格有错,应该修改表格为我们推导出来的数据表格。
那么源代码中的表格是怎么来的呢?根据我的分析最后发现应该将源代码中定义修改为:
图6
后,才能将源代码中的定义和表格相匹配!也就是源代码表格采用的是大概98%的MAX_MODULE值。
32121/32767=98.03%
同时针对图6中的这个定义,我用Execl表格也推导了一份
瞧!这个表格中的数据和源代码中的表格吻合到完美无缺!
所以,ST马达库5.4.4中的代码有个小Bug(影响不大),订正时,要么修改表格,要么修改#define定义值,本篇文章主要是探索一下这些定义的表格数据是咋来的而已!
备注: Execl表格中数据的计算公式为(假设放在C栏,B栏放61,62,...):
以C5为例(C4放着62):
=SQRT(32439*32439/(((C4+1)*16777216)-1))*32768
ST电机库v5.4.4源代码分析(2): 磁链圆限制之计算以及一个小bug相关推荐
- ST电机库v5.4.4源代码分析(1): FOC原理(结合ST电机库)
编者:沉尸 (5912129@qq.com) 本文字描述电机FOC的原理性内容,大部分取材于网络,但是我对于某些细节进行了比较详细的描述.因为很多最初的出处链接没有记录下来,所以没有标明,忘谅解!本文 ...
- ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系
编者:沉尸 (5912129@qq.com) 引言: 我们通过一系列的运算最后通过反park计算出了α.β方向的电流,那么如何将这两个电流值换算成pwm控制duty的实际参数呢? 本文结合ST电机库中 ...
- ST电机库v5.4.4源代码分析(6): PID以及相关参数
编者:沉尸 (5912129@qq.com) 前言: 本文章探索st电机库自动生成的PID参数的由来,采用的控制板为野火407电机板+BLDC带Hall的电机. 在"Mcboot()&quo ...
- ST电机库v5.4.4源代码分析(8): 旋编怎么对齐
编者:沉尸 (5912129@qq.com) 问题: 带旋编的电机(不是绝对位置旋编),ST电机库是怎么对齐的呢?也就是说如何确定初始电角度的问题. 我们基于"D:\motorCtr\cod ...
- ST电机库v5.4.4源代码分析(4): 电角度和力矩方向分析(Hall传感器)
编者:沉尸 (5912129@qq.com) 一)ST马达库中角度的定义 引言: 在Clerke以及park等变换中,我们都涉及到了角度,本文中我们结合ST的源代码探讨一下角度的取得以及它和力矩的关系 ...
- ST电机库v5.4.4源代码分析(7): SpeednPosFdbk_Handle_t在几个结构体中的关系
编者:沉尸 (5912129@qq.com) 前言: SpeednPosFdbk_Handle_t在几个结构体中绕来绕去,我这里将其脉络梳理一下,方便读者理解代码. 先看下面的代码: 最终的结果是: ...
- ST电机库v5.4.4源代码分析(10): MCWB应用中的一个小技巧
编者:沉尸 (5912129@qq.com) 前言: 如图中箭头,我们新建一个项目,BKIN缺省是有效的,而我们项目中又没用上BKIN脚,那么怎么让它变灰无效呢? 先设置好所有内容,然后生成项目 然后 ...
- 基于STM32 电机库(5.4.4)的单电阻采样调试总结
目录 硬件调整 软件调整 下载运行 参数优化 总结 硬件调整 实验用的开发板和电机如下,在调单一电阻之前已经在三电阻的环境下把启动运行的参数已经调好了,这里不多说.调好后需要把硬件改成单电阻采样. 如 ...
- 异动分析(四)利用Python计算指标贡献度
异动分析(四)利用Python计算指标贡献度 小P:有些异动的原因是多方面的,我看网上说可以通过计算贡献度进行量化. 小H:是的,容我想想- 虽然不是必要的,但有时候异动的原因多个,通过计算每个原因的 ...
最新文章
- 10月1日之后,你新建的GitHub库默认分支不叫「master」了
- 角逐同城货运,快狗打车抢跑上市
- ecplise tomcat启动报错
- 分布式mysql一致性问题_分布式缓存数据库一致性问题
- linux运维、架构之路-jumpserver
- 对未来人机融合智能领域的思考
- 计算机基本概念及简单的二进制运算
- LinQ—Lambda表达式
- lucas+卡特兰数
- python-excel-openpyxl读取数据---更新完善--1
- WIN10 安装Eplan 2.7 没有可激活合适的加密狗 的异常解决办法
- android卡片 弹簧滑动,一种通用式弹簧卡扣的制作方法
- Ajax 原生js写法
- Task already scheduled or cancelled(用Timer,TimeTask实现定时器功能)
- 虾皮shopee根据ID取商品详情 API 返回值说明
- matplotlib之饼图
- 大工计算机学院博士答辩要求,大连理工大学博士毕业论文要求和发表
- JSP学籍信息管理系统实现增删改查的相关功能操作
- 应用Win7优化大师,备份与还原系统激活文件。
- 软件测试工程师 路在何方?如何发展?职业规划是怎样的?
热门文章
- 验证码-kaptcha
- 线段树模板(来自胡浩大牛)
- 网络编程9_线程-条件,定时器,队列,线程池, 协程
- java中的定时器的实现样例
- linux 3.10在mini210s上移植----02.minicom安装
- UnsupportedOperationException异常解决
- 【33】Android WebView加载html5 3D全景
- HR的难又有谁懂?裁过1000人,被爆粗恐吓,进过派出所!
- MD5、SHA1、CRC32值是干什么的?(转载)
- 什么是MD5 什么是SHA-1 如何校验这些Hash