【电机控制】FOC的敲门砖----SVPWM的三相正弦波电流采样

       已经有一段时间没写博客了,之前一直在弄有霍尔BLDC的方波控制,年后弄了一下无霍尔的方波,但是电机控制工程师的梦想还是矢量控制,哈哈。前路漫漫,现在各个相关公司已经有了电机控制库,但是我还是想先自己尝试写一下矢量控制,毕竟自己亲手来一遍才清楚其中的奥妙与玄机。

 

       由简入难,方波搞差不多了,然后就从有霍尔的矢量控制开始做吧。首先就是SVPWM了,SVPWM也没啥好说的,网上大佬们的介绍已经挺多了,我也是按照网上大佬的文章来一步步做的。SVPWM参考博客SVPWM算法原理及详解_qlexcel的专栏-CSDN博客_svpwm,这个作者写得很好,一看就懂,因此,对于SVPWM的配置什么的,就不再赘述,也不是本文的内容。我的SVPWM最终的波形如下,如果有什么错误,还请留言,一起探讨,比较我也是新手。

       在做好SVPWM之后,就是SVPWM产生的三相正弦波的电流采样了,只有电流采样准确,矢量控制的坐标转换才能正确。因此电流采样的重要性不言而喻。

       在做电流采样的时候,可以参考ST的电机库是怎么做的,下面是ST官方的教程文档:

      只看这个文档只能看到ST的大致思路下载一个ST的5.0以上的电机库,生成一下标准工程,看一下生成的CUBEMX里面ST的如何配置的:

  看到这里大概就知道ST是使用TIM1(PWM定时器)的CH4通道来触发ADC的注入采样。有关注入采样与规则采样的说明,请自行查询手册,之后通过改变通道4的CCR值(占空比)来调节采样点。原则上是每两个PWM周期采样一次(由于SVPWM的产生需要用到中央对齐模式,因此是两个PWM周期),可以在载波周期的溢出中断里进行电流采样数据的处理,当然,也可以在ADC采样结束的中断里,我用的是F1,因此有注入采样与规则采样,有两种中断,如果是F0,是没有注入采样的,只能是规则采样。

        根据我实际的情况,触发注入采样,我是真的搞不出来,真是难受啊,也许是我太蠢,因此我实际的ADC采样操作麻烦了许多,我用了TIM1的CH4配置为PWM1模式,用TIM1的4通道的上升沿来触发另一个从定时器TIM3,TIM3配置为复位模式,然后将TIM3的一个通道配置为PWM2模式,使用TIM3的上升沿去触发ADC的规则采样。不要问我为什么绕了一大圈,因为TIM1的CH4通道不能触发ADC的规则采样。手册如下:

      虽然很麻烦,但我还是成功了,具体使用定时器去触发ADC采样的其他细节,可以查看我之前的博客。因为我使用了6个ADC通道,因此3个配置为规则采样,为了不耽误电流采样,其他3个就配置到注入采样,把注入采样配置为自动注入,也就是说,在规则采样完成后,会自动触发注入采样:

       我的ADC配置如下:

      然后就是采样点的选取了,一般操作就是在SVPWM周期里,三相上管全关闭,三相下管全打开的状态,也就是U0状态时进行采样,由于电流的感性作用,在上管全部关闭时,电流不会发生突变,电流方向不变,因此至少会有一相的电流是从GND向上走的。

    具体关于电流采样的几种方案的分析,可以参考这篇文档:FOC 电流采样方案比较 - 百度文库

    采样点示意如图:

        当然,在配置TIM1-CH4的CCR时,要注意一些时间延迟,要包括每次PWM打开或关断的干扰时间以及ADC采样需要耗费的时间,这个根据自己的情况进行配置。

        在最开始的时候,我以为上管打开时间最长的那一相是正电流(由GND向上流向电机),其他两相时候是负电流(由电机流向GND),(这个方向可以自己定义,自己明白就行),只有当T4=0时,也就是说有两相是上管打开时间一样长时会有两相负电流,根据这个错误思路,我就认为采样电阻只需要加运放电路就行,不需要加偏移电路(我后面得知,有高手是这样做的,而且成功计算了FOC,当然我现在还不是高手),当我满怀信心将采集到的电流数据打印出来的时候,看到的波形是这样的:

    这一段平的0电流令我着实费解,还以为是ADC采集没有配置对,在思索了一天之后,对照simlink的仿真波形:

     看了好一会这个simlink的仿真波形,才恍然大悟,正常的三相正弦波电流应该是有一段时间是两相负电流,也就是说,因为有了两相负电流,所以才会有那一段平的0电流,另外一相因为是根据 Ia + Ib + Ic = 0;所以也就变成了镜像的电流波形,这样一切都解释通了。那么就是增加偏移电路了,其实也就是把运放加入一个加法器,我是构造了一个0.1V的偏移电压,在加入偏移电路之后,更改程序,采样,观察波形,波形比较乱,是这样的:

    大概形状倒是有了,但是怎么看怎么不对劲啊,这种波形能做FOC吗?我的首先思路是加滤波,卡尔曼,互补滤波这种效果好是好,然而计算量好像有点大啊,最终还是加了滑动窗口滤波,这个滤波方法还是比较好的,有多次平均的效果,而且计算量小,每次只需加上新数据,减去旧数据,在求平均就行。在调了一会滑动窗口滤波之后,波形好了一些:

     但是感觉还有不太对啊,这样做延迟好像有点高啊,看别人的操作都是采集完数据就直接用了啊,肯定是我哪里不对,不应该加滤波,或者说不应该加过多的滤波。之后便测了偏移电压,怀疑是偏移电压波动带来的采集波动,果然,我的猜测是对的,在电机运转的时候,偏移电压的波动增大了很多,这样的话,那我用固定的偏移电压ADC值来求真实的电流值肯定是不对的。既然这样,我突然想到,为啥不软件构造一个动态的偏移电压的ADC值?三相电流的ADC值相加是3倍的偏移电压ADC值的数学关系啊!按照这个思路,我更改了程序,减小了滤波,波形就很正常了:

     当然,这种方法在之后的进度中还需要测试,还需要再研究别人的算法,在自己真正过了一遍FOC之后,再研究一下那些大佬不用偏移电路是怎么做的。

  • 26
    点赞
  • 222
    收藏
    觉得还不错? 一键收藏
  • 34
    评论
foc无刷电机控制器驱动板是一种用于控制无刷电机的重要组件。它由一系列电子元件组成,包括集成电路、MOSFET晶体管、电流传感器等。驱动板的主要功能是将来自控制器的指令转化为能够驱动电机的信号,并实现对电机的精确控制。 驱动板通过传感器实时监测电机的转速、电流和位置等参数,并将这些数据反馈给控制器,以实现闭环控制。驱动板内部的集成电路会根据控制器发送的PWM信号来调整MOSFET晶体管的开关频率和占空比,进而控制电机的转速和转矩。 与传统的无刷电机控制方式相比,foc无刷电机驱动板具有许多优势。首先,它能够实现更加精准和高效的控制,通过对电机的转速和转矩进行实时监测和调整,能够使电机运行更加平稳和高效。其次,驱动板采用闭环控制,可以有效抑制电机在低速和高负载情况下出现的振动和噪声。 此外,foc无刷电机驱动板还具有较高的可靠性和稳定性。采用了先进的过流、过压和过温保护措施,可以有效保护电机和驱动板免受损坏。同时,驱动板还具有较低的功耗和较小的体积,适用于各种电机控制场景。 总而言之,foc无刷电机控制器驱动板是控制无刷电机的关键组件,能够实现精确、高效和稳定的电机控制。它的应用范围广泛,包括工业自动化、机器人、无人驾驶汽车等领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值