打印
[51单片机]

关于用C8051F040控制三相无刷直流电机的问题

[复制链接]
948|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
首先介绍一下驱动部分,使用的是IR2233+6个SiC-NMOS,是个成熟电路模块,很多用户都验证过的,不作为这个问题讨论的重点电机使用的是24V/250W三相四极无刷直流电机,使用卖电机的公司自己做的驱动控制板可以各种调速正转反转

现在我希望自己用C8051F040开发一个控制程序,不需要那么多功能,最初是想实验H-PWM_L-ON控制
结果发现PWM实现起来麻烦,自己水平有限,于是想着先试试H_ON--L_ON控制
思路是查表,跟据HALL的六个状态,来对应六种输出,把输出接到驱动模块去驱动电机

主要程序如下
void main (void)
{
        char SFRPAGE_SAVE = SFRPAGE;
        SFRPAGE = CONFIG_PAGE;
        WDTCN = 0xde;                       // Disable watchdog timer
        WDTCN = 0xad;

        Init_Device();
    while (1)
        {
                switch(P7)
                {
                        case 1:
                                P2 = 0x1E;
                                break;
                        case 3:
                                P2 = 0x1B;
                                break;
                        case 2:
                                P2 = 0x39;
                                break;
                        case 6:
                                P2 = 0x2D;
                                break;
                        case 4:
                                P2 = 0x27;
                                break;
                        case 5:
                                P2 = 0x36;
                                break;
                        default:
                                P2 = 0x00;
                                break;
                }
        }                                   // end of while(1)
}                                      // end of main()

但是碰到了一个问题
我主观的想法认为是:
HALL信号输入给单片机,单片机查表输出对应的六个信号,电机开始转,然后电机越转越快,HALL信号频率增加,直到达到额定最大转速,相当于PWM控制的100%占空比的情况
然后实际情况是:
开电后,电机有可能转,也有可能不转,不转的时候手去帮他动一下他就转了,这并不是主要问题
主要问题是
1.电机转得非常慢,完全没有越来越快达到额定转速的表现
2.电源电流非常大,使用电机厂商提供的控制板,3000转空载时电流只有700mA左右,而我自制的控制下,电源直接限流保护了(我设的1.5A),电压被拉低到2V多点......
请问程序上有什么问题?
感觉能量全消耗到按电机线圈的等效电阻上了,像是接的电阻负载,完全没有产生动力啊?这是为什么呢

相关帖子

沙发
gx_huang| | 2015-8-5 20:08 | 只看该作者
你这个程序太简单了吧,好像没有PWM转速控制功能,也没有死区控制的,不烧管子就运气了。

使用特权

评论回复
板凳
心印菩提|  楼主 | 2015-8-5 20:27 | 只看该作者
gx_huang 发表于 2015-8-5 20:08
你这个程序太简单了吧,好像没有PWM转速控制功能,也没有死区控制的,不烧管子就运气了。 ...

我水平有限想先试试H_ON--L_ON  这种控制方式转速只决定于电压
比较容易实现
IR2233自带250ns死区时间
加上SiC-MOS的高速开关特性
同时驱动线路上做了进一步的死区控制
在常温下共通问题应该是不存在的

同时按照IR2233的时序关系,输入信号随便是什么样的逻辑,原则上都不可能引起共通

使用特权

评论回复
地板
gx_huang| | 2015-8-6 08:21 | 只看该作者
当低速的时候,最好PWM占空比也要小一些,这样启动电流小,然后随着转速提高,慢慢提高驱动电压。
按照你这个驱动,直接加PWM=100%的24V电压,启动时候,负载电流会比较大。
如果你的电源又加了限流,自然转速上不去了。
低速或者没有转动时,负载是一个电感,电流会很大。
建议你电源限流电流加大,1.5A肯定不行的,你这种方法,说不定需要10A。

使用特权

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

本版积分规则

9

主题

39

帖子

0

粉丝