ST MCSDK 的开箱使用 | 电机系列 第二篇


因为工作的关系,接触到一些电机的驱动。最早是BLDC,跟着老工程师后面,从懵懵懂懂,到稍微有了一点儿概念。之后自己憋出一个能走微步的步进电机驱动。满满的成就感记忆犹新。

后面的项目,用集成驱动芯片独立完成了一些其它的电机驱动。

前二年的学习过程中,听说了FOC这个词,似乎各种厉害各种邪乎。


于是各种买书,各种懵逼。心潮澎湃想自己从零实现一整套,搞了一段时间,越搞坑越深,最后FOC没搞出来,传统六步方波式的驱动器倒是攒出来。不甘心啊。

也有一些优秀的厂家提供了不错的集成方案,套片解决问题,不过因为项目使用限制,虽然已经调通了demo但是并没有实际使用上。

9102年就要过去,年初制定的年度计划眼看着又有一项要完不成(为什么说”又”呢。。。淡淡的忧伤……)

突然得知ST的电机驱动库发布了重要的更新,并且全部开源(有一定限制)。抓着最后几周,调通demo。并且有继续深入下去的可能了。

////
本番废话略多,下面进入正题。
////


相比六步方波,FOC驱动中包含诸如Park/Clark变换等带有大量三角函数的矩阵计算,以前的8/16单片机就有些捉襟见肘(XMEGA系列处于勉强够用的边缘)。

因此这里选择了STM32F303REt6作为主控。72Mhz 带硬件数学单元的Cortex M4算力够强,此外它内建了为高阶电机驱动优化过的定时器,特别是还集成了大量的模拟比较器,运算放大器和ADC。将来自己做PCB的话,只要配合桥驱动器和mosfet就可以。

ST 提供的MCSDK提供了FOC的底层库,以及一些实用程序。ST官网给出了两个版本,MCSDK,以及MCSDK-FULL,二者的区别是MCSDK中的部分高阶算法(比如状态观测器、前馈控制等)只以二进制库的方式提供,而full的版本则包含全部的源代码。

可能是刚刚出新的原因,目前MCSDK仅提供了m$ windows版本,只能在虚拟机里搞搞,不过ST承诺会在2020年推出重构的MCSDK,将全平台支持。


装好后,得到一些新图标


使用Keil/IAR等其它ide的,STM32CUBEIDE就不再需要。重要的是左边上下的两个。Motor Profiler和 MotorControl Workbench

Motor Profiler是一套很好玩儿的实用程序。它使用内置的固件(因此目前只能支持官方开发板)自动侦测电机的各种参数,以待后用。

打开它,界面如下


选择好手上的控制板和驱动后,需要填写电机极对数,不知道的话可以用下面的方法测定:
使用恒流源接入电机的任意两相,然后手动转动电机转子一圈,边转边计数有几次咯噔咯噔(术语:掣子),如果是4次,那么电机就是4对磁极。

如果使用的驱动板能力远远大过电机或者电源的额定电流,需要正确填写电机的最大电流,否则驱动板会尝试使用很大的电流测试电机。

剩下的参数,可填可不填。

完了就可以点击connect和Start Profile。
程序会先后测定电机的

  • 相 电阻
  • 相 电感
  • 反电动势常数
  • 转动惯量
  • 机械摩擦系数

将测定参数命名后保存待用。


接下来打开Motor Control Workbench这个程序, 并选择新建一个项目

与Motor Profiler不同,workbench是支持自定义板级的,这里还是先用开发板

配置核心在此。

这里可以选择底层驱动相关的各种参数,包括:

  • 母线电压相关
  • 温度监控相关
  • 制动器相关
  • 电机选择(这里可以使用刚刚用Motor Profiler测量的参数,也可以- 根据电机厂商的datasheet直接填写)
  • 驱动桥相关
  • 电流检测配置
  • 速度、位置检测配置
  • IO/模拟电路配置
  • 等等

根据硬件配置好后,就可以电机生成按钮,生成配置好的初始化框架。然后点击Run Cube。进一步配置和MCSDK无关的其它CUBE配置。
常规的cube配置完成后,再点击gennerate code就完成的所有外设,和库的初始化代码, 以及一个空的 main() (如果没有配置freeRTOS的话)

我一开始下载的版本是 5.4.1, 配合cube的常规固件库 stm32f303 1.10.0,经常会出现一些奇奇怪怪的问题,这个不能编译,那个少个依赖什么的。

后来更新到了 5.4.3似乎好了一点儿。。但是总是很悬的感觉。因为就算是5.4.3生成出来的代码,我也是修改了一点点东西才能编译……还是期望Linux版本早点儿出来吧。。。

ST还提供了测试界面, 如果代码生产正常,就可以简单驱动起来。

能够正确编译以后,就可以把代码拷出虚拟机,转到Linux真机后续开发,只要不动mcsdk的结构配置,倒也不再需要虚拟机。

后续将结合FOC一起介绍MCSDK的结构和开发过程。

本番结束。
to be continued


文章作者: chopin1998@gmail.com
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 chopin1998@gmail.com !
评论
 上一篇
安德猴的另类玩法 安德猴的另类玩法
要耍安德猴,可以 在装有android的平板、手机上使用 可以用android sdk自带的模拟器(基于qemu) 还可以使用virtualbox/ vmware这样的虚拟机运行x86 android 体验从上到下, 依次80分,50分
2020-03-24
下一篇 
DIY 示波器电流探头 | 电机系列 第一篇 DIY 示波器电流探头 | 电机系列 第一篇
最近项目需要用到电流探头, 某宝一搜,心凉半截。国产靠谱品牌,最便宜的都要¥3、4000。性能略强一些的, 都得成倍成倍的往上翻。一年可能也就用那么十次八次,也不太好意思申请购买 卍 正巧, 前段时间有收到 电子发烧友 送测的 MAX40
2020-03-23
  目录