feat(FOC): 添加快速电压检测功能和PWM调试模式

新增基于跌幅检测的快速电压保护机制,在100us周期内响应电压异常,
当电压跌幅超过阈值或低于绝对下限时立即关机保护。同时添加PWM输出
调试模式便于硬件测试。

BREAKING CHANGE: 重构了电压检测逻辑,采用峰值跟踪算法替代固
定阈值检测,提高在动态供电环境下的可靠性
This commit is contained in:
cbb
2026-04-26 03:36:21 +08:00
parent bdf03517b3
commit f4fb23d640
9 changed files with 586 additions and 127 deletions
+8
View File
@@ -30,12 +30,18 @@ class FOC_Controller {
bool voltage_error = false;
bool is_shut_down = false;
bool thermal_shutdown = false; // 过热关机标志
bool emergency_shutdown = false; // 紧急电压跌落关机标志
float voltage_power_supply = 24.0f; // 电源电压
float v_safe = voltage_power_supply / 1.05f;
float duty_a = 0, duty_b = 0, duty_c = 0;
float Ua = 0, Ub = 0, Uc = 0;
// 快速电压检测相关成员(基于跌幅检测)
float vbus_reference = 0.0f; // 基准电压(峰值检测,跟踪当前额定电压)
float last_vbus_fast = 0.0f; // 上次电压值(快速检测用)
u32 vbus_drop_count = 0; // 电压跌落计数器(防抖)
float cur_loop_p = DEFAULT_current_loop_p;
float vel_loop_p = DEFAULT_vel_loop_p;
float ang_loop_p = DEFAULT_angle_loop_p;
@@ -60,8 +66,10 @@ class FOC_Controller {
void resume(void);
void drv_stop(void);
float drv_hold(void);
float PWM_out(void);
void shut_down_thermal(void); // 过热关机
void resume_from_thermal(void); // 过热恢复
void fast_voltage_check(void); // 快速电压检测(100us周期调用)
// 此处默认值不作数
PIDController vel_loop =