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

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

[复制链接]
攻城狮Melo 发布时间:2022-11-8 11:39
注意事项* T% h& b3 g# r) i0 G) ]
1、电机的三根线可以任意接在驱动器的ABC三相上,不用区分;
7 p% u" {" s8 M2、开环控制最好选择Ω级的电机,尽量不要用mΩ级的航模电机,容易烧MOS和电机。开环控制在实际中也就启动时用用,这不是电机控制的一个常态。
# n# J4 |( v) w4 D# O3、电机控制要尽快操作,不要停留时间太久,时刻注意电机和驱动器的发热情况,一旦过热立即断电。* r$ B8 c" o4 N$ l

- K9 \) |; c' i0 _! R一、硬件介绍
' \; o9 i. w' I$ [# a) x本节实验适合运行在SimpleMotor和SimpleFOCShield V2.0.3上。- q; o) ?- F  t+ d2 S
" T$ a6 x3 k# e, |4 k$ m0 J
1.1、硬件准备
, j, n" L+ i  k2 E1.1.1、SimpleMotor方案
. C1 D3 o1 K9 u1 ^. {! E3 J+ S
, I' ?# z* ^2 L$ j `TPRGRNREG3`MG8[@C~HM$N.png 9 k% [+ J' }) M
4d3a9963acf24288a71785accfd8db52.png
9 o9 O9 a+ X( B9 n
- `; U8 h0 B6 X( G9 h! U带编码器云台电机可以是AS5600,也可以是TLE5012B。1 D" v+ @/ W% h0 a$ d" b8 ]
# s5 s, t' Y* b* h- @
1.1.2、SimpleFOCShield V2.0.3方案
/ n2 E% C- u6 J; b8 R
$ M1 p2 R* d# d/ Z! j 1ZFBQQXPC0{XRAJJY1[XHA6.png
' F( E9 @" s' Y; A  T& M* ]
# w+ `  ~. U6 _. b 3d4b28413d40496c9823401f7f33e06a.png
# b) W! C( h, i0 k3 E5 P. I) {: U. I9 ~1 ?( u: z) @
带编码器云台电机可以是AS5600,也可以是TLE5012B。
" h0 Y  T7 i3 z# i; r6 |  v/ ~( B7 R! M" d6 j; ~! ~( z! A
1.2、硬件连接" t: m) S& |; J; Z
1.2.1、原理图
& y; Z" u+ u# @' D% ]: e
( p$ s/ f# B+ j9 w2 n; x$ P 4963efcf2fb74c5ab1d1a8062d26b1d6.png
6 }( R" R- ]' ~, X
+ l7 p: Q( K; D9 b1.2.2、SimpleMotor接线
6 g$ l$ T4 {. E! X( P
# v8 R7 s* r" k' j/ T  R' b2 ? fa2846d497664ef08ef85e9ca8d2a79a.png
3 o2 I* I1 f9 c, t( K
, v- O4 K; i0 [. j1.2.3、STM32接线4 T' [0 o$ U% a0 c! E+ d1 v/ ^7 K
对于SimpleFOCShield V2.0.3,需要杜邦线连接主板和驱动板,记得共地。
- r- k: G: u2 y. z8 U( Z# `5 P3 _; j0 w/ b# K! |% D; ?& j7 P1 @1 u

# D. w$ R8 ~! k
( B: I' ?+ I$ U0 B& B对照 Shield V2.0.3 的原理图:7 F/ |/ b3 U% D7 h* s. }

( @) s% P4 y$ ~7 O! g4 O5 M (~EHW`AIU0(N9KJ1@4VPE2X.png ( V4 D, q$ E5 L
" a: \4 d' Y" r6 S4 p( _
12a6ea7675fc453a8afa0a9719fb26ac.png # l; ]! S1 ?9 b& f) J
8 K1 K) P: A) L# i  e- @. ~
注意事项:' N$ X8 \* Z  t/ y8 b/ T
①、无刷电机的三根相线不用区分顺序,任意接在端子上即可,调整其中任意两根电机反转。6 k) v" A, V1 L4 T! A
②、12V先不要上电,开环控制电机会发热,上电时间过久容易烧坏。最好等到程序编译上传后再上电,上电尽快操作。( k  t" g( ~9 J* ^1 G/ s/ ^
③、最好使用大电阻的云台电机(比如10Ω),如果使用mΩ级的航模电机,操作不当,容易烧毁驱动器MOS和电机。( y- g  z% \; Y/ N8 F9 R- ~* Z$ q

1 V8 ~0 t7 J! B% V7 }% F
0 l& F' k  |8 F6 ~( y二、控制原理
" U" }/ I5 Q4 i" e9 J2.1、SVPWM
  d9 H) G, a( d2 {% R  p# _4 p

/ k" r) ~! q" V ac033e7f101f4ebabc95fd1f6bb8eeca.png " V+ l* G, f: E# u6 U

) _: e5 M) r* E0 I  j4 v' H  Uq为交轴,Ud为直轴,角度angle_e1是电机的电角度。
; {7 o/ a' G5 N- H  一般应用直接设置Ud=0,通过控制Uq来控制磁场大小,控制angle来控制磁场方向;
8 ]0 @  z4 y8 G% K8 I# b  开环控制中,直接设置Uq = voltage_limit,按照固定的速度递增angle就是速度模式;递增angle到设定值就是角度模式。4 L: l! p" Y% ?- e
  闭环控制中,angle来自编码器,根据编码器计算实际速度和位置,如果速度大于设定值,PID调小Uq降低速度,如果速度小于设定值,程序调大Uq增加速度。
8 R$ K4 f8 z% ]; o5 j( ~1 w
& Q0 p$ `) |& ]2.2、极对数
) q+ Z) X' C+ o+ x( T  无刷电机转子中磁铁的对数就是极对数。1 M3 d- V3 p1 ~$ a  o* s

4 T3 E+ x0 \6 p5 d. G6 ] dbe2a11354934a7997f09d067f055b86.png
( s! h9 v& b, U+ c  E2 @* N3 C! e9 M# a2 ]/ D1 P
  电机转子转一圈,称为360°(或者叫2Pi)机械角度,转子转过一对磁极,称为360°电角度。
3 F% Z! W4 W% |  如上图的7对极,电机需要转7X360电角度 = 360机械角度。SVPWM控制的angle为电角度,而编码器读到的是机械角度,所以需要把机械角度转为SVPWM可用的电角度。
! s- t6 V- Q+ u  i& d  k
7 j8 J9 ^( z. X9 d( j' k& J* T8 r. t0 h- w
2.3、开环控制
; b' g9 a: i" c% {% \! ]. P% {# x  SVPWM+设定的角度angle = 开环控制,
4 y/ c& X: k: \/ \9 \/ x
5 R4 u2 v/ q4 Y+ |4 H, z# f5 M af0bd6ba50ea428fa6a5c24fa5570799.png 5 I2 J5 A  i1 B. w
: A+ A9 Z. N. j& g7 q7 S" q: I
三、软件操作和程序下载
: Q* V- n7 c# _# n: [) k3.1、Keil编译生成hex文件
. e4 S+ _& {$ \6 P, e. z3 S
选择生成hex文件。如果用STlink下载可忽略此步。
' n5 x% z; I. v3 v5 i6 D6 X% i5 R0 }  M5 u" ]" z% v
99847a5912e94847a529611bbf84622e.png
/ b8 @4 W! D1 \  y+ q% ~2 t( L" ]4 K0 e6 ?
3.2、FlyMcu下载
7 V- A# B  {+ C; u如果用STlink下载可忽略此步。2 O. g/ n) ~7 }9 w

9 G0 h. u/ u+ C1 x% F) d5 i! J 9b712c7f6498401ea65c1247bb2e678a.png $ A: [% o! n& ^2 Q9 z+ |
2 L6 ~# U$ g# {* Z; e
3.3、SimpleMotor准备
, c* ^; J3 z9 \. {" T8 O  v8 }  a- h
0b55ca30f19a4a0f9c2624fceadaeabd.png 4 v7 V& h. W% C/ X

, `$ g6 h, j" c( q( V. c- 如果用STlink下载,SWCLK接驱动板的SDK、SWDIO接驱动板的SWD,GND接GND。0 E$ ]6 v& z! _( Y

1 x0 S  q" L2 `7 C# B$ w- 如果用串口下载:
, _: Z$ V! @! v$ }* o9 ^* a    1、USB转串口的TXD接驱动板的RX1,USB转串口的RXD接驱动板的TX1,GND接GND,
/ M+ T3 v! q- a1 C- e4 I    2、按住Boot键不松手,按下RST键松开,然后再松开Boot键,单片机进入Boot模式,
  ?' d$ ^- B8 F! `- p* G' ]7 S        (如果你手头的驱动板Boot键是跳线帽,短接跳线帽相当于按住Boot键)  |2 \' a6 _2 q0 _
    3、点击FlyMcu的开始编程,等待下载完成。9 }8 K9 I6 Z- w3 J
7 M! z  o) i0 H7 i1 x' k( w5 w: P
四、程序演示
: P' f* G$ n+ K开环控制尽快操作,注意电机发热情况,发热严重要立即断电
6 d2 h) W; C2 e0 e" M. g+ n: k1、电机抖动转不起来把voltage_limit设置的大一点,9 {% z- v) v5 G& n0 O
2、电机发热严重的把voltage_limit设置的小一点,
. r% _9 [, @/ W3 h- b8 C' C: S3、电机能转就表示一切正常,可以学**一章了,开环不是电机控制的常态,不要纠结太久。20211224. ^9 l" |( @- `+ Q5 H9 S! P
5 q; d8 r2 ^: H3 w
4.1、开环速度控制0 r7 g4 k4 p0 O. d
4.1.1、打开工程
# s) o; o  b) s( |* }6 v: u3 d' N% i! [) [* N# r9 e
2c3928ca41d6435886bfecd14aafb996.png
+ B6 u0 L" r  |9 X# C' ]$ f: U0 a+ i( _8 l  Y: C
4.1.2、修改参数. b/ J9 Q0 f& j- I
- 选择controller=Type_velocity_openloop;, N+ ]. l0 ?; h. t! H: z( V/ a
- 电源电压和极对数根据实际情况设置;电源电压增加voltage_limit也要相应的增大$ k$ x  O! v, Q2 x6 x7 i' s! A" ~
- voltage_limit在不了解电机性能的情况下从小逐渐增加,每次修改后注意工作电流和电机发热;0 O/ I0 m% H2 ], I, B
- 如果电机功率较小而voltage_limit偏小,电机会转不动;
* C$ B2 G5 B9 I* l: y- 如果电机功率较大而voltage_limit偏大,电机会发热严重。# `: @+ K, P/ N4 k; M% ~9 k/ w
' Y1 Q- K# I' Y
4.1.3、编译下载8 I/ M) G, P4 x+ H
  FlyMcu通过串口下载或者STlink通过SWD接口下载。* \4 P' }2 c/ a. B+ O: |: o
  串口下载需先进入Boot模式,下载完以后按复位键运行。) i# X* c0 Y9 T2 L9 \& w/ M
/ b, m+ k+ O: c4 G8 c
c3cb3c5c470f4dd98e86096985504f61.png
* l" i% x- M5 q$ ]
- Z' p8 x4 j) |, k5 z, E/ [4.1.4、串口发送指令
0 C2 [5 D3 p0 ^* P  常用的串口调试软件,在发送区敲回车,对应的16进制数据为0D 0A,也就是回车换行;Arduino IDE自带的串口监视器,输入指令点发送,只有16进制的0A。所以不能用Arduino IDE的软件给当前代码发送指令。
  a/ U; J$ d* h: J0 l* O; B5 J  发送指令,从低速开始逐渐增加,速度设置过快电机容易失步变成振动。速度单位为rad/s,6.28表示一圈每秒。) I- N. ^7 Q7 q2 p/ _# x( D) J. \; m

# k9 k# S& ]& G) h5 v, H+ P5 N' ] a2d54e4b47f14111b54bbabdb6bdb27f.png 6 p4 n+ y' y+ B  p/ x( E3 f" z

+ U0 m, [; Q  @, h5 y8 u
$ L1 C( \, p6 y/ Q4.2、开环位置控制
* R7 T, m) I5 G2 ^4.2.1、打开工程
1 r' X! u  c# h, P6 u  和开环速度为同一个工程1 S' i+ d  [, J6 ~$ W
) s5 `5 s7 M8 W" z. A% l1 E
0172ff08623e4b5abbe662b89fe89c4f.png
! [- u. x( L; \+ }7 ?8 H% l! ]3 k# N' T- Y: ]6 ?( h) Q, K6 l
4.1.2、修改参数
9 r; ?8 ^) Q2 v( ~2 ?2 [  h1 [' b  选择controller=Type_angle_openloop;% o0 X# G6 q/ D/ `- w8 \: t* r
  E# C) @! U! |! Q& ~5 P* o8 A
4.1.3、编译下载: v- c3 f" V; v3 G1 O( V+ v
4.1.4、串口发送指令
* w: P6 b9 V$ e% ~4 m; h% V  设定目标值,单位为rad,一圈=6.28rad。
& `7 R) [7 P; z2 [. u9 p; j% [' w& I8 y
0ed58000d3974ef18a3c3acba7db8422.png , d) _1 M9 ]0 Z* i& m6 ^

& Q$ D" w0 |9 y2 a% S% _————————————————, B% V6 f5 X  r) _! |# m. }; G
版权声明:loop222& H* |3 b6 a6 m' U  c; [! T

4 k4 y, ^0 r* b1 |, W4 I6 _- C
+ t3 u3 g; k* ?9 G8 J: F9 K5 |
2b0ab4f2332b419a9d9400e1b348a12f.png
收藏 评论0 发布时间:2022-11-8 11:39

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版