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

【STM32电机培训】——2、生成电机样例程序stmcx、ioc、IAR工程

[复制链接]
七哥 发布时间:2018-9-9 15:30
本帖最后由 toofree 于 2018-9-9 15:32 编辑 ; P) t8 j$ A9 P9 ~: [' y3 d

; I4 B  T9 |+ [( f0 @生成电机样例程序stmcx、ioc、IAR工程
! ]' E- I3 C1 P2 ^: r/ _/ o6 u% z* m: L+ p' v( p

/ `5 I, G( N. ?本贴目的是,对于电机控制还处于两眼一抹黑的情况下,先跑个套路,从直观上对MotorControl Workbench 5.0.3软件及开发过程有个了解。
0 g% n* V' [1 E, x! C0 C
/ C/ _4 i7 s( v1 L2 Q# {打开软件MotorControl Workbench 5.0.3; v+ w6 P% u! W4 s9 `# L7 I8 s
01.jpg
( I8 C5 j& T: a% `! u
& K- S/ n" H3 t; v; z* U在样例工程列表中,找到P-NUCLEO-IHM001-BullRunning样例,并双击打开6 c+ l/ p2 I% ?/ P$ q' N
02.jpg + c0 a/ b9 x; B

# g4 h3 ~, p0 |; \4 f3 Z9 b提示关闭前保存,先选是,往下走着看看
* p) s% F) I1 x0 y5 @ 03.jpg
, L  S8 t/ q4 T4 m- [: F6 o! A; @* g9 x. t/ p% t
保存工程中,按默认名称“SDK50x-P-NUCLEO-IHM001-BullRunning.stmcx”,先不做修改
# l; q1 z4 j7 @1 I2 \* Q 04.jpg % E& A3 v4 l4 L  h1 D. x
1 [& I; a" C  Z+ Y2 i" I! a3 l8 K
可以看到标题栏上stmcx工程名称为“SDK50x-P-NUCLEO-IHM001-BullRunning”。左边有4项,电机参数、电源阶段(硬件驱动)、驱动管理、控制阶段(MCU控制相关)。  N" W  u2 d: U* k2 p
双击中间的大M,进度电机参数设置) f- Z0 Q/ L4 T% H5 c$ C6 d
05.jpg
/ U7 [0 S7 Y  S) N8 l
' F0 M! h: q) \可以看到,样例默认设置为下图,对参数暂不做改动。, `9 E! d0 o9 ^% u2 N8 S  ?! r
06.jpg 9 V: ~) D5 r. K0 Z+ _

6 U4 ]2 A+ X( a8 E7 y% n8 t对比之前电机参数识别时得到的结果,有一定的差别,暂不使用获得的结果代替上图中电机参数,供之后进阶阶段参考。& B5 j$ J, v& p- l4 k# X' s
07.jpg
; M8 e% R' y& p1 u& u) h  q5 [- p# k, i( A1 I0 {( B
传感器设置,由于本实验套件没有相应外设,因此都不勾选: F7 H1 o8 v( n- }0 V
08.jpg 4 V$ X6 {9 Z) N' y- \: E1 l- d

& G+ v0 g4 V/ u" V  _7 j5 b3 Y/ \2 q电源硬件驱动设置,暂不做任何修改。如要修改,需要对照硬件电机驱动电路参数。
+ @. F* D: ?/ U( ]3 \9 t 09.jpg $ g5 i3 V9 u5 Q( X3 V/ ^6 Q

! B8 B2 K8 J- z9 m: U9 P+ i0 T驱动管理,有6个蓝色框,可以设置各种参数。暂不做任何修改
9 o: n/ a* p, v% z1 M' r 10.jpg
1 @- j# p0 M+ O& `: s, l7 @8 |2 y, K/ p. f; f6 b
如要修改,那么鼠标双击蓝色框内,将弹出相应设置选项,如下图5 B3 d  x, w4 q: a
11.jpg
; X# w# ^+ O8 i! D: \% q* X! S5 O2 ^6 T
对于第4项比较重要,是电机控制时MCU相关资源参数的设置,不妨打开来看看。当然这些参数如果需要调理的话,将来的STM32CubeMX下也可以说完成。
  E! z" D+ k7 y9 ~: k 12.jpg
7 [  _' y2 D- [% Z/ E+ ?1 ^) O6 b
$ D3 p( b/ r: {# m* _双击MCU和时钟频率选项图标,弹出MCU型号,时钟类型,主时钟频率,电压等参数
- M# U: H5 k6 D. c9 q 13.jpg
8 \0 a2 p. R5 R  a- t1 ?, M' @7 s
! V9 o# }/ O. U, v; T$ Y设置输出工程类型,IDE及工具链。4 n$ n( J  I8 S3 J9 {, b! U
14.jpg # J  g2 c* h! I2 d  t
  J6 q  N+ ^" b. T/ }! S7 j
可以有IAR、Keil4、Keil5、TrueSTUDIO、SW4STM32等,我们这里选择IAR,即EWARM。
% j0 U6 Y. H/ B  ^6 ` 15.jpg * B, T" ^  E8 l9 \: D
8 B1 S9 N6 u- x: m/ j
生成工程文件。
/ E( W( t" Q! a 16.jpg
# T$ V# d& ^+ Y9 d7 m0 ?4 P5 ~) ]& g, [3 P' O
当然也可以通过主菜单的Tools下拉菜单中,选择相应设置。
. E$ v( m( X0 w1 \9 J$ \$ E 17.jpg * Z0 A1 T. Z8 Z! D( j% _7 f
% e, ]4 j8 [% ~- m* t- x5 V/ ?
生成工程文件中……。生成工程文件成功后,过程窗口自动关闭。如没有任何错误提示,那么进行下一步,IAR下编译目标固件。7 n7 m) p0 a5 b
18.jpg
6 C( S  L% Q4 x2 R( i4 b9 S
4 m& Y+ p. z( [2 r使用IAR for ARM 8.0以上,我这里安装了三个版本(8.20、8.22.2、7.80)的IAR for ARM,选择8.20,因为5.0的电机开发环境要求必须是IAR 8.0以上版本。5 ]3 w3 G" o1 F# B& X; |
19.jpg
" K6 b. {, v6 l  v
; E6 n2 r8 L% I如果选择 7.80,那么在编译时会多一条警告,关键是生成的目标固件无法下载执行。我当了回小白鼠,其他小伙伴就没必须再去尝试了,给大家省点时间。
' j1 R: P" b7 T8 X& W4 ] 20.jpg 5 O7 N1 _# W# T2 K) {# @
7 v  }* U+ Y( x2 E6 A; K" l: D
打开IAR 8.20后,找到并打开工程“Project.eww”
: o/ }8 x! o; @, x 21.jpg
. `, s0 y% Q) g+ k- W  Z/ P) }1 @
( Y# Y- n( S# B把用户文件夹前的加号点开,可以看到文件后都有一个红色有点,这也表示相应文件未编译,当编译后红点将自行消失。打开main.c文件,可以看到主函数比较简洁明了,while中没有任何代码,这是因为样例工程中的程序在运行时通过USART与上位机通信来设置参数,都在中断中执行。
& F, y2 H# T: t+ N. g: V 22.jpg
  I* L. A+ o, T0 \- j5 I! {! a& Q0 Q) t: q+ q9 Q5 M
鼠标右键点工程,弹出菜单,选择“make”,编译工程。/ w& ^  G1 ?7 r# R
23.jpg
: s" ]# W& r+ C/ h9 [; ^4 M. s. H; f, [5 G
编译完成,0错误、0警告, G' P/ z( d" p7 K, k: B* s
24.jpg * z, g" _: O: o2 m. x( q
  R- U* W! M' r( ~1 d" e9 c( I* G$ N' V
下载并调试,或用快捷键ctrl+d5 O' o% H6 w2 a  ]/ L5 ^. m1 e
25.jpg 3 ~8 Q% V6 I$ _7 H" _4 l- n
$ M# @9 t7 ]$ b; L: N  K
下载成功,进入调试模式,程序运行指针指向main函数开头
# W2 r5 V" A7 z+ j4 M0 c, T% _$ ~ 26.jpg # Q9 Z2 z" X6 p" t6 Z% m) j

3 {6 T6 |0 n1 C点击全速运行程序图标,或者用快捷键F5
4 K( F3 n! }. I5 D% a 27.jpg 2 [- X, c6 ~7 e) }

% k9 k/ q# v2 A$ s) G. v4 |打开监控窗口
9 Q7 p# Y" v5 G+ f 28.jpg
' f( Z! X( f0 V9 @. G
0 f. w  k. F8 \8 Y) X- F* a& Q+ z设置相应串口参数,并连接串口
' \9 z  K6 L3 W' R 29.jpg
9 K; f6 t+ S9 }9 d' T/ e
' A6 o1 U0 Y3 v9 X4 f上位机与电机目标板固件已连接* f0 a" P( |. `- g8 O
30.jpg , K, ?) H- l1 i/ G% j7 z! m
: X  h8 m: F. J6 \. x
点“Start motor”按钮,电机开始运行8 A; l: ^, R, K
31.jpg ; `0 a: u1 Q) O- m
8 f! Y! [5 U5 t# M7 M0 k8 k
电机开始运行效果! P6 O3 U  O: c; o
77.jpg 0 x! a: P% S* |

$ A3 c5 _3 U$ ]0 e" D- n& N可以看到设置转速与测量转速,测量转速是通过电机实时运行测量得到的结果。
+ l5 x) z4 N) B" a9 O 32.jpg   [2 N; T  @; b  }% d* v9 J) P
, T) F( N9 V6 V) R
高速电机设置转速,电机速度发生变化,测量转速反馈到的转速也相应变化。
9 S8 P" @2 m% u) r3 ?5 n 33.jpg ( k  \1 c# {: \
  v4 D* u" P, R. p" T
在调整速转速、方向、或启动时,可能会发生错误。错误主要是电机速度反馈错误和电机超流错误。
$ t. b4 s( Y; I  l! S. y电机速度反馈错误
: X$ a) w9 h3 I6 R: ]0 H 34.jpg & P% }, e; x6 q

7 I# t0 B" h. R7 W3 b. A9 g% h# |电机超流错误8 r4 x+ R/ B9 x) y3 g/ u+ R
35.jpg
) h: w* K- A8 ~2 {3 s# n8 k% S5 A; k. x" p) X7 R6 F; J4 l
右侧按钮的操作,将会在下面的“操作改变日志”中有显示
9 u# _4 \  y# ^. \, {" d 36.jpg ' d  l. X5 i4 t6 P3 ^! o

' z0 a. }  O) F  [0 l打开plotter绘图窗口,可以看到设置转速与测量转速的变化波形。; f2 s$ M4 t! z: W" Z
放大波形,可以看到实测波形在设置转速附近做上下往复,这是因为一直在做pid调节转速。
" X3 Q) i: \9 V% z( v 37.jpg * z9 M1 t2 e! g. H

6 t% t0 Z* E1 _- n- ]  m" V" M反馈的测量转速是通过USART串口发送到上位机的,并且相对发送采样速率不同,在低速时,反馈点多一些,高速时每个周期的反馈点要少一些。
3 l! B; t6 l9 v0 p3 F  l. X. b 38.jpg 1 o/ h( h" v3 R" G

, N$ b2 Q3 ?! P% ^5 F; m' I电机速度有突变时,反馈速度会有过高的过冲,这也是PID的一个特征。
" j6 i6 H, @, O 39.jpg " ^# j3 c# K- |' U9 C; f3 ]

5 I5 ]0 K: Q3 T- O1 H速度变大、变小,都会有反馈速度过冲! s2 i  P! \( C( P
40.jpg
, b* ^" ?! \+ Q' x
* G2 Z/ [8 K# q至此,一个基本的样例程序跑起来了,接下来需要完成其它的实验。将在此工程基础上,适当增减代码来实现。- h0 w1 F/ Z3 f! L

/ e( }# X8 K* K3 h7 o; b
收藏 评论13 发布时间:2018-9-9 15:30

举报

13个回答
七哥 回答时间:2018-9-9 15:35:46
本帖最后由 toofree 于 2018-9-9 15:38 编辑 / E( E" @# G! ^% l- m$ M0 |3 s

# k: g# t7 p" @) v7 N. _按照本人惯例,本实验样例程序工程附上:! R# j& \, n% c$ |# s+ D( f2 b
P-NUCLEO-IHM001.rar (8.98 MB, 下载次数: 1603)
vnicehuai 回答时间:2018-9-9 20:06:02
签到
vnicehuai 回答时间:2018-9-9 20:06:29
签到
vnicehuai 回答时间:2018-9-9 20:07:01
签到
vnicehuai 回答时间:2018-9-9 20:07:17
签到
子曰好人 回答时间:2018-9-9 22:08:16
我用的是IAR7.7,生成的工程编译没有问题
七哥 回答时间:2018-9-9 22:32:51
子曰好人 发表于 2018-9-9 22:08
2 l! a& X9 F& W4 ?# |我用的是IAR7.7,生成的工程编译没有问题
" F) q) q; l- w) g: m, t0 I& W
谢谢回复!
* y$ F1 P% p) _: m; s2 z  ^我可能人品爆棚了,用7.8编译没问题的,下载时死活不行,唉!
5 H: a  X# o/ r1 F环境的问题伤不起,直接换高版本,跳过
聪聪 回答时间:2018-9-13 11:01:14
这是直流电机吧,还有反馈的
聪聪 回答时间:2018-9-13 11:02:20
MotorControl Workbench 5.0.3适合调步进电机吗,特别是加减速的问题
七哥 回答时间:2018-9-13 12:41:04
聪神聪 发表于 2018-9-13 11:01
& a' o1 i' v- l8 Z% @$ @这是直流电机吧,还有反馈的

- ~9 j& t( j9 _3 ]' j2 H是的,三相直流无刷电机。
# h: p' K0 z2 c$ h9 r$ X1 H! b. L' s* \& Q
可能不太适合步进电机吧,步进电机不能失步。无刷电机则会有失步的情况。
gatsby32 回答时间:2019-3-6 10:57:43
老哥 为啥我的程序下载时会出现这个问题啊( s: `. N4 g. A7 m. U
图片7.png
七哥 回答时间:2019-3-6 11:11:56
本帖最后由 toofree 于 2019-3-6 11:22 编辑 7 C- V' K* l$ T1 f* D
gatsby32 发表于 2019-3-6 10:57
, f% g8 Q+ \4 p  Z$ t% A老哥 为啥我的程序下载时会出现这个问题啊

: m+ t& X% S* O) O. t- N  k不知道,没有工程。" p$ D: C+ [  g$ p5 }
工程名和工程路径不要以数字开头,不要有标点符号、特殊字符和中文,最好是全字母。
: d9 x* [' v& h8 g用STM32CubeProgrammer或STM32 ST-LINK Utility,先连了下,看看能不能识别器件STM32F302。
4 @  _! u: {2 j7 Q1 {: _( N6 a
lmyyjx 回答时间:2019-4-16 14:56:29
签到

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版