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

问题:

带旋编的电机(不是绝对位置旋编),ST电机库是怎么对齐的呢?也就是说如何确定初始电角度的问题。

我们基于“D:\motorCtr\code\stm32f407IG\FOC\FOC_YHF4_PMSM_Encoder_SpdCtr”项目进行讲解。本项目采用野火的407骄阳控制板+野火的直流无刷驱动板+野火PMSM电机

图2

上面三个参数定义在文件中的作用位置:

图3

注释里面说的很好:

图4

我们来推导一下:

Av是放大倍数, Av = 8

Rs = 0.02

ADC的参考电压是3.3v,ADC出来的值左移过4位,最大值为0xFFF0,按照65535算

这里为什么不考虑1.24V ?其实这个1.24V是中间电位,在获取电流时都会把它减去的,所以不影响。

图6

现在继续看对齐相关代码:

图7

对齐控制要靠变量“EncAlignCtrlM1”起作用,这里将变量“VirtualSpeedSensorM1”以及另外两个都挂在“EncAlignCtrlM1上:

重点看下面几个状态机:

图9

代码中添加了一个“虚拟速度传感器”

图10

但是,这两个数据结构的“_Super”却都是同样类型:

图11

再看针对它的调用:

图12

对齐过程中不断调整力矩(力矩是一个逐渐增大的过程)

图13

图14

状态机控制的调用函数名为“TSK_MediumFrequencyTaskM1”,这里为500Hz的调用频率,而力矩的精细控制是在“TSK_HighFrequencyTask”中:

图15

看图中提出的问题:对齐的时候,采用了虚拟速度传感器,这里计算角度却是针对“ENCODER_M1”,为什么呢?

其实我们初始化时将“VirtualSpeedSensorM1. _Super. hElAngle”设置成了固定角度,比如本项目中为90度。

具体代码体现:

图16

在上图中代码,函数“EAC_StartAlignment()”中执行“VSS_SetMecAngle()”后,“VirtualSpeedSensorM1. _Super. hElAngle”中的值就是90度了(s16单位)

图17

图17中代码,用来进行计算的电角度实际上是从“VirtualSpeedSensorM1. _Super. hElAngle”中获取,而图16中已经展示了这个值实际上就是一个固定的值:90度,这个90度也就是图1中,在代码生成器中设定的值。

总结:

控制对齐的策略就是一直用设定的角度进行计算,比如90度,其结果类似于一直针对90度施加力矩,经过规定的时间(比如本项目中为700ms)后,就认为对齐结束了。当然,施加力矩的过程,其大小是一个线性从小变大的过程。

在对齐过程中,在函数 “TSK_HighFrequencyTask()”中调用“ENC_CalcAngle()”基本没啥作用。

ST电机库v5.4.4源代码分析(8): 旋编怎么对齐相关推荐

  1. ST电机库v5.4.4源代码分析(1): FOC原理(结合ST电机库)

    编者:沉尸 (5912129@qq.com) 本文字描述电机FOC的原理性内容,大部分取材于网络,但是我对于某些细节进行了比较详细的描述.因为很多最初的出处链接没有记录下来,所以没有标明,忘谅解!本文 ...

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

    编者:沉尸 (5912129@qq.com) 引言: 我们通过一系列的运算最后通过反park计算出了α.β方向的电流,那么如何将这两个电流值换算成pwm控制duty的实际参数呢? 本文结合ST电机库中 ...

  3. ST电机库v5.4.4源代码分析(6): PID以及相关参数

    编者:沉尸 (5912129@qq.com) 前言: 本文章探索st电机库自动生成的PID参数的由来,采用的控制板为野火407电机板+BLDC带Hall的电机. 在"Mcboot()&quo ...

  4. ST电机库v5.4.4源代码分析(2): 磁链圆限制之计算以及一个小bug

    编者:沉尸 (5912129@qq.com) FOC流程图 Circle_Limitation所在位置 图1 图2 现在计算出了和,需要限制: 如果 显然需要一个缩小的系数i (i < 1)进行 ...

  5. ST电机库v5.4.4源代码分析(4): 电角度和力矩方向分析(Hall传感器)

    编者:沉尸 (5912129@qq.com) 一)ST马达库中角度的定义 引言: 在Clerke以及park等变换中,我们都涉及到了角度,本文中我们结合ST的源代码探讨一下角度的取得以及它和力矩的关系 ...

  6. ST电机库v5.4.4源代码分析(7): SpeednPosFdbk_Handle_t在几个结构体中的关系

    编者:沉尸 (5912129@qq.com) 前言: SpeednPosFdbk_Handle_t在几个结构体中绕来绕去,我这里将其脉络梳理一下,方便读者理解代码. 先看下面的代码: 最终的结果是: ...

  7. ST电机库v5.4.4源代码分析(10): MCWB应用中的一个小技巧

    编者:沉尸 (5912129@qq.com) 前言: 如图中箭头,我们新建一个项目,BKIN缺省是有效的,而我们项目中又没用上BKIN脚,那么怎么让它变灰无效呢? 先设置好所有内容,然后生成项目 然后 ...

  8. 基于STM32 电机库(5.4.4)的单电阻采样调试总结

    目录 硬件调整 软件调整 下载运行 参数优化 总结 硬件调整 实验用的开发板和电机如下,在调单一电阻之前已经在三电阻的环境下把启动运行的参数已经调好了,这里不多说.调好后需要把硬件改成单电阻采样. 如 ...

  9. Media Player Classic - HC 源代码分析 7:详细信息选项卡(CPPageFileInfoDetails)

    ===================================================== Media Player Classic - HC 源代码分析系列文章列表: Media P ...

最新文章

  1. HTML保存节点,{HTML5}DOM节点操作-第一节
  2. Linux内核之于红黑树and AVL树
  3. rxjs angular_Angular RxJS深度
  4. 手把手教你成为年薪60万的架构师
  5. 一个 react+redux 工程实例
  6. Spring框架 简述
  7. jQuery框架学习第九天:jQuery工具函数介绍与使用
  8. silverlight 读取wcf服务 读取宿主端的config 良好的方法
  9. 转一个高内存定位的文章
  10. 多标签文本分类研究进展
  11. 结构化CSS设计思维
  12. 【Mac】Mac通过反向代理连接内网(教育网)服务器 + 免密登陆
  13. 数据采集及采集工具八爪鱼的使用
  14. 闲人闲谈PS之十四——幕墙工程系统化管理施工设计篇
  15. 0-java常见2000英语单词
  16. 模拟电路47(有源滤波器2-二阶低通滤波器)
  17. WordCloud库的使用
  18. 丧心病狂的Android混淆文件生成器
  19. 下载安装pip-19.0
  20. 【好星球】热门影视免费看,直链播放,可倍速

热门文章

  1. firefox火狐浏览器标签页的一些设置
  2. 庄懂老师TA学习笔记 - 渲染流程
  3. 计算机一级excel函数rank函数应用,计算机一级考试利用rank函数降序怎么做
  4. Word表格占满整页,怎样删除后面的回车和空白页?
  5. Ubuntu 环境下使用中文输入法
  6. 新房的收房验房注意事项
  7. spyder python教程_Spyder教程系列(一)——hello world(多图)
  8. NodeQuant:一个基于Node.js的开源量化交易平台
  9. dhc-templete 脚手架
  10. 微信小程序之from表单提交数据到PHP后台