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

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

[复制链接]
七哥 发布时间:2018-9-14 01:05
本帖最后由 toofree 于 2018-9-14 08:45 编辑 # h. i! R" A; ^0 w
+ x8 D& W4 b  t8 D2 K% O, G7 j
[size=13.3333px]STM32电机培训】——6、任务4开放性实验转矩控制电机
. ^, G9 |$ E- N3 d/ w* {# b

8 [" k6 d" d, f# J+ F5 I, q任务目标:转矩控制电机,用STMStudio对变量进行监测,用ADC采样电位器电压,ADC采样值按比例间接控制电机转速。
6 }* z/ {) }4 v! _  [! P6 Z 01.jpg
4 i( `+ J, s" i: f. f% F. f7 C
: K  z$ |4 ], \5 c# h# t0 F. h

- @; g3 |! l* _% B2 }按培训资料,使用转矩控制函数“MC_ProgramTorqueRampMotor1(Tuning_Iqref,1000);”,添加变量到STMStudio窗口
3 ^; m" ]' t2 Q/ W$ N# t* P 02.jpg 1 F* E- r( }. E. K
) {0 F4 L% f1 g1 I# K) c" a
8 ~4 L9 K# C8 {5 g
建立STMStudio工程,并将“.out”添加工程中。7 q& O) R7 c+ I* F/ E. n
03.jpg ) n( Z/ O; J7 K0 ~2 ], V' _
; I  ?: C8 C) t+ Z/ x& s4 x% C& }& O

. s# p5 v; J) B" |电位器ADC采样函数“MC_ProgramRegularConversion(ADC_Channel_12,ADC_SampleTime_601Cycles5);”,以及读取ADC采样结果函数“MC_GetRegularConversionValue();”。+ E  [% ~. s6 Z% H; v2 |
此处有重点,将右侧代码照着敲一遍,改巴改巴
4 s; _7 M8 ?3 U2 ?; L$ E 04.jpg / o8 g$ i  v  E; l  _! [0 x/ L
5 }9 ]! ]' q' [' r

) }9 ~- m8 E0 ?! P9 z0 ^" A! S
% @- Z! {6 B. `
% {- T* l- d; n; }
STMStudio的VarViewer窗口中观察波形变化。
, x. R, U3 L* i. I3 d& f$ o  _ 05.jpg 9 k! ^' h- o; I0 n
4 M6 X% N; E: T
' t9 V; Y1 M) M
代码改起:% B/ M7 s# F# w, m/ d9 V
本贴代码在上一贴基础上更改。
! g3 i% R/ H3 P6 D【STM32电机培训】——5、任务3电机状态切换、正反转
: O$ k" v9 ]( c8 ~. ]% ahttps://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=617456&fromuid=307297) o& T7 a$ t, R7 ^  F- L7 a0 \
(出处: 意法半导体STM32/STM8技术社区)  z  j4 N& Z/ W1 R9 [& b

+ i/ k$ U2 }2 m  F  O7 @$ w. _
) [" h1 e8 G2 q0 ~4 `$ m

6 F9 n4 O' c( f# j搜索找到头文件“std_hal_missing_define.h”,将第4行的“#if 0”,改为“#if 1”。或者自己添加“ADC_Channel_12”和“ADC_SampleTime_601Cycles5”相关宏定义。
. f+ H3 U6 n! s8 f6 L9 X7 m 11.jpg
) U0 H; W5 [. D& w( J
4 u# Z% a% {, K/ E

; s8 [2 |( Z# u: p+ P6 c修改头文件“std_hal_missing_define.h”的目的,就是想使用这两个宏定义。或者还有其它隐藏的宏定义,反正修改、添加一下,一劳永逸。
3 v! ~& O. e* J9 L0 j4 q 12.jpg 2 p  ?3 T" f8 B$ r  N6 z

2 h% m$ B0 p; G. o
6 r# |7 Z( s' m& }' Y
工程主文件“main.c”中,添加相关头文件,并添加相关变量定义、宏定义。这里“MAX_TUNING_IQ”、“MIN_TUNING_IQREF”分别为2800、1000是实验得出来的。转矩太小电机低速会停机,1000是最低维持电机转动的转矩参数;2800是ADC值接近满量程时,电机才达到最大转速的转矩参数。0 Q6 m4 _: `: [+ P) u+ J
13.jpg 9 c* ~: R  {0 ^8 w5 N( g
* A8 g! R* Z+ u+ g; T
6 A4 \& h# y& l: g/ {  j
添加几个外部变量声明和函数声明
8 v$ D. ?8 Z5 I9 G& T 14.jpg
3 t! {3 J: p8 G$ R% R8 v. J- U
/ D, j0 n" K% L
主循环中,只执行一条“ Open_Task();”函数,此函数便是照着培训资料码好的代码。
* a% |& `% Y0 H" W' \! @8 A 15.jpg " F) M; Z! S0 U$ N

+ B+ ~- F) |  F4 u( f% F3 @" C7 M
  k4 O) O" Z" t2 T$ a5 k
“ Open_Task()”中“Tuning_Iqref”增加了1000的偏置,与“MIN_TUNING_IQREF”差不多是一个意思。
, y/ c2 A& n6 {. h2 {+ j 16.jpg
; \" Z0 G& j. f4 N; M! G
, B2 K; _: L% d6 \% k) [1 ?

/ W7 R$ ?& B3 ~复制出“ Open_Task()”源码供参考。(如果嫌麻烦的话,直接下载贴子最后的打包附件)
) V6 `, p! _( J+ [1 d
  1. void Open_Task(void)/ P$ X/ f- g6 L! y$ y. c
  2. {
    5 b: w  w+ v6 \! N/ S4 y1 J9 c
  3.   pMctHdl = GetMCI(M1);
    - a( ?+ v5 E  j3 t# [$ Y4 S
  4.   ) }6 [& W! C0 H; p; v/ F/ C
  5.   /* Do regular adc convert */5 b- P. P5 {" Z0 D2 `4 g0 [. n( h
  6.   if (MC_GetRegularConversionState() == UDRC_STATE_IDLE)
    ) n: L" v+ Q: `0 E
  7.   {
    . k% \4 U# a# ~! E: V7 X; F
  8.     MC_ProgramRegularConversion(ADC_Channel_12,ADC_SampleTime_601Cycles5);1 F7 E3 w; O7 c
  9.   }
    : [3 w4 m/ z9 b* d8 b/ m
  10.   else if (MC_GetRegularConversionState() == UDRC_STATE_EOC)
    ( K: x' S: u! d$ A4 N6 R
  11.   {
    + K. y7 I$ l2 m$ O2 i0 F6 \
  12.     /* Get ADC value */
    ( u9 n( n: T% A- C+ o2 x$ K  ]  u
  13.     Tuning_ACD = MC_GetRegularConversionValue();
    % s6 D4 F: L- @' l
  14.   }
    * _; P2 a" }! @6 i' x

  15. % H7 H. E  ~; z9 e; ]
  16.   if (Delay_Count == 0)4 w4 U4 K& U1 r5 W
  17.   {5 ?3 C# g5 ~" n, ^' n4 D. j  Q
  18.      Delay_Count = HAL_GetTick();
      N- K. O4 c+ m; b3 o& _6 M/ G
  19.   }6 X1 q2 B" D5 `0 U$ _+ n, U
  20.   else if (HAL_GetTick() > (Delay_Count + 1))
    * o3 g( Z. i9 e" ]
  21.   {
    % ]8 h* g5 X6 B+ E& P
  22.     Delay_Count = 0;! o. j. P1 A/ \2 l
  23.    
      |2 s" y$ l. o
  24.     /* Get new Iqref */# l& u& G3 \0 w, L; Z; C
  25.     //Tuning_Iqref = (Tuning_ACD + 1) * MAX_TUNING_IQ / 65536;5 B- M5 e5 g% E6 F' w5 a
  26.     Tuning_Iqref = Tuning_ACD* MAX_TUNING_IQ / 65536 + 1000;
    ! a7 Z0 [1 F) L/ N1 W3 c8 w- _0 m+ f
  27.     if (Tuning_Iqref < MIN_TUNING_IQREF)& R+ }6 Q5 H2 E& X( J1 L3 N
  28.     {
    7 O- i; ?: [0 w& G5 |5 a2 p
  29.       Tuning_Iqref = MIN_TUNING_IQREF;) V# d( S5 Z$ r' {/ B
  30.     }
    - P* X; E  v+ G2 ~6 |
  31.    
    0 j. c% I# l' k8 Z$ I
  32.     /* Set new Iqref ramp */
    6 |5 \1 T) q$ ]
  33.     MC_ProgramTorqueRampMotor1(Tuning_Iqref,1000);
    + @8 G- T/ r1 B; {9 `) C# p
  34.     MC_StartMotor1();  3 Q: l9 O" B+ p! V* S) |
  35.   }
    ( d( F' l* s' X
  36. }
复制代码

: g0 {3 h; b6 u4 w0 N+ h6 q" H1 k0 {2 m4 Y3 r
& {/ h1 v, [/ t! M3 n0 R
编译IAR工程。下载固件到开发套件中。
$ b" C% {6 C  {' A+ S9 m4 ?) J3 R; j4 B# Z: T4 T8 R/ q+ e
8 X; u1 @. B) [- Q
打开“Workbench”界面,并与目标板套件连接。) P$ M+ Q& C5 |" U* Z& g+ ^
21.jpg
( Y/ [4 \- K2 q6 T! V2 ^
: @& h9 x8 F8 k7 w“监控”窗口下,在打开“Plotter”绘图窗口。( \" _; O, G, v! ~6 z; d! P
22.jpg
, o, V8 s: T" z0 D# m% l
3 f2 r$ Z! g& N( K7 A  b! c* H

# h/ j$ ?4 A8 M6 l( [电脑安装,并打开软件“STMStudio”。% X* m+ ^/ f: }$ I
23.jpg
& D: h4 ^1 r+ N$ f4 }4 S% Z6 v
; L( [! P0 p+ j
$ O' y; e/ E4 i/ d
将本实验IAR生成的.out,导入到“STMStudio”工程,并且添加监测变量到两个“VarViewer”窗口。为什么用两个窗口,因为ADC有采样值变化与转矩不在同一范围,如果在同一窗口,一个波形幅度太小。+ k2 W0 K! l, C) h
24.jpg ) F1 m0 E2 y2 `: I6 D% |
6 ~" ~4 R, ?7 _, y! |5 C

! \* u% n5 P4 O" M7 b运行程序后,在“Workbench”“Plotter”绘图窗口观测电机速度,转到电位器,电机速度变化,相应波形显示有变化。+ f0 V! D$ K. d* K! r
25.jpg
6 S1 H8 ^& X+ E' I5 @5 K
$ z2 E' F$ x: y* }8 a2 O
: u7 O. U6 l4 Z0 e! U: m
同时在“STMStudio”的窗口中也将观察到如下图变化波形。
6 Q0 s& k* {% z( R/ Y! A5 K 26.jpg
8 n  W2 t. d* X# B$ g/ d3 U6 l# i6 {' N  L( B

& G) O) L- n- o: p$ {5 i( {4 M+ f至此,完成了开放性实验的转矩控制电机,并在“STMStudio”观察ADC、转矩任务。(之后,重开贴,整理一下“STMStudio”使用,其中会有一个小贴士分享。6 Q) a+ J: p8 k5 A

5 y) K$ Y( V- G- ]
& g3 w: v: p8 t( p1 e5 w: a! |, R* n! u
按照惯例,工程附上:! P& q# [6 X2 y: M
1 J0 x; y6 E' m' o
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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版