一、核心原理:用"猜的方向"检测"测量信号"
首先理解这两个关键向量:
1. 估算向量(我们猜的方向)
我们用当前猜测的角度θ_est,构造一个向量:
估算向量 = [cos(θ_est), sin(θ_est)]
这个向量永远在单位圆上,长度为1。
例子:
-
猜转子在0° → 向量是
[1, 0](指向右边) -
猜转子在30° → 向量是
[0.866, 0.5](30°方向) -
猜转子在90° → 向量是
[0, 1](指向上边)
2. 测量向量(实际测量到的信号)
从电机测量到的信号[Ain, Bin],这个向量的方向反映了转子真实位置。
二、关键技巧:让测量向量在猜对时指向特定方向
在高频注入中,我们对测量信号做了特殊处理,使得:
-
当猜对时 (θ_est = θ_real),测量向量指向
[0, 1]方向 -
当猜错时 ,测量向量会偏离
[0, 1]方向
为什么是[0, 1]?
这是工程设计的约定。理论上可以指向任何固定方向,但选择[0, 1](垂直向上)比较方便。
三、具体例子计算(一步一步来)
假设真实转子在30°,我们来比较两种情况。
情况1:完全猜对 ✅
-
真实角度:θ_real = 30°
-
我们猜的:θ_est = 30°
-
测量向量:
[Ain, Bin] = [0, 1](因为猜对了,信号指向垂直方向)
计算误差:
估算向量 = [cos(30°), sin(30°)] = [0.866, 0.5]
测量向量 = [0, 1]
点乘 = 0.866×0 + 0.5×1 = 0.5
等等!不是应该为0吗?
这里有个小调整:实际中我们会减掉0.5,使得猜对时误差为0。
调整后:
误差 = 点乘 - 0.5 = 0.5 - 0.5 = 0
所以猜对时,误差为0!
情况2:猜错了(猜20°,实际30°)❌
-
真实角度:30°
-
我们猜的:20°(差了10°)
-
测量向量:因为猜错了,测量向量不再是[0, 1]
在猜20°时,测量向量会是多少?
关键 :测量向量会有一个水平分量。当猜的角度比实际小时,这个分量是正的。
假设测量向量是:[0.17, 0.98]
-
注意:它不完全是
[0, 1]了 -
有了一个小的水平分量0.17
计算误差:
估算向量 = [cos(20°), sin(20°)] = [0.94, 0.342]
测量向量 = [0.17, 0.98]
点乘 = 0.94×0.17 + 0.342×0.98 = 0.16 + 0.335 = 0.495
调整后误差 = 0.495 - 0.5 = -0.005
误差是-0.005!负数!
情况3:猜大了(猜40°,实际30°)❌
-
猜40°,实际30°(差了-10°)
-
测量向量会有负的水平分量 ,比如
[-0.17, 0.98]
计算:
估算向量 = [cos(40°), sin(40°)] = [0.766, 0.643]
测量向量 = [-0.17, 0.98]
点乘 = 0.766×(-0.17) + 0.643×0.98 = -0.13 + 0.63 = 0.5
调整后误差 = 0.5 - 0.5 = 0
等等,这是巧合吗?不,让我们仔细算:
0.766×(-0.17) = -0.13022
0.643×0.98 = 0.63014
和 = 0.49992 ≈ 0.5
调整后误差 ≈ 0
咦?误差接近0,这不对!
这是因为当误差较大时,情况更复杂。实际上,误差函数是正弦函数,不是线性的。
四、数学真相:误差是正弦函数
真正的误差公式其实是:
误差 = K × sin(θ_real - θ_est) = K × sin(Δθ)
其中Δθ是真实角度减去猜测角度。
正弦函数的特性:
-
当Δθ=0时,sin(0)=0 → 误差=0
-
当Δθ很小时,sin(Δθ)≈Δθ → 误差与角度差成正比
-
当Δθ>0时,sin(Δθ)>0 → 误差为正
-
当Δθ<0时,sin(Δθ)<0 → 误差为负
用实际数字验证(假设K=1):
-
Δθ=0° → sin(0°)=0 → 误差=0
-
Δθ=10° → sin(10°)=0.174 → 误差=+0.174
-
Δθ=-10° → sin(-10°)=-0.174 → 误差=-0.174
-
Δθ=90° → sin(90°)=1 → 误差=1
-
Δθ=-90° → sin(-90°)=-1 → 误差=-1
五、我们的点乘公式就是正弦函数
经过复杂的数学推导(这里不展开),我们的点乘公式:
ThetaErr = CosVal * Ain + SinVal * Bin
在特定条件下,就等于:
ThetaErr = 常数 × sin(θ_real - θ_est)
这就是为什么点乘能算出角度误差!
六、图形化理解
想象一个单位圆:
Y轴(0,1)
↑
| 真实转子位置
| /
| / Δθ (角度差)
| /
| /
| /
估算位置---O------> X轴
-
我们在单位圆上标出估算位置(用θ_est)
-
从估算位置到真实位置有一个角度差Δθ
-
测量向量
[Ain, Bin]会指向一个与Δθ相关的方向 -
点乘结果 = sin(Δθ)
七、实际控制中的工作方式
步骤1:初始化
假设我们完全不知道转子在哪,随便猜个角度,比如0°。
步骤2:第一次测量
-
注入高频电压
-
测量电流响应
-
计算
[Ain, Bin] -
用当前猜测角度计算误差
例子:
-
猜0°,实际在30°
-
计算误差 = sin(30°-0°) = sin(30°) = 0.5
-
误差是+0.5,说明我们猜的角度太小了
步骤3:调整猜测
-
误差+0.5 → 要增加猜测角度
-
增加多少?由PI控制器决定
-
假设PI输出角速度ω=10°/秒
-
下一时刻:新角度 = 0° + 10°×采样时间
步骤4:再次测量
-
新角度10°,实际30°
-
新误差 = sin(30°-10°) = sin(20°) = 0.34
-
误差从0.5降到0.34,说明我们靠近了
步骤5:继续调整
一直调整,直到误差趋近于0。
八、为什么点乘能产生正弦函数?
这是因为高频注入的特殊处理。简单来说:
-
注入高频旋转电压
-
测量高频电流响应
-
这个响应包含转子位置信息
-
通过特定的解调方法,得到
[Ain, Bin] -
当用估算角度与
[Ain, Bin]点乘时,数学上就等于sin(Δθ)
九、总结
误差计算公式:
ThetaErr = CosVal * Ain + SinVal * Bin
实际上计算的是:
ThetaErr = 常数 × sin(真实角度 - 估算角度)
物理意义:
-
结果为正 → 猜的角度偏小 → 要增大
-
结果为负 → 猜的角度偏大 → 要减小
-
结果为零 → 猜对了 → 保持
这就实现了一个角度追踪器:
-
注入信号探测
-
用猜测角度计算误差
-
根据误差方向调整猜测
-
重复直到误差为0
最终,即使我们一开始完全不知道 转子在哪,也能通过这个闭环过程找到并跟踪转子位置。这就是高频注入无传感器控制的核心原理。