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

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

[复制链接]
wenyangzeng 发布时间:2017-8-22 15:49
【STM32电机培训】4 修改代码控制电机运转
" ?0 T: G  h: t: D. _
: q) v2 L/ @/ j' f' l/ k& j6 J

4 H1 q0 x/ W! h9 m& b     通过参加电机培训,对STM32控制无刷电机控制技术有了进一步的理解。本次就针对STSW-STM32100\STM32CubeExpansion_SPN7_V1.1.0演示代码进行修改,达到让电机按照自己的要求运转。
. I( D( b8 _" l$ g8 C8 h    首先先关闭电位器调速功能。在MC_SixSetup_param.h文件中的“BASIC PARAMETERS”有对电机基本控制参数的定义,将#define POTENTIOMETER 从1 改成0.
; Q2 A( ?6 S! z- [: Q. \$ d: L  {- H! Y3 t% ~5 E* \

. S* t  W& W; e0 l5 ?MC_SixSetup_param.h
0 z/ J0 Z* I2 @( M1 m* K
  1. <font size="3">/* **************************************************************************** + U8 i" M, g' s2 }/ j" ^7 Z
  2. ==============================================================================   
    6 w- H+ o: f$ j7 ~, |
  3.                        ###### BASIC PARAMETERS ######
    8 W+ [% X: `4 G1 ]& B+ E) _
  4. ==============================================================================
    0 M* I% x4 l" G; r1 o5 E3 n/ h) D
  5. **************************************************************************** */   
    7 J) A( D1 y3 V$ M9 J' ~+ d- [
  6. #define NUM_POLE_PAIRS                       7      /*!< Number of Motor Pole pairs */
    ; M. w1 T% F% u7 U
  7. #define DIRECTION                            0      /*!< Set motor direction CW = 0 and CCW = 1*/
    5 ?8 J6 D# q: j8 e+ ~0 d) F0 S
  8. #define TARGET_SPEED                      3000      /*!< Target speed in closed loop control */ ; O. p$ K- v5 g( |% E
  9. #define POTENTIOMETER                        0      /*!< Enable (1)/Disable (0) the potentiometer */ 6 U; W7 x) e: c3 J6 j' ^

  10. * o3 Y* i% D9 m) y, [% J; G
  11. ( _/ U! ^  Y" o  \6 T
  12. /* **************************************************************************** </font>
复制代码
1 _" V/ c# L/ k, N
; E. u+ F$ ~3 ~8 H+ H" |& \) ^

6 }7 Q- ?. }) p7 u    接着在main_F302.c的主循环中添加代码,让电机以500转速运行5秒停止5秒,再以6000转速运行5秒。对电机的控制方法ST 官方在注释中写得非常清楚,改变电机运行参数很方便。
' z( ~. h) n! `( G% ^6 Z" {7 \' E& t  \8 T  |* q. p- n4 ]
. V) T) s0 g2 Z. m1 K! }8 L

* M+ a  w* v: k

' m" X, s/ `  M+ o6 smain_F302.c
# ^* J) n9 c1 e" j* c/ O2 U
  1. <font size="3">/* ****************************************************************************
    7 Z! Q( m& U) e  R( j2 g$ Q
  2. ==============================================================================   1 i+ j: K8 f" d) f
  3.                        ###### BASIC PARAMETERS ######
    / S, y8 E. _: b! ~, [
  4. ==============================================================================
    ! p" S* l/ T' Y, S9 ?
  5. **************************************************************************** */   & ?  U$ W" u& Y* t
  6. #define NUM_POLE_PAIRS                       7      /*!< Number of Motor Pole pairs */
      |4 C( L* J6 \' W. L
  7. #define DIRECTION                            0      /*!< Set motor direction CW = 0 and CCW = 1*/
    - m' h  @* I# H2 v+ C% |# T  f
  8. #define TARGET_SPEED                      3000      /*!< Target speed in closed loop control */
    3 g8 B, a& h8 R
  9. #define POTENTIOMETER                        0      /*!< Enable (1)/Disable (0) the potentiometer */
    ) Q" e* Z6 H) f! B1 u+ Y- e

  10. 4 ?& z, w# w3 M# }5 H( M+ Z" I) \

  11. 0 e, m3 c5 X# l7 t
  12. /* **************************************************************************** 1 e" \! r: l- [! k; k

  13. 0 N/ n( X/ ?1 E. d
  14. - Y' m- v& s4 ~7 R1 U; l
  15. 0 v4 g% A3 H4 d+ }( K. Q
  16.   ==============================================================================   
    5 z, d4 _! O* e! u- x
  17.             ###### How to use the 6Step FW Example project ######" t8 J/ q7 p. N+ t
  18.   ==============================================================================     
    # J7 w2 A8 [; m2 i4 i3 j
  19.   This workspace contains the middleware layer with Motor Control library to drive
    8 T8 B0 s0 p! x/ U1 l7 z+ X
  20.   a motor connected on X-Nucleo board performing a 6-step control algorithm
    + K. a' O! u( P/ o) E4 s
  21.   allowing the motor speed regulation through a potentiometer. The 6-step algorithm 8 p- n. l7 E+ i+ Y
  22.   is based on 1shunt current sensing mode and sensorless algorithm for bEmf detection.
    * a: G: L7 u6 Z  [0 Z. [+ @9 n
  23.   The workspace is provided for STM32Fxx-Nucleo in four different configurations, " c6 |6 x: a1 b5 X: H3 H
  24.   normal, demo, comm mode, boot mode. The "normal" mode waits the blue button event
    # t1 |8 x( Z5 f
  25.   to start the motor, the "demo" mode starts and stop the motor automatically, the
    # z) d$ W/ k, W& H' c
  26.   "comm" mode enables the communication protocol with external PC terminal and the
    $ i) `5 Y# g" Z: j% e4 o- A
  27.   "boot" mode enables the FW for external boot loader.
    " q: H  F9 P0 O- T
  28.     , d* L5 G. x/ V
  29.    A list of APIs is provided to send command to 6Step lib, for instance:$ M5 F! k: E8 q! X, s
  30.     % @4 T0 l! H! i, q
  31.     (#)  MC_StartMotor() -> Start the motor
    6 B$ y7 w; V0 z/ Y' ^6 V. k
  32.    
    9 w+ m( P2 |  q
  33.     (#)  MC_StoptMotor() -> Stop the motor
    3 G; x, ?9 [8 G( G1 o9 R' K
  34.     + h6 n& A' W( }: P6 |1 d' k2 \; L
  35.     (#)  MC_Set_Speed(...) -> Set the new motor speed3 o  Y) q  I) Z6 ?

  36. ! z, m  ?6 F7 H
  37.   The MC_SixStep_param.h contains the full list of MC parameters      , E3 s1 J& F8 x1 B/ N% D

  38. 3 y8 X, \6 C& h: _0 K+ e
  39.   ==============================================================================   
    ! ^+ ], r. |& b& h, r3 q
  40.                        ###### USER SPACE ######, {; U* J1 W5 z/ Y6 U  Q8 t5 T
  41.   ==============================================================================      6 t. r2 L' r4 h1 t; n3 d
  42.   *****************************************************************************/    , h  }; z  R) ]1 t  [) [7 C
  43.       1 Y  B1 S' w7 A! p
  44.    . V0 o9 {( O' {' X
  45.   /****************************************************************************/   
    ; q& z0 z3 F. l1 v
  46.         //添加的代码
    6 J% f6 a3 s3 U; i
  47.         HAL_Delay(2000);
    ' l; x) r$ Z! m: T) j3 y
  48.         MC_Set_Speed(500);2 S1 _. w  |9 a8 d, w4 c6 P
  49.         MC_StartMotor();
    - ~  U5 B+ m  Q- J* `8 ^! ]9 }/ D
  50.         HAL_Delay(5000);4 L! E/ w2 I+ D$ @1 z
  51.         MC_StopMotor();6 v& A" u1 l$ ~# a! e
  52.         MC_Set_Speed(6000);
    / n6 G( e  A* H, |
  53.         </font>
复制代码
' L) G/ Q4 `7 r. l( _. u
3 @! j8 }3 A% I4 ~! Y# `2 J7 }
    本次实验是6步梯形模式,按照要求对IHM07M1板子上的条线进行相应设置。编译下载,通电运行,电机已经能够按照预定参数正确运行了。
! \9 i- h8 W' i, G) K( b, c5 }/ n
) ~9 _2 i: E' T- U& J* l, V: H. \2 |$ [2 k6 M6 w9 O

: o/ v0 C; i9 Uhttp://player.youku.com/player.php/sid/XMjk4NDc1OTkyOA==/v.swf
( O- l* r  l: a! `) \+ u- A; I3 P/ y
收藏 3 评论21 发布时间:2017-8-22 15:49

举报

21个回答
czhuanqilai 回答时间:2017-12-23 11:29:06
wenyangzeng 发表于 2017-12-21 19:16/ |" r+ \! G2 y
https://www.stmcu.org.cn/document/detail/index/id-218177
5 g/ L7 T, V/ kST官方的电机培训资料,你可以参考 ...
. |/ C; X- S, u8 |# S0 u' ~7 h) v* j
谢谢!  这个我看过了,我手上没有ST的Noclude板子,有别的无刷驱动板,想要用ST的电机库配置一个适合自己的模板,现在这个文档里面没有教怎么使用  Workbench, 自己不会配。  不知道楼主有没有资料了,关于使用Workbench
wenyangzeng 回答时间:2018-7-12 13:17:34
syq217 发表于 2018-7-12 11:13
6 u( E% I& x( S+ j& _) ~. C4 Q' a, o' Q谢谢,我目前在驱动步进电机,我应该如何实现它的精准控制呢,需要哪些器件  ...
" o9 O+ h( I& b& i- m
举个例子,数控线切割机床就是步进电机控制,每给一个脉冲,电机就转动1个角度。楼上应该去参阅步进电机相关资料,比如数控机床控制等等。本人也是门外汉。
花落莫相离 回答时间:2018-6-28 20:55:38
wenyangzeng 发表于 2017-12-18 16:08
- Q. g: P; G, N都是ST 官方的:
0 o7 v9 i! t- U; y9 n! `
楼主,你用的电机是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
% S- g* e. x$ A/ S! O) G6 i& l你好,楼主,有程序代码么?   能发一份。。谢谢

" }# z" d+ W1 @7 l0 T都是ST 官方的:& R# m! ?" |+ k6 F; `* T
MotorControl.rar (15.19 MB, 下载次数: 720)
czhuanqilai 回答时间:2017-12-21 17:33:16
wenyangzeng 发表于 2017-12-18 16:08
$ i+ w! E1 Q" f都是ST 官方的:
, }0 y) u; J# b
谢谢
czhuanqilai 回答时间:2017-12-21 17:38:12
wenyangzeng 发表于 2017-12-18 16:08
# Q% b* `! ^: ^$ c. X8 y+ d! L都是ST 官方的:

$ _6 B9 @2 W9 `- G; ~- G只能用于ST官网的板子么?? 我手里有一块 无刷驱动板,MOS管的引脚连接的是TIM1的6个通道,和ST的驱动板子是不一样的,,不知道能不能用 这个程序 了???
wenyangzeng 回答时间:2017-12-21 19:16:54
czhuanqilai 发表于 2017-12-21 17:38% ~1 N1 j/ f  u) c" a
只能用于ST官网的板子么?? 我手里有一块 无刷驱动板,MOS管的引脚连接的是TIM1的6个通道,和ST的驱动板 ...

. p# s. L1 P5 x# khttps://www.stmcu.org.cn/document/detail/index/id-218177
8 \' `- H- c8 Q; o4 I- ~# r+ [ST官方的电机培训资料,你可以参考
sdkdwyb-321669 回答时间:2018-6-19 14:47:39
谢谢分享
5 {. F. D7 Q7 N: d; J
wangxuewei 回答时间:2018-6-20 09:09:36
共同学习,共同进步
花落莫相离 回答时间:2018-6-28 20:58:00
wenyangzeng 发表于 2017-12-18 16:08
& W  `% e7 j0 v2 B% @6 s都是ST 官方的:
4 r4 L$ U: Y: f; H3 A
楼主你这个工程是用的STM32CubeMX生成的工程吗?
wenyangzeng 回答时间:2018-6-29 07:27:11
花落莫相离 发表于 2018-6-28 20:58
" P- c7 N- _  Z8 @* B- k# y楼主你这个工程是用的STM32CubeMX生成的工程吗?
) h% O* Z3 B7 v0 O
我也只是班门弄斧而已。工程不是CubeMX生成的,是ST官方下载的。$ Q% H  ~' r$ a8 f9 s, o+ K4 M
https://www.stmcu.org.cn/module/forum/thread-613011-1-1.html
syq217 回答时间:2018-7-4 09:32:32
楼主,步进电机和无刷电机是不是一样的驱动方式?
, I& x1 n9 _! k5 G
wenyangzeng 回答时间:2018-7-4 09:46:46
syq217 发表于 2018-7-4 09:32
8 c& X  t! D( k3 A$ ^) v$ |楼主,步进电机和无刷电机是不是一样的驱动方式?

' E3 m6 E2 K4 O8 x# {" L+ t步进电机每给一个脉冲转动一个角度,与无刷电机应该还是有区别的。
syq217 回答时间:2018-7-10 13:37:52
wenyangzeng 发表于 2018-7-4 09:46
2 W5 g# h: i. o* n2 V! {: z步进电机每给一个脉冲转动一个角度,与无刷电机应该还是有区别的。

( n7 j# L* a( w$ L  `% k7 h那么 就精准度来说,哪种电机更好一点呢
+ A9 [- r; i  k8 y* {3 P2 O
12下一页

所属标签

相似分享

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