无感Foc电机控制 算法采用滑膜观测器,启动采用Vf,全开源c代码,全开源,启动顺滑,很有参考价值。 带原理图,笔记仅仅展示一部分

刚在GitHub上扒拉到一个贼有意思的无感Foc电机控制项目,代码全开源连原理图都直接甩脸上。关键是这玩意儿启动跟德芙巧克力似的丝滑,忍不住想拆开看看他们是怎么玩滑膜观测器的。

先看观测器核心代码这坨:

void SMO_Update(float Ia, float Ib, float Ic) {
    // 克拉克变换拿αβ轴电流
    float I_alpha = Ia;
    float I_beta = (Ib - Ic) * ONE_BY_SQRT3;
    
    // 滑膜开关量计算
    float e_alpha = I_alpha - est_I_alpha;
    float e_beta = I_beta - est_I_beta;
    float s_alpha = e_alpha > 0 ? SMO_GAIN : -SMO_GAIN;
    float s_beta = e_beta > 0 ? SMO_GAIN : -SMO_GAIN;
    
    // 反电动势观测
    emf_alpha = s_alpha * Vdc - (Rs * I_alpha);
    emf_beta = s_beta * Vdc - (Rs * I_beta);
    
    // 锁相环追角度
    pll_update(emf_alpha, emf_beta);
}

这段看着像模像样但其实暗藏玄机。滑膜增益SMO_GAIN调小了抖振小但收敛慢,调大了又容易抽风,实测发现取电机额定电压的30%效果最骚。后面的锁相环没展开写,但看函数参数就知道是用反电动势直接怼进去追转子的。

启动阶段的V/F控制才是真·魔法:

void VF_Startup(void) {
    static float Vf_ratio = 0.5; // 压频比
    static float freq = 1.0;     // 起始1Hz
    
    if(run_step == ACCEL) {
        freq += 0.2f;
        voltage = freq * Vf_ratio;
        
        // 到达切换速度切观测器
        if(freq > SWITCH_FREQ) {
            run_step = CLOSED_LOOP;
        }
    }
    
    set_svpwm(voltage, freq, angle);
}

这启动策略属实老司机——初始电压给得猥琐发育,频率慢慢往上蹭。关键点在SWITCH_FREQ这个阈值,实测要设到电机额定转速的15%左右才能无缝切滑膜观测。有个骚操作是在加速阶段混了三次谐波注入,启动扭矩直接提升30%不带虚的。

无感Foc电机控制 算法采用滑膜观测器,启动采用Vf,全开源c代码,全开源,启动顺滑,很有参考价值。 带原理图,笔记仅仅展示一部分

电流环代码更带劲:

void Current_Loop(void) {
    // 前馈解耦
    Vd = PI_Regulator_Id(Iq_ref - Iq_meas) - w * Lq * Iq_meas;
    Vq = PI_Regulator_Iq(Iq_ref - Iq_meas) + w * Ld * Id_meas;
    
    // 过调制处理
    if(sqrt(Vd*Vd + Vq*Vq) > MAX_VOLTAGE) {
        Vd *= 0.8f;
        Vq *= 0.8f;
    }
}

前馈项里那个w(电角速度)乘电感参数的骚操作,实测能干掉70%的耦合效应。过调制处理那部分代码虽然粗暴但有效,防止SVPWM模块直接摆烂。有个坑是MAX_VOLTAGE得按直流母线电压打八折算,不然MOS管分分钟教你做人。

原理图里MOS驱动部分整了个非典型设计——用TVS管做负压吸收,比常规的RC吸收省了俩电阻。电流采样更是野路子,直接拿运放搭了个带直流偏置的反向放大,省了专用采样芯片的钱。

这项目最牛逼的是把所有玄学参数都做成宏定义扔在头文件里:

#define DEADTIME_NS 480    // 死区时间
#define POLE_PAIRS 7       // 极对数 
#define RS 0.68f          // 定子电阻
#define MAX_SLIP 0.3f     // 最大转差率

改极对数跟玩儿似的,上次拿它驱动11极的云台电机居然一次成功。代码仓库里还埋了彩蛋——注释里写着"// 此处应有掌声"的老哥绝对是个段子手。

(完整工程请移步Github搜FOC-SMO-VF,原理图在Hardware文件夹里。警告:烧管概不负责,别问我是怎么知道的)

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐