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

【STM32电机培训】——6、任务4开放性实验转矩控制电机

[复制链接]
七哥 发布时间:2018-9-14 01:05
本帖最后由 toofree 于 2018-9-14 08:45 编辑
9 b( g$ B% V9 N4 Q5 f$ r$ B7 v9 c" R3 f) `$ f* m  G
【STM32电机培训】——6、任务4开放性实验转矩控制电机

6 B3 T2 ~: b' j3 @) X
* C5 Q; p8 M  X* x: D4 _任务目标:转矩控制电机,用STMStudio对变量进行监测,用ADC采样电位器电压,ADC采样值按比例间接控制电机转速。5 L+ u5 _+ t, V% w& b7 j
01.jpg
- Z0 I+ C+ P/ W. }( z& Y! ^. z' g5 a* C& Q: N" C/ [
" Y& F1 T* P/ `) Z  @
按培训资料,使用转矩控制函数“MC_ProgramTorqueRampMotor1(Tuning_Iqref,1000);”,添加变量到STMStudio窗口
1 a0 J3 \0 p0 ?* T 02.jpg   `7 ^. Z* B! F0 C& J
5 J+ K5 e" P3 a5 ?. B7 P' f' k# C/ m8 q
7 h) h6 Z* _) h7 u- t
建立STMStudio工程,并将“.out”添加工程中。- R- p2 \0 R* B/ S/ `
03.jpg
) c- `+ [) V( F. Z& f% ~! ~; m7 `: G% Z5 u: T
  ~) N9 w+ Z  R6 {! U1 f  S% n: R
电位器ADC采样函数“MC_ProgramRegularConversion(ADC_Channel_12,ADC_SampleTime_601Cycles5);”,以及读取ADC采样结果函数“MC_GetRegularConversionValue();”。( l; O2 U3 }6 F, i
此处有重点,将右侧代码照着敲一遍,改巴改巴 8 K' P; ?7 C. ^0 `  _% y& q$ ^
04.jpg 5 e, Z1 J3 Y) V& S( }3 y
8 e: U/ q) J3 P& h9 ]+ o2 Q8 [
6 J1 V$ d. A- i: a2 L3 N7 {1 H
# B1 M8 U7 t& @  Q0 |( h

- d# x/ }- F% ^4 Q, |在STMStudio的VarViewer窗口中观察波形变化。
8 m: t# @& H4 R' c* R 05.jpg 7 ~0 c) |  O1 W" H
* S' L) {7 S. O, j8 R' K: X

0 W3 o  O/ H5 u+ h: s  u( \代码改起:
2 m: w$ W3 q/ |# z( ^本贴代码在上一贴基础上更改。
8 |- F" Z. U3 |8 ?4 G【STM32电机培训】——5、任务3电机状态切换、正反转; O/ f) m* ?/ M2 q
https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=617456&fromuid=307297
! ^4 ~9 r. q, H% d. K% X+ A+ [(出处: 意法半导体STM32/STM8技术社区)
3 R$ Q0 U, X) w- Z
: d8 g2 a/ _+ G/ H8 Z- |" x2 A7 h5 q. _; |
8 i% E' s. k% e9 j+ M
搜索找到头文件“std_hal_missing_define.h”,将第4行的“#if 0”,改为“#if 1”。或者自己添加“ADC_Channel_12”和“ADC_SampleTime_601Cycles5”相关宏定义。' I; T; \/ I$ p+ O6 |
11.jpg 3 J  @+ c% `7 t# ^' y) b- G  ~

7 n4 A% q% w0 y; h/ b; [& e" B

% h8 d, m2 z& Z! m& H/ o  V( W修改头文件“std_hal_missing_define.h”的目的,就是想使用这两个宏定义。或者还有其它隐藏的宏定义,反正修改、添加一下,一劳永逸。
0 N; o* l$ u& [9 c 12.jpg
, `! c# U: V) I
  x) M9 l8 l3 v1 L! b% H9 c* ?

  v+ p/ t: k( f2 B( q% t; o3 l3 N: T工程主文件“main.c”中,添加相关头文件,并添加相关变量定义、宏定义。这里“MAX_TUNING_IQ”、“MIN_TUNING_IQREF”分别为2800、1000是实验得出来的。转矩太小电机低速会停机,1000是最低维持电机转动的转矩参数;2800是ADC值接近满量程时,电机才达到最大转速的转矩参数。
2 M. F: R: P8 E0 U" @ 13.jpg
* z" E- @- F0 Z+ E# ]% l+ `8 W! _. o0 |% M% N4 J

0 ?, l' n0 y3 E. X8 x" ]添加几个外部变量声明和函数声明
' k7 e* D! y5 R0 u: r0 U. l 14.jpg
. x- T  h6 O2 v; d
! a; g5 M. q* A  N. o) N1 t
0 U& f) S9 J& ^( h! u! n! d
主循环中,只执行一条“ Open_Task();”函数,此函数便是照着培训资料码好的代码。
/ ?3 P. ^/ {- }' m 15.jpg
% o2 F& S( y9 a* c- e$ [$ |  A/ M& ?( f: R/ |8 B+ p
# R9 [2 T* j3 m2 G# R
“ Open_Task()”中“Tuning_Iqref”增加了1000的偏置,与“MIN_TUNING_IQREF”差不多是一个意思。
  A, d. R6 H! Z+ N+ t 16.jpg
8 A# q' I& l" c$ J# G" c
* L. ?# P  Z2 o) s( L6 r3 M9 u

& `! m: s5 G3 ?; f5 V2 D2 p复制出“ Open_Task()”源码供参考。(如果嫌麻烦的话,直接下载贴子最后的打包附件)
3 m" W/ m5 V, U/ ?
  1. void Open_Task(void)
    5 _0 ^6 ?. ]7 P, u2 v/ D) z& x2 M
  2. {
    % o2 z% F/ Z4 w. v
  3.   pMctHdl = GetMCI(M1);
    ; ]9 Z3 V9 u+ l! I% z
  4.   
    5 n+ T/ W: v* M( y! C( w1 g: B
  5.   /* Do regular adc convert */
    0 A0 y2 H2 q8 O, K, K, C4 P
  6.   if (MC_GetRegularConversionState() == UDRC_STATE_IDLE)' n( O, j  I& [& n4 j
  7.   {
    / c; C( N( G' E8 ~( c$ i. \
  8.     MC_ProgramRegularConversion(ADC_Channel_12,ADC_SampleTime_601Cycles5);
    5 n- |" h. f7 D  \- W% K
  9.   }
    : ~3 x" b8 q: s
  10.   else if (MC_GetRegularConversionState() == UDRC_STATE_EOC)1 H4 |; h# D5 B/ y  U1 N2 Q1 E: Z
  11.   {
    ) ~* I  h9 H# v% k9 r. S
  12.     /* Get ADC value */
    ' N3 J# t5 i: l, m% E
  13.     Tuning_ACD = MC_GetRegularConversionValue();4 ~% `" J$ l* i3 ?6 G1 w) k
  14.   }
    * |. q& N) f+ H" \5 s* _( M4 P

  15. ! P, b( h5 b! f' t5 k2 y
  16.   if (Delay_Count == 0)
    7 J4 m* y& m/ }' _- s
  17.   {
    % d! k, e! a1 h6 ?* s9 o, o" _
  18.      Delay_Count = HAL_GetTick();
    9 w. j7 i8 \) s5 {, a% c2 w
  19.   }
    : V0 k5 u6 t! S  h9 A
  20.   else if (HAL_GetTick() > (Delay_Count + 1))) t( w- X* H% V$ U
  21.   {
    1 `+ g3 n3 V$ `  n; `
  22.     Delay_Count = 0;
    7 D+ T/ ^& t2 ]  z
  23.     8 ^, {& ]6 M$ t- ^0 ?3 k$ [' ~1 H
  24.     /* Get new Iqref */0 g/ V) ^7 G! I2 N, q" n
  25.     //Tuning_Iqref = (Tuning_ACD + 1) * MAX_TUNING_IQ / 65536;
    1 Z: X" a, a; F
  26.     Tuning_Iqref = Tuning_ACD* MAX_TUNING_IQ / 65536 + 1000;' q" K/ z' ^9 t" L
  27.     if (Tuning_Iqref < MIN_TUNING_IQREF)
    $ Q& l1 S. v/ W) R# B, N  C4 u
  28.     {# e* K# ]( [/ J( g
  29.       Tuning_Iqref = MIN_TUNING_IQREF;
    2 m4 I; I7 R( x/ H1 k
  30.     }. w! G; T+ g' I( o7 \
  31.    
    ) j& ~! h5 C' e# F, `
  32.     /* Set new Iqref ramp *// ~# i( B" g1 M9 m" u
  33.     MC_ProgramTorqueRampMotor1(Tuning_Iqref,1000);
      ~# [4 x+ d+ g, h7 m0 a3 x& a
  34.     MC_StartMotor1();  % i- u  m: t% y8 n% u# {8 A) |
  35.   }
    * |/ T, v9 E, M- U% Y+ P
  36. }
复制代码

% g3 t9 ]/ t2 a' e$ C$ @
2 P' N3 W3 M7 k/ l

" ?" H" E! l7 z( b. r编译IAR工程。下载固件到开发套件中。
  N! |% e% n% @9 y# o4 Z4 W2 I3 D- l( e( T% i

7 V! d" b1 q0 ~+ T: }打开“Workbench”界面,并与目标板套件连接。( m. M* o" I) x6 j( w; v
21.jpg 6 B) Z6 N2 S+ y. b
. H$ W1 |% c% V% A0 J, {1 k$ |
在“监控”窗口下,在打开“Plotter”绘图窗口。# Q" ]1 t6 @' y; D$ G4 V. z, M& @
22.jpg
6 c" M: c6 }7 T+ H3 s+ U& \' O2 n% U" x
6 }9 e( {5 r6 L" U/ R
电脑安装,并打开软件“STMStudio”。+ r1 |0 q1 b  i$ ?
23.jpg
* e' J: Z7 |2 B5 q; \2 Z0 c+ T+ E/ b
' p( j+ N/ y9 V$ B1 L. J

3 X$ N( C/ p5 P" P2 F7 l9 T: B将本实验IAR生成的.out,导入到“STMStudio”工程,并且添加监测变量到两个“VarViewer”窗口。为什么用两个窗口,因为ADC有采样值变化与转矩不在同一范围,如果在同一窗口,一个波形幅度太小。
$ c/ `/ u) Y2 e4 B5 |+ x' u 24.jpg $ n9 t3 e; z7 T' ?6 o

' c" n/ ?& z' X6 O" w

0 {$ i* m6 z8 r8 q  z运行程序后,在“Workbench”的“Plotter”绘图窗口观测电机速度,转到电位器,电机速度变化,相应波形显示有变化。6 S0 ?! v0 N5 P* B
25.jpg : \9 J5 ^; H% \+ a$ D
! c0 A( W" ]) {" G* g) \* C9 D
& M9 b. ~- D: c" V2 {0 Q; z  y
同时在“STMStudio”的窗口中也将观察到如下图变化波形。
+ V' O3 Q8 q( J+ G& @: H7 ^ 26.jpg : G% l7 I( T3 |5 [

  k+ r# P# Z; M' n* }6 W4 S
% [  u+ e; h. [0 E' g4 l& ^
至此,完成了开放性实验的转矩控制电机,并在“STMStudio”观察ADC、转矩任务。(之后,重开贴,整理一下“STMStudio”使用,其中会有一个小贴士分享。)
9 T" q* q+ z* J1 t7 [& i0 `# s' r" k: O# f1 n, Q  d* f1 o! d) |
+ h( |: M5 N7 ]3 u6 v4 _6 a/ J: o
按照惯例,工程附上:
# n$ g5 _2 I( ]( m- s$ n2 Q; ]3 R# q# f: |+ H
P-NUCLEO-IHM001_STMStudio.rar (9 MB, 下载次数: 79)
赞 收藏 2 评论1 发布时间:2018-9-14 01:05

举报

1个回答
kimbackkom 回答时间:2018-11-12 11:36:02

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版