|
本帖最后由 toofree 于 2018-9-9 15:32 编辑 : g" Z2 v9 C- Z& d - ]- S1 m! I4 E. z# m( v' ^# A 生成电机样例程序stmcx、ioc、IAR工程 本贴目的是,对于电机控制还处于两眼一抹黑的情况下,先跑个套路,从直观上对MotorControl Workbench 5.0.3软件及开发过程有个了解。 打开软件MotorControl Workbench 5.0.3+ h- I* @1 V) _( n7 N
在样例工程列表中,找到P-NUCLEO-IHM001-BullRunning样例,并双击打开
提示关闭前保存,先选是,往下走着看看8 k: ?2 `9 C7 k3 |0 ?8 e
保存工程中,按默认名称“SDK50x-P-NUCLEO-IHM001-BullRunning.stmcx”,先不做修改/ W( o4 t- q1 v9 o
- `0 M- L$ g' @+ v, u2 q3 @9 S 可以看到标题栏上stmcx工程名称为“SDK50x-P-NUCLEO-IHM001-BullRunning”。左边有4项,电机参数、电源阶段(硬件驱动)、驱动管理、控制阶段(MCU控制相关)。7 P) a A& F5 @( }: C6 v 双击中间的大M,进度电机参数设置
可以看到,样例默认设置为下图,对参数暂不做改动。
对比之前电机参数识别时得到的结果,有一定的差别,暂不使用获得的结果代替上图中电机参数,供之后进阶阶段参考。1 K! W. X$ {6 [: k" u
+ F! V9 k6 s, T+ M 传感器设置,由于本实验套件没有相应外设,因此都不勾选! J# L; \, }3 t( ^8 P7 \$ D6 e
电源硬件驱动设置,暂不做任何修改。如要修改,需要对照硬件电机驱动电路参数。* S3 t! l! x" P7 g# ~, T8 s- W6 F
驱动管理,有6个蓝色框,可以设置各种参数。暂不做任何修改 e1 P7 F& F3 I c2 R9 Y
G+ M; G1 w3 G* G 如要修改,那么鼠标双击蓝色框内,将弹出相应设置选项,如下图3 W0 v' D7 W8 [+ b# n
对于第4项比较重要,是电机控制时MCU相关资源参数的设置,不妨打开来看看。当然这些参数如果需要调理的话,将来的STM32CubeMX下也可以说完成。- i& D+ ~) ?4 b( P1 m) G H& C
双击MCU和时钟频率选项图标,弹出MCU型号,时钟类型,主时钟频率,电压等参数
& j' |' @; ]! Y6 R& w7 {" t- g f 设置输出工程类型,IDE及工具链。2 A! D) s8 A/ J9 W) W
) }% H8 D; }8 V. b8 s 可以有IAR、Keil4、Keil5、TrueSTUDIO、SW4STM32等,我们这里选择IAR,即EWARM。
1 q* u5 s: [; T& i4 ^ 生成工程文件。6 z1 M. @. l% h; ]- K
) `+ p( Q1 T; r6 V3 C9 v 当然也可以通过主菜单的Tools下拉菜单中,选择相应设置。
1 A! y9 \0 L) T3 O 生成工程文件中……。生成工程文件成功后,过程窗口自动关闭。如没有任何错误提示,那么进行下一步,IAR下编译目标固件。2 l, s( w8 R1 B c: e4 a
; [! {( b: c! X% C1 z2 w% p' C 使用IAR for ARM 8.0以上,我这里安装了三个版本(8.20、8.22.2、7.80)的IAR for ARM,选择8.20,因为5.0的电机开发环境要求必须是IAR 8.0以上版本。2 ]- K& R. ~# i8 M
如果选择 7.80,那么在编译时会多一条警告,关键是生成的目标固件无法下载执行。我当了回小白鼠,其他小伙伴就没必须再去尝试了,给大家省点时间。2 @4 t% ~6 h9 S$ t J: N8 `3 d" J
打开IAR 8.20后,找到并打开工程“Project.eww”6 w% I- D3 }# a7 n
- f& v. F) [3 M4 @. H$ y: C6 B; _ 把用户文件夹前的加号点开,可以看到文件后都有一个红色有点,这也表示相应文件未编译,当编译后红点将自行消失。打开main.c文件,可以看到主函数比较简洁明了,while中没有任何代码,这是因为样例工程中的程序在运行时通过USART与上位机通信来设置参数,都在中断中执行。3 x1 d% R j7 _( T4 b3 l2 E) w
鼠标右键点工程,弹出菜单,选择“make”,编译工程。
" _& k; O; a* O) W0 A; i9 S) i 编译完成,0错误、0警告5 R3 \3 y2 r0 s Y5 T0 w
2 d, `; E- M6 t0 E, r. q9 g, o$ F 下载并调试,或用快捷键ctrl+d
下载成功,进入调试模式,程序运行指针指向main函数开头5 Y* Y: @ G& u7 Q& ^
: v' L: T! Y; w' A j/ D 点击全速运行程序图标,或者用快捷键F5
打开监控窗口8 W% ~& Q. I- v
0 n' v& D" F, J4 b) `3 f 设置相应串口参数,并连接串口
上位机与电机目标板固件已连接
3 l2 j8 z- {6 | n$ H 点“Start motor”按钮,电机开始运行
( _* [; W* n' U, b! { I: g3 ]' @ 电机开始运行效果& a1 @' L+ \- \! o: s" a" P
可以看到设置转速与测量转速,测量转速是通过电机实时运行测量得到的结果。' b( K; A' n/ L. B) l$ R3 g1 N7 M+ S/ }
高速电机设置转速,电机速度发生变化,测量转速反馈到的转速也相应变化。
8 u8 @0 w2 h) [+ H3 j, ]+ @ 在调整速转速、方向、或启动时,可能会发生错误。错误主要是电机速度反馈错误和电机超流错误。: `# U2 u& n( v v6 X1 k4 d 电机速度反馈错误& Y! ]5 w5 m. i/ F
电机超流错误& r+ o; n4 [* Y+ ^+ d
右侧按钮的操作,将会在下面的“操作改变日志”中有显示
8 M' i! f7 n' e5 f" i/ A 打开plotter绘图窗口,可以看到设置转速与测量转速的变化波形。. d. o3 J# E$ ^8 p 放大波形,可以看到实测波形在设置转速附近做上下往复,这是因为一直在做pid调节转速。
6 l' l' I0 a& U9 B) J: K" q 反馈的测量转速是通过USART串口发送到上位机的,并且相对发送采样速率不同,在低速时,反馈点多一些,高速时每个周期的反馈点要少一些。) ~. R @7 \6 ]. w2 ]
% [, f: i, Q% F6 w0 S! y 电机速度有突变时,反馈速度会有过高的过冲,这也是PID的一个特征。
* v* z/ X N/ A. I$ r 速度变大、变小,都会有反馈速度过冲
至此,一个基本的样例程序跑起来了,接下来需要完成其它的实验。将在此工程基础上,适当增减代码来实现。 2 N$ S: @$ w0 ~* [ |
微信公众号
手机版
' I+ r: b/ T2 {) z6 E! Y# j5 ?
按照本人惯例,本实验样例程序工程附上:( h/ d) A- I7 s* Q0 c. q5 x. ?
* x' U& [$ `1 R; x( ` V& {; U
附件删除了Obj文件夹中编译中间文件,IAR的应用目标板固件程序为“SDK50x-P-NUCLEO-IHM001-BullRunning.out”。1 y+ B2 [$ a& \6 ` z: C
欢迎小伙伴们下载体验。
谢谢回复!7 M2 v& M7 I+ d& @& E& \
我可能人品爆棚了,用7.8编译没问题的,下载时死活不行,唉!% C: x1 M0 o1 M e
环境的问题伤不起,直接换高版本,跳过
是的,三相直流无刷电机。
可能不太适合步进电机吧,步进电机不能失步。无刷电机则会有失步的情况。
不知道,没有工程。6 y% M4 t/ e: X) g
工程名和工程路径不要以数字开头,不要有标点符号、特殊字符和中文,最好是全字母。
用STM32CubeProgrammer或STM32 ST-LINK Utility,先连了下,看看能不能识别器件STM32F302。, k' }6 E% u! |6 M. ]) f0 x3 E