This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于BLDC电机的闭环启动问题



最近在调BLDC电机,我在t的例程上直接改的,原来的时候是先开环启动然后闭环,这种能够直接启动起来。但是启动过程中有开环切闭环的台阶。后来改成了直接闭环启动,但是稍微给电机加点负载,电机就启动不起来了,得手掰一下才能起。空载就能闭环直接起,就不知道是怎么回事。正常情况下,速度为0时,闭环控制不应该给最大的占空比么,怎么会启不来呢,?各位前辈,能给点建议么?

  • 经过测试法现闭环启动起不来的时候占空比为0了;可是PID的输出在反馈速度为0的时候怎么会为0呢,我测过v.term.out也是0,但v.data.v1不是0啊;而且我在仿真的时候也发现在反馈速度为0时,占空比一直是最大啊,?呀,就很不明白是怎么回事?

    #define PID_GR_MACRO(v)                    \
                             \
     /* proportional term */                   \
     v.data.up = _IQmpy(v.param.Kr, v.term.Ref) - v.term.Fbk;          \
                             \
     /* integral term */                    \
     v.data.ui = _IQmpy(v.param.Ki, _IQmpy(v.data.w1, (v.term.Ref - v.term.Fbk))) + v.data.i1; \
     v.data.i1 = v.data.ui;                   \
                             \
     /* derivative term */                    \
     v.data.d2 = _IQmpy(v.param.Kd, _IQmpy(v.term.c1, (_IQmpy(v.term.Ref, v.param.Km) - v.term.Fbk))) - v.data.d2; \
     v.data.ud = v.data.d2 + v.data.d1;                \
     v.data.d1 = _IQmpy(v.data.ud, v.term.c2);              \
                             \
     /* control output */                    \
     v.data.v1 = _IQmpy(v.param.Kp, (v.data.up + v.data.ui + v.data.ud));       \
     v.term.Out= _IQsat(v.data.v1, v.param.Umax, v.param.Umin);         \
     v.data.w1 = (v.term.Out == v.data.v1) ? _IQ(1.0) : _IQ(0.0);          \

  • BLDC你用的是无传感方式吗?

    先开环启动是为了产生足够大的反电动势,然后再闭环启动。

    ERIC

  • 大哥,您的问题解决没?小弟也遇到同样的问题,电机启动那块总是出问题,能抖动,需要用手掰才能转。您知道怎么回事吗?

  • 您好,老师,我加闭环的时候也遇到占空比很小,接近零了,电机没办法转,您知道这是什么原因吗?麻烦您赐教。谢谢啦!
  • 你好,请问这个问题您是怎么解决的?我现在也遇到了这样的问题。