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

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

[复制链接]
wenyangzeng 发布时间:2017-8-22 15:49
【STM32电机培训】4 修改代码控制电机运转
6 V; C9 `# L) D7 G$ C7 P3 g9 |7 o) _. A( D( A/ Y
. }5 ?% C- T) ?3 |+ Z+ v1 @. h
     通过参加电机培训,对STM32控制无刷电机控制技术有了进一步的理解。本次就针对STSW-STM32100\STM32CubeExpansion_SPN7_V1.1.0演示代码进行修改,达到让电机按照自己的要求运转。
: G+ W: [7 x* E- V2 c7 |6 [    首先先关闭电位器调速功能。在MC_SixSetup_param.h文件中的“BASIC PARAMETERS”有对电机基本控制参数的定义,将#define POTENTIOMETER 从1 改成0.
1 H2 n" z# J- A9 t% J' b
9 N/ i2 Z- ^' }0 G1 l
6 ]. B# w* J6 [1 I- ?& N' G2 b
MC_SixSetup_param.h3 @; Y7 f! c8 X: q, ]  t
  1. <font size="3">/* ****************************************************************************   \% J5 w2 Q' p) @1 j
  2. ==============================================================================   
    / u# Q+ W! d  r! u& C1 i; f
  3.                        ###### BASIC PARAMETERS ######
    / b1 e( g, `3 q" `7 U
  4. ==============================================================================
    1 \  R$ v7 e0 U2 O' ~& Y
  5. **************************************************************************** */   
    2 P0 k& _- k. o
  6. #define NUM_POLE_PAIRS                       7      /*!< Number of Motor Pole pairs */- j( r! H, ?, \: n. R0 D+ P
  7. #define DIRECTION                            0      /*!< Set motor direction CW = 0 and CCW = 1*/
    * e8 t0 o) p7 ~$ Y# S& W' _9 Z) d
  8. #define TARGET_SPEED                      3000      /*!< Target speed in closed loop control */ 6 f" l4 u1 |- K
  9. #define POTENTIOMETER                        0      /*!< Enable (1)/Disable (0) the potentiometer */ $ G" d9 w2 J0 u4 J
  10. 3 `/ f$ M6 Z/ Q% W9 P

  11. ; q9 o" {  e5 ]& W: t
  12. /* **************************************************************************** </font>
复制代码

0 c2 L: w; [# u9 U. }/ G7 L  z/ |  t# G9 W

+ `: F6 y3 e' |7 q) v    接着在main_F302.c的主循环中添加代码,让电机以500转速运行5秒停止5秒,再以6000转速运行5秒。对电机的控制方法ST 官方在注释中写得非常清楚,改变电机运行参数很方便。: {' r" d2 ~6 @4 x  n" _
( o5 J& Z- p  T# c
# h8 x# d1 `4 R) b
* q) R: A1 ~, z2 c8 }

, F& E$ i* u6 x; E6 C7 }/ w  }main_F302.c
/ X4 w9 A, w. d# s2 D) q9 M/ D* D3 d
  1. <font size="3">/* ****************************************************************************
    8 \* Q0 N" Z0 Q9 X  t
  2. ==============================================================================   
    * ^8 ?: U' R8 u3 j8 c
  3.                        ###### BASIC PARAMETERS ######1 D/ L& X  Q" O) R' `2 g) `
  4. ==============================================================================
    3 E+ S! S$ m! f- O& W9 b
  5. **************************************************************************** */   
    6 _! C6 A! r: q2 d, S" T+ D* c
  6. #define NUM_POLE_PAIRS                       7      /*!< Number of Motor Pole pairs */4 g2 O( P) o. z2 U+ z) P+ D
  7. #define DIRECTION                            0      /*!< Set motor direction CW = 0 and CCW = 1*/
    0 Z6 g- e' B% N% k
  8. #define TARGET_SPEED                      3000      /*!< Target speed in closed loop control */ 4 r1 a+ K* `# Z. f. g
  9. #define POTENTIOMETER                        0      /*!< Enable (1)/Disable (0) the potentiometer */ & t% x5 l% w8 C( h
  10. ( V/ _. [3 `1 U8 h0 _( p! O( h
  11. 1 g( n# R9 o! c# u' P5 ~
  12. /* **************************************************************************** & G$ s' i$ v" Y  B; C' ]

  13. ( m+ q% D# I, x3 u$ k9 I$ {: H# O
  14. * Y1 F" e' K3 y# Z$ ?! m
  15. ) T5 D- c6 g- Z( R( o
  16.   ==============================================================================   & `" T- x. h  r
  17.             ###### How to use the 6Step FW Example project ######) v+ W& N) @' h2 I# F9 ]. v2 E
  18.   ==============================================================================     
    / D- f4 {6 w# i" t( k# e% ]* k
  19.   This workspace contains the middleware layer with Motor Control library to drive 1 M3 L& ~6 n2 X3 d5 {
  20.   a motor connected on X-Nucleo board performing a 6-step control algorithm
    ) }4 |2 [1 z/ v2 t7 |3 N$ y% S* O2 x
  21.   allowing the motor speed regulation through a potentiometer. The 6-step algorithm
    6 ~1 v  _" |- B
  22.   is based on 1shunt current sensing mode and sensorless algorithm for bEmf detection.. f. a: Q/ }' e' ]1 i
  23.   The workspace is provided for STM32Fxx-Nucleo in four different configurations, , C0 I5 V4 B1 q  c, ?
  24.   normal, demo, comm mode, boot mode. The "normal" mode waits the blue button event 2 L: Y! I9 R- k9 J8 y( l
  25.   to start the motor, the "demo" mode starts and stop the motor automatically, the 9 C1 r- G% p5 A0 u
  26.   "comm" mode enables the communication protocol with external PC terminal and the 8 Y; X  \* a& P+ m, c& h
  27.   "boot" mode enables the FW for external boot loader.
    * N0 Z: z% X' p/ }6 Z3 {4 D2 W! ^
  28.     " J1 T0 j3 B- j1 e" s! b3 Y
  29.    A list of APIs is provided to send command to 6Step lib, for instance:8 I! j/ |# Q+ F2 r
  30.     ( m5 r9 |, w) C# y6 b  G
  31.     (#)  MC_StartMotor() -> Start the motor# ~6 a; k- H8 f7 ^& I- m
  32.    
    ) k) I/ `, }2 ]) E6 a6 E) S9 z
  33.     (#)  MC_StoptMotor() -> Stop the motor
    1 T2 x" r9 z" W. y. L
  34.     0 d$ l8 n! j8 S1 \9 t
  35.     (#)  MC_Set_Speed(...) -> Set the new motor speed
    7 e3 y. g7 c9 ^# ]+ d/ m0 Q1 v

  36. $ o6 P4 @7 L( b* z, c$ l
  37.   The MC_SixStep_param.h contains the full list of MC parameters      
    8 h5 }) r, @. k4 Q: [

  38. 0 d! j& v1 U% d1 k. v1 S" }3 w4 j2 r
  39.   ==============================================================================   
    , j* f) M" A7 o+ E4 L& W/ L
  40.                        ###### USER SPACE ######
    ! b& J& z, f& |8 |
  41.   ==============================================================================      ' F  \, S: D. N* d9 w, L
  42.   *****************************************************************************/    * t$ N; P; R8 ^1 V2 p6 r4 t
  43.       + O' {6 l5 W# _3 a8 O2 ^, W- ~
  44.    
    8 U- N) O+ `4 c2 u2 Y* `
  45.   /****************************************************************************/   : ]4 S" l9 u% h. x. E
  46.         //添加的代码
    3 h. ~! Q; L3 w: e7 p
  47.         HAL_Delay(2000);$ X! ?& R- |4 w+ ~' h
  48.         MC_Set_Speed(500);
    8 b/ d9 y7 [2 P
  49.         MC_StartMotor();9 a' d- _% c# F3 k; _. p% V2 A4 c
  50.         HAL_Delay(5000);. w# B3 b' ^7 e, i8 }* c: v! ^5 r
  51.         MC_StopMotor();
    $ n  \* Q: {" q$ L
  52.         MC_Set_Speed(6000);
    $ c- M+ J) f. o4 n4 l/ ]% i
  53.         </font>
复制代码
  I2 I6 q5 [& y; @. A
" a) F: w7 ?3 O! L& c- o
    本次实验是6步梯形模式,按照要求对IHM07M1板子上的条线进行相应设置。编译下载,通电运行,电机已经能够按照预定参数正确运行了。
, J+ T7 b/ G7 ~
: y0 |; U) T$ A; b$ g
  m9 b/ m0 u8 a9 Q$ B

2 c% g9 ~/ a& i, J: \$ i7 ]. ~http://player.youku.com/player.php/sid/XMjk4NDc1OTkyOA==/v.swf% M5 l  \' N6 p3 v2 M

/ }$ A$ K+ [% E% u) b
赞 收藏 3 评论21 发布时间:2017-8-22 15:49

举报

21个回答
czhuanqilai 回答时间:2017-12-23 11:29:06
wenyangzeng 发表于 2017-12-21 19:160 F& P6 h6 s, \: y7 i% H, B& D
https://www.stmcu.org.cn/document/detail/index/id-218177. e! w& p6 _( E' z( C+ j0 L9 C
ST官方的电机培训资料,你可以参考 ...
5 x) O( X- ?9 R
谢谢!  这个我看过了,我手上没有ST的Noclude板子,有别的无刷驱动板,想要用ST的电机库配置一个适合自己的模板,现在这个文档里面没有教怎么使用  Workbench, 自己不会配。  不知道楼主有没有资料了,关于使用Workbench
wenyangzeng 回答时间:2018-7-12 13:17:34
syq217 发表于 2018-7-12 11:13; S5 \) i$ ?9 _
谢谢,我目前在驱动步进电机,我应该如何实现它的精准控制呢,需要哪些器件  ...

7 \( U7 r4 |% M' E举个例子,数控线切割机床就是步进电机控制,每给一个脉冲,电机就转动1个角度。楼上应该去参阅步进电机相关资料,比如数控机床控制等等。本人也是门外汉。
花落莫相离 回答时间:2018-6-28 20:55:38
wenyangzeng 发表于 2017-12-18 16:08/ y. ]1 B: k8 R: h- h: g8 Y5 v
都是ST 官方的:
& a% s8 S& M5 O4 P2 f
楼主,你用的电机是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
# W0 f! O5 m9 ~1 V你好,楼主,有程序代码么?   能发一份。。谢谢

8 }% k0 D$ W$ }/ k; E3 J都是ST 官方的:
% _. Q) g% Y$ a$ s* g+ w9 ^: g. e1 }( x MotorControl.rar (15.19 MB, 下载次数: 720)
czhuanqilai 回答时间:2017-12-21 17:33:16
wenyangzeng 发表于 2017-12-18 16:08
6 W7 o9 L1 |! N% e# y都是ST 官方的:

; d; n) f+ ^* d' t1 \  X' `/ B谢谢
czhuanqilai 回答时间:2017-12-21 17:38:12
wenyangzeng 发表于 2017-12-18 16:08
( g+ O0 C, a% {% ]- f, g4 T  A! b都是ST 官方的:
7 p) ^7 p4 n  j% a; y
只能用于ST官网的板子么?? 我手里有一块 无刷驱动板,MOS管的引脚连接的是TIM1的6个通道,和ST的驱动板子是不一样的,,不知道能不能用 这个程序 了???
wenyangzeng 回答时间:2017-12-21 19:16:54
czhuanqilai 发表于 2017-12-21 17:38
: m7 T$ r! N+ a/ \只能用于ST官网的板子么?? 我手里有一块 无刷驱动板,MOS管的引脚连接的是TIM1的6个通道,和ST的驱动板 ...

# X! e, Z8 X4 L5 Ihttps://www.stmcu.org.cn/document/detail/index/id-218177
% J( L/ }! m* b' m, L5 fST官方的电机培训资料,你可以参考
sdkdwyb-321669 回答时间:2018-6-19 14:47:39
谢谢分享3 z& @3 `  q+ h* w
wangxuewei 回答时间:2018-6-20 09:09:36
共同学习,共同进步
花落莫相离 回答时间:2018-6-28 20:58:00
wenyangzeng 发表于 2017-12-18 16:08
; ]) l8 A1 A& ?9 R" r都是ST 官方的:

; m2 v6 N8 k$ G% g楼主你这个工程是用的STM32CubeMX生成的工程吗?
wenyangzeng 回答时间:2018-6-29 07:27:11
花落莫相离 发表于 2018-6-28 20:58  s9 `: S/ @7 I4 U* k! {
楼主你这个工程是用的STM32CubeMX生成的工程吗?
9 e* u0 U7 }$ g+ ]
我也只是班门弄斧而已。工程不是CubeMX生成的,是ST官方下载的。2 o; R3 I8 h9 q2 g7 }7 M
https://www.stmcu.org.cn/module/forum/thread-613011-1-1.html
syq217 回答时间:2018-7-4 09:32:32
楼主,步进电机和无刷电机是不是一样的驱动方式?, T9 v. D! w9 T; Q8 S! i4 d2 _% g
wenyangzeng 回答时间:2018-7-4 09:46:46
syq217 发表于 2018-7-4 09:32
) d% l* S# x2 h楼主,步进电机和无刷电机是不是一样的驱动方式?
4 Y1 Z% r. N  f2 Z+ p! C( v$ l
步进电机每给一个脉冲转动一个角度,与无刷电机应该还是有区别的。
syq217 回答时间:2018-7-10 13:37:52
wenyangzeng 发表于 2018-7-4 09:46+ N; h! P! H3 ]/ t5 v$ ~
步进电机每给一个脉冲转动一个角度,与无刷电机应该还是有区别的。

3 w5 M/ ~4 h8 z1 i, z那么 就精准度来说,哪种电机更好一点呢
6 x- Q; N1 W9 t/ g) D
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版