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

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

[复制链接]
七哥 发布时间:2018-9-9 15:30
本帖最后由 toofree 于 2018-9-9 15:32 编辑 + c3 I2 }3 n9 z8 b' c
6 S1 }+ [$ N* D1 l
生成电机样例程序stmcx、ioc、IAR工程9 q6 }) t3 _- W5 {. Z: y
0 g$ F$ Z0 R# t

$ e" ~8 }, z4 }本贴目的是,对于电机控制还处于两眼一抹黑的情况下,先跑个套路,从直观上对MotorControl Workbench 5.0.3软件及开发过程有个了解。8 S' z) h( u. }
3 I* e  g/ Z# m6 n7 U
打开软件MotorControl Workbench 5.0.3; Q- S! ~7 g5 l2 q1 v7 s
01.jpg
. S2 W$ o/ U. H0 m' c& }# P8 @. D6 `( B3 P% N/ h) z" ?# A# F
在样例工程列表中,找到P-NUCLEO-IHM001-BullRunning样例,并双击打开
3 j& }! F3 \: `; i 02.jpg
5 S/ E0 t- z1 c
; v3 A3 y* [# W- ]; Q( A提示关闭前保存,先选是,往下走着看看( T: a& T" X% `: P7 H! A
03.jpg
, U# M5 b. I, z! [
* m4 F, Y( ]$ |4 ~, r保存工程中,按默认名称“SDK50x-P-NUCLEO-IHM001-BullRunning.stmcx”,先不做修改' h( c% D3 `- [* I) {; \$ {: I  G
04.jpg
+ \# a' ?. b: l# [1 z7 V) b8 ~
% Y3 x4 J. R  n% p+ t3 o/ ]/ r可以看到标题栏上stmcx工程名称为“SDK50x-P-NUCLEO-IHM001-BullRunning”。左边有4项,电机参数、电源阶段(硬件驱动)、驱动管理、控制阶段(MCU控制相关)。
( ^) t" [0 |7 ]$ E双击中间的大M,进度电机参数设置( e8 |3 n/ T+ F1 t2 M8 O! o4 ?
05.jpg
& T, |  S% ^4 Z( w& |
2 v, m7 `' j$ p) z- d6 B2 H可以看到,样例默认设置为下图,对参数暂不做改动。3 @% Z* x* l* w( r) e6 b" a
06.jpg
; `) n( b, `* E4 F7 f  f  ~" @6 B0 s3 D3 y% {
对比之前电机参数识别时得到的结果,有一定的差别,暂不使用获得的结果代替上图中电机参数,供之后进阶阶段参考。2 i4 x5 |0 C5 _5 \& @6 O
07.jpg 4 j9 p" A# B, M
& o) J5 j5 n$ j5 H7 ~$ L
传感器设置,由于本实验套件没有相应外设,因此都不勾选
/ L2 K8 o9 s) I& s( M 08.jpg
4 R% `5 Q0 A1 O6 l' z3 M! u
2 G( i0 e% A2 l. I) O( i. J电源硬件驱动设置,暂不做任何修改。如要修改,需要对照硬件电机驱动电路参数。
# O! _* u7 b6 L2 W6 P 09.jpg / ?1 g; V0 b, v" V( Z

3 Y! e3 t: A5 v$ c& ]驱动管理,有6个蓝色框,可以设置各种参数。暂不做任何修改1 W) z4 f0 k" N( t: m
10.jpg " ~0 k) i! T. C( T2 R

# W; [& p2 _' T3 t+ H! G8 z如要修改,那么鼠标双击蓝色框内,将弹出相应设置选项,如下图
' E& a: C9 l. m  J 11.jpg 0 Q: k% h/ M" m1 z! `
) K* ]5 m: g/ A9 Q; T2 Z$ c$ I
对于第4项比较重要,是电机控制时MCU相关资源参数的设置,不妨打开来看看。当然这些参数如果需要调理的话,将来的STM32CubeMX下也可以说完成。
' O" |9 I1 T8 a  I 12.jpg , W& M! @2 l/ y6 j; k: m. z

% J6 |; G- [- H6 c5 @双击MCU和时钟频率选项图标,弹出MCU型号,时钟类型,主时钟频率,电压等参数/ ?1 N0 n# \2 D$ _
13.jpg
2 v1 g* c# \1 h; D( {0 B
" ^3 w) Z7 J: c) P1 r设置输出工程类型,IDE及工具链。
! R3 ]+ K) e7 n 14.jpg ; q6 P6 z: J* Y1 v0 H  F$ j
% J1 M- ]' x# n0 C2 ~3 r
可以有IAR、Keil4、Keil5、TrueSTUDIO、SW4STM32等,我们这里选择IAR,即EWARM。
; |# M9 i+ W9 h2 T# u' b0 f 15.jpg
* K5 r% U  \7 ^* P/ K
) ?- H2 L5 O" d) c$ W& K生成工程文件。" Z" w* r1 @+ E0 j' U
16.jpg
0 l( U4 t- @+ A- U9 {& y) W0 x: a/ J) A3 Y, w: B) ^/ s
当然也可以通过主菜单的Tools下拉菜单中,选择相应设置。
8 I& c; h# s3 \7 L- { 17.jpg
' E7 @' I/ |& e
8 g( R3 Q7 ?: V) e( `生成工程文件中……。生成工程文件成功后,过程窗口自动关闭。如没有任何错误提示,那么进行下一步,IAR下编译目标固件。
' f# \7 H5 w: y' m 18.jpg 9 w7 Z* {+ R: |1 ^! m' ~

7 U0 h% f+ Q" [; [5 K. C使用IAR for ARM 8.0以上,我这里安装了三个版本(8.20、8.22.2、7.80)的IAR for ARM,选择8.20,因为5.0的电机开发环境要求必须是IAR 8.0以上版本。
4 n1 j, J" n( d2 k. l) X/ } 19.jpg " w! t5 P7 i7 _7 S0 g. O

4 t: A0 k5 E0 x) y# E/ D; x1 {. U/ O如果选择 7.80,那么在编译时会多一条警告,关键是生成的目标固件无法下载执行。我当了回小白鼠,其他小伙伴就没必须再去尝试了,给大家省点时间。; ]3 a/ x& Q: ^9 `, d2 _/ l5 l$ |
20.jpg
4 B, K$ w$ F$ |% x/ s* O( z! E; j. ^/ x0 T' j. I
打开IAR 8.20后,找到并打开工程“Project.eww”
$ L6 G- ^: r, u. V 21.jpg 3 t; C1 n. i8 M. H  b
/ u9 P% g. R, Z
把用户文件夹前的加号点开,可以看到文件后都有一个红色有点,这也表示相应文件未编译,当编译后红点将自行消失。打开main.c文件,可以看到主函数比较简洁明了,while中没有任何代码,这是因为样例工程中的程序在运行时通过USART与上位机通信来设置参数,都在中断中执行。+ L: ]/ S( T0 Z+ x7 P0 E' S
22.jpg
" v5 S, K6 H' W, `
0 Y& x$ V& I. S4 G鼠标右键点工程,弹出菜单,选择“make”,编译工程。/ Q1 s, t% ~/ n2 Q2 R
23.jpg : n: w1 }3 v0 {+ \3 y  y5 B$ C7 P

2 u/ n. m) B/ z2 y编译完成,0错误、0警告
( n* }1 D% V0 o/ Q 24.jpg $ E# L! P+ @- a0 b6 ~6 U8 W8 n
2 E0 ^2 M: {& d" ~/ _8 n; p
下载并调试,或用快捷键ctrl+d! g- f8 I' Z) {6 v
25.jpg
; z, e: C( s' I8 v- |
+ M, o6 n' m& m% d+ ~下载成功,进入调试模式,程序运行指针指向main函数开头+ A, u) f/ U( k$ G
26.jpg - Q9 S: S' f! O8 f" Z) j) y2 x; ~# N  p
- Y! c3 [/ w! Z# T$ ?
点击全速运行程序图标,或者用快捷键F52 C4 U+ D2 N% H
27.jpg
; Q( T1 ?/ }; @& l: _
7 G$ @5 N; C0 y) S1 x+ w+ D) f' m打开监控窗口
5 R# d: l; E  O. t: _/ N 28.jpg
& ?+ e. j) ?% P3 K! t
. Q# L$ T3 n8 O4 p设置相应串口参数,并连接串口
0 O8 y5 G6 v- x/ Y0 K6 u 29.jpg
& M8 B  T0 U3 ]% w' p
6 c* i% V! f3 Z- v2 W$ A上位机与电机目标板固件已连接
3 @4 g" o4 j# p& V  M, ` 30.jpg
8 z# |& p& ]/ Q& b9 N! m. F& a2 t& f/ `
点“Start motor”按钮,电机开始运行
" V% A8 j% \2 b+ f: k5 l 31.jpg
7 W+ ^. c+ L# \6 [, K3 k% h2 s) [& f, j" `
电机开始运行效果
2 l$ ^: C( K5 Z 77.jpg
8 I9 D8 f; B) \/ C4 Y" l6 h$ Y2 U! z
可以看到设置转速与测量转速,测量转速是通过电机实时运行测量得到的结果。
$ V1 f  E! I1 w 32.jpg # G7 S  L; ^# t, P* ?* G' Y$ Z

- o3 |5 F$ Y+ w( e( x& ]! v% d高速电机设置转速,电机速度发生变化,测量转速反馈到的转速也相应变化。8 n' c/ g; f( N
33.jpg # q. h5 u! u7 J' d# c

: F0 w. }7 f5 Z  ~2 f: c% E在调整速转速、方向、或启动时,可能会发生错误。错误主要是电机速度反馈错误和电机超流错误。
" [5 _) x7 ?$ h" Y' O* K; Z! ]电机速度反馈错误+ ^( _8 X' C0 N4 r$ o4 Q* v1 c
34.jpg $ I7 r" b8 b9 B# K

' y2 [! l8 g2 o9 k  G) m电机超流错误
  u( ?1 [. J! q5 K5 V+ U 35.jpg
) `/ k4 r1 l' C! R8 c
) |8 a1 }2 K9 B  j5 }1 S右侧按钮的操作,将会在下面的“操作改变日志”中有显示$ m4 |. b5 j' x$ {- ^- }
36.jpg $ h0 P1 Q3 e! G/ X5 T  q
0 W. a. F$ Z" Y1 T7 F4 p, Y3 Y
打开plotter绘图窗口,可以看到设置转速与测量转速的变化波形。
; F! f; o: W- ~! u9 v放大波形,可以看到实测波形在设置转速附近做上下往复,这是因为一直在做pid调节转速。
& E' J: l& Y& n9 U7 V 37.jpg
7 K4 }% v7 l" T% \' O7 d4 {! {$ L) d8 k  P. ^1 m9 G) u/ ~& q
反馈的测量转速是通过USART串口发送到上位机的,并且相对发送采样速率不同,在低速时,反馈点多一些,高速时每个周期的反馈点要少一些。
8 t7 w6 _0 U% `! _ 38.jpg
) P- M- D8 p6 U' u8 s
9 L8 T9 |; t6 {4 T8 W电机速度有突变时,反馈速度会有过高的过冲,这也是PID的一个特征。
" t# Z: W4 Y* @+ E6 O 39.jpg
8 ?; i9 c7 k6 @9 k1 M+ ~2 x0 a& W- |5 E1 |8 [4 ~+ E; O
速度变大、变小,都会有反馈速度过冲
/ W! g6 l2 B: l- D( F! m 40.jpg
) ?# A8 I/ W9 ?2 W0 t5 w5 _/ k4 T) L) ^4 X( Z3 E* ?
至此,一个基本的样例程序跑起来了,接下来需要完成其它的实验。将在此工程基础上,适当增减代码来实现。. N; h- y6 P: r1 z5 K% [7 p, e

- V" M1 h9 ]$ ?1 e
收藏 评论13 发布时间:2018-9-9 15:30

举报

13个回答
七哥 回答时间:2018-9-9 15:35:46
本帖最后由 toofree 于 2018-9-9 15:38 编辑 " X  B! Z, }% u8 c( W* r. A- q
& m: c- `! i; |& O
按照本人惯例,本实验样例程序工程附上:, U+ N1 v" ]) h& R- T% T2 f
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:086 |& a5 X1 f/ `" K
我用的是IAR7.7,生成的工程编译没有问题
" h& d( z6 z0 [2 ^9 q% G% m
谢谢回复!
; Y. C& T% h9 h5 A我可能人品爆棚了,用7.8编译没问题的,下载时死活不行,唉!% S4 A+ A& j/ t% z9 G5 {2 v
环境的问题伤不起,直接换高版本,跳过
聪聪 回答时间: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
  T- |$ p8 F7 x/ \  c7 T这是直流电机吧,还有反馈的
8 a: P/ }. T- X- V  \$ B7 o
是的,三相直流无刷电机。6 G/ |6 {3 Z, n" C4 a! U
" V" W* x# L$ \* f0 ~; b2 Q
可能不太适合步进电机吧,步进电机不能失步。无刷电机则会有失步的情况。
gatsby32 回答时间:2019-3-6 10:57:43
老哥 为啥我的程序下载时会出现这个问题啊
! C/ J; s/ x& r& ]4 m- @
图片7.png
七哥 回答时间:2019-3-6 11:11:56
本帖最后由 toofree 于 2019-3-6 11:22 编辑
8 J4 [1 h9 l2 V- q* Y  M
gatsby32 发表于 2019-3-6 10:57
- k; c1 t5 u* ]( Y老哥 为啥我的程序下载时会出现这个问题啊

+ W6 y/ U7 w! c+ l  l! e2 Y不知道,没有工程。
1 f4 B  \# M$ J! Q( d# o工程名和工程路径不要以数字开头,不要有标点符号、特殊字符和中文,最好是全字母。1 E+ p; F4 @$ i8 u
用STM32CubeProgrammer或STM32 ST-LINK Utility,先连了下,看看能不能识别器件STM32F302。* J/ b. S; p+ k" M3 _  n
lmyyjx 回答时间:2019-4-16 14:56:29
签到

所属标签

相似分享

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