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

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

[复制链接]
七哥 发布时间:2018-9-14 01:05
本帖最后由 toofree 于 2018-9-14 08:45 编辑 ( ^, N7 x, r: }& W& n2 N

, i; z; d: ?) R" H! Y$ [0 w
[size=13.3333px]STM32电机培训】——6、任务4开放性实验转矩控制电机

7 \" d& D) n! `
! N* b* a* I2 E. B* m任务目标:转矩控制电机,用STMStudio对变量进行监测,用ADC采样电位器电压,ADC采样值按比例间接控制电机转速。
# }7 K$ u  o9 A+ [/ u+ D" g 01.jpg 3 Q$ }! ?. {* [
  |3 `( G" P9 D( |
4 }$ }$ _2 Z8 }' x: D, U
按培训资料,使用转矩控制函数“MC_ProgramTorqueRampMotor1(Tuning_Iqref,1000);”,添加变量到STMStudio窗口
  v" \/ {. U. f3 ^: K 02.jpg : o* q: Y7 v7 |2 x& r
) J" M7 S7 s6 A1 P* l3 t

/ n8 f( |0 l# E建立STMStudio工程,并将“.out”添加工程中。
+ I) y! k8 l5 \1 h7 J3 P$ i 03.jpg
; h+ t) [8 ^$ h" u+ C
  O9 S( B  h6 A  }! i0 \% }. m

' t1 q9 t+ M' p/ H. l电位器ADC采样函数“MC_ProgramRegularConversion(ADC_Channel_12,ADC_SampleTime_601Cycles5);”,以及读取ADC采样结果函数“MC_GetRegularConversionValue();”。
8 c6 b" C+ y$ F# u2 Z* ~此处有重点,将右侧代码照着敲一遍,改巴改巴 5 l) K7 g) H, K$ T( f# y
04.jpg . V+ a( D+ X# r/ U/ M  |

. y; ]. w* m0 I: X3 `
5 u3 X4 d& J9 ^; W' \

" D; l! W2 P& w  C( [. h+ X7 |) K
9 u2 }: M* ^' ^! T
STMStudio的VarViewer窗口中观察波形变化。5 _! c: B( m8 b' j: g
05.jpg
& `- Y3 o2 z3 h$ _
# r/ u1 R+ x& @6 a& ?
% O! K) W% c+ K4 P; Z
代码改起:2 X- @" `' i) Y9 \( R2 L
本贴代码在上一贴基础上更改。0 R1 r, i* \3 E) i0 j5 f3 Q7 j
【STM32电机培训】——5、任务3电机状态切换、正反转
3 Y- P, z! z- c$ u; J4 Zhttps://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=617456&fromuid=307297+ W/ s# I4 V5 L, q8 j
(出处: 意法半导体STM32/STM8技术社区)$ d4 Y7 m9 ^0 A5 p% q/ u% q
5 W& A4 C8 X* S1 Y1 e- v& I
; P7 Q; h; n* K/ V

  }8 U  p: [: C搜索找到头文件“std_hal_missing_define.h”,将第4行的“#if 0”,改为“#if 1”。或者自己添加“ADC_Channel_12”和“ADC_SampleTime_601Cycles5”相关宏定义。
, L  A+ }8 S1 k7 C5 g 11.jpg 8 c. d: `4 K3 Y2 u! c
+ `0 L5 |. M; ~6 \" g
  `  U6 f7 X+ T- Y# c1 Z6 o7 r0 ?
修改头文件“std_hal_missing_define.h”的目的,就是想使用这两个宏定义。或者还有其它隐藏的宏定义,反正修改、添加一下,一劳永逸。! u0 Q  O& f5 G* C# c
12.jpg
. ?" S' ?) A# J: U* B, Y
) U8 C6 V1 c  i1 |

8 p5 u4 i8 x" Q% i, h- u工程主文件“main.c”中,添加相关头文件,并添加相关变量定义、宏定义。这里“MAX_TUNING_IQ”、“MIN_TUNING_IQREF”分别为2800、1000是实验得出来的。转矩太小电机低速会停机,1000是最低维持电机转动的转矩参数;2800是ADC值接近满量程时,电机才达到最大转速的转矩参数。
, G* [; U& W7 Z) u$ S' |' _ 13.jpg
3 v' |" O2 Y# c6 Z9 M6 z0 R1 H! Z, h; D& c- a7 T
/ Z6 t; j8 _$ n6 d- a# H8 a8 p( s
添加几个外部变量声明和函数声明
6 ~! W, P) o  d+ x: f, { 14.jpg
% {0 e$ G, o! B# p4 W3 {; d
' X! t: }* c, ^% M: j/ |. N- r
' Z" D* ]; e1 L
主循环中,只执行一条“ Open_Task();”函数,此函数便是照着培训资料码好的代码。
4 F6 t( B! p) Z0 S% H 15.jpg
6 P+ k4 u; E2 ^5 B. R; D: i0 \) ~. y* T

0 @8 X: R8 D  e3 o' [. M“ Open_Task()”中“Tuning_Iqref”增加了1000的偏置,与“MIN_TUNING_IQREF”差不多是一个意思。, y5 t' H; k: g8 E) S
16.jpg ! K3 z: t5 w; j8 t8 ~) F/ W# r9 |3 B
' u: G* L4 i) L- Y' Z3 ]
, _! a2 d% V% A1 y$ D6 a4 F) ^
复制出“ Open_Task()”源码供参考。(如果嫌麻烦的话,直接下载贴子最后的打包附件)
8 z/ R+ ~$ ?! f1 Q" _: C" N$ {
  1. void Open_Task(void)
    7 \& x$ Y3 q9 H
  2. {
    1 z! H- u7 f5 Y& S! @, @
  3.   pMctHdl = GetMCI(M1);. p8 A! Y$ O5 I8 @/ Z
  4.   4 y" x1 `( ~# k% t; J5 c4 R7 [
  5.   /* Do regular adc convert */
    5 ~& c8 o9 B8 x5 w, F6 L
  6.   if (MC_GetRegularConversionState() == UDRC_STATE_IDLE)
    : B- |1 M( G8 n
  7.   {9 ?3 |7 U7 l0 ?  @% w4 E
  8.     MC_ProgramRegularConversion(ADC_Channel_12,ADC_SampleTime_601Cycles5);3 _" k" c4 I/ a* ~! c3 z- E% D) c! s
  9.   }
    & J0 ^5 u* T- R! r3 h
  10.   else if (MC_GetRegularConversionState() == UDRC_STATE_EOC)
    - A9 j+ v% V! S. C0 i% }
  11.   {/ l+ P0 ~7 G, M* P0 J0 I
  12.     /* Get ADC value */6 L3 C; d4 V+ ~3 ]
  13.     Tuning_ACD = MC_GetRegularConversionValue();
    5 P9 G% t9 T8 q. |4 S
  14.   }
    9 K% @9 b! Q& `$ \; e9 U. n/ J
  15. 1 N& X  x" @, }, ]  f3 E
  16.   if (Delay_Count == 0)
    6 l) E: b+ p" P. H! R2 ^/ i  @
  17.   {# A$ I$ b: D* J6 j3 i+ _
  18.      Delay_Count = HAL_GetTick();% d4 e. ]) U; _
  19.   }6 H! C* S( W( D
  20.   else if (HAL_GetTick() > (Delay_Count + 1))
    0 y: e. d9 @6 x
  21.   {
    7 t3 X: d3 `9 h; z5 i
  22.     Delay_Count = 0;
    ; ]) \5 G0 G8 s. I
  23.     2 R' m1 |1 S- h9 r* R- j
  24.     /* Get new Iqref */: T7 E3 @2 ^; B5 S
  25.     //Tuning_Iqref = (Tuning_ACD + 1) * MAX_TUNING_IQ / 65536;
    3 `7 n0 h3 j3 g0 i9 u
  26.     Tuning_Iqref = Tuning_ACD* MAX_TUNING_IQ / 65536 + 1000;
    4 g8 Q4 g1 ]& g8 t$ k
  27.     if (Tuning_Iqref < MIN_TUNING_IQREF)
    5 u# [8 l3 E3 V: E# @3 i1 H
  28.     {% h- h1 h  j! l* K. U1 L, p7 p
  29.       Tuning_Iqref = MIN_TUNING_IQREF;
    0 s/ P, R1 V  u! k% k( _
  30.     }# Y4 `6 ?/ o5 Z: o1 I" \
  31.     2 A4 P+ S0 O. g7 C  O
  32.     /* Set new Iqref ramp */  C1 X5 }) Z; }
  33.     MC_ProgramTorqueRampMotor1(Tuning_Iqref,1000);
    9 ?; t; l7 P3 _' R) }5 S
  34.     MC_StartMotor1();  ( w: T, K* a; x+ a& }+ h& G6 G
  35.   }3 N1 }% r/ I; U  X0 Q* l
  36. }
复制代码
; h4 o+ V9 j1 o  |, |: {$ a

& Z/ U) m* y: ~6 }2 H9 z( a2 C
  W! O. C  ]2 m! E, e( ~% j8 x
编译IAR工程。下载固件到开发套件中。' K2 ]9 T" b  \0 `
& s) f9 |3 s4 q% J& E; [& Q1 O

6 h$ s  U0 z; R打开“Workbench”界面,并与目标板套件连接。
# U% ]4 ]. p5 l$ z9 n 21.jpg
, k' G( z! Z! k' j" S. F2 y9 M: X" L4 Z0 R) d; }. l
“监控”窗口下,在打开“Plotter”绘图窗口。
" O$ H2 t4 m% V0 a* X 22.jpg ) E! i) ~0 Z5 {/ j! }
1 W) a; b5 H7 B- i

5 @9 X# A2 G1 F电脑安装,并打开软件“STMStudio”。5 A5 g5 W! P9 w- w" @/ l
23.jpg
2 u5 P* B8 r0 E4 l7 r" q4 X$ f) t* `/ ^# L# B

0 R, P" p4 u/ S& k0 h0 B将本实验IAR生成的.out,导入到“STMStudio”工程,并且添加监测变量到两个“VarViewer”窗口。为什么用两个窗口,因为ADC有采样值变化与转矩不在同一范围,如果在同一窗口,一个波形幅度太小。
& P% ?1 l/ V4 x  Q0 E" F 24.jpg 4 }. a. u% e- n% Q& f2 N# \3 K* I

2 T, L& w; W; q" c# d$ m

1 L: @. O8 v$ L; @; d: C运行程序后,在“Workbench”“Plotter”绘图窗口观测电机速度,转到电位器,电机速度变化,相应波形显示有变化。8 H0 `" C+ c- [
25.jpg 8 X/ q! F# u+ `, E1 e: |2 f
3 m3 c3 G( d3 u. ^2 k
7 t' y' t. b) I  H
同时在“STMStudio”的窗口中也将观察到如下图变化波形。
' K+ t8 o3 Z4 h! k8 c4 u8 o  E 26.jpg ; A/ a1 g1 d: L" Q: m3 u: l
. q+ c3 @9 J) o8 |  S+ {

5 T9 S! l. Z6 b* m) G& }至此,完成了开放性实验的转矩控制电机,并在“STMStudio”观察ADC、转矩任务。(之后,重开贴,整理一下“STMStudio”使用,其中会有一个小贴士分享。: \  e8 g! l! F7 t# S& j# e' W
: Y3 `/ i: y" ?  ^

0 p: s7 X6 a1 p按照惯例,工程附上:
9 [/ \1 C6 j& Q: z" |( S6 z1 L5 O6 [9 |1 o8 ~. N) l. u- h4 v" L5 q
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 手机版