
注意事项* T% h& b3 g# r) i0 G) ] 1、电机的三根线可以任意接在驱动器的ABC三相上,不用区分; 2、开环控制最好选择Ω级的电机,尽量不要用mΩ级的航模电机,容易烧MOS和电机。开环控制在实际中也就启动时用用,这不是电机控制的一个常态。 3、电机控制要尽快操作,不要停留时间太久,时刻注意电机和驱动器的发热情况,一旦过热立即断电。* r$ B8 c" o4 N$ l 一、硬件介绍 本节实验适合运行在SimpleMotor和SimpleFOCShield V2.0.3上。- q; o) ?- F t+ d2 S " T$ a6 x3 k# e, |4 k$ m0 J 1.1、硬件准备 1.1.1、SimpleMotor方案 ![]() ![]() 带编码器云台电机可以是AS5600,也可以是TLE5012B。1 D" v+ @/ W% h0 a$ d" b8 ] # s5 s, t' Y* b* h- @ 1.1.2、SimpleFOCShield V2.0.3方案 ![]() ![]() 5 P. I) {: U. I9 ~1 ?( u: z) @ 带编码器云台电机可以是AS5600,也可以是TLE5012B。 ( B7 R! M" d6 j; ~! ~( z! A 1.2、硬件连接" t: m) S& |; J; Z 1.2.1、原理图 ![]() 1.2.2、SimpleMotor接线 ![]() 1.2.3、STM32接线4 T' [0 o$ U% a0 c! E+ d1 v/ ^7 K 对于SimpleFOCShield V2.0.3,需要杜邦线连接主板和驱动板,记得共地。 0 w/ b# K! |% D; ?& j7 P1 @1 u 对照 Shield V2.0.3 的原理图:7 F/ |/ b3 U% D7 h* s. } ![]() " a: \4 d' Y" r6 S4 p( _ ![]() 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 二、控制原理 2.1、SVPWM d9 H) G, a( d2 {% R p# _4 p ![]() Uq为交轴,Ud为直轴,角度angle_e1是电机的电角度。 一般应用直接设置Ud=0,通过控制Uq来控制磁场大小,控制angle来控制磁场方向; 开环控制中,直接设置Uq = voltage_limit,按照固定的速度递增angle就是速度模式;递增angle到设定值就是角度模式。4 L: l! p" Y% ?- e 闭环控制中,angle来自编码器,根据编码器计算实际速度和位置,如果速度大于设定值,PID调小Uq降低速度,如果速度小于设定值,程序调大Uq增加速度。 2.2、极对数 无刷电机转子中磁铁的对数就是极对数。1 M3 d- V3 p1 ~$ a o* s ![]() * N3 C! e9 M# a2 ]/ D1 P 电机转子转一圈,称为360°(或者叫2Pi)机械角度,转子转过一对磁极,称为360°电角度。 如上图的7对极,电机需要转7X360电角度 = 360机械角度。SVPWM控制的angle为电角度,而编码器读到的是机械角度,所以需要把机械角度转为SVPWM可用的电角度。 ' k& J* T8 r. t0 h- w 2.3、开环控制 SVPWM+设定的角度angle = 开环控制, ![]() : A+ A9 Z. N. j& g7 q7 S" q: I 三、软件操作和程序下载 3.1、Keil编译生成hex文件. e4 S+ _& {$ \6 P, e. z3 S 选择生成hex文件。如果用STlink下载可忽略此步。 % i5 R0 } M5 u" ]" z% v ![]() 2 t( L" ]4 K0 e6 ? 3.2、FlyMcu下载 如果用STlink下载可忽略此步。2 O. g/ n) ~7 }9 w ![]() 2 L6 ~# U$ g# {* Z; e 3.3、SimpleMotor准备 " T8 O v8 } a- h ![]() - 如果用STlink下载,SWCLK接驱动板的SDK、SWDIO接驱动板的SWD,GND接GND。0 E$ ]6 v& z! _( Y - 如果用串口下载: 1、USB转串口的TXD接驱动板的RX1,USB转串口的RXD接驱动板的TX1,GND接GND, 2、按住Boot键不松手,按下RST键松开,然后再松开Boot键,单片机进入Boot模式, (如果你手头的驱动板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 四、程序演示 开环控制尽快操作,注意电机发热情况,发热严重要立即断电 1、电机抖动转不起来把voltage_limit设置的大一点,9 {% z- v) v5 G& n0 O 2、电机发热严重的把voltage_limit设置的小一点, 3、电机能转就表示一切正常,可以学**一章了,开环不是电机控制的常态,不要纠结太久。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、打开工程 3 d' N% i! [) [* N# r9 e ![]() ' ]$ 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偏小,电机会转不动; - 如果电机功率较大而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 ![]() 4.1.4、串口发送指令 常用的串口调试软件,在发送区敲回车,对应的16进制数据为0D 0A,也就是回车换行;Arduino IDE自带的串口监视器,输入指令点发送,只有16进制的0A。所以不能用Arduino IDE的软件给当前代码发送指令。 发送指令,从低速开始逐渐增加,速度设置过快电机容易失步变成振动。速度单位为rad/s,6.28表示一圈每秒。) I- N. ^7 Q7 q2 p/ _# x( D) J. \; m ![]() 4.2、开环位置控制 4.2.1、打开工程 和开环速度为同一个工程1 S' i+ d [, J6 ~$ W ) s5 `5 s7 M8 W" z. A% l1 E ![]() % l! ]3 k# N' T- Y: ]6 ?( h) Q, K6 l 4.1.2、修改参数 选择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、串口发送指令 设定目标值,单位为rad,一圈=6.28rad。 ; j% [' w& I8 y ![]() ————————————————, B% V6 f5 X r) _! |# m. }; G 版权声明:loop222& H* |3 b6 a6 m' U c; [! T |
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南
ST 微控制器电磁兼容性 (EMC) 设计指南
适用于STM32微控制器的ΣΔ数字接口入门