你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【转载】STM32 FOC入门之NUCLEO-IHM001套件解析

[复制链接]
huachuixuezhiwu 发布时间:2017-8-1 17:21

最近看到社区有电机培训的活动,还有FOC开发套件可以申请

9 z* F; T3 {8 b

之前看到过一篇套件评测的分享,在此分享出来,虽然型号有些差异,希望对大家有帮助,以下问正文,内容有点长。。

/ p% u- T0 J6 p' x4 }

+ F3 P2 ?: i6 K

一、P-NUCLEO-IHM001初见

1、套件初见

P-NUCLEO-IHM001套件采用一个携带方便的吸塑包装盒,包含STM32 F3 Nucleo微控制器板、基于STSPIN L6230电机驱动器芯片的直插式(plug-in)48V/1.4A电机驱动板以及一个低压无刷电机,套件包含了一个完整的单电机控制解决方案所需的所有硬件平台。

11.png

图1-1 P-NUCLEO-IHM001套件包装


# F! ^0 o9 T$ O6 _" }

可以到,ST的一贯风格,吸塑包装盒,只不过这个比以往的Nucleo核心板的要厚许多,原因是里面不仅仅包含核心板,还有一个扩展板和电机模型。

12.png

图1-2 NUCLEO-F302R8核心板正面

13.png

图1-3 NUCLEO-F302R8核心板背面


9 ^' g0 c# S( P4 j# }  L

初次拿到核心板,总感觉与以往自己的Nucleo核心板有点不一样的地方,经过仔细对比,发现最近的Nucleo核心板的丝印层颜色与以往的不同了,要浅许多。

虽然丝印层不同,但是板子本身与以往的Nucleo核心板的布局布线一样,板子最上面是一个ST-Link编程调试器,通过SWD方式连接目标微控制器,下部的微控制器和接口(Arduino和Morpho接口), 以及复位按钮和用户LED、用户按钮等资源,下面是NUCLEO-F302R8和以前的NUCLEO-F410RB放在一起,不注意的话大家是很难分辨出它们的型号

2 ?8 V  h, D. K  I; {7 {! O, Q6 O

14.png

图1-4 NUCLEO-F302R8与NUCLEO-F410RB对比

15.png

图1-5 X-NUCLEO-IHM07M1扩展板正面

16.png

图1-6 X-NUCLEO-IHM07M1扩展板背面

X-NUCLEO-IHM07M1扩展板才是P-NUCLEO-IHM001套件的核心,是ST公司专门为STM32Nucleo核心板设计的扩展板,板载一颗L6230驱动器,PowerSO36封装,采用ST morpho接口与STM32 Nucleo核心板链接,同时预留了Arduino UNO R3接口,方便用户自行焊接使用,同时提供电源和电机接口。用扩展板可方便完成三相无刷直流电动机控制。整个扩展板的颜色以深蓝色为背景,以与NUCLEO核心板相区别。同时扩展板上面开了个槽,主要是不影响下面的核心板的复位按键和用户按键。

17.png

图1-7 BR2804-1700Kv-1型三相无刷直流电机

18.png

图1-8 BR2804-1700Kv-1型电动机名牌

可以看到,P-NUCLEO-IHM001套件选择了奔牛公司的BR2804-1700Kv-1型三相无刷直流电动机,十分小巧。这个电机主要用于航模等,可提供足够的动力!

P-NUCLEO-IHM001套件选择堆叠式结构,系统组装后,是不是看着很小巧,但很专业!

19.png

图1-9 P-NUCLEO-IHM001套件组装

2、DEMO上电

在P-NUCLEO-IHM001套件包装盒中,还给大家一个简要的说明页,如下图。说明页的正面是关于套件的特点的简要说明。

20.png

图1-10 P-NUCLEO-IHM001套件说明页正面

背面是关于套件的演示步骤、关键特点、系统要求和开发工具等。可以看到, 开发套件支持的开发工具有MDK-ARM、IAR和AC6 SW4STM32等开发工具,使用USB type A转mini-B转接线与计算机连接,支持工作电压8-48V,最大输出峰值电流2.8A,可采用1或3电阻采样电流传感器等。

21.png

图1-11 P-NUCLEO-IHM001套件说明页背面

拿到P-NUCLEO-IHM001套件,每个人都会迫不及待的体验一把,好在ST在出厂的时候给大家烧录好了工程实例,可以演示梯形6步电机控制算法和矢量控制算法的电机控制。那下面就来演示一番。

P-NUCLEO-IHM001套件包含了基于STM32 Nucleo的电机控制所需所有的硬件,若要运行,可按以下具体步骤:

(1)将X-NUCLEO-IHM07M1扩展板插入到NUCLEO-F302R8核心板的ST morpho接口上。

22.png

图1-12 扩展板与核心板链接

注意方向,不能插反,X-NUCLEO-IHM07M1扩展板缺口朝上,需要将NUCLEO-F302R8核心板的两个按键露出。

(2)将三相无刷直流电动机的U、V、W三相连接到X-NUCLEO-IHM07M1扩展板的J2接口上。

23.png

图1-13 扩展板与电机接口

注意U、V、W三相的接线顺序不能接错,白色或黄色线接OUT1接口,黑色线接OUT2接口,红色线接OUT3接口。这主要是与P-NUCLEO-IHM001套件的固件例程保持一致,如果接错,电机的顺时针与逆时针旋转方向与例程不一致。

(3)选择跳接线来配置P-NUCLEO-IHM001套件运行的控制算法。

a)在NUCLEO-F302R8 核心板上确保JP1断开,JP5电源跳线选择E5V,JP6短接。

b)在X-NUCLEO-IHM07M1扩展板上,确保JP9和JP3跳线短接。

<1>如果选择算法是梯形6步法,需要将JP1和JP2断开,同时J5和J6选择1SH边短接。

<2>如果选择矢量(FOC)控制算法,需要将JP1和JP2闭合,同时J5和J6选择3SH边短接。

24.png

图1-14 X-NUCLEO-IHM07M1扩展板跳接线

(4)将直流电源连接到J1接口,并上电。

25.png

图1-15 X-NUCLEO-IHM07M1扩展板电源接线

注意,对于套件自带的BR2804型电机,额定电压11.1V,最大电压可选12V。至于正负极可按板子上的丝印层。

(5)当系统上电或复位之后,在X-NUCLEO-IHM07M1扩展板上的LED灯D11的闪烁次数可以确定选择的控制算法:

a)如果闪烁2次,则选择的控制算法为矢量控制。

b)如果闪烁4次,则选择的控制算法为梯形6步控制。

(6)按下NUCLEO-F302R8核心板上的蓝色用户按键B1,电动机就会运行起来。

(7)旋转X-NUCLEO-IHM07M1扩展板上的蓝色电位器旋钮,可以调整电机的速度。

26.png

图1-16 电机启动按钮与电机速度调整旋钮

/ F: m+ k6 H& _/ d( v2 `

通过板载例程,我们对P-NUCLEO-IHM001套件有了初步的了解,感受到了这个套件的方便之处,只需要简单设置一下跳线,就可以方便的在两种控制算法的切换,而且提供的完整的例程来入门。


: K% L( Z0 G3 k; _2 j) y0 R5 Q6 n5 h9 K5 N& [4 _

二、P-NUCLEO-IHM001认识

1、P-NUCLEO-IHM001整体认识

P-NUCLEO-IHM001是ST推出的入门级电机控制套件,该套件包含ST公司的NUCLEO-F302R8核心板和X-NUCLEO-IHM07M1电机驱动扩展板以及一个永磁式三相无刷直流电动机。整个套件包含了电机控制所需的所有硬件系统,再配合ST公司提供的免费的电机控制软件算法库,可帮助工程师快速实现电机矢量控制,可用于无人机、家电、电动自行车(E-bike)、家庭自动化、医疗仪器和工业机器等领域。

P-NUCLEO-IHM001像一般的电机控制系统一样,可分为3个功能模块,分别是控制模块、功率驱动模块和电机模块,如下图所示:

31.png

图2-1 P-NUCLEO-IHM001套件功能模块

P-NUCLEO-IHM001系统功能模块

其中:

(1)控制模块采用NUCLEO-F302R8核心板,主要任务是接受用户的命令和配置参数,完成梯形6步或矢量控制算法,输出以驱动电机。
7 U7 N" A, V3 l; j+ V  [  ?: Z

(2)功率驱动模块采用X-NUCLEO-IHM07M1扩展板,采用STSPIN L6230作为电机驱动器,PowerSO36封装,具有过流和过热保护。扩展板包含了所有必要的动态功率和模拟元件完成低压永磁同步电机控制。
5 w) {, |* l. d" l7 b7 Z

(3)电动机模块采用奔牛公司的低压三相直流无刷电机作为被控对象。

2、NUCLEO-F302R8核心板

P-NUCLEO-IHM001套件的控制模块采用的是NUCLEO-F302R8核心板。象所有的Nuleo系列开发板一样,风格一致,电路也几乎完全一样,只是在接口略微不同和微控制器不同。

32.png

图2-2 NUCLEO-F302R8核心板功能框图

由Nuleo开发板结构框图可以看到,板子最上面是一个ST-Link,通过SWD方式连接目标微控制器,下部的主控微控制器和接口(Arduino和Morpho接口), 以及复位按钮、用户LED和用户按钮。

下图是具体NUCLEO-F302R8核心板功能分布:

33.png

图2-3 NUCLEO-F302R8核心板功能分布

NUCLEO-F302R8核心板的主要功能特点:

(1)STM32F302R8T6微控制器。% r0 o6 C) D1 b, ^

(2)支持Arduino UNO R3 Shield扩展板,微控制器所有IO口引脚通过排针座引出。
! B4 l; [4 o( b8 L

(3)ST-LINK/V2-1调试器。+ X2 U$ y7 r( _7 ?8 o- q

(4)3个LED:一个USB通讯LED、一个电源LED、一个用户LED。
  @. N* K6 j3 g% P; M8 l

(5)2个机械按键:复位RESET、用户USER B1。7 H6 D6 |; D( O. @8 {

(6)USB接口的3个不同功能:虚拟串口、容量存储、调试接口。4 s5 @/ t  |% p8 n4 K) b

(7)3种不同供电方式:mini USB接口供电;IO引脚用电;通过Arduino UNO R3 Shield接口供电。
& ]3 H2 m( }' I9 k0 s

(8)支持Keil、IAR、embed在线IDE的设计工具。

下图是是NUCLEO-F302R8核心板的微控制器。

34.png

图2-4 NUCLEO-F302R8核心板微控制器STM32F302R8T6


5 d& w! F) G) c) i* W6 \7 i

NUCLEO-F302R8核心板的微控制器是ST公司的64脚MCU——STM32F302R8T6基于高性能的ARM® Cortex®-M4 架构,可运行在高达72MHz的频率下面,内嵌一个浮点数运算单元(FPU),有助于快速完成复杂运算;内部集成了64 KB的FLASH存储器和16 KB的SRAM存储器;内部集成一个高达5Msps的ADC,三个比较器,多达18个电容感应通道,一个DAC通道,低功耗RTC,一是通用的32位定时器,一个定时器专用到电机控制,以及多达三个通用16位定时器,三个I2C,三个USART,最多2个SPI接口与多路全双工I2S,一个USB FS装置,CAN和红外线发射器等资源。

NUCLEO-F302R8核心板提供Arduino和Morpho两种接口,具体接口定义为:

35.png

图2-5 NUCLEO-F302R8核心板Arduino接口

36.png

图2-6 NUCLEO-F302R8核心板Morpho接口

Morpho接口又称全功能扩展接口,将核心微控制器STM32F302R8T6的所有可用引脚引出,方便工程师测试使用。

兼容Arduino接口的引出使NUCLEO-F302R8核心板有更多的Arduino资源使用,方便电子安好这DIY使用。

NUCLEO-F302R8的开发环境还是比较多的,主流的IDE都支持,比如MDK、IAR、GCC-based IDEs,当然还有最近的mbed在线IDE。另外,ST公司推出的图形开发工具STM32CubeMX,以图形化的界面配置来帮助开发者快速配置工程、实现初始化代码的功能。

除了开发工具之外,ST还为STM32提供了程序库,包括前期的标准库和最近两年推出的HAL库,可方便软件功能是快速使用C语言开发基于STM32微控制器的软件系统。

2 W$ D6 v4 p) ^3 ^

3、X-NUCLEO-IHM07M1扩展板

X-NUCLEO-IHM07M1是ST公司专门为STM32 Nucleo核心板设计的基于L6230驱动器的三相无刷直流电动机驱动扩展板。它提供一种在STM32 Nucleo工程中的低成本、简单易用的三相无刷直流电动机控制解决方案。

X-NUCLEO-IHM07M1使用ST morpho 接口链接到STM32 Nucleo核心板,并为其他扩展板提供ST morpho接口,并且给用户预留Arduino UNO R3接口,用户可自行焊接安装。X-NUCLEO-IHM07M1是完全可配置的,并且支持无传感器和有传感器的闭环控制模式。下图就是X-NUCLEO-IHM07M1扩展板图片。

37.png

图2-7 X-NUCLEO-IHM07M1扩展板

) y9 X! _# U' r. H

在X-NUCLEO-IHM07M1扩展板上使用的是ST公司为三相无刷电动机设计的DMOS全数字驱动器L6230,采用PowerSO36封装,内部带有过流和过热保护。

X-NUCLEO-IHM07M1扩展板的规格数据和主要参数如下:

(a)无刷直流电动机和永磁同步电动机的三相驱动板$ f1 g* ]4 @2 A* V- L

(b)通常的工作电压范围在8-48V直流电* g/ C9 Q5 m1 ]) ^( u

(c)2.8A的输出峰值电流(1.4A均方根电流)4 R6 K' C( v/ C% a  |

(d)操作频率高达100KHz- p  ~+ b; m5 c- a0 l" V/ }

(e)非耗散过流检测和保护2 M2 L. E# k  B7 L

(f)热检测和过热保护
! M- _  G# ^3 e5 b

(g)与ST的梯形6步算法和 矢量控制算法完全兼容5 Q' l( b3 q- @. V

(h)完全支持有传感器和无传感器模式, M  r- P% H: b1 Z

(i)为电动机电流检测可配置为3电阻或1电阻检测的跳线- c! O6 z0 b  \* f0 D

(j)提供霍尔/编码器形式的电机传感器接口和电路' T9 \/ K# N& S

(k)提供DAC、GPIO等的调试接口9 d$ h+ Z; C$ F

(l)板载电位器接口可控制电机速度/ j% [5 ~- Z2 U; |7 k9 W

(m)具有预留的测试点
2 Z  x" w1 F9 f8 X2 ]! u; @

(n)兼容STM32 Nucleo核心板,配备ST morpho接口

X-NUCLEO-IHM07M1扩展板的应用目标:

(a)低压永磁同步电机驱动器

(b)低功耗风扇

(c)电动工具

(d)工业传动

其中核心的电机驱动器为ST公司推出的三相无刷直流电动机驱动器L6230,POWERSO36封装,内部集成独立的DMOS功率晶体管,具有过流保护,具有独立的电流传感器接口,可方便选择电流检测形式,用于矢量FOC控制。

11.png

图2-8 L6230驱动器

12.png

图2-9 L6230功能框图

其主要特点为:

a)工作电源电压为8至52 V
  h- M; s+ d7 {+ v

b)2.8 A输出峰值电流(1.4 A RMS)
$ C+ S$ D$ P2 a

c)RDS(ON)0.73Ω(典型值)。) d3 ~7 I# @" H# ~  o& Q6 E$ N

d)集成快速续流二极管
& P* K% S/ b; p# Z2 |3 `

e)工作频率高达100 kHz
- m2 m7 J5 ]( P& {

f)非耗散过流检测和保护

下图是L6230在矢量控制算法中的典型电路,注意三个电流采样电阻是必须的。

13.png

图2-10 L6230典型应用电路(FOC)

下图是梯形6步控制算法的典型电路。

14.png

图2-11 L6230典型应用电路(Six-step)

下面来分析一下X-NUCLEO-IHM07M1扩展板的功能结构

(1)集成了三相桥式L6230驱动器

主部分是基于L6230。这是一个DMOS完全可配置的三相无刷BLDC/ PMSM电机驱动器。电源电压通过外部连接器(J1)。用(J9)跳线设置能够选择是否数字部分NUCLEO-F302R8核心板使用USB或通过扩展板供电。

15.png

图2-12 X-NUCLEO-IHM07M1扩展板功率部分结构

具体电路如下:

16.png

图2-13 X-NUCLEO-IHM07M1扩展板L6230电源电路


' H# g7 |# u- E$ f5 y. {

(2)过电流检测(OCP)和电流感应测量

L6230驱动器具有不需要外部电阻实现过流保护与的内部检测电路。在L6230内部电流检测并与内部的电流基准比较,当电流过流时,会在DIAG引脚输出低电平表示。

DIAG引脚最终连接到NUCLEO-F302R8核心板上,当检测到过流,立刻停止输出驱动信号。

其中电流检测可以使用J5和J6跳接线来选择使用3电阻还是但电阻结构,并最终影响选择的控制算法。

17.png

图2-14 X-NUCLEO-IHM07M1扩展板电流检测跳线

18.png

图2-15 X-NUCLEO-IHM07M1扩展板电流检测电路


* L8 S0 F. h# J% c1 `

(3)霍尔/编码器电机的转速传感器

在X-NUCLEO-IHM07M1扩展板上,预留了一个用于检测电机速度的霍尔/编码器传感器检测接口J3。可以通过这个接口外接速度传感器,构成带速度环的闭环调速系统。同时这个接口还提供了一个+ 5V和GND的电源接口,供外接传感器使用,同时可用J3跳接线选择是速度传感器否使用上拉电阻。

19.png

图2-16 X-NUCLEO-IHM07M1扩展板霍尔/编码器接口

20.png

图2-17 X-NUCLEO-IHM07M1扩展板霍尔/编码器接口电路

(4)电动机位置检测

在X-NUCLEO-IHM07M 1扩展板上提供了电动机位置检测电路,可以选择2中方法,一种是有传感器方案(使用霍尔/编码器电机的转速传感器),另一种是无传感器方案。具体电路如下:

21.png

图2-18 X-NUCLEO-IHM07M 1扩展板电动机位置检测电路

(5)总线电压和温度检测电路

在X-NUCLEO-IHM07M1扩展板上,提供了总线电压感测和温度测量的电路,其中总线电压检测是由电阻分压器来完成的,温度检测是由一个NTC温度传感器完成,可构成过压、过热保护。具体电路如下:

22.png

图2-19 X-NUCLEO-IHM07M1扩展板电压检测与温度检测

23.png

图2-20 X-NUCLEO-IHM07M1扩展板电压检测与温度检测电路

最后,在使用X-NUCLEO-IHM07M1扩展板时,特别要注意跳线的设置,其中跳线的定义如下表定义:

表2-1 X-NUCLEO-IHM07M1扩展板跳线

24.png

注意,在使用X-NUCLEO-IHM07M1扩展板的J9跳线时,如果想要通过扩展板向NUCLEO-F302R8核心板供电时,需要将J9跳线短接,同时NUCLEO-F302R8核心板的跳线JP5必须选择2-3引脚短接,这是要注意X-NUCLEO-IHM07M1扩展板的J1上外接的电源不能大于12V,避免烧坏NUCLEO-F302R8核心板。

具体的X-NUCLEO-IHM07M1扩展板跳接线图如下图所示。

25.png

图2-21 X-NUCLEO-IHM07M1扩展板跳线接口图

4、三相无刷直流电动机

套件选择了奔牛公司的BR2804-1700Kv-1型三相无刷直流电动机,可用于航模使用,十分小巧。


: I2 s# I# H8 i3 j/ A6 o

26.png

表2-2 BR2804-1700Kv-1型电机参数

可以看到BR2804-1700Kv-1型三相无刷直流电动机电压额定11.1V,空载转速可达18000转/分,电流0.6A,1700rpm/v,极对数为7。动力强劲,适合航模!


& i; F/ f  {9 `2 g0 `* l, R; Z. N( r! U3 M

三、P-NUCLEO-IHM001入门

在ST的生态系统中,为P-NUCLEO-IHM001套件提供了非常丰富的开发工具,有ST推出的STM32 CUBEMX配置工具可使用图形化界面完成STM32微处理器的初始化配置工作,有IAR、MDK、GCC-based IDEs等集成IDE。另外ST还提供HAL软件库和标准库方便用户快速实现软件功能。

除此之外,ST公司还针对电机开发提供了方便快捷且免费的MC 6-STEP LIB软件库,还有基于PC的免费MC WORKBENCH软件,可简化电机控制固件库的自定义设置,帮助用户设置不同的电机。最新算法库(v4.2)引入一个便利的“Motor Profiler”工具,能够自动侦测电机参数,自动配置电机控制算法库,做到了一接触即可进行微调(One-Touch Tuning)的方式。

下面我们分别使用两种方法来测试一下它们的使用,体验一下ST提供的软件库和工具的方便快捷。


: d/ N2 b4 h  t" N7 V4 O

1、基于X-CUBE-SPN7测试

(1)X-CUBE-SPN7软件包介绍

ST公司提供的X-CUBE-SPN7软件包是一个基于STM32Cube扩展软件包,程序采用了ST最新推出的HAL库。软件库包含了在STM32运行所需的驱动程序、初始化函数和控制L6230接口等。软件包采用了HAL库,可方便用户在NUCLEO-F030R8、NUCLEO-F103RB、NUCLEO-F302R8、NUCLEO-F401RE等核心板上迁移而不需要过多的修改程序。软件包还提供了驱动P-NUCLEO-IHM001套件的例程。

X-CUBE-SPN7软件包的下载地址:http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1920/PF262647

111.png

图3-1 X-CUBE-SPN7软件包下载

. K/ u# {) v1 r5 F7 C: f

所述STM32Cube固件的结构可以分成3个层,每层之间相互独立,层与层之间通过API接口函数交互,如下所示:

112.png

图3-2 X-CUBE-SPN7软件包结构

Level 0:这个层又分成了3个子层:

板级支持包(BSP):这个层提供了硬件板卡的内部组件和外部资源的API接口,包括音频编解码器,IO扩展器,触摸屏,SRAM驱动器,LCD驱动器等。这里的组件是相对于外部电路资源,它们都是STM32微控制器的内部硬件资源,可以移植到其他开发板上。而BSP驱动程序是针对特定电路板的外设元件的驱动,比如用户LED或按钮,这部分提供的API接口函数的命名规则是BSP_FUNCT_Action(),比如:BSP_LED_Init()是开发板的用户LED的初始化函数,BSP_LED_On()是点亮LED的函数。

硬件抽象层(HAL):这一层提供了与低一级的驱动程序和上层的接口,用户不需要涉及更多的硬件信息,使用HAL层接口函数就可以访问片内外设I2C、SPI和UART等。


% R/ Y. b+ }, m% U/ \

Level 1:这一层又被分成2个子层

中间件组件层:该层包含了USB主机和设备库、STemWin、FreeRTOS、FATFS、LwIP、PolarSSL库等。

基于中间层的实例:每个中间件组件带有一个或多个实例(也称为应用)来给开发者参考使用。

Level 2:该层给出了基于中间层的实时和图形工程实例应用。

6 R0 D3 R4 X6 H4 a! t

(2)下面使用IAR软件和X-CUBE-SPN7软件包测试

在这里选择大家熟悉的IAR作为开发环境,基于X-CUBE-SPN7软件包。完成的功能为,P-NUCLEO-IHM001套件上电后,10秒后自动启动电动机运行,初始速度为2000rpm,运行10秒后速度调整为4000rpm,运行10秒后速度调整为6000rpm,运行10秒停止电机,之后重复上述过程。

为了快速实现功能,测试X-CUBE-SPN7软件包,我在这里在自带的实例工程的基础上修改完成。

首先将X-CUBE-SPN7软件包解压,找到P-NUCLEO-IHM001套件的NUCLEO-F302R8核心板例程,位置在STM32CubeExpansion_SPN7_V1.0.0\Projects\Multi\Examples\MotorControl\EWARM\STM32F302R8-Nucleo这个位置,如下图。

113.png

图3-3 X-CUBE-SPN7软件包例程

- A+ s. ?8 `0 s0 D

打开IAR工程如下图,可以看到工程文件结构相当清楚。

114.png

图3-4 X-CUBE-SPN7软件包例程结构


! b0 a" J  ]' a8 }% p& ~

在使用X-CUBE-SPN7软件的时候,如下图的MC_SixStep_param.h文件非常重要,里面保存了基本的梯形6步法电机控制的参数设置。

115.png

图3-5 MC_SixStep_param.h文件结构


9 q. O4 a: A0 o7 z  S

由上面可以看到,参数设置分为2大部分,基本参数和高级参数设置。我们首先来分析一下基本参数设置:

116.png

图3-6 基本参数

NUM_POLE_PAIRS表示使用的电机的极对数,后面的7表示BR2804-1700Kv-1型三相无刷直流电动机的极对数是7。

DIRECTION表示电机的旋转方向,0表示正转,1表示反转,在这里要注意电机的接线必须符合前面的介绍。

TARGET_SPEED表示电动机的初始目标速度,3000表示3000rpm。

POTENTIOMETER表示是否使用电位器调整电机的速度,0表示禁止,1表示允许,默认是允许的。

高级参数在这里就不过多介绍了。

接下来看一下main_F302.c文件下的主函数。

首先是系统资源的初始化部分,可以看到,这里初始化时钟和片内外设资源。

117.png

图3-7 主函数初始化


9 Q; X# V0 z) S1 _9 d

接下来是调用梯形6步电机控制库的初始化函数,对梯形6步使用到的各种硬件软件初始化。

118.png

图3-8 6步法初始化


$ \" C% y5 Y5 z* X# x7 m& b7 |

下面是主函数的死循环,在里面有关于6步发电机控制实例的说明和参考API函数,以及给用户提供的编程位置。

119.png

图3-9 主函数用户代码添加位置


4 L% v; c/ j1 ^2 }1 \3 t

我们为了实现预期的功能,修改MC_SixStep_param.h文件中的基本参数。

120.png

图3-10 修改电机基本参数


) A  T3 |4 j* T- K

main_F302.c文件中添加自己的程序。

121.png

图3-11 添加用户代码

( X. J6 D( t, {" }

# X( s) k* k9 U5 I  E' }

2、基于MC WORKBENCH测试

(1)MC WORKBENCH介绍

使用了ST推出的X-CUBE-SPN7软件包之后,是不是感觉非常简单?但是有点小遗憾,就是整个都是看程序,参数配置可能比较麻烦一些。

下面我们来看看ST推出的另外一个非常强大的工具——MC WORKBENCH软件,该软件是基于PC的免费软件,可简化电机控制固件库的自定义设置,帮助用户设置不同的电机。最新算法库(v4.2)引入一个便利的“Motor Profiler”工具,能够自动侦测电机参数,自动配置电机控制算法库,做到了一接触即可进行微调(One-Touch Tuning)的方式。

首先在ST官网下载STSW-STM32100,这个是ST推出的Web版本的FOC SDK库,最新的版本是4.2.0。下载地址:http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1734/PF257936

121.png

图3-12 STSW-STM32100下载

安装后可以找到“ST Motor Control Workbench”软件。打开该软件,出现如下图所示的界面

122.png

图3-13 MC WORKBENCH软件界面

. R& m* q+ C1 w

(2)MC WORKBENCH测试

下面我们以工程实例为模板SDK42x-P-NUCLEO-IHM001-MP-LowInductanceMotor-7-PolesPairs,来测试P-NUCLEO-IHM001套件。

123.png

图3-14 MC WORKBENCH工程样例


) W  s! m, R6 T$ q. h* O

打开工程后,显示如下界面

124.png

图3-15 MC WORKBENCH电机配置主界面

  d) j- t8 A* E, u! }7 @

之后点击电机按钮,打开电机配置界面,勾选Motor Profiler工具,无负载形式,并填入上面的电机基本参数。

125.png

图3-16 MC WORKBENCH电机配置窗口


0 r$ ~# U% D* B8 t( G

点击工具栏的输出配置选项设置按钮。

126.png

图3-17 MC WORKBENCH输出配置按钮


+ T) @; R4 ?( t' P- L9 }

在弹出的窗口选择输出配置文件的路径为:C:\Program Files (x86)\STMicroelectronics\FOC SDK\STM32 PMSM FOC LIBv4.2\Web\SystemDriveParams

127.png

图3-18 MC WORKBENCH输出配置窗口


3 ?6 P; l; S, P* y7 a+ I

之后点击工具栏的生成配置代码工具。

128.png

图3-19 MC WORKBENCH生成代码窗口


9 V' }3 a% I" _# D* k2 A% P6 v

之后生成配置文件,并打开Motor Profiler窗口。

129.png

图3-20 Motor Profiler窗口


. U! o: ?( W" p/ ^9 s7 c

在MC WORKBENCH的默认安装路径下面找到如下工程,路径:C:\Program Files (x86)\STMicroelectronics\FOC SDK\STM32 PMSM FOC LIBv4.2\Web\Project\EWARM,我这里使用的是NUCLEO-F302R8核心板,选择工程STM32F30x_Workspace.eww打开。

130.png

图3-21 STM32F30x_Workspace工程文件


) q" Z+ G5 f: ?  q

使用IAR软件编译该工程,并编译下载到NUCLEO-F302R8核心板中。

131.png

图3-22 STM32F30x_Workspace工程编译


% s/ r; N  r. A. l2 C

在Motor Profiler窗口设置NUCLEO-F302R8核心板的虚拟串口和波特率,并点击连接按钮。

132.png

图3-23 Motor Profiler连接P-NUCLEO-IHM001套件


. |# z) j- v  C7 s& T8 V% S7 E. o

待连接到核心板后,点击开始按钮,就开始自动侦测电机参数。

133.png

图3-24启动Motor Profiler按钮

134.png

图3-25 Motor Profiler侦测电机参数


7 c" E6 j" v( d

待自动侦测电机完成后,出现如下窗口信息。

135.png

图3-26 Motor Profiler输出电机参数


3 |) ?7 W- V7 U8 e. |# r! A

点击将结果拷贝到工程按钮,再次点击电机图标,就可以看到电机的完整参数。是不是很方便?

136.png

图3-27 完整电机参数

, P) q- f( A& O% v, m! m. ~

然后在驱动管理界面配置系统其他参数,比如启动参数等等。

137.png

图3-28 驱动管理界面


- _7 g; i, [$ A1 _6 A# A0 N+ `- ^

所有设置完成后,再次点击生成参数按钮,生成最终的系统配置参数。并在IAR中再次编译下载到NUCLEO-F302R8核心板中。

138.png

图3-29 生成配置完成参数代码

在MC WORKBENCH软件上点击监控按钮。

139.png

图3-30 MC WORKBENCH软件中监控按钮

进入监控界面

140.png

图3-31 MC WORKBENCH监控界面

可以在监控界面启动、停止电机,修改电机参数,并实时的显示电机运行状态界面。


6 J% _0 Q+ y4 j1 _/ u: }' h

经过上面的测试,是不是觉的MC WORKBENCH软件的使用大大简化电机控制固件库的自定义设置。特别是最新库引入的“Motor Profiler”工具,能够自动侦测电机参数,自动配置电机控制算法库,方便用户在不知道电机过多参数情况下几步就能完成电机的控制?

, n. \; n" U4 v3 H8 j

) U& X- u$ [6 v

四、总结

P-NUCLEO-IHM001开发套件是ST公司推出的一款针对无刷直流电动机控制入门套件,采用NUCLEO-F302R8作为核心板,板载一颗高性能的STM32F302RB微控制器,基于ARM CotexM4核,带有DSP和FPU单元,已实现高速的控制功能;X-NUCLEO-IHM07M1扩展板,板载STSPIN L6230电机驱动器芯片,可提供48V/1.4A驱动三相无刷直流电机;配备一个低压三相直流无刷电机作为控制对象;同时ST公司提供梯形(6步)和正弦矢量(FOC)控制算法库,以及免费的MC WORKBENCH配置工具,可在数分钟内带领用户迈进无刷直流电动机控制的大门!


0 q  |+ f2 m4 x, R: C( c, I, P, D/ |0 d$ f( B$ r8 n6 i; J) i  N1 t

7 W2 U) e, ]! w* c7 f" T2 S6 R

参考文档:

1、P-NUCLEO-IHM001套件资源

2、NUCLEO-F302R8核心板资源

3、X-NUCLEO-IHM07M1扩展板资源

4、BR2804-1700Kv-1无刷电机资源

5、X-CUBE-SPN7软件包资源

6、STM32 PMSM FOC SDK资源


6 V- z" P9 D! V1 c
收藏 8 评论9 发布时间:2017-8-1 17:21

举报

9个回答
jinglixixi 回答时间:2017-8-1 21:08:44
感谢分享!!!
zero99 回答时间:2017-8-1 21:17:43
多谢分享拉
wanghc-19991 回答时间:2017-8-7 15:20:15
演示跳线 (3)的b) 部分: 确保JP9和JP3跳线短接,对照原稿应该是 J9, 不是JP9.
wanghc-19991 回答时间:2017-8-7 15:38:25
打字错: 方便电子安好这DIY使用。=》方便电子爱好者DIY使用。
贪玩不回家 回答时间:2017-10-25 22:55:47
现在还能申请吗
贪玩不回家 回答时间:2017-10-25 22:56:47
为什么我的板子FOC转不起来啊,跳线是对的,六步可以转起来
qq2217216693 回答时间:2017-12-16 17:10:28
不错,学习了,感觉很棒
蒙面歌王 回答时间:2019-3-11 21:34:25
楼主的这段分享还是比较细致的,支持一下
lhq258054518 回答时间:2019-11-2 17:42:34
分享还是比较细致的,支持一下

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版