ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

电机FOC控制中的电流环:原理、整定与工程调试实战

电机FOC控制中的电流环:原理、整定与工程调试实战 1. 为什么电流环是电机控制的命门做电机控制这几年一个最深的体会是很多人一上来就研究位置环怎么调、速度环怎么调把 S 型规划、陷波滤波器搞得头头是道结果电机一动就嗡嗡叫或者一用力就丢步、过冲半天找不出原因。最后排查了一圈才发现问题全出在最底层的电流环上。电流环是直流无刷电机BLDC、永磁同步电机PMSMFOC 控制的最内环它直接决定电磁转矩的输出质量。你可以把三环控制理解成一个公司电流环是一线执行团队反应最快指哪打哪速度环是中层管理盯着执行团队干活的快慢位置环是高层决策只管目标在哪、怎么走。如果一线团队拉胯上面两层管得再好也是空中楼阁。这篇博文是电机控制系列第五篇专门把电流环从理论到工程实现完整梳理一遍。内容围绕 FOC 框架下的电流采样、坐标变换、PI 参数整定、解耦控制以及从 STM32F407 到 G4 系列实际调试时踩过的坑展开。无论你是刚接触 3508 这类大疆无刷电机还是在调自己的 BLDC 驱动板看完这篇应该能少走不少弯路。2. 电流环控制的整体思路从三相电流到 Iq、Id2.1 为什么不能直接控制三相电流先说一个很多人刚接触 FOC 时的困惑电机出来三相线直接控制 Ia、Ib、Ic 不就行了为什么要搞 Clarke 变换、Park 变换这么一堆东西直接控制三相电流这件事理论上可以实际上非常难受。原因在于三相电流是交流量频率跟电机的电转速成正比——电机转得越快电流交变的频率越高。而 PI 调节器本质上是一个低通特性的东西你让它去跟踪一个高频正弦指令跟踪不上不说相位滞后一大截带宽根本不够用。更重要的是电机输出的转矩跟电流之间的关系在三相静止坐标系里是非线性的、强耦合的。你只知道当前三相电流是多少并不能直观看出它到底产生了多少转矩、多少励磁也就没法像控制直流电机那样给多大电流出多大劲。FOC 的核心思路就是把交流电机的数学模型通过坐标变换欺骗成一个直流电机。变换之后原来旋转的三相电流会变成两个直流量Iq 和 Id。Iq 就是产生转矩的分量Id 是产生磁场的分量。你只要像控制直流电机那样分别对 Iq 和 Id 做 PI 调节就能实现线性化的力矩控制。这也就是为什么 FOC 在 BLDC 控制里越来越成为主流——控制性能完全是另一个量级。2.2 电流环在 FOC 框架里的位置整个 FOC 的控制链路是这样的采样三相电流 Ia、IbIc 可以算出来这就是著名的只需采样两相Clarke 变换把 Ia、Ib 从三相静止坐标转到两相静止坐标 Iα、Iβ编码器或观测器估算转子角度 θPark 变换用 θ 把 Iα、Iβ 转到两相旋转坐标得到直流量 Iq、Id电流环 PIIq、Id 的误差分别进 PI 调节器输出 Vq、Vd前馈解耦对上一步的 Vq、Vd 做解耦补偿反 Park 变换Vq、Vd 转回 Vα、VβSVPWM 调制根据 Vα、Vβ 计算逆变器六个开关管的占空比可以看到电流环处于整个 FOC 的正中心位置是唯一直接跟电机电气模型打交道的控制环节。Vq、Vd 算得准不准、响应快不快直接决定逆变器输出的电压矢量是否精确进而决定实际三相电流是否跟踪指令。顺带提一个常见误区不少做 CAN 总线多电机协同的玩家以为把位置环、速度环写在主控里就算是控制了电机内部的电流环根本不关心。这种想法有问题——你位置环输出的是速度指令速度环输出的是电流指令最后电流能不能跟上取决于电机驱动器内部电流环的带宽。外部环路算得再漂亮底层电流环跟不上整个系统依然是滞后的。达妙、RoboMaster 的 3508 电机驱动器之所以 CAN 控制手感好很大原因就是它内部电流环调得足够硬。2.3 电流环的快到底意味着什么搞控制的人喜欢说电流环要快那什么叫快一个直观的评判指标是带宽。电流环带宽决定了它能够多快地把实际电流拉到目标值。带宽越高电流跟踪误差越小对外表现为扭矩响应越跟手、越没有迟滞。工程上电流环带宽一般取速度环的 5 到 10 倍。比如速度环带宽 50Hz那电流环至少要 250Hz 以上。用 STM32 做 FOC电流环执行频率通常做到 10kHz 到 20kHz跟 PWM 频率一致这里说的 10kHz 是控制频率不是带宽。实际电流环带宽能做到 500Hz 到 1kHz 就算相当不错了。这就是为什么电流环设计是命门——它不响整个系统都别想响。3. 电流采样的工程细节一半的坑都在这3.1 采样电阻方案 vs 电流传感器方案电流环输入的数据来自电流采样采样质量决定了控制质量。这句话说起来轻巧做起来全是血泪。主流的电流采样方案有两种一种是采样电阻方案。在逆变器桥臂下方串联毫欧级采样电阻通过运放放大压降再送进 ADC。优点是便宜、体积小、线性度好成本几毛钱到几块钱就能搞定。缺点是采样电阻上有功率损耗而且采样到的信号是脉冲形式需要在特定时刻采样才能采到相电流的真实值。另一种是电流传感器方案。用霍尔传感器或者磁通门传感器直接测量导线中的电流电气隔离不引入损耗。缺点是贵、体积大通常用于大功率或者对隔离有严格要求的场合。对大多数 DIY 和 RoboMaster 级别的应用采样电阻方案是主流。3508 的 C620 电调内部用的就是采样电阻方案。3.2 低端采样和高端采样怎么选采样电阻放哪也有讲究。低端采样电阻放在 MOS 管源极和地之间。优点是共模电压低运放好选电路简单。缺点是采样时刻必须在低端 MOS 导通时而且和 SVPWM 的开关时序强相关低调制比的时候采样窗口很窄容易采不到。高端采样电阻放在母线正端。共模电压高需要高共模抑制比的差分运放比如 INA240。优点是采样时刻灵活对 PWM 时序不敏感可以在任意时刻采到真实的相电流。实际工程中用得最多的是低端采样。但如果你的控制器要在极低转速、极小电流下运行或者要在整个调制范围内保证采样精度高端采样优势很大。INA240 这类器件出来之后高端采样成本下来了是个值得考虑的方向。3.3 STM32 ADC 采样的时序问题不管用哪种方案采样时刻的选择都是坑。SVPWM 的开关管在不停开关每个 PWM 周期内电流在死区时间附近、开关跳变瞬间有大量噪声。如果在这些时刻触发 ADC采到的电流毛刺巨大控制根本稳不住。正确的做法是在 PWM 中心对齐的时刻采样。FOC 普遍使用中心对齐的 PWMup-down counting三角载波的顶点或者底点正好是占空比的中心。在这个时刻所有桥臂的开关状态最稳定电流纹波也处于对称位置采到的电流最接近相电流平均值。具体到 STM32用定时器的 TRGO 事件触发 ADC 注入组采样。F407 上这样做没问题但要注意 ADC 时钟不要超频采样时间要给够。我见过有人为了赶速度把 ADC 采样周期压到极致结果采到的全是开关噪声半天找不到原因。如果你用的是 STM32G4 系列那电流采样就舒服多了。G4 内部集成了 PGA可编程增益放大器和比较器配合高精度定时器 HRTIM可以做到真正意义上的同步采样——三路电流同时刻采样通道间延迟几乎可以忽略。这也是现在很多高性能电机控制器选择 G4 的原因。3.4 三相电流如何从两相重构出来电机三相电流满足基尔霍夫电流定律Ia Ib Ic 0。所以理论上只需要采样两相第三相直接算。这也是为什么大多数 FOC 方案只采样两相电流的原因——省一路运放、一路 ADC成本降低主控引脚也省出来了。但这里有个前提两相电流必须是同一时刻采到的。如果分别在不同时刻采样相位差会导致重构出来的第三相电流失真。所以 STM32 上用 ADC 注入组配合多通道扫描就是为了尽量保证同一时刻。还有一种单电阻采样方案只用一个采样电阻通过在不同 PWM 状态下多个时刻采样重建三相电流。这个方案成本最低但重构算法复杂且存在低调制区、高调制区的重构盲区。入门阶段千万别碰这个方案调试难度高一个数量级。4. Clarke 变换和 Park 变换把交流变直流的两个关键步骤4.1 Clarke 变换三相到两相采样得到 Ia、Ib 之后第一步是 Clarke 变换把三相静止坐标系的电流转换到两相静止坐标系α-β 坐标系。变换公式可以用一个矩阵描述等幅值变换Iα Ia Iβ (Ia 2Ib) / √3这里用了等幅值变换好处是变换前后电流的幅值不变后续计算转矩、反电动势都比较直观。如果用的是等功率变换公式里会有系数 √(2/3)这两种变换的 PI 参数、标幺值处理会有区别用哪种就全程统一用哪种别混用混用的后果是 iq 计算值系统性偏大或偏小最后查问题查到怀疑人生。Clarke 变换本身不涉及角度所以它可以在 PWM 中断里最先执行不依赖编码器数据。但注意它依赖的是准确的电流采样值采样出了偏差变换后全错了。4.2 Park 变换旋转坐标系下的直流量第二步是 Park 变换把 α-β 坐标系的交流量旋转到跟转子磁场同步旋转的 d-q 坐标系。变换公式Id Iα * cosθ Iβ * sinθ Iq -Iα * sinθ Iβ * cosθ这里的 θ 是转子电角度来自编码器、霍尔传感器或者无感观测器。经过 Park 变换之后Iq 和 Id 就变成了缓慢变化的直流量稳态时是恒定值PI 调节器终于可以大展身手了。需要注意的一点是θ 的精度直接影响 Park 变换的正确性。尤其是低转速下编码器分辨率不足的话θ 会有量化噪声变换出来的 Iq、Id 会抖动。这是很多低速抖动的根源之一。4.3 角度对齐问题编码器零位和电机零位的关系这里必须强调一个所有新手都会踩的坑——编码器零位与电机电角度的对齐。FOC 要求 Park 变换使用的 θ 必须跟电机的实际转子电角度严格对应。如果编码器的零位跟电机 A 相绕组的轴线不重合那么变换出来的 Iq、Id 就含有一个固定角度偏差。后果是你明明给定 Iq实际上有一部分电流变成了 Id励磁电流电机发热增加、出力下降效率变差。最直观的表现就是给定 Iq 1A电机按理说应该输出固定转矩结果实际测得 Iq 只有 0.87A而 Id 有 0.5A白白损耗。这个角度偏差可以通过驱动器对编码器进行零位标定来解决。通常做法是给电机通一个已知方向的电压矢量把转子拖到一个确定的机械位置然后把这个位置对应的编码器值记下来作为零位偏移。3508 这类电机的电调在首次上电时会做类似的对齐流程不是随便转一转就好里面是有严谨逻辑的。4.4 反 Park 变换和 SVPWM 的无缝衔接电流环 PI 输出的是 Vq、Vd经过前馈解耦后还要做一步反 Park 变换把旋转坐标系的电压指令转回两相静止坐标系Vα Vd * cosθ - Vq * sinθ Vβ Vd * sinθ Vq * cosθ这一步的输出 Vα、Vβ 就送给 SVPWM 模块计算三个桥臂的占空比。SVPWM 的原理这里不展开只说跟电流环相关的一个点SVPWM 输出的电压矢量有最大幅值限制线性调制区上限是直流母线电压的 1/√3。当 PI 输出饱和、电压指令超过这个上限时逆变器实际输出的电压会削顶电流环就进入非线性区。这也是接下来要讲的抗积分饱和处理的触发场景。5. 电流环 PI 参数整定理论推导和工程实践5.1 电流环 PI 对象模型电流环控制的对象是电机的电气方程。在 d-q 坐标系下PMSM 的定子电压方程可以写成Vd Rs * Id Ld * dId/dt - ωe * Lq * Iq Vq Rs * Iq Lq * dIq/dt ωe * Ld * Id ωe * ψf其中 Rs 是定子电阻Ld、Lq 是 d、q 轴电感ωe 是电角速度ψf 是永磁体磁链。要求解的是电流环的传递函数。以 q 轴为例忽略交叉耦合项解耦单独处理从 Vq 到 Iq 的传递函数是一个一阶惯性环节Iq(s) / Vq(s) 1 / (Lq * s Rs)时间常数 τ Lq / Rs这个值就是电流环对象的固有时间常数。一般来说 BLDC、PMSM 的电气时间常数在几毫秒到几十毫秒之间。3508 电机因为是航模无刷优化设计电感小、电阻小时间常数在毫秒级电流响应本身就是快的。5.2 零极点对消法整定 PI 参数电流环 PI 调节器传递函数是G_PI(s) Kp Ki / s Kp * (s Ki/Kp) / s校验一下可以发现让 PI 调节器的零点s -Ki/Kp跟对象的极点s -Rs/Lq对消然后整个开环传递函数就会变成一个纯积分环节G_open(s) Kp / (Lq * s)这个开环传递函数对应的一阶闭环传递函数为G_close(s) (Kp / Lq) / (s Kp / Lq)闭环带宽 ωc Kp / Lq。由此可以直接推出理论整定公式Kp ωc * Lq Ki ωc * Rs注意这里的 Kp、Ki 用的是连续域的 PI 定义。如果你用的是位置式或者增量式数字 PI注意系数换算关系尤其是 Ki 项要乘上控制周期 Ts。很多初次接触的人直接套公式数字实现时 Ki 忘记乘 Ts结果调出来的参数整体偏弱。理论公式提供的是起点实际参数还要根据负载、延迟做微调。但有了公式调参不再是无头苍蝇——你想让电流环响应多快直接决定 Kp 多大。5.3 带宽选多少合适带宽 ωc 的选取有几个约束开关频率约束电流环带宽经验上不超过开关频率的 1/10。20kHz 的 PWM带宽建议不超过 2kHz。再高会导致离散化误差显著增大数字控制延迟带来的相位裕度损失过大。采样延迟约束电流环的执行频率等于 PWM 频率但 ADC 采样、坐标变换、SVPWM 计算都耗时这些延迟会吃掉相位裕度。速度环带宽约束电流环带宽要远高于速度环否则速度环的调节会耦合到电流环的动态。实际项目里一般把电流环带宽取在 300Hz 到 1000Hz 之间。用零极点对消公式算出来的 Kp、Ki 在这个范围内都能获得稳定的响应。先把带宽取低一点比如 300Hz确认系统稳定了再逐步往上加这是最稳妥的路径。5.4 采样和执行延迟对带宽上限的影响这里补充一个很多人忽略的延迟问题。从 ADC 采样触发到 PWM 占空比真正更新中间隔了完整的一个控制周期。也就是说电流环相当于一个带有一拍延迟的系统。在连续域设计 PI 参数时通常不考虑这个延迟但数字实现时必须考虑。典型的表现是你用连续域公式算出带宽做到 2kHz仿真里看着很漂亮上机一跑就振荡。原因就是那一拍数字延迟把相位裕度吃掉了系统从过阻尼变成了振荡甚至发散。经验做法是设计带宽不超过开关频率的 1/20 到 1/10并且用离散域的频域分析比如在 MATLAB 里用 c2d 离散化再画 Bode 图验证设计结果。如果你不想花时间做这些分析那就保守一点带宽设到开关频率的 1/20 附近实测稳定性通常没问题。6. 解耦控制为什么没人提却很重要6.1 交叉耦合的来源回到 PMSM 电压方程d 轴和 q 轴的方程里都有交叉项Vd 方程里有 -ωe * Lq * Iq Vq 方程里有 ωe * Ld * Id ωe * ψf物理本质是转子旋转时q 轴电流会在 d 轴产生旋转反电动势反之亦然。转速越高这种耦合越强。如果不处理高速时 d、q 轴互相干扰电流环可能出现一种诡异的现象单独通电测试时 Iq 很稳一跑高速 Iq 就波动跟着 Id 也在抖。6.2 前馈解耦的工程实现最常用的解耦方法是前馈解耦也叫电压前馈补偿。思路很简单把耦合项直接加到 PI 输出上抵消物理耦合的影响。Vd_ref Vd_PI - ωe * Lq * Iq Vq_ref Vq_PI ωe * Ld * Id ωe * ψf其中 Vd_PI、Vq_PI 是 PI 调节器的输出后面那些项就是前馈补偿。实现时需要注意这里的 ωe 必须是电角速度单位 rad/s。如果你拿到的是机械转速 rpm要换算ωe rpm / 60 * 2π * 极对数。使用的 Ld、Lq 是电机参数如果电机参数不准前馈补偿就偏了。低速时影响小高速时影响大。补偿值超出母线电压限制时要跟 PI 输出一起做限幅处理。6.3 不解耦能不能跑能但上限就摆在那实话说很多 3508 级别的应用低速运行的时候不解耦也能跑。因为转速低ωe 小耦合项的值远远小于 PI 的输出影响可以忽略。但一旦转速上去不解耦的问题就暴露了。我实测过同一套电流环参数低速调得很好跑到中高速之后电流波形明显失真Iq 跟踪指令出现周期性波动电机温度也比预期高。加上前馈解耦之后高速波形立刻干净了。所以我的建议是低速方案可以先不加解耦但代码架构上留好接口等高速问题出现时直接启用。别等出了问题再重构代码。7. 电流环调试实录从零调通一套 FOC7.1 硬件环境准备以 STM32F407ZGT6 控制 3508 电机为例说下环境主控STM32F407ZGT6PWM 频率 20kHz驱动板自带三电阻采样运放放大后接 ADC电机3508 无刷电机极对数为 7电感约 30μH电阻约 0.12Ω具体以实测为准编码器磁编码器SPI 接口读角度注意一下3508 电机极对数是 7电角度 机械角度 * 7。这也就意味着电机转一圈电角度跑了 7 个周期FOC 调试时角度处理会比普通极对数电机更敏感。7.2 第一步确认采样链路没有系统误差上电先不跑电流环只做开环测试。给电机通一个固定占空比的电压矢量让它转到某个位置停住。然后读取 ADC 采样的三相电流手动转动电机转子观察三相电流是否随转子位置呈正弦变化。这一步的目的是验证采样链路有没有接错相序对不对、运放增益是否正确、ADC 参考电压是否准确。常见现象和排查方向三相电流不是正弦而是带明显台阶大概率采样时刻不对采到了开关瞬态。三相电流幅值严重不对称有一路运放或者 ADC 通道有问题逐路排查。电流整体偏大或偏小运放增益电阻焊错或者参考电压不对用万用表实测采样电阻两端电压跟 ADC 读数交叉验证。7.3 第二步零位标定角度和电流对齐零位标定不准确后面全白调。我的做法是给 q 轴施加一个固定小电压通过开环给定一个角度 θ 0然后给 Vq 0.5V转子会被拖到一个确定的平衡位置。记录此时编码器读数作为零位偏移。用这个零位偏移对编码器原始值做补偿让电角度在转子处于 A 相轴线方向时为 0。手动转动转子到不同位置验证电角度和实测感应电动势的方向是否一致。这个步骤听起来简单但做错了非常隐蔽。我之前遇到过一个项目零位偏了 30 度电角度现象是电流环能稳住但 Iq 给定 1A 测实际电流只有 0.86AId 有 0.5A电机温升快。当时百思不得其解后来重新标定零位一切正常。7.4 第三步电流环闭环拖住转子测响应有了准确采样和角度就可以真正闭环保电流环了。先用低速或者直接堵转的方式测电流环阶跃响应。给 Iq_ref 一个从 0 到 1A 的阶跃指令用示波器或者 DA 输出观察 Ialpha或 Iq的响应波形。判断标准上升时间从指令发出到实际电流达到 63% 目标值的时间。带宽 500Hz 对应的上升时间大约是 0.35ms如果差太远说明参数不对。超调量理想情况下应无超调或轻微超调。很大超调说明相位裕度不够。稳态误差稳定后电流是否精确跟踪指令误差应该在几毫安以内。先从低带宽开始调。比如用零极点对消公式算带宽 300Hz 的参数跑起来看波形。如果稳定逐步把带宽往上加每次增加 100Hz观察振不振荡。这个方法比单纯试参数高效得多。7.5 第四步PI 输出限幅和积分抗饱和处理电流环 PI 的输出就是电压指令Vq、Vd必须限幅否则电压指令超出 SVPWM 线性调制范围逆变器输出畸变。限幅值设为Vmax Vdc / √3其中 Vdc 是母线电压。12V 供电时 Vmax ≈ 6.93V24V 时 Vmax ≈ 13.86V。限幅容易被人忽略的是积分器饱和问题。当电压指令长期被限幅时PI 积分器继续累加误差积分值越积越大。等到误差反向积分器需要跑很久才能消化掉多余的积分值这就是所谓的积分饱和。表现是电流超调很大、系统震荡、或者动态响应明显迟钝。工程上常用两种抗饱和方法积分限幅clamping给积分器的输出单独设一个上限防止它过大。条件积分conditional integration当 PI 输出饱和时停止积分累加只有未饱和时正常积分。我习惯的做法是积分限幅 饱和时停止积分双管齐下。注意积分限幅的上限直接会影响稳态精度设得太低会导致静差。7.6 第五步跑起来测动态性能堵转调通之后让电机自由旋转给定不同的速度指令观察电流环在整个速度范围内的表现。这时关注几个点中高速时 Iq、Id 是否有周期性波动。有波动大概率是零位偏差、电感参数不准或者前馈解耦没加。负载突变时电流是否迅速跟踪。突然用手捏住电机轴电流应该快速上升松开后应该快速回落没有明显震荡。全速范围内的最大电流输出能力。3000rpm 和 8000rpm 下同样给定 Iq实际输出的转矩是否有明显差异。有差异的话大概率是解耦补偿缺失导致的。8. 常见问题与排查技巧实录8.1 电流环振荡的排查方向电流环振荡是 FOC 调试中出现频率最高的问题表现五花八门高频啸叫、电流波形抖动、电机发热严重。排查顺序按优先级排列问题类别具体表现排查步骤PI 参数问题高频等幅振荡降低 Kp看是否稳定Ki 过大会导致低频振荡采样噪声电流波形毛刺多观察采样时刻是否对准 PWM 中心采样时间是否过短角度问题低速抖动、高速嗡鸣检查零位偏移验证编码器读数稳定性解耦缺失高速时 Iq、Id 互相干扰加大前馈解耦观察是否改善控制周期不稳定偶发波动确认所有中断优先级确保电流环中断不被其他中断抢占实测下来最开始遇到的振荡 80% 以上是 PI 参数问题直接降 Kp、Ki 就能解决。但有两次调了很久发现是 ADC 采样时刻不对导致电流值本身就不对——这种问题参数怎么调都没用只能回头查采样链路。8.2 电流采样偏置的标定方法电流采样链路不可避免有零漂。运放输入偏置、ADC 偏置都会导致采到的电流在 0A 时读数不是 0。FOC 对电流偏置极度敏感。偏置误差会让相电流重构出错进而在 Iq、Id 上产生一个固定偏置最终表现为电机不转的时候检测到有电流给定 0A 指令实际输出有小力矩。标定方法上电后、电机驱动允许之前静止状态下连续采样若干次电流值取平均作为零偏存储下来。每次电流采样值都减去这个零偏再进 Clarke 变换。几个细节零偏标定要在 MOS 管全部关断、没有电流流动时进行。运放温度漂移会导致零偏缓慢变化温度变化大的场合可以定期重新标定或者在运放选型时挑低温漂类型。零偏不是整数值要保留到 ADC 原始分辨率级别的精度。用浮点或者 Q 格式存。8.3 单电阻重构的盲区问题如果你用了单电阻采样方案会碰到一个特有的问题重构盲区。SVPWM 的七个基本电压矢量和六个扇区里每个扇区内的两个有效矢量和零矢量各自持续时间不同。单电阻方案需要在每个 PWM 周期内找两个合适的时刻采样两次电流这两个时刻必须让某个下桥臂导通时间足够长。当电机运行在低调制比低速轻载或高调制比高速重载时某些矢量的持续时间过短采样窗口不足就没法重构电流。常用的解决办法是移相 PWMshift PWM当某个扇区采样窗口不足时把 PWM 波形在允许范围内平移给采样腾出窗口。算法复杂度明显上升所以我前面建议入门先别用单电阻方案。8.4 CAN 总线多电机协同下的电流环特殊性RoboMaster、机械臂这类场景下电机通过 CAN 总线组网主控发电流指令或者位置指令给电调。这里有一个不少人忽略的点电流换和电流环硬不硬直接影响总线控制的表现。CAN 指令周期通常 1kHz1ms 一发而电调内部的电流环在 10kHz 到 20kHz 运行。也就是说主控发来的 1kHz 电流指令电调内部会保持、插值并执行 10 到 20 次电流环计算。电调的电流环带宽决定了它能不能把指令平滑地转化为力矩。如果你发现 CAN 控制的机械臂末端有轻微抖动除了主控位置环的问题还需要确认电调电流环带宽是否足够。有些电调为了省事电流环 PI 调得特别软电机低速时虚位感很强这时候换一个电流环调得比较硬的电调或者重新整定电调电流环参数问题可能迎刃而解。8.5 调试用的几个小工具最后分享几个我用着顺手的小工具不算什么高科技但很管用用 PWM 加 RC 滤波把内部变量输出成模拟电压再用示波器看。先放两个 DA 通道一个输出 Iq_ref一个输出实际 Iq可以直接肉眼对比跟踪波形。无刷驱动板的 MCU 往往有多余的定时器和引脚随便挑一个做 PWM 输出RC 滤一下就够看波形了。用串口以 10kHz 以上的频率把电流数据发出来存成 CSV画曲线看稳态误差。串口波特率拉高比如 921600只发关键变量别发太多 debug 信息。在代码里加一个变量记录最近一次电流环的运算耗时如果耗时在某个中断里波动很大检查中断优先级抢占问题。电流环中断必须是最优先级的尤其要压过 USB、串口这类会阻塞的中断。9. 最后说两句实在话电流环调到这里理论部分和工程实现基本都覆盖了。不过真正把电流环调到硬是需要手感的这种手感只能靠反复试验累积。我自己踩过最深的坑是对着公式算出参数直接上机结果振荡之后第一反应是怀疑公式有问题。实际上公式没问题是数字控制延迟、采样噪声这些工程细节把系统拖垮了。做电机控制理论公式只能给你一个合理的起点让调试方向不至于跑偏但最终参数一定是在实测里磨出来的。还有一个建议调电流环时把手头的数据记录下来。哪个参数组合、测出来什么波形、有什么现象记成表格。连续记三次测试数据再回头看规律就出来了。这比凭感觉调参靠谱得多。如果这篇对你有帮助后续可以接着聊聊速度环怎么跟电流环配合、无感 FOC 的观测器怎么设计或者 SVPWM 过调制怎么做。电机控制这个坑很大慢慢填。
返回列表