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

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

[复制链接]
七哥 发布时间:2018-9-9 15:30
本帖最后由 toofree 于 2018-9-9 15:32 编辑
4 Q" ]* h6 W5 p9 N& V
+ y$ X( o0 t: F3 n生成电机样例程序stmcx、ioc、IAR工程6 J& J3 ]# Y8 t9 Q) Y3 j$ Q

  s# \, p  q$ ?, l
' F6 R! \% s3 X3 i7 I( j本贴目的是,对于电机控制还处于两眼一抹黑的情况下,先跑个套路,从直观上对MotorControl Workbench 5.0.3软件及开发过程有个了解。7 C. g: E# u# O; u9 T5 K7 _
; Q) P# X! O5 }7 k
打开软件MotorControl Workbench 5.0.3
, r) J, j) I) x- k3 {2 C 01.jpg
* P" x1 a  Q% F" F. H; @
$ f. z& N8 F2 ]8 J2 `在样例工程列表中,找到P-NUCLEO-IHM001-BullRunning样例,并双击打开, Q& j4 ~8 Z9 o/ b9 J. O
02.jpg / t  M" g7 ^2 x6 _- v7 w7 Y( b
, v+ l" t9 H" ]
提示关闭前保存,先选是,往下走着看看
' |+ |7 ^; T+ g( z" u+ k0 N 03.jpg 7 \  j  V+ s2 [

7 P. R) }4 J, J% p  z6 v% J保存工程中,按默认名称“SDK50x-P-NUCLEO-IHM001-BullRunning.stmcx”,先不做修改$ |  B3 o% v1 s2 x/ t% c
04.jpg / B, n# R& o! Y7 q8 t8 F7 {' \' f

7 E' c! D. b$ w0 w. A可以看到标题栏上stmcx工程名称为“SDK50x-P-NUCLEO-IHM001-BullRunning”。左边有4项,电机参数、电源阶段(硬件驱动)、驱动管理、控制阶段(MCU控制相关)。
  A/ \) {  x" g5 {7 R6 R双击中间的大M,进度电机参数设置. Y* q8 L  t; h9 v4 A5 A
05.jpg 3 K5 H  Q' i. w% Y! u% q- q" R

( f, b  o# h5 j3 G0 C可以看到,样例默认设置为下图,对参数暂不做改动。
; c7 f; g$ |6 V; k- r) T 06.jpg % E/ J' Z  a  B
8 X* a) C/ R# y2 W& C
对比之前电机参数识别时得到的结果,有一定的差别,暂不使用获得的结果代替上图中电机参数,供之后进阶阶段参考。
# A* `* v8 c/ G8 v 07.jpg ( j2 X; E8 A! c, k0 x
) ~  A. M; Z( I% W" d
传感器设置,由于本实验套件没有相应外设,因此都不勾选; y- D: U% s/ }, y' @; M
08.jpg 6 d5 C- S0 Q+ i

/ W4 C7 c! q- H3 i9 _" H电源硬件驱动设置,暂不做任何修改。如要修改,需要对照硬件电机驱动电路参数。+ j0 x! d) M  \  L
09.jpg * C9 R% f3 v% w0 [! C% F( s  w

$ W( s0 t/ c9 W6 |" ]驱动管理,有6个蓝色框,可以设置各种参数。暂不做任何修改3 j3 P+ j6 w, m1 X
10.jpg & X4 v0 T' J2 s) C' {8 x
) W1 \6 N( }* ~% I$ @0 @
如要修改,那么鼠标双击蓝色框内,将弹出相应设置选项,如下图
  ]/ M, D3 t4 d% X7 f 11.jpg
& ?$ h/ S+ ^* ^" `# U- B4 w" H! _. Y
对于第4项比较重要,是电机控制时MCU相关资源参数的设置,不妨打开来看看。当然这些参数如果需要调理的话,将来的STM32CubeMX下也可以说完成。; }4 R4 a+ R+ S: T5 g7 `: Z( ]
12.jpg , X3 x* W8 M( Q8 c
4 k' l7 \; g6 \6 A9 `, j
双击MCU和时钟频率选项图标,弹出MCU型号,时钟类型,主时钟频率,电压等参数
9 y& s( y1 n" G: P9 i 13.jpg
3 {1 B. L' c) D+ s* D. ?$ }
& Y- b+ x7 a* G4 }( S, k设置输出工程类型,IDE及工具链。
6 k! y$ T: ^' a) K1 R; x  K: y0 [ 14.jpg 6 Z/ P+ O1 p1 ^4 B

! L7 N( t% C# f9 R1 w) U可以有IAR、Keil4、Keil5、TrueSTUDIO、SW4STM32等,我们这里选择IAR,即EWARM。3 ^8 S# {8 x" A5 `
15.jpg
" l$ U2 ^1 m- B3 c+ t& V  m* Z- s. j; s: f3 W" C- K3 U* e) [
生成工程文件。8 d7 Z; Y/ D: {2 G8 Q% g
16.jpg / _' B' L7 I  R. d) ]8 N
$ c2 t0 P  S5 f# F0 q) a
当然也可以通过主菜单的Tools下拉菜单中,选择相应设置。
: I. l; S) ~; Z- j 17.jpg
; ~& a! K7 L# H" w6 b+ P/ e
; r; P8 ?" s% D+ Y生成工程文件中……。生成工程文件成功后,过程窗口自动关闭。如没有任何错误提示,那么进行下一步,IAR下编译目标固件。( }! `! P: d' E% T& X
18.jpg
! @+ T* O+ e5 ]- a% F' h: ]7 h" m. }7 ^9 `
使用IAR for ARM 8.0以上,我这里安装了三个版本(8.20、8.22.2、7.80)的IAR for ARM,选择8.20,因为5.0的电机开发环境要求必须是IAR 8.0以上版本。
3 c0 n8 w. ]* o( L- O0 ^" h; B& x 19.jpg % @3 U4 R) x. F1 S$ Y/ t
/ {5 ~, L; a' M
如果选择 7.80,那么在编译时会多一条警告,关键是生成的目标固件无法下载执行。我当了回小白鼠,其他小伙伴就没必须再去尝试了,给大家省点时间。0 l' S6 i( ^, y& P' G$ o
20.jpg ( ]" @0 c) c; N. o
2 v* I- P' \. a- H4 D
打开IAR 8.20后,找到并打开工程“Project.eww”( G4 D/ S: S* r8 b8 U
21.jpg
% d7 c2 u/ ]( P/ \9 v3 T" M; H7 Y+ |0 V9 s' ]6 {  k! H8 h
把用户文件夹前的加号点开,可以看到文件后都有一个红色有点,这也表示相应文件未编译,当编译后红点将自行消失。打开main.c文件,可以看到主函数比较简洁明了,while中没有任何代码,这是因为样例工程中的程序在运行时通过USART与上位机通信来设置参数,都在中断中执行。
+ S  i( j* ~( L, U+ p  v% F" @9 O 22.jpg 7 Z- d, ]; e, Z6 T  N+ P9 F
6 y' _) h( h3 W8 I' i( k. m6 x0 h! I
鼠标右键点工程,弹出菜单,选择“make”,编译工程。
: r% _% e1 C+ b) R, t" h 23.jpg & n( Z% z, [: F, a

# d3 W9 `' t# A+ E# I- d2 y4 `编译完成,0错误、0警告
; r8 Y7 B3 H- S! R" G7 j 24.jpg # ^# i5 m% ?  y% c' |  C+ I  I

3 Y0 |$ W- l' o下载并调试,或用快捷键ctrl+d  A' l7 H/ S# I  N) N/ v
25.jpg
2 ^; a* f, g% Y$ X0 I
$ m9 u) J6 j4 L+ q0 W# Y( S) F" m下载成功,进入调试模式,程序运行指针指向main函数开头; S; X$ e5 _) y* H! [; w
26.jpg ! H+ X; K1 i6 e

% }& X" p) t+ V3 ~点击全速运行程序图标,或者用快捷键F5; s6 `- [% r) a( {, i. }- ^. ~1 S
27.jpg
( c0 ~/ Q# O6 u0 m# U6 p  l  y9 a" h$ ?# `! ]3 G+ Q
打开监控窗口; }, i( B3 Q' j$ b8 u
28.jpg
" N1 [8 M% d# z8 s+ {6 w) w4 V$ v. H6 Q, ~
设置相应串口参数,并连接串口
/ Q! G9 [2 g2 t5 } 29.jpg , z1 y( u* G  {# p3 z: B. L, D" i

( j# \4 f( A5 R8 L上位机与电机目标板固件已连接
& X  \8 h* i" C 30.jpg % e9 |, v1 a2 {9 ^9 t8 x& g, X

9 J: S  g) `+ `4 e% H0 h' ~( D点“Start motor”按钮,电机开始运行
2 L( v1 D( W' l4 x 31.jpg
: G+ Y, E- c; _$ o
4 z+ T! e1 p  y8 i电机开始运行效果( R# o+ h4 f' p. K6 [! l' ?9 G/ g
77.jpg - m& |  h9 |  I# M! s! N: F

$ I! s# C- C- V, o% ]可以看到设置转速与测量转速,测量转速是通过电机实时运行测量得到的结果。
4 I( B5 J9 k& }) S" C  S2 w& e 32.jpg + ^+ i: P3 i  i. c. Z7 d

6 L' N2 Q1 ~: ~) A. I& @: d, @高速电机设置转速,电机速度发生变化,测量转速反馈到的转速也相应变化。
. {# I4 j+ E& j4 B5 F 33.jpg , u1 D+ d7 R8 Y/ D3 n3 K7 U

7 X7 `1 f! S0 u6 v在调整速转速、方向、或启动时,可能会发生错误。错误主要是电机速度反馈错误和电机超流错误。
* T: a* j& a0 s: P# k% J电机速度反馈错误
! Y% h3 K/ p1 E& w& W 34.jpg
$ n; \4 e& x) c& @5 }
- `, e% q* J, {9 I2 f2 b& P电机超流错误
6 P% f1 E$ {! t: n" P* L: y' J8 \ 35.jpg
7 n) Q. ~/ E3 w3 S! _! k4 v  g
/ r2 e- ?( }( |3 n/ r; K. P0 C右侧按钮的操作,将会在下面的“操作改变日志”中有显示9 @1 A. A# v, V6 ?) m: V
36.jpg
% ]  H6 G/ _* q. s3 x. {  U# J, [" V: J6 _) a! {& q! w
打开plotter绘图窗口,可以看到设置转速与测量转速的变化波形。
" t. m# l* a- C/ ^放大波形,可以看到实测波形在设置转速附近做上下往复,这是因为一直在做pid调节转速。
. N+ h" G; O  u& t 37.jpg # b* U8 m3 F3 v- _* J

2 ^7 {7 p% L5 e* ], _5 U反馈的测量转速是通过USART串口发送到上位机的,并且相对发送采样速率不同,在低速时,反馈点多一些,高速时每个周期的反馈点要少一些。
6 C, r; U4 l# q) o6 j 38.jpg - g: K: V9 I, Y7 A: ^& b
5 @) R2 a( m0 i3 I
电机速度有突变时,反馈速度会有过高的过冲,这也是PID的一个特征。
+ q4 U( ]( `+ b$ r6 f" ?2 @  N 39.jpg : E4 m$ m) q! Y  N) p( F2 w1 T" S
6 \" ]0 ]! I3 M1 L; [# Z0 s
速度变大、变小,都会有反馈速度过冲
: J* q6 K* k6 m5 o, R8 E 40.jpg
% }* j4 H" y- i7 T. C+ V- }. N% L
' k' R0 s; t, o- l至此,一个基本的样例程序跑起来了,接下来需要完成其它的实验。将在此工程基础上,适当增减代码来实现。
; ?8 V1 \9 w2 a' S. q$ N7 J( q9 f8 n+ C
收藏 评论13 发布时间:2018-9-9 15:30

举报

13个回答
七哥 回答时间:2018-9-9 15:35:46
本帖最后由 toofree 于 2018-9-9 15:38 编辑 4 w- ]. |/ h2 O* D& S& r0 H
, S0 y" y  ^5 v1 @, p
按照本人惯例,本实验样例程序工程附上:& G9 r+ z% M( e6 r9 q
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  R8 }( P' B& x; [0 R0 r) D
我用的是IAR7.7,生成的工程编译没有问题

3 [1 S9 {3 b2 I" q$ K谢谢回复!" U; {0 Q) @% x1 c0 w' V; l
我可能人品爆棚了,用7.8编译没问题的,下载时死活不行,唉!
4 \2 B: i# T8 Z7 H环境的问题伤不起,直接换高版本,跳过
聪聪 回答时间: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:019 {) R$ M# R( n& {8 j$ G$ X
这是直流电机吧,还有反馈的
, m: g% U+ V  C- ~' g
是的,三相直流无刷电机。
0 F  P1 _: H* t" g  S
1 m! w: H7 ]. f8 y8 I可能不太适合步进电机吧,步进电机不能失步。无刷电机则会有失步的情况。
gatsby32 回答时间:2019-3-6 10:57:43
老哥 为啥我的程序下载时会出现这个问题啊5 m  G4 P3 N0 X! [% F) r( ^
图片7.png
七哥 回答时间:2019-3-6 11:11:56
本帖最后由 toofree 于 2019-3-6 11:22 编辑 0 s# y8 T7 I) t! ?6 z4 m
gatsby32 发表于 2019-3-6 10:57
) y' Y% T1 x4 G8 B3 u3 E1 n( R老哥 为啥我的程序下载时会出现这个问题啊
8 M* z- r6 h$ ?8 ?0 m, x% @/ d$ |; V
不知道,没有工程。$ V6 h1 X2 \, \: N
工程名和工程路径不要以数字开头,不要有标点符号、特殊字符和中文,最好是全字母。$ P' M" D: P+ u; a0 A2 M; F& ~
用STM32CubeProgrammer或STM32 ST-LINK Utility,先连了下,看看能不能识别器件STM32F302。
. M( e0 I* D. I+ m& C
lmyyjx 回答时间:2019-4-16 14:56:29
签到

所属标签

相似分享

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