电机控制Skill motor-control

电机控制技能提供嵌入式系统中直流、无刷直流、步进和交流感应电机的控制算法实现与驱动开发专业知识。核心能力包括PWM生成、FOC磁场定向控制、V/f控制、位置速度反馈、电流采样、控制环路设计、电机参数辨识及过流过压保护。适用于电机驱动开发、实时控制、伺服系统、工业自动化、机器人运动控制等领域。

嵌入式软件 12 次安装 171 次浏览 更新于 2/25/2026

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