打印
[电机应用]

基于ATC7801的BLDC六步换相的PWM控制

[复制链接]
1374|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LearningH|  楼主 | 2020-9-11 14:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
硬件: AC7801电机demo板
软件: Keil 5.23

      BLDC是用六步换相原理去控制无刷电机的,即AB->AC->BC->BA->CA->CB. 每次换相PWM模块都会输出不同的PWM波形。在PWM模块初始化配置好后,只需在换相时刻,设置PWM的软件输出控制寄存器PWM_CHOSWCR即可完成换相,非常简单方便,耗时非常短(实测,只需1us),只对一个寄存器操作就完成,非常适合于对时间要求非常高要求的场合应用,例如高速电机。
      之前用过其他的MCU做BLDC电机控制,很多是用到操作两个寄存器才能完成的,操作繁琐且耗时长。如果只操作一个寄存器也可以完成换相,但是有缺点,比如换相时刻PWM不衔接,或者下桥臂要配置成IO模式才行。下桥臂配置成IO模式,在触发大电流保护时,下桥臂MOS或IGBT又不是硬件关断的(上下桥臂都配置成PWM才是硬件关断,硬件关断比软件关断快的多,且安全)。
     ATC7801上下桥臂都可以配置成PWM模式,用硬件关断,换相时刻只需调用一个寄存器(PWM_CHOSWCR),真是很方便,很有效率,感觉专门为电机控制而设计的,做过产品了解这方面需求的朋友应该很清楚这个点的重要性。
     下面附上换相调用的函数:

void MosDriver(uint8_t ChangePhanseTemp)
{       
      switch(ChangePhanseTemp)
     {
          case AH_PWM_BL_ON://AH_PWM - BL_ON - C_Phanse OFF       
                PWM1->CHOSWCR = 0x083C;                     
                PWM_SET_SOFT_TRI;
                break;

          case AH_PWM_CL_ON://AH_PWM - CL_ON - B_Phanse OFF
                PWM1->CHOSWCR = 0x203C;
                PWM_SET_SOFT_TRI;
                break;

          case BH_PWM_CL_ON://BH_PWM - CL_ON - A_Phanse OFF
                PWM1->CHOSWCR = 0x2033;
                PWM_SET_SOFT_TRI;
                break;

          case BH_PWM_AL_ON://BH_PWM - AL_ON - C_Phanse OFF
                PWM1->CHOSWCR = 0x0233;
                PWM_SET_SOFT_TRI;
                break;

          case CH_PWM_AL_ON://CH_PWM - AL_ON - B_Phanse OFF;
                PWM1->CHOSWCR = 0x020F;
                PWM_SET_SOFT_TRI;
                break;        

          case CH_PWM_BL_ON://CH_PWM - BL_ON - A_Phanse OFF
                PWM1->CHOSWCR = 0x080F;
                PWM_SET_SOFT_TRI;                       
                break;                                
      }                                                       
}


      通过这个函数可以知道,函数入口是序号(0~5),导通相应的相(AB->AC->BC->BA->CA->CB之一)。可见,换相只需设置PWM1->CHOSWCR即可,PWM_SET_SOFT_TRI是一个宏定义,刷新PWM1->CHOSWCR的值的意思(即ATC7801里面介绍到的同步功能),这两个语句完成换相,只需1us时间。
      0x083C,0x203C,0x2033,0x0233,0x020F,0x080F这几个值,根据外部驱动芯片的逻辑而定,可定义成宏方便修改。
      亲自对比过,亲自用过,发现是真的很方便,很好!

使用特权

评论回复

相关帖子

沙发
marginer| | 2020-9-14 10:10 | 只看该作者
很专业!

使用特权

评论回复
板凳
libinskk| | 2020-9-14 10:45 | 只看该作者
AC7811系列也是一样的吗?

使用特权

评论回复
地板
xidaole| | 2020-9-16 08:23 | 只看该作者
寄存器篇,确实是好东西。

使用特权

评论回复
5
huquanz711| | 2020-9-17 07:39 | 只看该作者
感谢楼主分享经验

使用特权

评论回复
6
dw772| | 2021-3-12 22:24 | 只看该作者
可惜这个芯片价格太贵了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

19

帖子

0

粉丝