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

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

[复制链接]
wenyangzeng 发布时间:2017-8-22 15:49
【STM32电机培训】4 修改代码控制电机运转
& B# V( T8 k9 u" j0 [4 l0 X3 r; b2 a: C, p4 b, k% ]  L

) n$ B6 u+ I0 l% Y     通过参加电机培训,对STM32控制无刷电机控制技术有了进一步的理解。本次就针对STSW-STM32100\STM32CubeExpansion_SPN7_V1.1.0演示代码进行修改,达到让电机按照自己的要求运转。
- {, u( y4 s8 n1 g    首先先关闭电位器调速功能。在MC_SixSetup_param.h文件中的“BASIC PARAMETERS”有对电机基本控制参数的定义,将#define POTENTIOMETER 从1 改成0.* \2 T( e' `8 K9 W+ d0 x

. C* h- P1 ?8 w( m

& q& [9 r, i# @  P) C. E! sMC_SixSetup_param.h3 O( [2 u2 i/ U) o* j: j6 {2 U
  1. <font size="3">/* **************************************************************************** 2 p0 N3 d7 Q: i% y, |1 X
  2. ==============================================================================   
    ! R6 p* k( n/ l1 P/ k
  3.                        ###### BASIC PARAMETERS ######. q. \# R* ^' I& J
  4. ============================================================================== $ J4 x2 C/ r5 ?2 @
  5. **************************************************************************** */   + T: X2 K( s% L" Z; d
  6. #define NUM_POLE_PAIRS                       7      /*!< Number of Motor Pole pairs */
    & n9 |0 U. ?/ g9 ]) H& {
  7. #define DIRECTION                            0      /*!< Set motor direction CW = 0 and CCW = 1*/ ! m& G2 k* `+ L! m: w0 t
  8. #define TARGET_SPEED                      3000      /*!< Target speed in closed loop control */
    4 ~8 {) ?2 C2 C
  9. #define POTENTIOMETER                        0      /*!< Enable (1)/Disable (0) the potentiometer */ 8 Z6 s$ d+ Z# O% `- x

  10. & y+ `' j0 P8 H

  11. 3 v7 V' R/ |& |: Z: ~- z- h9 |
  12. /* **************************************************************************** </font>
复制代码
# _% s6 A. S1 ]9 j; w
, V& {+ J* u8 r, Z  i3 C; y
; _" @" T8 y0 `/ `/ J) @6 Z5 j
    接着在main_F302.c的主循环中添加代码,让电机以500转速运行5秒停止5秒,再以6000转速运行5秒。对电机的控制方法ST 官方在注释中写得非常清楚,改变电机运行参数很方便。
% C4 z4 a( G' t. C3 ]9 _# ^. s) V* U
  \7 h2 C5 N3 [. D. n( C

' i, B5 P/ d* L* i! H
; T+ j& N& {$ L+ h( B4 M
main_F302.c: j  B, ?. j# ^! s
  1. <font size="3">/* ****************************************************************************
    * O2 Q/ C2 c+ P; H& ^
  2. ==============================================================================   
    1 G, n( C; o9 `4 g" z0 D% U
  3.                        ###### BASIC PARAMETERS ######
    9 {, s+ ?4 ~- |7 i+ u
  4. ==============================================================================
    # ?4 V# M' m5 C0 a
  5. **************************************************************************** */   
    # ]4 k0 N2 b5 l; B0 z) q
  6. #define NUM_POLE_PAIRS                       7      /*!< Number of Motor Pole pairs */
    : L- r% F9 |7 ]' F3 k0 d
  7. #define DIRECTION                            0      /*!< Set motor direction CW = 0 and CCW = 1*/ ; M8 B! }" {% U6 M5 P
  8. #define TARGET_SPEED                      3000      /*!< Target speed in closed loop control */ & Y: ]# U7 b- m/ B0 \1 {' }
  9. #define POTENTIOMETER                        0      /*!< Enable (1)/Disable (0) the potentiometer */ 0 V/ p: i3 P' a2 Q1 i" N

  10. 8 G0 h$ b# S% h" \& [% N% ?$ M
  11. 7 }- A0 Y$ h" q' r" c- l
  12. /* ****************************************************************************
    1 l0 y% E, m( T% G' l" \! {
  13. 2 r9 P3 A/ U' a8 O2 K
  14. 1 O  n5 K( L7 S7 K% A" z
  15. 2 U* ~& x+ Y9 R* \( Z4 T& N$ I
  16.   ==============================================================================   " F& U) X, q9 p( ~
  17.             ###### How to use the 6Step FW Example project ######
    + r8 U; a9 y; q5 d2 \3 W
  18.   ==============================================================================     
    . w: a  o& ^4 ^" s: o
  19.   This workspace contains the middleware layer with Motor Control library to drive
    9 a! q2 |: b7 a$ b* D# ^
  20.   a motor connected on X-Nucleo board performing a 6-step control algorithm- s0 G9 [8 f3 z( X7 m) S- L. m
  21.   allowing the motor speed regulation through a potentiometer. The 6-step algorithm 3 V3 ?+ V' m5 _* z) \: q& K
  22.   is based on 1shunt current sensing mode and sensorless algorithm for bEmf detection.
    1 F. |. Y% [  U9 V
  23.   The workspace is provided for STM32Fxx-Nucleo in four different configurations,
    ! S9 o5 S. ^9 l1 |3 W. N- _; n
  24.   normal, demo, comm mode, boot mode. The "normal" mode waits the blue button event
    $ G, X$ G" g9 w: b% Y
  25.   to start the motor, the "demo" mode starts and stop the motor automatically, the
    * j. K  ^+ f2 b. _9 g& k- [& Y2 [
  26.   "comm" mode enables the communication protocol with external PC terminal and the
    & K6 ]* P+ U0 u$ s8 q# ]
  27.   "boot" mode enables the FW for external boot loader.) b" A: u' C) b: ~3 n3 q
  28.     ( _- ?/ J) `0 G0 U: M2 w
  29.    A list of APIs is provided to send command to 6Step lib, for instance:6 H6 r% N- Z$ z( Q
  30.    
      W; H- l2 B, |! W/ e  S: B
  31.     (#)  MC_StartMotor() -> Start the motor
    ' w4 E6 B& o! \5 T6 l. P+ |
  32.    
    7 c# k. Y. d, e$ G
  33.     (#)  MC_StoptMotor() -> Stop the motor6 L" c7 U# b' Z% D7 V* w! |
  34.     8 p' E  t6 o8 T
  35.     (#)  MC_Set_Speed(...) -> Set the new motor speed
    ' [& [3 t2 p% E# Q3 D

  36. " T  A( x3 r1 L& w- R8 c4 J
  37.   The MC_SixStep_param.h contains the full list of MC parameters      
      w* a/ Q- H( J9 e/ A+ b* I$ |

  38. & h$ f9 Q" a0 t0 U$ q1 W* P
  39.   ==============================================================================   
    , j# N" O2 q8 v! \* S
  40.                        ###### USER SPACE ######7 J; L2 W+ e5 @  @! i
  41.   ==============================================================================      - y4 _& K6 [9 |0 @. @$ d+ R) Q
  42.   *****************************************************************************/    + O/ S4 o; R. B0 ~
  43.       0 J7 o- D1 g3 F0 ?! Y9 T" I
  44.    , ^+ k' F, \- J+ A( [! Z% m
  45.   /****************************************************************************/   
    + A2 K+ Z5 b* |& ~
  46.         //添加的代码
    6 N6 p3 @# O: Y% H, o6 r
  47.         HAL_Delay(2000);
    # M* E! L' [' _9 `9 _8 R! a
  48.         MC_Set_Speed(500);% h2 j- m) K  T/ l
  49.         MC_StartMotor();
    8 X4 D; E4 r# O( W) L
  50.         HAL_Delay(5000);0 G% M# R2 T# K* b
  51.         MC_StopMotor();$ P; g8 m/ q1 |$ K' C+ `8 s; E6 b
  52.         MC_Set_Speed(6000);8 a1 }7 v9 q' S5 ^  W
  53.         </font>
复制代码
4 n7 ^' j) G6 T) D
; X5 }1 y, T+ T3 u
    本次实验是6步梯形模式,按照要求对IHM07M1板子上的条线进行相应设置。编译下载,通电运行,电机已经能够按照预定参数正确运行了。! j/ i  i6 y8 E+ |6 l1 ?% x

* Q* k" ~7 ?6 S: @& B* A' @1 J7 [% Y" D0 f0 ]! G' F( z* M" @/ E2 d8 a, e* t
( j+ ]/ m( h  S+ R& N1 w$ i% E+ a
http://player.youku.com/player.php/sid/XMjk4NDc1OTkyOA==/v.swf* Y6 R/ J' ^  \! ?0 F' m

1 x" P" U2 w+ s% ]; r
收藏 3 评论21 发布时间:2017-8-22 15:49

举报

21个回答
czhuanqilai 回答时间:2017-12-23 11:29:06
wenyangzeng 发表于 2017-12-21 19:16
& o# d2 {! n% G& _https://www.stmcu.org.cn/document/detail/index/id-218177
9 X% W+ o) J( b5 W: L+ y. h  `' vST官方的电机培训资料,你可以参考 ...
$ ]) [6 u& k9 ]2 F2 }1 ^- w
谢谢!  这个我看过了,我手上没有ST的Noclude板子,有别的无刷驱动板,想要用ST的电机库配置一个适合自己的模板,现在这个文档里面没有教怎么使用  Workbench, 自己不会配。  不知道楼主有没有资料了,关于使用Workbench
wenyangzeng 回答时间:2018-7-12 13:17:34
syq217 发表于 2018-7-12 11:13
; i+ n8 `$ C1 _4 h6 h( q谢谢,我目前在驱动步进电机,我应该如何实现它的精准控制呢,需要哪些器件  ...

, i5 e6 D8 l6 c) V  N+ V, q0 B举个例子,数控线切割机床就是步进电机控制,每给一个脉冲,电机就转动1个角度。楼上应该去参阅步进电机相关资料,比如数控机床控制等等。本人也是门外汉。
花落莫相离 回答时间:2018-6-28 20:55:38
wenyangzeng 发表于 2017-12-18 16:08
5 Y% \) F+ T) N) M' L3 G$ H2 i都是ST 官方的:

+ j3 V# e$ F; S8 D5 l- ~5 m2 U. F" B1 r楼主,你用的电机是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
7 w. ~4 k& a7 N你好,楼主,有程序代码么?   能发一份。。谢谢
/ x' a  Y! j$ M+ O6 O8 X4 V
都是ST 官方的:7 y3 ]' z& y6 w0 z6 A
MotorControl.rar (15.19 MB, 下载次数: 720)
czhuanqilai 回答时间:2017-12-21 17:33:16
wenyangzeng 发表于 2017-12-18 16:08
+ ]( q8 ?* {/ q6 E) |, i都是ST 官方的:
/ r" i2 {, E( c- U6 A
谢谢
czhuanqilai 回答时间:2017-12-21 17:38:12
wenyangzeng 发表于 2017-12-18 16:082 T2 f# X4 c: ], j
都是ST 官方的:
! J( B, E9 L- i/ O
只能用于ST官网的板子么?? 我手里有一块 无刷驱动板,MOS管的引脚连接的是TIM1的6个通道,和ST的驱动板子是不一样的,,不知道能不能用 这个程序 了???
wenyangzeng 回答时间:2017-12-21 19:16:54
czhuanqilai 发表于 2017-12-21 17:38( W4 f8 ~. l& X9 k" W
只能用于ST官网的板子么?? 我手里有一块 无刷驱动板,MOS管的引脚连接的是TIM1的6个通道,和ST的驱动板 ...

2 {# h: Y% \2 E: y! ?4 Dhttps://www.stmcu.org.cn/document/detail/index/id-218177
6 L8 W/ T- x" G) [1 }! f+ `3 c3 MST官方的电机培训资料,你可以参考
sdkdwyb-321669 回答时间:2018-6-19 14:47:39
谢谢分享" u- Y- _* I8 r, U* p) f
wangxuewei 回答时间:2018-6-20 09:09:36
共同学习,共同进步
花落莫相离 回答时间:2018-6-28 20:58:00
wenyangzeng 发表于 2017-12-18 16:08# E. n0 J, u2 G* }( {
都是ST 官方的:
/ [0 H$ H1 k. \; o
楼主你这个工程是用的STM32CubeMX生成的工程吗?
wenyangzeng 回答时间:2018-6-29 07:27:11
花落莫相离 发表于 2018-6-28 20:58
! E9 b" g/ N. ?; ?0 }楼主你这个工程是用的STM32CubeMX生成的工程吗?

" F& g' S# E; e  n" ?* d$ ^6 h我也只是班门弄斧而已。工程不是CubeMX生成的,是ST官方下载的。# I* g% g6 t" `" S. n1 Q
https://www.stmcu.org.cn/module/forum/thread-613011-1-1.html
syq217 回答时间:2018-7-4 09:32:32
楼主,步进电机和无刷电机是不是一样的驱动方式?) K4 p2 u/ I* u7 v
wenyangzeng 回答时间:2018-7-4 09:46:46
syq217 发表于 2018-7-4 09:32! A6 }2 w3 o/ U9 F
楼主,步进电机和无刷电机是不是一样的驱动方式?

  x0 T  w$ N- P/ b/ [- q  t步进电机每给一个脉冲转动一个角度,与无刷电机应该还是有区别的。
syq217 回答时间:2018-7-10 13:37:52
wenyangzeng 发表于 2018-7-4 09:46
3 R8 [! i$ V& Y步进电机每给一个脉冲转动一个角度,与无刷电机应该还是有区别的。

5 k  H+ J5 R' o) N3 i那么 就精准度来说,哪种电机更好一点呢. B! K  z/ G/ @% X  j
12下一页

所属标签

相似分享

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