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

【STM32电机培训】4 修改代码控制电机运转

[复制链接]
wenyangzeng 发布时间:2017-8-22 15:49
【STM32电机培训】4 修改代码控制电机运转/ E6 |3 b2 |: |( v9 @4 |( z
1 Q& {# Z* i. t% U0 `5 k

5 i9 \% V0 p! k) N7 _, c. {     通过参加电机培训,对STM32控制无刷电机控制技术有了进一步的理解。本次就针对STSW-STM32100\STM32CubeExpansion_SPN7_V1.1.0演示代码进行修改,达到让电机按照自己的要求运转。
- Y4 r8 a- i9 E: f9 n6 o- p6 b    首先先关闭电位器调速功能。在MC_SixSetup_param.h文件中的“BASIC PARAMETERS”有对电机基本控制参数的定义,将#define POTENTIOMETER 从1 改成0.
6 Z0 F$ Y5 m+ t" ~7 x" a. `( A: o) O+ a" [! |" Q6 H0 D
) ?' l8 `& R4 a1 H$ v5 X& b
MC_SixSetup_param.h
$ }$ C( k3 h; Q( s4 j
  1. <font size="3">/* ****************************************************************************
    ; I# j4 m- f6 Q3 B" f
  2. ==============================================================================   
    6 z0 u4 P3 S  A/ o& W4 R
  3.                        ###### BASIC PARAMETERS ######+ n9 h+ ^7 V* c0 T! o
  4. ============================================================================== 9 M0 g, e7 P2 ?2 U* u1 L$ f
  5. **************************************************************************** */   
    ' T- ]  |3 p, E! g3 q$ S
  6. #define NUM_POLE_PAIRS                       7      /*!< Number of Motor Pole pairs */4 U7 m* H7 g2 Y2 D
  7. #define DIRECTION                            0      /*!< Set motor direction CW = 0 and CCW = 1*/
    : @# K2 a+ q" r
  8. #define TARGET_SPEED                      3000      /*!< Target speed in closed loop control */
    1 P' \: x( x; c. S3 e: B/ p6 R0 U. K
  9. #define POTENTIOMETER                        0      /*!< Enable (1)/Disable (0) the potentiometer */
    * m2 b! m4 K$ l

  10. - N* C. m# J. t/ c" i( r; @$ j

  11. # X1 i/ C# ^; D" t
  12. /* **************************************************************************** </font>
复制代码

/ m6 R: j; b7 h8 R7 }/ P" ^6 K8 u  P" `" r+ W7 J

0 }% M6 ~9 g% Y& U    接着在main_F302.c的主循环中添加代码,让电机以500转速运行5秒停止5秒,再以6000转速运行5秒。对电机的控制方法ST 官方在注释中写得非常清楚,改变电机运行参数很方便。
+ M: ]7 s2 v; h/ S9 i9 b) g  A. J  m1 Z, m, i" O4 `$ W
& u4 [4 r  d" z. I
) O+ Y; s7 A$ L$ r
( Z9 b' N! ]/ m0 p
main_F302.c
% c3 C$ p# P2 f: v  w. G: W
  1. <font size="3">/* ****************************************************************************
    8 A: @& D& ^0 V& R
  2. ==============================================================================   
    ' d( J2 r- n& i9 ~
  3.                        ###### BASIC PARAMETERS ######5 E8 g9 m  ?( b  G, P* B) [1 _7 x
  4. ============================================================================== # S+ W) I& X2 c! K. M- s5 A
  5. **************************************************************************** */   # f; b/ d  y) p7 T% ?$ q5 S4 s
  6. #define NUM_POLE_PAIRS                       7      /*!< Number of Motor Pole pairs */: F' N& q+ j9 W# ^6 y
  7. #define DIRECTION                            0      /*!< Set motor direction CW = 0 and CCW = 1*/ ! C+ E9 V2 F6 U6 R( t* J9 }
  8. #define TARGET_SPEED                      3000      /*!< Target speed in closed loop control */
      ?# O! W4 e2 E, R( \4 z
  9. #define POTENTIOMETER                        0      /*!< Enable (1)/Disable (0) the potentiometer */ . ]) v5 {. T- |& i5 ]# @! a% p0 C

  10. ! D' x" Z+ k/ R  `1 N+ d7 E

  11. # B/ m3 L* {" H# P1 s
  12. /* **************************************************************************** " v. O) y3 l2 w" Y; f

  13. 9 U! R$ I3 h6 \6 Z9 X
  14. 6 y: A$ ?8 {/ k

  15. " K$ g# T7 e  U
  16.   ==============================================================================   
    ' S  u- P, [9 v3 G  `- J
  17.             ###### How to use the 6Step FW Example project ######  p1 h7 R% H% a, U/ r% V
  18.   ==============================================================================     0 R' P8 U1 B" k2 |2 Q0 z; S! d
  19.   This workspace contains the middleware layer with Motor Control library to drive
    4 v" D9 S! n( v+ k" d
  20.   a motor connected on X-Nucleo board performing a 6-step control algorithm
    8 R+ l4 R, r7 J; I# ]# \* d5 C
  21.   allowing the motor speed regulation through a potentiometer. The 6-step algorithm ! L3 I5 ]4 p! l! ~
  22.   is based on 1shunt current sensing mode and sensorless algorithm for bEmf detection.3 h- M2 _9 a. Y% \
  23.   The workspace is provided for STM32Fxx-Nucleo in four different configurations, $ z: A* I$ {6 ~% M& P
  24.   normal, demo, comm mode, boot mode. The "normal" mode waits the blue button event
    / R( Z* |$ p3 ^, D  o
  25.   to start the motor, the "demo" mode starts and stop the motor automatically, the 7 L( O9 T( T" N
  26.   "comm" mode enables the communication protocol with external PC terminal and the
    6 B! b( g- l# B$ ], ^6 Y5 F, R
  27.   "boot" mode enables the FW for external boot loader.! G& e3 E/ x0 _4 U  a2 A  @
  28.    
    9 L+ j1 n4 w4 I% A3 A" Q2 d% ?( Y
  29.    A list of APIs is provided to send command to 6Step lib, for instance:) X* n( o% C  G" k4 H) K  M5 F: N
  30.     , r: M% A1 H- V% i* o
  31.     (#)  MC_StartMotor() -> Start the motor# T- _' J5 z# Y' i, n: n5 ?- B  ^/ I
  32.     ( \. [, q9 X1 `3 e6 g) U  W
  33.     (#)  MC_StoptMotor() -> Stop the motor$ [/ b& N' N( D
  34.    
    4 y0 u6 e6 U: n8 S) t" H& S, b
  35.     (#)  MC_Set_Speed(...) -> Set the new motor speed
    # u/ s; ?. n# v: o

  36. 7 P! j3 u1 M% B
  37.   The MC_SixStep_param.h contains the full list of MC parameters      5 ~0 i$ y( s6 _  l) }; y& d/ H

  38. ; J. W! w2 g+ L5 d# ~, w) P5 A
  39.   ==============================================================================   
    & }0 q8 @, y- w/ ^: Y
  40.                        ###### USER SPACE ######7 O/ X' o6 C6 a; r4 p9 v" i) D/ A
  41.   ==============================================================================      4 v0 \; r; D3 n# ~& ^
  42.   *****************************************************************************/    ; s" r, H6 \$ {' E* `1 m. y1 R9 ]
  43.       ; d1 {; l5 }. S( ]
  44.    
    . X& X2 m+ ~+ l( b5 H, ]$ m1 Q
  45.   /****************************************************************************/   
    / G3 m4 F+ l1 C) g. V
  46.         //添加的代码
    0 f. d% S! u5 r
  47.         HAL_Delay(2000);3 B% T* o# G) f6 S8 E
  48.         MC_Set_Speed(500);
    ( X: i: ^+ ^( D* L
  49.         MC_StartMotor();# J) x& H7 Y( U. ~& G2 a( i
  50.         HAL_Delay(5000);
    1 K& r0 z: W2 v
  51.         MC_StopMotor();. a9 A8 \+ q6 n* a" d
  52.         MC_Set_Speed(6000);
    % O. ^$ d7 b' v; @2 S0 A# L  ]
  53.         </font>
复制代码

# l' A* Y7 I8 r6 m& W* S
3 s- ^+ Z2 N/ ^9 B6 s
    本次实验是6步梯形模式,按照要求对IHM07M1板子上的条线进行相应设置。编译下载,通电运行,电机已经能够按照预定参数正确运行了。
+ S4 m8 W" S3 K$ `% k( R& l* T% [* E  a
, S) C& [3 Z+ B+ p: K% n0 c3 K, Y
  ]5 T" A+ \: a, D( f6 g
http://player.youku.com/player.php/sid/XMjk4NDc1OTkyOA==/v.swf* E3 m& k% M0 W9 S- C  g8 c

& x  ~1 V8 |) o5 t. k' k0 U
收藏 3 评论21 发布时间:2017-8-22 15:49

举报

21个回答
czhuanqilai 回答时间:2017-12-23 11:29:06
wenyangzeng 发表于 2017-12-21 19:163 x2 @2 K) w. E& d
https://www.stmcu.org.cn/document/detail/index/id-218177* _. O* R  U4 R- D/ ~7 y4 [! U
ST官方的电机培训资料,你可以参考 ...
; R  G- S- b9 K& Y! P7 c
谢谢!  这个我看过了,我手上没有ST的Noclude板子,有别的无刷驱动板,想要用ST的电机库配置一个适合自己的模板,现在这个文档里面没有教怎么使用  Workbench, 自己不会配。  不知道楼主有没有资料了,关于使用Workbench
wenyangzeng 回答时间:2018-7-12 13:17:34
syq217 发表于 2018-7-12 11:13
5 [  X/ }; Q* F. ?" o谢谢,我目前在驱动步进电机,我应该如何实现它的精准控制呢,需要哪些器件  ...

) A9 a3 c0 u* b- b( H( ]举个例子,数控线切割机床就是步进电机控制,每给一个脉冲,电机就转动1个角度。楼上应该去参阅步进电机相关资料,比如数控机床控制等等。本人也是门外汉。
花落莫相离 回答时间:2018-6-28 20:55:38
wenyangzeng 发表于 2017-12-18 16:082 W* {# r. A7 @$ c  O, I# P
都是ST 官方的:

* d, x% ]( P3 X! l; A- d楼主,你用的电机是STM32F302吗?我这边想用STM32F302+IHM07M1驱动板上的电位器进行控制速度,我看您这个功能可能跟我这个有点相关,不知道您这边可以加个QQ交流一下吗?我的是625212098
czhuanqilai 回答时间:2017-12-18 14:42:35
你好,楼主,有程序代码么?   能发一份。。谢谢
wenyangzeng 回答时间:2017-12-18 16:08:42
czhuanqilai 发表于 2017-12-18 14:42
1 l1 X2 y" P  x你好,楼主,有程序代码么?   能发一份。。谢谢
# E" W$ |0 _! U7 Q4 L# G4 A+ H8 k
都是ST 官方的:
0 Q) [* L; Z4 A$ c  y MotorControl.rar (15.19 MB, 下载次数: 720)
czhuanqilai 回答时间:2017-12-21 17:33:16
wenyangzeng 发表于 2017-12-18 16:08
  b3 Y. I# K/ {* D2 i8 @0 x4 P都是ST 官方的:
8 ^1 }9 o) P1 V+ y6 O
谢谢
czhuanqilai 回答时间:2017-12-21 17:38:12
wenyangzeng 发表于 2017-12-18 16:08
2 D4 W1 P& t9 ?9 q; [都是ST 官方的:
8 G# V- g- f' p5 j0 j
只能用于ST官网的板子么?? 我手里有一块 无刷驱动板,MOS管的引脚连接的是TIM1的6个通道,和ST的驱动板子是不一样的,,不知道能不能用 这个程序 了???
wenyangzeng 回答时间:2017-12-21 19:16:54
czhuanqilai 发表于 2017-12-21 17:38; M# ?3 @" S! J" o) z0 _6 N
只能用于ST官网的板子么?? 我手里有一块 无刷驱动板,MOS管的引脚连接的是TIM1的6个通道,和ST的驱动板 ...

. B8 r8 R) ^  S! l7 A8 ]https://www.stmcu.org.cn/document/detail/index/id-2181778 Z4 h+ k2 X) Q3 S. Y5 O
ST官方的电机培训资料,你可以参考
sdkdwyb-321669 回答时间:2018-6-19 14:47:39
谢谢分享, N1 S3 Q/ c* G: P
wangxuewei 回答时间:2018-6-20 09:09:36
共同学习,共同进步
花落莫相离 回答时间:2018-6-28 20:58:00
wenyangzeng 发表于 2017-12-18 16:08% y: a; I  t% U4 r8 S( i
都是ST 官方的:

2 P  ~" T* l( _! P; O5 |楼主你这个工程是用的STM32CubeMX生成的工程吗?
wenyangzeng 回答时间:2018-6-29 07:27:11
花落莫相离 发表于 2018-6-28 20:586 [% e- P; x: Q: @# ]
楼主你这个工程是用的STM32CubeMX生成的工程吗?

# m! P3 P$ X# r. J6 A4 F我也只是班门弄斧而已。工程不是CubeMX生成的,是ST官方下载的。
* h- X) w$ j3 ?4 F" T% c; Nhttps://www.stmcu.org.cn/module/forum/thread-613011-1-1.html
syq217 回答时间:2018-7-4 09:32:32
楼主,步进电机和无刷电机是不是一样的驱动方式?1 v" Z; [& {8 V+ }
wenyangzeng 回答时间:2018-7-4 09:46:46
syq217 发表于 2018-7-4 09:323 s7 O6 t8 ?5 D' p* M3 i
楼主,步进电机和无刷电机是不是一样的驱动方式?
* ^: ?0 [6 j, Q2 ?( ]: j* Y7 ~0 N
步进电机每给一个脉冲转动一个角度,与无刷电机应该还是有区别的。
syq217 回答时间:2018-7-10 13:37:52
wenyangzeng 发表于 2018-7-4 09:46
* a9 E- r' d/ B7 ?, U步进电机每给一个脉冲转动一个角度,与无刷电机应该还是有区别的。

9 o# d2 M  ]5 V4 a那么 就精准度来说,哪种电机更好一点呢
, B3 G' r% M4 q
12下一页

所属标签

相似分享

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