目录
手把手教你学Simulink——扫地机器人行走电机及主刷电机的堵转检测与自适应控制仿真
一、两类电机的差异化建模
1.1 行走电机(低速大转矩PMSM)
1.2 主刷电机(中高速BLDC)
1.3 负载模型
二、堵转检测策略
2.1 电流阈值法
2.2 转速偏差法
2.3 $I^2 t$ 热累积法
三、自适应控制策略
3.1 主刷防缠绕自适应
3.2 行走轮自适应
3.3 模糊PID自适应(进阶)
四、Simulink仿真搭建
4.1 整体架构
4.2 关键子系统
4.3 仿真参数推荐
五、典型仿真场景
六、从仿真到实物部署
七、总结
手把手教你学Simulink——扫地机器人行走电机及主刷电机的堵转检测与自适应控制仿真
扫地机器人里,行走电机和主刷电机是负载最"恶劣"的两类:行走轮频繁启停、差速转向、爬坡越障,启动冲击电流可达额定5~10倍;主刷直接接触地面,极易被毛发、电线、地毯边缘缠绕堵转,堵转瞬间电流飙升可能烧毁MOSFET。 这篇把堵转检测 + 自适应脱困 + 双电机协同仿真在Simulink里打通。
一、两类电机的差异化建模
1.1 行走电机(低速大转矩PMSM)
主流方案是FOC磁场定向控制,追求静音和精准差速。 Simscape Electrical 用PMSM (Three-Phase)模块:
- 极对数:4~8对极,低速大转矩;
- 额定转速:500~2000 rpm;
- 功率:10~40 W;
- 关键特性:需设置磁饱和曲线,低速时反电动势微弱,无感观测器精度下降。
1.2 主刷电机(中高速BLDC)
主流方案是方波六步换相或FOC,追求恒扭矩和防缠绕。 用BLDC (Trapezoidal)模块:
- 额定转速:1000~5000 rpm;
- 功率:5~20 W;
- 关键特性:反电动势为梯形波,换相噪音需通过20~40 kHz PWM频率抑制。
1.3 负载模型
行走轮负载(含爬坡/越障):
$$T_{wheel} = T_{rolling} + T_{slope} + T_{obstacle}$$
其中爬坡转矩与坡度角正弦成正比,越障用阶跃转矩模拟。
主刷负载(含缠绕工况):
$$T_{brush} = T_{friction} + k \cdot \omega + T_{tangle}$$
$T_{tangle}$ 用阶跃或斜坡信号模拟毛发逐渐缠绕导致的阻力上升,堵转时设为极大值。
二、堵转检测策略
堵转检测是保护的第一道防线,工程上常用"电流+转速"双判据。
2.1 电流阈值法
最直接可靠。采样电阻+运放或驱动芯片内置ISEN引脚实时监测电流。
- 行走电机:堵转阈值15~20 A,持续1 s判定堵转;
- 主刷电机:堵转阈值超过额定30%且持续5 ms即判定;
Simulink实现:用Relational Operator比较电流与阈值,接Timer模块计时,超时触发保护。
2.2 转速偏差法
给定PWM但转速为零或远低于预期,判定堵转。适用于有编码器/霍尔反馈的场景。
转速给定 - 实际转速 → 误差过大且持续N ms → 堵转标志2.3 $I^2 t$ 热累积法
模拟热保护,对 $I^2$ 积分,超过阈值触发降额或停机。
$$\frac{dQ}{dt} = I^2 - \frac{Q}{\tau_{thermal}}$$
Simulink用Integrator实现,加入散热项更贴近真实温升。
三、自适应控制策略
堵转检测只是"发现问题",自适应控制才是"解决问题"。扫地机主流做法是分级响应。
3.1 主刷防缠绕自适应
| 负载状态 | 判据 | 自适应动作 |
|---|---|---|
| 正常运行 | 电流稳定在额定值 | 维持恒定转速 |
| 轻微缠绕 | 电流上升10%~20% | 转速提升5%~10%,增大扭矩挣脱 |
| 严重堵转 | 电流超额定30%持续5 ms | 立即停机→反转3 s→重试,仍堵转则报错 |
Simulink用Stateflow实现状态机:
NORMAL → LIGHT_TANGLE → HEAVY_STALL → REVERSE → FAULT3.2 行走轮自适应
- 爬坡/越障:电流上升时自动提升电流环给定,增大输出扭矩;
- 打滑检测:轮速远高于IMU推算的机身速度时,降低扭矩防止空转;
- 差速转向:左右轮独立FOC,通过转速差实现转向,PID实时纠偏补偿机械误差。
3.3 模糊PID自适应(进阶)
传统PID参数固定,面对负载剧烈变化时响应不佳。用模糊逻辑在线调整 $K_p$、$K_i$、$K_d$:
- 误差大时增大 $K_p$ 加快响应;
- 误差小时增大 $K_i$ 消除静差;
- 误差变化率大时增大 $K_d$ 抑制超调。
Simulink用Fuzzy Logic Controller模块搭建,输入为误差 $e$ 和误差变化率 $\dot{e}$,输出为三个PID参数的修正量。
四、Simulink仿真搭建
4.1 整体架构
电池(14.4V) → 三相逆变桥(行走) / 三相逆变桥(主刷) ↓ ↓ FOC控制器 六步换相/FOC ↓ ↓ PMSM电机 BLDC电机 ↓ ↓ 轮地接触模型 主刷负载模型 ↓ ↓ 堵转检测 ←──────────→ 堵转检测 ↓ ↓ Stateflow自适应控制 ←─────→ Stateflow自适应控制4.2 关键子系统
电流环(内环):转速环输出作为电流给定,电流PI控制器输出PWM占空比。电流环带宽设为转速环5~10倍,采样频率≥20 kHz。
转速环(外环):PI控制器,输出限幅对应最大电流,防止堵转时积分饱和。
堵转检测子系统:
% MATLAB Function 实现堵转判据 function stall_flag = stall_detection(current, speed, current_thresh, speed_thresh, time_thresh) persistent timer if isempty(timer), timer = 0; end if (current > current_thresh) && (speed < speed_thresh) timer = timer + Ts; % Ts为采样时间 else timer = 0; end stall_flag = (timer >= time_thresh); end自适应状态机(Stateflow):
state NORMAL: on_entry: set_reverse(0); set_speed_ref(normal_speed); if current > light_tangle_thresh transition to LIGHT_TANGLE; end if stall_flag == 1 transition to HEAVY_STALL; end state LIGHT_TANGLE: on_entry: set_speed_ref(normal_speed * 1.1); after 0.5s: transition to NORMAL; state HEAVY_STALL: on_entry: set_pwm(0); wait(0.1s); transition to REVERSE; state REVERSE: on_entry: set_reverse(1); set_speed_ref(reverse_speed); after 3s: transition to RETRY; state RETRY: on_entry: set_reverse(0); set_speed_ref(normal_speed); if stall_flag == 1 retry_count++; if retry_count >= 3 transition to FAULT; else transition to HEAVY_STALL; end else transition to NORMAL; end state FAULT: on_entry: set_pwm(0); report_error();4.3 仿真参数推荐
电池电压:14.4 V(4串锂电) 行走电机:PMSM,4对极,额定500 rpm,额定电流5 A 主刷电机:BLDC,2对极,额定3000 rpm,额定电流2 A PWM频率:行走15 kHz,主刷25 kHz 电流环采样率:20 kHz 转速环采样率:2 kHz 仿真步长:1e-6 s(详细开关模型)/ 1e-4 s(平均模型) 求解器:ode23tb 仿真时长:5 s五、典型仿真场景
| 场景 | 设置 | 验证点 |
|---|---|---|
| 正常启动 | 空载启动 | 电流平滑上升,转速跟踪给定 |
| 爬坡越障 | t=1 s突加负载转矩 | 电流自适应增大,转速恢复 |
| 轻微缠绕 | t=2 s主刷负载上升20% | 转速自动提升,电流增大挣脱 |
| 严重堵转 | t=2 s主刷负载突增至堵转 | 5 ms内检测→停机→反转→重试 |
| 反复堵转 | 重试3次仍堵转 | 进入FAULT状态,上报错误 |
| 行走打滑 | 轮速远高于机身速度 | 扭矩自动降低,防止空转 |
| 电池欠压 | 电压从14.4 V降至11 V | 占空比自动补偿,维持功率 |
六、从仿真到实物部署
Simulink模型调通后,可用Embedded Coder生成C代码部署到STM32/GD32等MCU:
- FOC Clarke/Park/SVPWM → MCU定时器中断;
- 电流采样 → ADC DMA双缓冲;
- 堵转检测 → 定时器中断中执行判据;
- Stateflow状态机 → switch-case结构;
- 模糊PID → 查表法或在线计算。
关键工程细节:死区时间(0.5~2 μs)、电流采样偏移校准、母线电压前馈补偿、看门狗复位保护,都需在模型中预留接口。