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

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

[复制链接]
攻城狮Melo 发布时间:2022-11-8 11:39
注意事项
1、电机的三根线可以任意接在驱动器的ABC三相上,不用区分;
2、开环控制最好选择Ω级的电机,尽量不要用mΩ级的航模电机,容易烧MOS和电机。开环控制在实际中也就启动时用用,这不是电机控制的一个常态。
3、电机控制要尽快操作,不要停留时间太久,时刻注意电机和驱动器的发热情况,一旦过热立即断电。

一、硬件介绍
本节实验适合运行在SimpleMotor和SimpleFOCShield V2.0.3上。

1.1、硬件准备
1.1.1、SimpleMotor方案

`TPRGRNREG3`MG8[@C~HM$N.png
4d3a9963acf24288a71785accfd8db52.png

带编码器云台电机可以是AS5600,也可以是TLE5012B。

1.1.2、SimpleFOCShield V2.0.3方案

1ZFBQQXPC0{XRAJJY1[XHA6.png

3d4b28413d40496c9823401f7f33e06a.png

带编码器云台电机可以是AS5600,也可以是TLE5012B。

1.2、硬件连接
1.2.1、原理图

4963efcf2fb74c5ab1d1a8062d26b1d6.png

1.2.2、SimpleMotor接线

fa2846d497664ef08ef85e9ca8d2a79a.png

1.2.3、STM32接线
对于SimpleFOCShield V2.0.3,需要杜邦线连接主板和驱动板,记得共地。



对照 Shield V2.0.3 的原理图:

(~EHW`AIU0(N9KJ1@4VPE2X.png

12a6ea7675fc453a8afa0a9719fb26ac.png

注意事项:
①、无刷电机的三根相线不用区分顺序,任意接在端子上即可,调整其中任意两根电机反转。
②、12V先不要上电,开环控制电机会发热,上电时间过久容易烧坏。最好等到程序编译上传后再上电,上电尽快操作。
③、最好使用大电阻的云台电机(比如10Ω),如果使用mΩ级的航模电机,操作不当,容易烧毁驱动器MOS和电机。


二、控制原理
2.1、SVPWM


ac033e7f101f4ebabc95fd1f6bb8eeca.png

  Uq为交轴,Ud为直轴,角度angle_e1是电机的电角度。
  一般应用直接设置Ud=0,通过控制Uq来控制磁场大小,控制angle来控制磁场方向;
  开环控制中,直接设置Uq = voltage_limit,按照固定的速度递增angle就是速度模式;递增angle到设定值就是角度模式。
  闭环控制中,angle来自编码器,根据编码器计算实际速度和位置,如果速度大于设定值,PID调小Uq降低速度,如果速度小于设定值,程序调大Uq增加速度。

2.2、极对数
  无刷电机转子中磁铁的对数就是极对数。

dbe2a11354934a7997f09d067f055b86.png

  电机转子转一圈,称为360°(或者叫2Pi)机械角度,转子转过一对磁极,称为360°电角度。
  如上图的7对极,电机需要转7X360电角度 = 360机械角度。SVPWM控制的angle为电角度,而编码器读到的是机械角度,所以需要把机械角度转为SVPWM可用的电角度。


2.3、开环控制
  SVPWM+设定的角度angle = 开环控制,

af0bd6ba50ea428fa6a5c24fa5570799.png

三、软件操作和程序下载
3.1、Keil编译生成hex文件

选择生成hex文件。如果用STlink下载可忽略此步。

99847a5912e94847a529611bbf84622e.png

3.2、FlyMcu下载
如果用STlink下载可忽略此步。

9b712c7f6498401ea65c1247bb2e678a.png

3.3、SimpleMotor准备

0b55ca30f19a4a0f9c2624fceadaeabd.png

- 如果用STlink下载,SWCLK接驱动板的SDK、SWDIO接驱动板的SWD,GND接GND。

- 如果用串口下载:
    1、USB转串口的TXD接驱动板的RX1,USB转串口的RXD接驱动板的TX1,GND接GND,
    2、按住Boot键不松手,按下RST键松开,然后再松开Boot键,单片机进入Boot模式,
        (如果你手头的驱动板Boot键是跳线帽,短接跳线帽相当于按住Boot键)
    3、点击FlyMcu的开始编程,等待下载完成。

四、程序演示
开环控制尽快操作,注意电机发热情况,发热严重要立即断电
1、电机抖动转不起来把voltage_limit设置的大一点,
2、电机发热严重的把voltage_limit设置的小一点,
3、电机能转就表示一切正常,可以学**一章了,开环不是电机控制的常态,不要纠结太久。20211224

4.1、开环速度控制
4.1.1、打开工程

2c3928ca41d6435886bfecd14aafb996.png

4.1.2、修改参数
- 选择controller=Type_velocity_openloop;
- 电源电压和极对数根据实际情况设置;电源电压增加voltage_limit也要相应的增大
- voltage_limit在不了解电机性能的情况下从小逐渐增加,每次修改后注意工作电流和电机发热;
- 如果电机功率较小而voltage_limit偏小,电机会转不动;
- 如果电机功率较大而voltage_limit偏大,电机会发热严重。

4.1.3、编译下载
  FlyMcu通过串口下载或者STlink通过SWD接口下载。
  串口下载需先进入Boot模式,下载完以后按复位键运行。

c3cb3c5c470f4dd98e86096985504f61.png

4.1.4、串口发送指令
  常用的串口调试软件,在发送区敲回车,对应的16进制数据为0D 0A,也就是回车换行;Arduino IDE自带的串口监视器,输入指令点发送,只有16进制的0A。所以不能用Arduino IDE的软件给当前代码发送指令。
  发送指令,从低速开始逐渐增加,速度设置过快电机容易失步变成振动。速度单位为rad/s,6.28表示一圈每秒。

a2d54e4b47f14111b54bbabdb6bdb27f.png


4.2、开环位置控制
4.2.1、打开工程
  和开环速度为同一个工程

0172ff08623e4b5abbe662b89fe89c4f.png

4.1.2、修改参数
  选择controller=Type_angle_openloop;

4.1.3、编译下载
4.1.4、串口发送指令
  设定目标值,单位为rad,一圈=6.28rad。

0ed58000d3974ef18a3c3acba7db8422.png

————————————————
版权声明:loop222


2b0ab4f2332b419a9d9400e1b348a12f.png
收藏 评论0 发布时间:2022-11-8 11:39

举报

0个回答

所属标签

相似分享

官网相关资源

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