name: motor-control description: 电机控制算法与驱动实现 category: 应用特定 allowed-tools:
- Bash
- Read
- Write
- Edit
- Glob
- Grep
电机控制技能
概述
本技能为嵌入式系统提供用于控制直流电机、无刷直流电机、步进电机和交流感应电机的电机控制算法实现与驱动开发专业知识。
能力
PWM生成
- 中心对齐PWM配置
- 死区时间插入
- 互补输出设置
- PWM频率选择
- 占空比调制
- SVPWM(空间矢量脉宽调制)
控制算法
- FOC(磁场定向控制)
- 标量V/f控制
- 六步换相
- 正弦换相
- DTC(直接转矩控制)
- 模型预测控制
位置/速度反馈
- 编码器接口(正交)
- 霍尔传感器配置
- 旋转变压器接口
- 无传感器算法
- 反电动势过零检测
- 基于观测器的估算
电流采样
- 分流电阻配置
- 电流放大器设置
- ADC与PWM同步
- 过采样策略
- 直流偏置补偿
- 相电流重构
控制环路
- 电流环(转矩控制)
- 速度环(速度控制)
- 位置环(伺服控制)
- 抗饱和策略
- 前馈补偿
- 增益调谐方法
电机辨识
- 参数测量
- 自动调谐程序
- 电阻/电感测量
- 反电动势常数
- 转动惯量估算
保护功能
- 过流保护
- 过压保护
- 过温监控
- 堵转检测
- 安全转矩关断(STO)
目标流程
device-driver-development.js- 电机驱动实现real-time-architecture-design.js- 实时控制设计isr-design.js- 控制环路中断服务程序设计
依赖项
- 电机控制库(ST MC SDK, TI MotorWare)
- 用于定点数学运算的DSP库
- 编码器/霍尔传感器硬件
使用场景
当任务需要以下内容时,可调用此技能:
- 电机驱动开发
- FOC算法实现
- 位置/速度控制
- 电机参数调谐
- 保护电路设计
支持的电机类型
| 类型 | 控制方法 | 反馈 |
|---|---|---|
| 有刷直流 | PWM占空比 | 编码器(可选) |
| 无刷直流 | 六步换相, FOC | 霍尔, 编码器, 无传感器 |
| 永磁同步电机 | FOC | 编码器, 旋转变压器, 无传感器 |
| 步进电机 | 步进/方向, 微步进 | 开环, 编码器 |
| 交流感应电机 | V/f, FOC | 编码器, 无传感器 |
FOC实现示例
typedef struct {
float i_alpha, i_beta; // Clarke变换输出
float i_d, i_q; // Park变换输出
float v_d, v_q; // 电压指令
float v_alpha, v_beta; // 逆Park变换输出
float theta; // 转子角度
float speed; // 转子速度
} foc_state_t;
void foc_current_loop(foc_state_t* state, float i_a, float i_b, float i_c) {
// Clarke变换
clarke_transform(i_a, i_b, i_c, &state->i_alpha, &state->i_beta);
// Park变换
park_transform(state->i_alpha, state->i_beta, state->theta,
&state->i_d, &state->i_q);
// PI控制器
state->v_d = pi_controller(&pid_d, state->i_d_ref - state->i_d);
state->v_q = pi_controller(&pid_q, state->i_q_ref - state->i_q);
// 逆Park变换
inv_park_transform(state->v_d, state->v_q, state->theta,
&state->v_alpha, &state->v_beta);
// SVPWM
svpwm_generate(state->v_alpha, state->v_beta, pwm_duties);
}
配置
motor_control:
motor_type: bldc | pmsm | stepper | induction
control_method: foc | six_step | vf | step_dir
pwm_frequency: 20000 # Hz
current_loop_rate: 20000 # Hz
speed_loop_rate: 1000 # Hz
feedback: encoder | hall | sensorless