Skill: yongjie666888/foc-parameter-identifier (version 1.1.0)

--- name: foc-parameter-identifier description: FOC电机参数辨识助手 | 帮助进行FOC控制的电机参数测量和辨识，包括定子电阻R、dq电感L、磁链常数Ke、极对数、转动惯量J。提供阶跃响应测试、高频注入法、DC衰减法等实用辨识方案。 --- # FOC 电机参数辨识助手 针对 FOC（磁场定向控制）驱动系统，提供电机参数辨识的完整方案，涵盖电阻、电感、磁链、极对数等核心参数的手动/自动测量方法。 ## 适用场景 - 新电机接入 FOC 驱动前的参数标定 - 驱动器参数自整定功能缺失时的手动测量 - 驱动器调试时发现参数异常需重新测量 - 电机健康状态评估（参数变化监测） ## 参数辨识清单 | 参数 | 符号 | 典型范围 | 重要性 | |------|------|---------|--------| | 定子电阻 | R | 0.01~10Ω | ★★★ | | d轴电感 | Ld | 0.1~50mH | ★★★ | | q轴电感 | Lq | 0.1~50mH | ★★★ | | 磁链常数 | Ψm | 0.01~0.5Wb | ★★★ | | 极对数 | np | 2~20 | ★★★ | | 转动惯量 | J | 0.001~1 kg·cm² | ★★ | | 摩擦系数 | B | 0.001~0.1 N·m·s/rad | ★ | ## 1. 定子电阻 R 测量 ### 方法：万用表法（最简单） ``` 步骤： 1. 断开驱动器，测量电机任意两相之间的电阻 2. R_phase = R_measured / 2（三相平衡） 3. 推荐用四线制万用表更精确 注意： - 绕组温度影响：铜温度系数 +0.4%/℃ - 20℃基准值 → R_75℃ = R_20℃ × [1 + 0.004 × (75-20)] ``` ### 方法：电压电流法（更精确） ``` 接线：直流电源 + 电流表 + 电压表 步骤： 1. 注入小直流电流（0.5~2A，防止发热） 2. 稳定后记录电压 V 和电流 I 3. R = V / I 接线方式： - A+ A-：电流注入 - B C：电压测量（避开电流线压降） ``` ### 输出格式 ``` 【定子电阻测量结果】 线间电阻 R_measured = X.XXX Ω 相电阻 R_phase = X.XXX Ω 测量温度 T = XX ℃ 折算至 20℃：R_20 = X.XXX Ω 折算至 75℃：R_75 = X.XXX Ω ``` ## 2. 电感测量（Ld, Lq） ### 方法A：阶跃响应法（电桥/示波器） ``` 原理：电感阻碍电流变化，L = V / (dI/dt) 测量步骤： 1. 注入阶跃电压（幅值 V，脉宽 t） 2. 记录电流上升曲线 3. 计算 dI/dt（电流上升段线性区） 4. L = V / (dI/dt) 参数选择： V = 5~20V（低压保护电机） t = 1~10ms Rsense = 0.1~1Ω 采样电阻 注意事项： - 需要在转子静止时测量 - 单次测量只能得到 Ld+Lq 的平均值 ``` ### 方法B：LCR电桥法 ``` 1. 用 LCR 电桥测量各相绕组电感 2. 测量条件：频率 1kHz，交流幅值 1V 3. Ld ≈ L_phase（转子对齐 d轴位置） 4. Lq ≈ L_phase（转子对齐 q轴位置） 注意：对于表贴式 PMSM，Ld ≈ Lq 对于内嵌式 PMSM，Ld < Lq ``` ### 方法C：高频注入法（在驱动器内自动测量） ``` 常见于 ESCUTO, STM32 FOC, TI InstaSPIN 等 原理：注入高频电压信号，测量响应电流相位 优点：可以在线辨识，自动区分 Ld/Lq 操作方式： 1. 进入驱动器参数自整定模式 2. 确保电机脱载（自由旋转） 3. 驱动器自动注入高频信号 4. 读取 Ld, Lq 结果 典型驱动自整定时间：5~30秒 ``` ## 3. 磁链常数 Ψm（反电动势常数 Ke） ### 方法：空载反电动势法（最准确） ``` 步骤： 1. 手动旋转电机至已知转速 n（rpm） 2. 用示波器或万用表测量线间反电动势有效值 E_rms 3. 计算电气角速度：ω = 2π × n × np / 60 （rad/s） 4. Ke = E_rms / (ω / √3)（线间相电动势常数） 或： Ke_line = E_rms × 60 / (n × np × √2 × π/3) （线间反电动势常数 V/(rad/s)） 注意： - 转速越高测量越准确，建议 > 1000rpm - 确保电机无驱动电流（开路状态） - 测量多组取平均 ``` ### 计算公式速查 ``` 已知：n = 3000 rpm, np = 4（8极） 测量：线间反电动势 E_rms = 220V ω_e = 2π × 3000 × 4 / 60 = 1256 rad/s Ψm = E_rms / ω_e = 220 / 1256 ≈ 0.175 Wb Ke = 1.5 × Ψm = 0.263 Nm/A（转矩常数） ``` ## 4. 极对数 np 测量 ### 方法A：示波器观察反电动势波形 ``` 1. 手动快速旋转电机一圈（约1秒） 2. 示波器观察任意两相间的电压波形 3. 数一个完整周期的波峰数 4. 极对数 np = 波峰数 / 2 原理： 机械转一圈 → np 个电周期 每相的反电动势一个周期 = np 个电气极对 ``` ### 方法B：霍尔传感器法 ``` 1. 示波器 CH1 接霍尔信号 2. 手动旋转一圈 3. 霍尔状态变化次数 = 6 × np（带换向的方波） 4. 例如：变化 48 次 → np = 8 ``` ## 5. 转动惯量 J 测量 ### 方法：自由减速法 ``` 步骤： 1. 驱动器使电机高速运行（如 3000rpm） 2. 突然切断驱动（自由停车） 3. 记录转速-时间曲线 4. 计算转矩 B：T = B × ω（摩擦阻尼） 5. 计算 J：T = J × dω/dt 简化公式： J ≈ T_load / α 其中： T_load = 额定转矩 × 0.1（估算摩擦损失） α = dω/dt（初始减速度） ``` ## 6. 典型电机参数参考 | 电机类型 | R (Ω) | Ld/Lq (mH) | Ψm (Wb) | np | |----------|-------|------------|---------|-----| | 小功率 BLDC (57mm) | 2~5 | 3~8 | 0.02~0.05 | 4 | | 中功率 PMSM (86mm) | 0.2~1 | 5~20 | 0.1~0.3 | 4 | | 伺服电机 | 0.05~0.3 | 1~10 | 0.05~0.2 | 4/5 | | 大功率 PMSM | 0.01~0.1 | 10~50 | 0.2~0.5 | 2/4 | | 内转子无刷电机 | 0.5~5 | 0.5~5 | 0.01~0.1 | 2~8 | ## 参数输入模板（FOC驱动器配置用） ``` 【电机参数卡】 电机型号：___________ 极对数 np = ___ （必填） 额定电压 Vdc = ___ V 额定电流 Idc = ___ A 额定转速 n_rated = ___ rpm 额定转矩 T_rated = ___ N·m 【电参数（20℃）】 相电阻 R = ___ Ω（必填） d轴电感 Ld = ___ mH（必填） q轴电感 Lq = ___ mH（必填） 磁链常数 Ψm = ___ Wb（必填） 【温度修正】 铜温度系数 α = 0.004 /℃ 最高工作温度 T_max = ___ ℃ 修正后电阻 R_Tmax = R × [1 + α × (T_max - 20)] = ___ Ω 【FOC控制器建议参数】 电流环带宽 ≈ R / L × 0.5（rad/s） 速度环带宽 ≈ 电流环带宽 / 10 ``` ## 常见问题排查 | 问题 | 原因 | 解决方案 | |------|------|----------| | 电感测量值为0 | 电流采样极性反 | 检查采样电阻方向 | | 反电动势常数偏小 | 转速测量偏低 | 提高转速多次测量 | | Ld ≈ Lq 但实际应为Ld<Lq | 磁钢内嵌结构 | 换高频注入法重新测量 | | 驱动器报过流 | R/L参数偏差过大 | 重新测量电阻，确认线缆接触 | | 启动抖动 | np 配置错误 | 重新数极对数 | ## 参考资源 - `scripts/parameter_id_flow.py` - 完整辨识流程脚本（基础版） - `scripts/foc_param_id_arduino.py` - **实测数据后处理脚本**（阶跃响应、反电动势分析、控制器参数自动生成） - `references/measurement_tips.md` - 实测技巧和常见坑 - `references/stm32_foc_config_examples.md` - **STM32/Arduino FOC 参数配置代码示例** ### 快速使用 ```bash # 阶跃响应分析（提取 L 和 R） python scripts/foc_param_id_arduino.py --mode step_response --V 12 --R_shunt 0.1 # 反电动势分析（提取 Ke） python scripts/foc_param_id_arduino.py --mode back_emf --speed 3000 --np 4 # 完整报告（含 STM32 和 Arduino 代码生成） python scripts/foc_param_id_arduino.py --mode report --R 1.23 --L 5.6 --Ke 0.082 --np 4 ```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)