ljxh401 发表于 2021-8-16 00:02

BLDC 方波驱动,正反转的转速不差别一倍 求助

本帖最后由 ljxh401 于 2021-8-16 00:04 编辑

我使用 STM32F103 驱动一个无刷电机,
首先通过短时间的定向电流确认UVW 和霍尔的关系
Tim8Drv0:U+V-    霍尔:6
Tim8Drv1:U+W-   霍尔:4
Tim8Drv2:V+W-   霍尔:5
Tim8Drv3:V+U-    霍尔:1
Tim8Drv4:W+U-   霍尔:3
Tim8Drv5:W+V-   霍尔:2


做出一个顺时针驱动表,得到每个霍尔信号往前两步获得驱动信号:
const pMDrvFun DrvATab[]={
      NULL,
      Tim8Drv5,                //霍尔信号1
      Tim8Drv1,                //霍尔信号2
      Tim8Drv0,                //霍尔信号3
      Tim8Drv3,                //霍尔信号4
      Tim8Drv4,                //霍尔信号5      
      Tim8Drv2,                //霍尔信号6
      NULL,
};


驱动代码如下
void MotorRun(INT16U pwm)
{
      static INT8U hallbak;
      INT8U hallcur;
      hallcur=(GPIOB->IDR)&0x07;
      if(hallcur!=hallbak && hallcur!=0 && hallcur!=7)
      {
             hallbak=hallcur;
             DrvATab(pwm);
      }
}

这个速度 能达到 880rpm

我根据这个表 做电机反转,pwm的载波都是一致的
const pMDrvFun DrvBTab[]={
      NULL,
      Tim8Drv1,                //霍尔信号1
      Tim8Drv3,                //霍尔信号2
      Tim8Drv2,                //霍尔信号3
      Tim8Drv5,                //霍尔信号4
      Tim8Drv0,                //霍尔信号5      
      Tim8Drv4,                //霍尔信号6
      NULL,      
};




得到的转速是 440rpm

修改反转表
const pMDrvFun DrvCTab[]={
      NULL,
      Tim8Drv2,                //霍尔信号1
      Tim8Drv4,                //霍尔信号2
      Tim8Drv3,                //霍尔信号3
      Tim8Drv0,                //霍尔信号4
      Tim8Drv1,                //霍尔信号5      
      Tim8Drv5,                //霍尔信号6
      NULL,      
};


得到的转速也是 440rpm 附近,而且C表噪声比B表大





xdqfc 发表于 2021-8-16 11:02

看看正反向转的时候电流是不是一致,不对的话,估计是表格没有做好。

zwsam 发表于 2024-2-20 22:07

页: [1]
查看完整版本: BLDC 方波驱动,正反转的转速不差别一倍 求助