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

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

[复制链接]
七哥 发布时间:2018-9-14 01:05
本帖最后由 toofree 于 2018-9-14 08:45 编辑
/ B5 ^, h: {3 s% F, ~* b$ M1 W' Z& T
【STM32电机培训】——6、任务4开放性实验转矩控制电机
/ z3 ~, H% b( [3 o5 Q  p2 {

8 q8 a" ]: B/ n. _任务目标:转矩控制电机,用STMStudio对变量进行监测,用ADC采样电位器电压,ADC采样值按比例间接控制电机转速。
- o8 t4 [3 Z2 J) q 01.jpg ) @9 D- W. }# ^! g) D
- X2 D9 s' C3 E$ @
9 R$ J- ?5 G6 U/ i8 h' C
按培训资料,使用转矩控制函数“MC_ProgramTorqueRampMotor1(Tuning_Iqref,1000);”,添加变量到STMStudio窗口
- @8 R8 s2 {0 L 02.jpg - D  h0 w* ?: u9 F; l: A: r
3 @4 a* z; p$ E# h1 Q' \6 s! ^  A6 o

" c' y' R8 e3 b6 N2 R6 n" G建立STMStudio工程,并将“.out”添加工程中。
( n) B  h' j0 C% J 03.jpg
4 w1 w1 R5 t9 U1 T# {8 E, Z1 x# m- z# s( Y% a4 p/ U2 ~7 A' d0 ~
+ ~; F' z+ N% _% x
电位器ADC采样函数“MC_ProgramRegularConversion(ADC_Channel_12,ADC_SampleTime_601Cycles5);”,以及读取ADC采样结果函数“MC_GetRegularConversionValue();”。1 S5 f) J3 ]" Y) u9 m% t
此处有重点,将右侧代码照着敲一遍,改巴改巴
  V* \+ D) `5 h; m 04.jpg 3 `3 D5 p1 U5 n) {: {& b# e

) z, Q3 D) @& {
& V) I5 A* k3 B) z- H: }

; H9 q- [1 s; `7 t* @) H" B3 F: s+ ?

0 |/ D7 ]4 m) Q& t1 @" S$ T在STMStudio的VarViewer窗口中观察波形变化。
' \+ A+ x8 T$ \4 D8 N 05.jpg
' F; R% r* P6 t+ ~) ~1 V. U% ]" \4 H5 G
" \- J( S6 [! h4 z$ I
代码改起:
% Z7 T5 i- F/ b9 @9 I5 f# \+ B, j本贴代码在上一贴基础上更改。, U2 f4 n) w& i. }% s+ o
【STM32电机培训】——5、任务3电机状态切换、正反转
: w+ {4 L4 p! d  }7 {* fhttps://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=617456&fromuid=3072970 M9 j: w- y2 T2 i  R
(出处: 意法半导体STM32/STM8技术社区)
/ G- t2 W" o# X" e
9 }' s! o  S8 F
1 }2 J8 _- J9 o2 F# P# @
% l& x9 _- g9 `
搜索找到头文件“std_hal_missing_define.h”,将第4行的“#if 0”,改为“#if 1”。或者自己添加“ADC_Channel_12”和“ADC_SampleTime_601Cycles5”相关宏定义。
) _& u' X- C+ T( j 11.jpg
6 R% v' x! g, `+ w4 j; {1 V7 [" V
1 ~. C4 [( W+ i4 M6 K" V3 z

" _% F3 f* m. N  o4 H: o7 B修改头文件“std_hal_missing_define.h”的目的,就是想使用这两个宏定义。或者还有其它隐藏的宏定义,反正修改、添加一下,一劳永逸。: Z3 P9 d8 z+ `% Y# g% W
12.jpg + M6 p% G, c: V

  V7 I, C1 M; [9 a, N$ e4 v( [1 Z

1 k% I. q3 ^5 q+ e" ?工程主文件“main.c”中,添加相关头文件,并添加相关变量定义、宏定义。这里“MAX_TUNING_IQ”、“MIN_TUNING_IQREF”分别为2800、1000是实验得出来的。转矩太小电机低速会停机,1000是最低维持电机转动的转矩参数;2800是ADC值接近满量程时,电机才达到最大转速的转矩参数。' u2 C, H. n4 Y# S3 Z4 y1 U2 s* Z
13.jpg
6 C+ Q4 {) C' Q% Q8 N1 T& V  e" g+ {* p

" o+ q" Y( J) ]  K) w# Y添加几个外部变量声明和函数声明
4 Q: l8 t6 p0 l" H 14.jpg
5 I0 E$ C4 s3 X5 r6 G9 ~% m& a8 e1 T- t+ s8 B2 i9 W7 f3 R5 J

- u, @/ h# C! o. D3 P3 I" ~3 m主循环中,只执行一条“ Open_Task();”函数,此函数便是照着培训资料码好的代码。  ?: m  l1 F7 ~- y' n( W
15.jpg
( J. S  i. O& d
* L& u7 G6 @+ G/ R0 L( n
/ Q( q1 u0 B2 @2 Y* k; N, |
“ Open_Task()”中“Tuning_Iqref”增加了1000的偏置,与“MIN_TUNING_IQREF”差不多是一个意思。5 K3 H6 u: M4 J- d) `
16.jpg   w, j: h- B" y5 U6 V; w

1 C9 V8 b0 N, {7 e3 p' f

  C4 |' t1 B0 \0 z/ [. p( h7 @复制出“ Open_Task()”源码供参考。(如果嫌麻烦的话,直接下载贴子最后的打包附件); Z  a. v8 z* D. Q
  1. void Open_Task(void)
    7 [2 s2 I5 H$ N6 u
  2. {3 I3 U: T$ n  f
  3.   pMctHdl = GetMCI(M1);
    ) g, l: q, |& _4 h
  4.   ! g% U, Y* _( o& Z2 |) o
  5.   /* Do regular adc convert */
    ; J$ c) H" ~! y
  6.   if (MC_GetRegularConversionState() == UDRC_STATE_IDLE)( ~5 Z/ k5 w3 M0 A
  7.   {
    4 p5 @/ r5 |% Q# k0 }4 m
  8.     MC_ProgramRegularConversion(ADC_Channel_12,ADC_SampleTime_601Cycles5);) [: i: F; W6 e) L: h* c& e
  9.   }
    " X* W& p0 w- U% M  T
  10.   else if (MC_GetRegularConversionState() == UDRC_STATE_EOC)
    2 K3 g1 ~5 K1 |4 d# l
  11.   {
    0 J- T+ s& J3 b
  12.     /* Get ADC value */- C4 |3 q3 F7 L6 M8 `
  13.     Tuning_ACD = MC_GetRegularConversionValue();
    5 h% |' R  e2 [: w2 Z% I
  14.   }
    % h; {- E% n# O8 {
  15. , d# i# C8 O& r+ h/ I; O4 b/ H
  16.   if (Delay_Count == 0)
    ; P- J8 f* F5 ~4 E
  17.   {# v4 ?: r: j4 G* d3 l! e
  18.      Delay_Count = HAL_GetTick();* R5 m" F7 t, D6 H% O- N7 P% z
  19.   }
    # p4 h. L0 h- \4 p; p; p4 n+ ~
  20.   else if (HAL_GetTick() > (Delay_Count + 1))
    4 ?1 W/ U+ q3 }& g4 J7 P
  21.   {: X, ^0 g& Z  A7 p1 d1 m
  22.     Delay_Count = 0;. H) A  [$ F  l( @! U
  23.     ; n2 e: c5 M5 H  i& D7 s# W: |/ c
  24.     /* Get new Iqref */
    % H+ r1 X/ I" S* P& J
  25.     //Tuning_Iqref = (Tuning_ACD + 1) * MAX_TUNING_IQ / 65536;3 ]: a% i0 B/ ]/ J- G1 f' X0 x  {
  26.     Tuning_Iqref = Tuning_ACD* MAX_TUNING_IQ / 65536 + 1000;
    4 c7 Z) H2 o' G
  27.     if (Tuning_Iqref < MIN_TUNING_IQREF); I6 g" ~- H' z+ E; g8 y, t( ^3 p
  28.     {
    . z$ y# k3 I+ t& g
  29.       Tuning_Iqref = MIN_TUNING_IQREF;# ]1 D" g1 {) ]
  30.     }6 J+ ~1 m4 V4 i+ H* j, F
  31.    
    6 Z$ r" g- l8 }6 M! N4 \
  32.     /* Set new Iqref ramp */8 Q3 }3 a5 F& q
  33.     MC_ProgramTorqueRampMotor1(Tuning_Iqref,1000);
    8 m$ O/ f* ]5 j  d; A  U) {
  34.     MC_StartMotor1();  8 h( t5 M, Z7 D4 R5 r* ~
  35.   }- m6 A6 D0 Y) ]% o
  36. }
复制代码
6 \; c# |% M  [& }  X3 N

; \& H; y0 M* ^7 X! B

+ z( s5 c- \  r, F+ {编译IAR工程。下载固件到开发套件中。
1 G5 h0 E; i: }5 n% T8 U1 f4 N0 \8 G# g5 |5 T- R

/ v3 _: T0 W, c8 `2 Q2 e打开“Workbench”界面,并与目标板套件连接。6 a8 t  Z- v& u1 G# x& T
21.jpg % M9 r1 M  P6 v! |/ L/ ^6 n( b8 D- _

  U8 U, v1 D; \$ d! @在“监控”窗口下,在打开“Plotter”绘图窗口。* m7 f4 _, B+ q: F+ B, M2 S
22.jpg
. c. @) I9 O5 ~# B1 o5 Y, U
7 g) Y4 Z/ M9 H! y, o. l

* S8 [: L9 |/ F$ C9 J电脑安装,并打开软件“STMStudio”。
0 p% n. F' Z9 y. N 23.jpg ) o. N( e4 ?, ^5 y

$ e" O  B/ {7 v+ L2 ]) t
, @: s5 @* M6 f, ?3 p* Z
将本实验IAR生成的.out,导入到“STMStudio”工程,并且添加监测变量到两个“VarViewer”窗口。为什么用两个窗口,因为ADC有采样值变化与转矩不在同一范围,如果在同一窗口,一个波形幅度太小。
8 P7 D1 f& q' }  D1 \9 ]9 W 24.jpg * x/ n1 I# z7 \
+ Y2 l8 Y* H9 Y8 o1 H0 Z
8 O3 ]1 [9 w6 x% o+ ^9 H# ]) p
运行程序后,在“Workbench”的“Plotter”绘图窗口观测电机速度,转到电位器,电机速度变化,相应波形显示有变化。
: e3 `' S. s8 i6 f3 g; t. e9 |' x 25.jpg
1 b9 q5 W+ J5 l& m* A$ ~2 k
3 P( n" ?7 E2 r  d* |
$ w  {% b1 d% n
同时在“STMStudio”的窗口中也将观察到如下图变化波形。
7 W- S1 u, B8 Y$ O/ t 26.jpg
" O7 Y% _# q( \% @# I! c8 t, M0 V/ G( t# ]
4 N: x: t1 k* ]* K( O( {
至此,完成了开放性实验的转矩控制电机,并在“STMStudio”观察ADC、转矩任务。(之后,重开贴,整理一下“STMStudio”使用,其中会有一个小贴士分享。)1 v$ ?" }$ N0 \% x
0 E% K& J5 ~: \. K4 y

$ c+ A/ y$ V3 i0 G" x: u按照惯例,工程附上:0 M/ v  T/ ?2 v6 ?1 X( v8 W/ s% Q- ^

8 l: v* X$ S; V$ l% B; }# x; M/ K 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 手机版