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

[复制链接]
2298|2
 楼主| ljxh401 发表于 2021-8-16 00:02 | 显示全部楼层 |阅读模式
本帖最后由 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,
};


驱动代码如下
  1. void MotorRun(INT16U pwm)
  2. {
  3.         static INT8U hallbak;
  4.         INT8U hallcur;
  5.         hallcur=(GPIOB->IDR)&0x07;
  6.         if(hallcur!=hallbak && hallcur!=0 && hallcur!=7)
  7.         {
  8.              hallbak=hallcur;
  9.              DrvATab[hallcur](pwm);
  10.         }
  11. }


这个速度 能达到 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 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

235

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部