wix建设网站,推广文案,wordpress搭建小说站,惠州网络推广哪里找目录 PID控制滤波单独位置控制单独速度控制单独电流控制位置-速度-电流串级控制 上一节#xff0c;通过对SVPWM的推导#xff0c;我们获得了控制电机转子任意受力的能力。本节#xff0c;我们选用上节得到的转子dq轴解耦的SVPWM形式#xff0c;对转子受力进行合理控制… 目录 PID控制滤波单独位置控制单独速度控制单独电流控制位置-速度-电流串级控制 上一节通过对SVPWM的推导我们获得了控制电机转子任意受力的能力。本节我们选用上节得到的转子dq轴解耦的SVPWM形式对转子受力进行合理控制实现FOC电机控制的最终目标位置、速度、电流控制。
PID控制
看到本节的人大概率是了解PIDProportional比例Integral积分Derivative微分控制的也是本人能力所限在此不进行完整讲解也不涉及高级控制方法。 不管是电机的位置还是速度还是电流都可以视为被控参数。 从直观想法上当一个被控参数实时值小于目标值时需要施加外力使被控参数提高。如果施加的外力过大被控参数会被超调导致被控参数在目标值附近的振荡幅度越来大如果施加的外力过小参数到达目标值的速度又太慢。因此需要得到一个合适的外力使得被控参数既不会振荡越来越剧烈调节速度也不会太慢。从这个直观的控制想法就是PID中的P。单纯使用P控制时设置外力大小被控参数与目标值的差距*P系数所谓差距越大施加的外力越大是很直观的。如果P系数设置的比较小虽然被控参数不会一直振荡了可以慢慢稳定到目标值了但是调节速度太慢了此时可以加入PID的D控制使得原先振荡的被控参数快速收缩到目标值。 再从直观想法上去思考D控制纯P控制下被控参数靠近以及掠过目标值时一个与速度反方向的纠偏力有助于被控参数在目标值附近产生制动让被控参数更快地收缩到目标值。这个与速度反方向的纠偏力就是D控制。加入D控制后控制外力大小被控参数与目标值的差距*P系数被控参数速度*D系数。当纯D控制时由于初始状态下被控参数的速度为0 被控参数不会得到外力由此也可以看出P控制是提供外力的D控制是约束外力的。如果D系数选择过大则轻微的速度就能够引起巨大的外力如果D系数选择过小则不足以约束P控制生产的外力被控参数稳定就慢。 还是从直观想法上去思考I控制当被控参数存在负载时单纯的P控制提供的外力可能不足以支撑这个负载因此可以加上这样一个机制把被控参数与目标值差距随着时间累计起来这样就能得到存在负载时被控参数到达目标值所需的动力了。这个机制就是I控制。加入I控制后控制外力大小被控参数与目标值的差距*P系数被控参数速度*D系数被控参数与目标值差距随时间累计*I系数。 在控制电机时没有特殊情况下由于d轴对电机旋转不生成贡献pid控制可以只控制q轴的力d轴可以进行控制也可以直接设置输出为0。
滤波
在速度控制和电流控制时受限于采样精度和频率等速度和电流是不稳定的且变化比较快例如下图是电机速度的直接计算值存在很多锯齿在真实值附近波动如果直接使用这样的值会导致PID输出波动较大 下图为经过滤波后比较接近真实值滤波方法有很多种比如低通滤波、卡尔曼滤波本质就是在夹杂了噪音的数据中估计出一个接近真实的值。由于滤波是一个非常大的课题原理不在本节进行说明可直接查看后续实践部分的代码只是在此提醒输入PID控制器前需要进行滤波计算。
单独位置控制
位置指的是角度要注意有两种物理角度一个是电机角度一个是转子角度两者是不一样的。电机编码器是安装在转子外壳上的因此编码器获得的是转子外壳的角度而转子位于内部由于转子外壳和转子是互相固定的两种角度有一个固定偏移安装的时候编码器零度不可能正好对着转子永磁体。编码器角度由编码器提供转子角度也就能知道了。在后续实践部分会说明怎么获得这个固定偏移在本节只需完成理论计算部分。合成的磁矢量是作用于转子永磁体的因此理论计算是在转子角度基础上计算的。 有两种方法可以实现转子的位置控制
pid法 直观的思想就是用转子q轴不停地左右拉扯转子转子一旦偏离目标位置了就在q轴施加一个反向的力拉扯一下偏离越大拉扯力越大让转子回到目标位置。 优点q轴能够提供较大的力位置控制比较迅速有力。 缺点由于q轴与转子永磁体磁矢量相差90度因此需要知道转子实时位置角度。 由于在有编码器的情况下转子实时位置很容易获得因此大部分情况下使用pid控制位置。 单独位置的FOC控制框图如下图。图中的意思是输入一个目标位置与编码器计算得到的角度进行差值计算然后输入pid控制器只控制转子q轴强度d轴强度直接设置为0最后将dq轴强度0~1之间输入到前文推导得到的SVPWM函数中输出得到uvw桥臂的pwm占空比。这里要注意的是输入的目标位置 θ i n \theta_{in} θin可以是转子角度或者编码器角度或者多圈角度只要与反馈的 θ \theta θ保持同一种角度即可。
d轴强拖 核心思想是人为控制线圈生成一个目标线圈磁矢量永磁铁的d轴会被吸引到目标位置。注意该方法是吸引d轴到目标位置。 优点由于生成的就是目标位置因此无需知道转子角度转子自然会被吸引过去。 缺点切向分力小轻微切向外力就能让转子明显脱离位置。
单独速度控制
速度控制使用d轴拖动的方法就不合适了因为d轴拖动就是为了不使用编码器没了编码器数据就很难计算速度了。速度控制可以使用pid控制方法但是由于电机旋转过程中速度值变化比较不稳定而D控制是与被控参数的变化程度成正比所以一般只使用PI控制。 速度的计算方式非常简单就是 当前角度 − 上次记录的角度 Δ t \frac{当前角度-上次记录的角度}{\Delta{t}} Δt当前角度−上次记录的角度。 将目标速度与实时速度的差值输入到PI控制中就能实现速度控制。 单独速度的FOC控制框图如下图。
单独电流控制
电机的电流代表了力矩大小。转子的受力在dq轴解耦后可以发现只有q轴才对电机旋转生成贡献只有q轴才产生力矩因此只需要控制q轴电流即可控制电机力矩。如果对d轴电流也进行控制可以提升电机电流利用率降低发热提升电机最高力矩输出。 获得电机电流 转子dq轴是一个抽象出来的概念是为了方便解耦转子受力的无法直接检测dq轴电流能够直接检测的电流是电机相线电路上的电流dq轴电流可以根据相线电流计算得到。 相线电流的检测有很多种最常见的两种方式是1.电流检测放置在上下桥臂功率管之间称为在线检测。2.电流检测放置在下桥臂与GND之间称为低端检测。 由于一个节点流出电流流入电流0因此三个相线只需要两个电流检测单元即可。但是低侧检测最好使用三个电流检测单元因为当某个桥臂的pwm占空比为1或者接近1时该下桥臂将没有电流经过或者电流不稳定三个相线就只剩下一个电流检测能够正常采集电流有三个电流检测单元后可以三个都读取电流根据占空比情况选择其中两个电流值另一个通过电流总和为0进行计算。在线检测则没有该困扰因为不管下桥臂是否处于关闭状态相线始终有电流经过。由于在线检测位置的电压比较大因此在线检测的电流检测单元需要能够承受较大电压价格比较高。
获得三个相线电流后接下来想办法转换为dq轴电流。可以将相线电流投影到dq轴上这样就能直接得到dq轴电流了不过目前主流做法是先将dq轴投影到 α \alpha α轴和 β \beta β轴这步称为clark变换再将 α \alpha α轴和 β \beta β轴电流投影到dq轴这步称为park变换因为在更高级的无位置传感器FOC中会用到 α \alpha α轴和 β \beta β轴电流。
clark变换 将三相电流 I u , I v , I w I_u,I_v,I_w Iu,Iv,Iw投影到 I α , I β I_\alpha,I_\beta Iα,Iβ上从下图的几何关系可以看出投影表达式为 { I α I u − I v ∗ cos 6 0 ° − I w ∗ cos 6 0 ° I β I v ∗ cos 3 0 ° − I w ∗ cos 3 0 ° \begin{cases} I_\alphaI_u-I_v*\cos{60^{\degree}}-I_w*\cos{60^{\degree}} \\ I_\betaI_v*\cos{30^{\degree}}-I_w*\cos{30^{\degree}} \end{cases} {IαIu−Iv∗cos60°−Iw∗cos60°IβIv∗cos30°−Iw∗cos30°
park变换 将 I α , I β I_\alpha,I_\beta Iα,Iβ轴投影到dq轴实际上就是乘以一个旋转矩阵从下图的几何关系可以看出投影表达式为 { I d I α ∗ cos θ I β ∗ sin θ I q − I α ∗ sin θ I β ∗ cos θ \begin{cases} I_dI_\alpha*\cos{\theta}I_\beta*\sin{\theta} \\ I_q-I_\alpha*\sin{\theta}I_\beta*\cos{\theta} \end{cases} {IdIα∗cosθIβ∗sinθIq−Iα∗sinθIβ∗cosθ
单独电流的FOC控制图如下图由于电流变化比较不稳定所以与被控参数变化速度有关的D控制在这里通常不使用只使用PI控制。
位置-速度-电流串级控制
如果有这样一个需求控制位置时规定电机归位过程中的最大速度以及最大电流或者控制速度时规定电机到达目标速度过程中的最大电流那么就需要使用到位置-速度-电流串级控制。这里的串级控制并不是控制电机达到某一个电流值或者速度值而是要求电机在控制过程中能够达到的最大电流值或者最大速度值因为无法做到电机保持在一个位置的时候依然有速度或者有电流。 串级控制的意思就是当前控制环的输入为上一个控制环的输出以串级位置控制为例控制框图为 理论部分目前到此结束我们得到了SVPWM的计算方法以及位置、速度、电流的控制流程可以进行FOC代码编写了但是实践的时候会遇到种种问题比如相线的顺序、pwm占空比怎么落实、电流采样时刻、外设的配置等接下来的实践部分使用超常见的单片机性价比之王smt32f103c8t6以及stm32cube工具不使用电机库从零开始实现完整的FOC控制。