[原创] 【ST电机评测】测评前期准备(软件配置)

gyp1   2018-6-7 10:19 楼主
测评前期准备
感谢EE这次的ST电机测评活动,很荣幸的被选中。本人非电机专业,如果测评中出现错误请各位指出,并且希望有问题可以一起探讨。
收到申请通过的通知后,几天板子就送到了。刚拿到手就拿起相机怕了几张,很精致,还附带了电机和电源。
image001.jpg image003.jpg image005.jpg
板子分为两个部分,一个是F302核心板,另一块是电机驱动板,通过插座连接,便于更换。核心板上部为板载ST-LINK,同时引出串口。核心板F302通过ST-LINK引出的MCO作为时钟源,板载按键连接至PC13,作为电机启停按键。驱动板自带电位器可用于电机调速连接至PB1即为ADC1的12通道,通过改变跳线,可以选择单电阻或三电阻的电流取样方式。还引出DAC接口。
我在官网下载了X-CUBE-MCSDK-FUL5.0.3的全开源版本(需要申请),并安装。其他必备的软件包括STM32CubeMX、KEIL MDK 5、STMStudio等。
1.首先连接核心板和驱动板
将电机和电源按照正确的方式接入驱动板,使用usb线连接板载ST-LINK(需要安装好相关驱动),V2.1版本的ST-LINK自带串口(VCP),连接至F302的串口2(PA2、PA3),这样可以省略USB-TTL模块,同时板子也将串口2引出。
2.获取电机参数
电机参数是调试电机成功与否的基础,所以必须要保证得到正确的电机参数,通常情况下电机厂商会将参数公布,但是大部分电机的参数不会很容易的获取到,如果是以前的话我会通过直流电桥测量电机线圈电阻,然后通过恒流电压源和示波器测量相电感然后计算反电动势常数(太麻烦了。。。)。现在不需要这么做了。
image007.png
因为F4和F3系列是支持通过板子自动计算电机参数的(真的很方便),这时就要使用MotorProfiler这个软件了,将板子与电脑连接好后,启动软件,选择板子型号。
image009.png
填入电机极对数,板子附带的电机极对数为7,1700kv,电源为12V,所以估算出电机最大转速2W/RPM,类型选择表贴式(SM-PMSM)。按Start Profile然后会按照3个步骤对电机进行分析,测量参数(过程中可能会因为转速过高而发生过流,软件会自动进行调整)。等测量好后,保存这个电机参数即可(按SAVE命名并保存,稍后会用到)。
image011.png
软件部分
3.下载CUBE所用的F3的 HAL库,修改CUBE库F3的.h源文件
通常先把常用的命令进行重定义(以前标准库的习惯)
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
下载好HAL库文件后进入CUBE的Repository文件夹(通过CUBE设置),修改stm32f3xx.h,根据需要添加。(\Repository\STM32Cube_FW_F3_V1.9.0\Drivers\CMSIS\Device\ST\STM32F3xx\Include\stm32f3xx.h)
image013.png
4. MotorControl Workbench
电机参数检测好后即可使用Workbench生成程序并调试电机了,软件界面如下
image015.png
下半部分是官方提供的例程,可供参考,本次板子对应P-NUCLEO-IHM001-BullRunning。首先新建工程,选择对应的控制板和电源板,电机可以选择我们之前生成的电机文件(如果使用自己的电机那就必须要选择这个了)或者选择BR2804-1700KV这个电机。
image017.png
Workbench主界面包括电机参数配置、电源及桥电路、驱动、控制IO几个部分。
image019.png image021.png image023.png
电机参数部分可以修改电机参数、传感器参数等。电源及桥电路部分可以修改电源电压,电流取样方式及其放大倍数等。驱动部分可以修改传感器模式、PWM频率、死区时间、电流环速度环频率、和辅助功能如电流前馈和弱磁控制等。控制IO部分可以修改PWM输出引脚,电压电流取样引脚,串口调试引脚等。
以前使用过FOC4.3的电机库,新版本界面没有太大改动。官方已经将相关引脚配置好,所以大部分内容是不需要修改的,需要关注到的是这次使用的PWM频率为30K,使用3电阻取样,板载的3个取样电阻为0.33欧姆,取样放大倍数为1.53,T-rise为700ns(过滤噪声)。桥电路方面没有使用单独的MOS管(之前使用12管方案),而是使用集成款L6230 DMOS,不需要下桥臂信号,同时带有3相过流保护与使能信号。
传感器使用无传感器加观察法的方式(Sensor-less(Obs+PLL))(还可以选择高频注入法)同时可配置辅助传感器(当主传感器失效超过一定次数时进入辅助传感器),可选择的有(Obs+Cordic)或者霍尔传感器。
本次电流环截止频率为6000rad/s,1个PWM周期执行一次,速度环1ms执行一次,这些参数可根据实际情况进行更改。更改电机最大转速为18000RPM后进行编译
5.利用Workbench通过Cube编译
image025.png
编译完成后进入所在文件夹,更改其安全属性,赋予文件夹内的文件的全部用户权限(win10下MDK添加文件夹的时候会导致程序假死,可能是个例,根据情况修改。)
6.IOC文件修改(STM32 CUBE)
image027.png
进入工程所在文件夹找到IOC文件,这次是基于官方例程进行修改,所以大部分引脚均已经配置好了,我们只需要添加电位器所在引脚PB1,即为ADC1通道12。同时修改按键触发方式为外部中断下降沿触发,使能外部中断,然后进行编译。
image029.png
image031.png
编译完成后即可打开工程文件进行编辑了。
7.添加常用的.h配置文件(KEILMDK 5.25)
image033.png
建立文件夹Inc,将根目录下Inc中常用的配置文件加入MDK文件列表中,方便调试。
drive_parameters.h最足要的配置文件,大部分配置参数在这个文件中,包括电流环Id Iq、速度环PID、PWM频率、死区等参数。
pmsm_motor_parameters.h 电机参数。
power_stage_parameters.h电源,电流取样等参数。
6.在主函数中添加外部中断回调函数,添加自定义按键
(在/* USER CODE BEGIN 4*/的用户程序部分添加,以防止后期再编译丢失)
/* USER CODE BEGIN 4 */
voidHAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin ==Start_Stop_Pin)
{
if(Start_Stop_Mode==0)
{
MC_AcknowledgeFaultMotor1();
Start_Stop_Mode=1;
MC_StartMotor1();
}
else
{
Start_Stop_Mode=0;
MC_StopMotor1();
}
}
}
/* USER CODE END 4 */
编译完成后即可烧录到板子上进行调试,可通过按键进行启停。
这样测评准备工作完成。下一部分进行电机测评的几个任务。
此内容由EEWORLD论坛网友gyp1原创,如需转载或用于商业用途需征得作者同意并注明出处
本帖最后由 gyp1 于 2018-6-7 10:34 编辑
  • image035.png
  • image004.jpg

回复评论 (18)

好东西啊,羡慕
点赞  2018-6-7 10:34
引用: star_66666 发表于 2018-6-7 10:34
好东西啊,羡慕

是的 板子很不错
点赞  2018-6-7 10:59
是电机和电机模块不错
点赞  2018-6-7 12:35
谢谢分享,很详细了,MotorProfiler是单独的一个软件吗 本帖最后由 mcu200689 于 2018-6-7 22:05 编辑
点赞  2018-6-7 22:04
官网下载X-CUBE-MCSDK-FUL5.0.3被拒了,楼主能否分享一下
点赞  2018-6-7 22:08
楼主请教下  SDK安装后路径里的工程不能直接用么  原来都要自己配置的哇  修改里面的代码添加电位器引脚之类都需要自己配置么 有没有相关资料
点赞  2018-6-8 08:42
引用: mcu200689 发表于 2018-6-7 22:08
官网下载X-CUBE-MCSDK-FUL5.0.3被拒了,楼主能否分享一下

给你个链接吧 http://www.stmcu.org/document/detail/index/id-218780
点赞  2018-6-8 09:11
引用: 常见泽1 发表于 2018-6-8 08:42
楼主请教下  SDK安装后路径里的工程不能直接用么  原来都要自己配置的哇  修改里面的代码添加电位器引脚之 ...

那个是可以直接用的,我主要是想加一些自定义的东西,资料就是看他给的原理图,我就是看原理图配置的
点赞  2018-6-8 09:26
引用: gyp1 发表于 2018-6-8 09:26
那个是可以直接用的,我主要是想加一些自定义的东西,资料就是看他给的原理图,我就是看原理图配置的

那个我编译没法通过。不管是SDK5.0.1只有IAR工程 SDK5.0.3有keil和IAR 都无法编译通过
点赞  2018-6-8 10:42
引用: gyp1 发表于 2018-6-8 09:26
那个是可以直接用的,我主要是想加一些自定义的东西,资料就是看他给的原理图,我就是看原理图配置的

那个我编译没法通过。不管是SDK5.0.1只有IAR工程 SDK5.0.3有keil和IAR 都无法编译通过
点赞  2018-6-8 10:43
引用: 常见泽1 发表于 2018-6-8 10:43
那个我编译没法通过。不管是SDK5.0.1只有IAR工程 SDK5.0.3有keil和IAR 都无法编译通过

我试了一下我的好像是一样的,它里边的工程是为了给CUBE做模板的,你还得用MotorControl Workbench生成工程,方法我上面讲了
点赞  2018-6-8 11:31
引用: gyp1 发表于 2018-6-8 11:31
我试了一下我的好像是一样的,它里边的工程是为了给CUBE做模板的,你还得用MotorControl Workbench生成工 ...

恩 我知道可以生成 官方文档里有 谢谢了
点赞  2018-6-8 11:36
以前在论坛没见你冒过泡,首帖很给力哈
点赞  2018-6-9 11:14
引用: nmg 发表于 2018-6-9 11:14
以前在论坛没见你冒过泡,首帖很给力哈

哈哈,测评已经写完了,还在检查,早测完有没有优势啊
点赞  2018-6-9 13:58
引用: gyp1 发表于 2018-6-9 13:58
哈哈,测评已经写完了,还在检查,早测完有没有优势啊

哈哈,咱们以往的评测里还真没有对于完成时间的鼓励

不过你要是早点完成基本评测,可以考虑一下拓展评测和新旧版本电机驱动库的对比评测,这2方面的内容对于最终评选会比较有竞争力
点赞  2018-6-10 22:36
好像挺有搞头的呢
点赞  2018-6-14 09:26


1:Main sensor , Auxiliary sensor. 分别是说哪里?
2:这里 12 的意思是什么?作用?
3:这里好像说是设堵转的。如果不是100%会怎样?
4: 这里如果选择了会怎样?
我用的是SDK4.2
  • 微信图片_20180802141748.png
点赞  2018-8-2 14:24
引用: 山巅王 发表于 2018-8-2 14:24
1:Main sensor , Auxiliary sensor. 分别是说哪里?
2:这里 12 的意思是什么?作用?
3:这里好像 ...

1和2:Main sensor为电机启动时首先使用的传感器,你现在为无感观测器的方式,当主传感器失败(返回错误)超过你设置的12次后进入辅助传感器(比如霍尔)。
3:我没具体试过,不过估计是反电动势达到设置的某个阈值时判断为堵转。
4:这个我不清楚,G1为“CORD_GAIN1“,按下变成K1,猜测都是判断观测器收敛的参数
点赞  2018-8-2 16:07
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复