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

SimpleFOC移植STM32(二)—— 开环控制

[复制链接]
攻城狮Melo 发布时间:2022-11-8 11:39
注意事项
, V! @7 K* |. h0 v1、电机的三根线可以任意接在驱动器的ABC三相上,不用区分;
7 Y7 U7 g% ^. O2、开环控制最好选择Ω级的电机,尽量不要用mΩ级的航模电机,容易烧MOS和电机。开环控制在实际中也就启动时用用,这不是电机控制的一个常态。% j+ S. d% G- Q, Y
3、电机控制要尽快操作,不要停留时间太久,时刻注意电机和驱动器的发热情况,一旦过热立即断电。' g" A7 v+ X) W9 t+ m

% e: z; k6 M1 t7 s4 D0 O$ b: G/ C一、硬件介绍
/ K0 e$ S9 g2 I  h0 p4 |/ Z5 C: a" B, o本节实验适合运行在SimpleMotor和SimpleFOCShield V2.0.3上。
& \' d" ~1 |" }) ]3 Q8 M8 O# ]) U3 B2 M
1.1、硬件准备  s- `; z- r- R/ C
1.1.1、SimpleMotor方案
- a" X' Y( f/ L. ]. X9 f4 c- F5 E( z2 N% `4 {. V; q
`TPRGRNREG3`MG8[@C~HM$N.png 2 Q( G# R& V1 H  D+ c( q- }4 c3 z& a
4d3a9963acf24288a71785accfd8db52.png 6 O" @. {) y6 q; r8 r/ `6 q

$ E: `8 B1 [* c2 k$ S# [, L) W# a带编码器云台电机可以是AS5600,也可以是TLE5012B。# i3 t  F3 q7 X: g, w

7 h$ g9 {5 H0 u4 z. D( k1.1.2、SimpleFOCShield V2.0.3方案
8 [! u% S3 j1 p1 A/ r! M9 m+ o
* O! e& o3 `% E/ H$ \9 d, ] 1ZFBQQXPC0{XRAJJY1[XHA6.png
- F3 Y$ M5 q7 F* X2 Z' Q6 o# p$ e% U6 [
3d4b28413d40496c9823401f7f33e06a.png
4 p6 Z, x" K% r! U
  W6 A6 O$ E+ m' f7 D  ~带编码器云台电机可以是AS5600,也可以是TLE5012B。: P! @7 J7 e3 ~; q  y9 }0 b3 J

, C$ f: @( w) P4 u# i! n1.2、硬件连接
! m7 V) I" @8 X1.2.1、原理图7 P& E4 z& J7 p: r

$ b7 z% y+ \9 D: L: b 4963efcf2fb74c5ab1d1a8062d26b1d6.png
- r# n! M/ P% |5 N8 [6 H7 s4 @' m# {; z) C
1.2.2、SimpleMotor接线
% C# F, _% ]8 w6 e
1 p* p. O  V; E1 c) a6 g fa2846d497664ef08ef85e9ca8d2a79a.png ! N! V2 w1 v4 j
, @$ ?. Q5 B$ d3 u
1.2.3、STM32接线
- S9 v2 h9 \6 d4 L6 U: b对于SimpleFOCShield V2.0.3,需要杜邦线连接主板和驱动板,记得共地。
' B! Q0 r9 K- ^* E- `
9 ?* X) j0 r& n6 r& m2 K( Z4 A7 G
# \" Z6 f" e. T0 w5 f! N3 G/ x$ I# A. W
对照 Shield V2.0.3 的原理图:
/ q( i  E. R7 o6 S6 B. w" O
5 L& R7 G/ N& Y0 G' X/ `2 V8 I (~EHW`AIU0(N9KJ1@4VPE2X.png
$ m9 e/ t+ S; H8 t) |" O  n+ h$ z, A9 A5 {* I* i
12a6ea7675fc453a8afa0a9719fb26ac.png
+ K/ F! b: Q+ S
6 D: g4 Q+ G" y+ j. Z注意事项:
$ p+ G: _, {5 ^: C; K①、无刷电机的三根相线不用区分顺序,任意接在端子上即可,调整其中任意两根电机反转。
- r3 w4 m9 P/ v9 Q& z, Z  A+ r②、12V先不要上电,开环控制电机会发热,上电时间过久容易烧坏。最好等到程序编译上传后再上电,上电尽快操作。
- m- {. C5 ~6 C$ e( f③、最好使用大电阻的云台电机(比如10Ω),如果使用mΩ级的航模电机,操作不当,容易烧毁驱动器MOS和电机。
! a8 _3 M' p5 m- P# B
, U  h, y$ D2 B! V. n. [& i
1 Y& A; k# n3 ?+ @二、控制原理
* f' X0 e( h: D- G# |0 m7 H) A5 q4 T2.1、SVPWM

/ S! f/ n8 J6 u# [# i5 m3 B8 H8 Q- X; i6 e
ac033e7f101f4ebabc95fd1f6bb8eeca.png
( `+ ^, d* H, H3 L- W  H4 L% n5 F( r4 y; f5 K
  Uq为交轴,Ud为直轴,角度angle_e1是电机的电角度。* E; q# E: W, V* @
  一般应用直接设置Ud=0,通过控制Uq来控制磁场大小,控制angle来控制磁场方向;# S( ?, `* K# i% {
  开环控制中,直接设置Uq = voltage_limit,按照固定的速度递增angle就是速度模式;递增angle到设定值就是角度模式。: M& e' `  j: k
  闭环控制中,angle来自编码器,根据编码器计算实际速度和位置,如果速度大于设定值,PID调小Uq降低速度,如果速度小于设定值,程序调大Uq增加速度。
! l$ r3 {( H# X8 B- H% G/ m) X
* r! l  J0 e, U  D0 D; _" D' n2.2、极对数* w0 a$ T& R, S* m
  无刷电机转子中磁铁的对数就是极对数。5 I- l) Z) c$ E  K3 k  F. j" S

9 }6 q8 o( P1 g7 w6 f( [* J2 L dbe2a11354934a7997f09d067f055b86.png
% L3 p1 |. c4 i
, I' S& B5 d) p6 A/ a5 p  电机转子转一圈,称为360°(或者叫2Pi)机械角度,转子转过一对磁极,称为360°电角度。
; b! }  y7 z( S6 W" t4 M% w  如上图的7对极,电机需要转7X360电角度 = 360机械角度。SVPWM控制的angle为电角度,而编码器读到的是机械角度,所以需要把机械角度转为SVPWM可用的电角度。; b8 w. |6 L" Y9 h- m  S
/ J( c4 z( \6 W( Z+ k" Q

1 l. j  z8 {4 ~: }! I- I# R2.3、开环控制+ z6 [5 j( ]& N5 t, z- v3 z
  SVPWM+设定的角度angle = 开环控制,5 v( Y7 ?4 M( N; M- R

: |# d, W/ L. d0 ^7 y  \ af0bd6ba50ea428fa6a5c24fa5570799.png
: _. ?7 v# h! z: k
! ^/ l6 ~+ P8 N2 O( `, {' c三、软件操作和程序下载
7 S# y0 }) f- e. W+ T3.1、Keil编译生成hex文件

0 [0 V! E( t8 `. V+ ~. W2 I: W$ d选择生成hex文件。如果用STlink下载可忽略此步。
, C, x  C* j3 }( s
7 Q& R6 s% f8 L1 ^7 T4 U; }9 K! M) y 99847a5912e94847a529611bbf84622e.png
& h+ l) K+ A) B5 a! ^3 y
, \9 c+ V9 e& s0 m) w9 U3.2、FlyMcu下载; A# F7 P$ w9 Q
如果用STlink下载可忽略此步。
6 x: P! C9 |1 w( {5 Z2 S) r1 L* q; X5 I* o3 J0 Y5 A
9b712c7f6498401ea65c1247bb2e678a.png " v9 `1 d- i& B  G' `) b
- h0 q1 ^* n( d2 u9 S: Q" I( I
3.3、SimpleMotor准备
) z6 F1 i) [2 E1 [7 W: [3 O7 U+ Q: p) G9 ^1 b9 p
0b55ca30f19a4a0f9c2624fceadaeabd.png
7 t3 b( I0 }, c0 W" v* P6 v# j
" C$ k1 p7 [+ x$ @- 如果用STlink下载,SWCLK接驱动板的SDK、SWDIO接驱动板的SWD,GND接GND。
7 a  }* k- P  f( a, t2 {$ D& P, v4 I$ e$ n+ h! _: T, f
- 如果用串口下载:
4 @* d- {0 {  o& F1 k! z    1、USB转串口的TXD接驱动板的RX1,USB转串口的RXD接驱动板的TX1,GND接GND,
( m6 X; V. o& W( E6 Q    2、按住Boot键不松手,按下RST键松开,然后再松开Boot键,单片机进入Boot模式,
# L' H4 L' ^3 X, k: n" r4 ^! p        (如果你手头的驱动板Boot键是跳线帽,短接跳线帽相当于按住Boot键)6 M( ?# C' [6 p- q+ l& S# O
    3、点击FlyMcu的开始编程,等待下载完成。
& y- L9 n$ _+ F8 i7 a" c) C4 ?3 k; q# Y" b, _/ S: O
四、程序演示
( O8 Y3 e/ l* Y/ O9 m7 ^开环控制尽快操作,注意电机发热情况,发热严重要立即断电
7 A4 `$ D2 W/ g" o9 K9 I% S2 }1 ?, A1、电机抖动转不起来把voltage_limit设置的大一点,  H2 E  X' K" u3 n/ a0 r3 s
2、电机发热严重的把voltage_limit设置的小一点,
* W7 _% p" c. p6 D3、电机能转就表示一切正常,可以学**一章了,开环不是电机控制的常态,不要纠结太久。20211224; H4 ~5 o2 t8 N" G5 a7 e: k

. i7 _+ f  R, w# s* }. o4.1、开环速度控制5 a7 D" R! F' M+ k
4.1.1、打开工程5 z: a, G+ ?- a# g2 ?
) Y7 B" H" \: S9 H- \
2c3928ca41d6435886bfecd14aafb996.png
: e. }$ L+ K& b9 U0 j. i4 Y
5 _; k5 W$ G) K1 Y4.1.2、修改参数7 a! K* W  s4 E" p" M; d; _5 f
- 选择controller=Type_velocity_openloop;
6 `2 U$ y7 R. p6 x9 A- 电源电压和极对数根据实际情况设置;电源电压增加voltage_limit也要相应的增大
) ^5 W) p/ a; u2 ~% F* ]; q# u1 f! Y- voltage_limit在不了解电机性能的情况下从小逐渐增加,每次修改后注意工作电流和电机发热;
. f5 c* ~1 p8 k$ O2 H6 a- 如果电机功率较小而voltage_limit偏小,电机会转不动;
# m/ T5 e. ?6 O5 j5 N- 如果电机功率较大而voltage_limit偏大,电机会发热严重。
3 N, c% h5 q$ {" s! F
. L5 c' j& G* i$ s$ @7 t6 b4.1.3、编译下载) F% C4 @% m0 L
  FlyMcu通过串口下载或者STlink通过SWD接口下载。+ a* ]: w7 b: D( x) i# Q5 Z
  串口下载需先进入Boot模式,下载完以后按复位键运行。/ J& h) N# T& T( g" J
6 [& `2 B8 R8 G& e' S( p9 e
c3cb3c5c470f4dd98e86096985504f61.png
: W/ D1 v; B9 x9 m% P  l5 J/ l% w8 l/ h+ j4 R/ Q
4.1.4、串口发送指令
: f& z9 O- g( `% _, x  常用的串口调试软件,在发送区敲回车,对应的16进制数据为0D 0A,也就是回车换行;Arduino IDE自带的串口监视器,输入指令点发送,只有16进制的0A。所以不能用Arduino IDE的软件给当前代码发送指令。; y! E6 U$ o7 D  t9 e6 z
  发送指令,从低速开始逐渐增加,速度设置过快电机容易失步变成振动。速度单位为rad/s,6.28表示一圈每秒。
3 o5 u; P8 `! G) F
4 c! x2 a. _% s a2d54e4b47f14111b54bbabdb6bdb27f.png
0 d2 w$ k: p' ]  n$ r0 S
7 u% `* @* Q$ I0 j
: Y+ R0 c! N) A2 w* X" J4.2、开环位置控制& F9 b; @3 |( y& I- j* J; C
4.2.1、打开工程
$ J. q# t- U4 v. o+ s  E9 {9 A/ m- p  和开环速度为同一个工程, @5 r% g7 R/ S. p. r1 @) W. y! P

" g5 i7 J6 E' H0 Z4 O/ B/ w 0172ff08623e4b5abbe662b89fe89c4f.png
1 }( j& t- L2 k& m( x& H. K
8 R, V; f+ Q7 I8 n& T7 z- W4.1.2、修改参数
/ G+ @' `' L! J7 k2 G4 y  选择controller=Type_angle_openloop;7 @- T& o  F7 _! P" R  O; ?: X, X
9 ]& w7 f( u+ B% |" N0 w& y
4.1.3、编译下载
1 V* P+ a& _: X8 M) [& K0 U4.1.4、串口发送指令. K1 [7 e( i: }. `1 t
  设定目标值,单位为rad,一圈=6.28rad。
) A, U* a% f7 F; i: {3 a- s* N1 i- p0 \: N) o# [
0ed58000d3974ef18a3c3acba7db8422.png
( [8 A+ M1 U, d* A$ ^
9 B$ }4 w+ |( S) v————————————————' L, w: o6 R( F" X1 {
版权声明:loop222
3 q7 X- d6 R8 Q' J5 N! _# e" V9 a8 }  K" c3 T
9 S- U: n6 a8 w3 h8 |( E5 Z
2b0ab4f2332b419a9d9400e1b348a12f.png
赞 收藏 评论0 发布时间:2022-11-8 11:39

举报

0个回答

所属标签

相似技术帖

官网相关资源

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