ctime:2019-09-06 18:42:18 +0800|1567766538

标签(空格分隔): 硬件 技术


VF控制实际上是一种开环的驱动方式。在前一篇博文中已经讲了,实际上只要对无刷电机或者PMSM通入三相的正弦交流电,电机即可转动。

VF控制就是这种方式,他无需知道电机当前的旋转角度,仅仅需要无脑输入三相交流电即可。
那么通过改变电压与频率的比值,也就是V/F,就可以进行调速以及调力矩

  • 在基频以下,电机为恒力矩运行(因为还未到额定功率)
  • 在基频以上,电机为恒功率运行(此时速度越快,电机力矩越小),也叫做弱磁扩速

VF控制的实现方式有多种,比较常见的是使用SPWM或者SVPWM。
SVPWM的方式对于母线电压利用率可以比SPWM高个15%左右(推导详情请看书)

实际上,几乎所有没有编码器的云台都是用这种方式驱动的电机,用这种方式驱动云台电机有一个好处,就是
机械结构很简单,毕竟多安装一个编码器,磁编码器也好,光电码盘也好,都需要额外的结构,有点麻烦

这里用的是SVPWM来实现的V-F控制。为什么这里要实现一个V-F控制呢。因为实际上FOC比较复杂,但原理与
VF有相似之处(相似的地方在于SVPWM,但如何使用SVPWM,二者不太相似),且VF较为简单,可以先测试一下SVPWM
写得对不对。当然了,我一开始仅仅只是为了测试一下SVPWM,并不知道这种方式就是VF控制。

实现思路

实现SVPWM
  • SVPWM的输入是期望电压矢量,形式可以是极坐标形式(幅度,theta),也可以是三角坐标形式(X,Y)
  • 两种方式各有优劣,看之后计算怎么写吧
  • 然后判断期望电压矢量落在哪个扇区。如果使用极坐标计算的话,这里就很简单了,直接把theta/6,然后判断即可。如果是XY可能就麻烦一点了。
  • 判断是什么扇区之后,通过查表查出这个扇区的两个电压矢量是哪两个,分别记为u1 u2。
  • 判断出来之后,就可以计算出这两个电压矢量分别需要作用的时间t1 t2,t1 t2我是用百分比表示的,后来证明这个表示方式对简化计算很有帮助
  • 计算出t1 和t2后,就可以计算出t0和t7(分别是两个零矢量作用时间,000和111)
  • 有了t1 t2 和t7,(t0可以不用(因为实际上t0对CCR无贡献)),接下来可以计算CCR了。
  • CCRA=u1.at1+u2.at2+u7.a*a
  • CCRB和CCRC同理,这样实际上是计算出某一相需要导通的占空比
  • 然后真正赋给定时器的CCR1 CCR2 CCR3的时候,乘以定时器的ARR就行了。
  • 定时器方面需要注意的几个点:
  • 定时器的频率如何计算,这个留在后面讲
  • 定时器需设置为中心对称模式,且开启互补模式
  • 需要注意设置为PWM1模式或者是PWM2模式,按照我上面写的算法,设置为PWM2模式会简单一点
  • RCR(重复计数器需要设置成1),也就是一次上溢+一次下溢才触发一次定时器更新
  • 定时器需要开启预装载,这样每次修改完CCR的值,不是立即更新,而是等到更新事件发生后再修改。参考手册中把那个实际起作用的叫做影子寄存器,而用户平时修改的并不是影子寄存器。当然了,如果没开启预装载,那么用户的修改就直接修改到影子寄存器上了。
  • 这样可以说就是一次SVPWM运算周期了,我用示波器测了一下运行时间,大概是2us。(STM32F405,开启浮点库,三角运算使用浮点库)
V-F

终于到V-F了,前面讲了这么多可惜都和V-F没啥关系,VF实际上比SVPWM的实现还简单,毕竟他是SVPWM的上层。

  • V-F的思路是,刚上电的theta为0,每次增加一个小增量作为期望电压矢量,如果上面使用极坐标的形式,那么这里只要每次把theta加一下就好了。
  • 那么这个小增量是多少呢?
  • 实际上这也跟奈奎斯特采样定理有关系,需要采集多少个点才可以恢复出波形?理论上来说只需要2步(2倍原频率),但实际上这样恢复出来的肯定不是正弦波了,因此这个划分多少步是越多越好(在处理器能处理的情况下)
  • 还有一个问题,就是前面所说的,定时器的频率应该是多少?
  • 我们先计算一下电机旋转的频率,因为我们通过SVPWM产生的正弦波的频率就是电机运转的频率,也叫(载波频率,电源频率)
  • 我们希望的转速是1rps
  • 再把极对数考虑进去,假设电机为7对极,那么电机转一圈实际上要划分的实际步数为71一圈的步数,这就是定时器1s的中断频率
  • 但考虑到定时器是时中心对称模式,因此实际上写进去的ARR还需要再除以2
  • 需要注意的是,这个定时器的频率也叫开关频率,也就是我们平时PWM的频率。这个频率最好超过20K,这样人耳就听不到了,否则如果频率太低,就会听到嗡嗡的声音,让你误以为你SVPWM或者什么地方有问题
  • 现在有一个问题是,定时器的频率与 划分粒度和 转速相关,如果改变转速的话,定时器的频率会变,解决办法也简单,同步改变划分粒度就是了,低转速下划分粒度就大点,高转速下划分粒度就小点