这一章在干嘛?

把第 25 章的无感驱动升级成 速度闭环 (含双闭环):过零信号稳定后才让 PID 接管占空比;堵转 2 秒自动重启;换向必须重走三段式启动。无感闭环的全部难点都在「切换时机」。

26.1 无感测速与闭环建立

26.2 双闭环与堵转自动重启

26.3 实验与验证

26.1 无感测速与闭环建立

测速与有感类似,用过零信号代替霍尔信号——两者波形一致:1 对极电机转一圈每相出现 2 次过零点,统计其中一相过零信号高电平持续时间即可求速(速度 = SPEED_COEFF/count_j,一阶滤波 0.2379)。但只有过零信号稳定(count_i ≥ 4)后才测速,且只有 g_zero_ctr_status == 3(切入过零闭环)后速度环 PID 才投入:

/* 55us 中断:过零控制 + 速度环 PID(仅闭环状态 3 才投入) */
#ifdef H_PWM_L_ON
    zero_ctr_loop();                       /* 三段式启动/换相 */
    if (g_bldc_motor1.run_flag == RUN && g_zero_ctr_status == 3)
    {                                      /* 已进入过零闭环才闭环调速 */
        temp_pwm1 = increment_pid_ctrl(&g_speed_pid, g_bldc_motor1.speed);
        FirstOrderRC_LPF(motor_pwm_s, temp_pwm1, 0.085);
        if (motor_pwm_s < 0) {             /* 最低输出保底 ±600 */
            if (motor_pwm_s >= -600) motor_pwm_s = -600;
            g_bldc_motor1.pwm_duty = -motor_pwm_s;
        } else {
            if (motor_pwm_s <= 600) motor_pwm_s = 600;
            g_bldc_motor1.pwm_duty = motor_pwm_s;
        }
    }
#endif

为什么保底 ±600?

转速降低时反电动势幅值变小、过零信号容易丢失;PID 若把占空比压得过低,过零检测一失效就彻底失控。保底占空比保证「信号不断流」。

速度环参数 KP=0.05000、KI=0.00025、KD=0.000150,采样 40ms。目标速度 ±3200RPM,步进 400。

26.2 双闭环与堵转自动重启

双闭环:速度环 3 次计算一次(pid_s_count>2)、电流环 2 次一次(pid_c_count>1)分频执行;电流环参数同第 24 章(KP=2.00、KI=0.20、KD=0.01),母线电流尖峰(大于设定值 −20)连续 4 次以上才滤除影响;两环输出取小者 + 积分接力。

/* 堵转 2s 后重启:重新初始化 PID 并回到定位状态 */
if (g_bldc_motor1.locked_rotor == 1) {     /* 堵转 */
    clc++;
    if (clc > 50) {                        /* 50*40ms = 2s 后重启 */
        clc = 0;  pid_init();  stop_motor1();
        g_speed_pid.SetPoint = 400.0;      /* 400RPM 重新启动 */
        g_bldc_motor1.dir = CW;
        g_bldc_motor1.pwm_duty = 600;      /* 加速启动占空比 */
        g_bldc_motor1.run_flag = RUN;  start_motor1();
        g_bldc_motor1.locked_rotor = 0;
        g_zero_ctr_status = 0;             /* 重新定位初始位置 */
    }
}

换向的特殊性:

无感模式下改换旋转方向不能只改符号——必须跳出闭环 PID、把 g_zero_ctr_status 清 0、重新走「定位→加速→切换」全过程,否则过零换相序与新转向不匹配,启动必失败。

26.3 实验与验证

硬件与第 25 章一致(JP3 接 H&Z 与 ZERO;ADC 五通道采集同第 23 章)。按键:KEY0 目标 +400RPM(上限 3200)、KEY1 −400RPM、KEY2 停机并清 PID;速度过 0 换向时自动重启三段式流程并复位 PID。

原书图 26.1.4.1 原书图 26.1.4.1:无感速度闭环 PID 调节效果

原书图 26.2.3.1 原书图 26.2.3.1:无感双闭环 PID 调节效果

波形解读:

串口接 PID 调试助手,勾通道 1/2 看速度、双环加看 7/8 看电流。橙线目标先变、红线实际逐渐跟随;加载时速度先降后回升、电流在目标附近波动。电流环小幅振荡属正常,可调 PID 或加大滤波,但滤波越多响应越慢。