3. 误差建模与数学描述:从霍尔信号到位置/速度的数学桥梁

做伺服驱动这些年,我越来越觉得:数学模型不是纸上谈兵,它是你和硬件对话的翻译官。霍尔传感器输出的只是三个高低电平,但你要的是连续的位置和速度。这中间的鸿沟,就得靠数学来填。

这一章,我们就来搭这座桥。我会从最基础的霍尔信号讲起,一步步推导出位置和速度的表达式,然后引入传递函数和状态空间方程。别怕公式,我会用项目里的实际例子帮你理解。

3.1 霍尔传感器的输出信号模型

先看霍尔传感器到底输出了什么。一个典型的无刷直流电机(BLDC)里,三个霍尔元件按120°电角度安装。转子转动时,它们输出三个方波信号:HA、HB、HC。

这三个信号有固定的相位关系。我习惯用一个简单的数学表达式来描述:

HA(θ) = sign(sin(θ))
HB(θ) = sign(sin(θ - 120°))
HC(θ) = sign(sin(θ - 240°))

其中 sign() 是符号函数,θ 是电角度。每个信号只有0和1两种状态,三个信号组合起来,一个电周期内正好有6个状态。

关键点:霍尔信号本质上是离散的位置信息。一个电周期内,我们只能得到6个精确的位置点(每60°一个)。位置分辨率 = 360° / (极对数 × 6)。

举个例子。我做过一个8极对数的电机项目,霍尔信号的分辨率只有:360° / (8 × 6) = 7.5° 机械角度。这个分辨率对于很多应用来说太粗糙了,这就是误差的根源之一。

3.2 位置与速度的数学表达

有了霍尔信号,怎么得到连续的位置和速度?这里有两个层次的问题。

3.2.1 位置估计

最简单的做法是查表法。每个霍尔状态对应一个固定的电角度:

霍尔状态 (HA, HB, HC) 电角度 (度) 扇区编号
1 0 1 0 1
1 0 0 60 2
1 1 0 120 3
0 1 0 180 4
0 1 1 240 5
0 0 1 300 6

但这样得到的角度是阶梯状的。每个扇区内角度不变,换扇区时跳变60°。这种跳变在低速时尤其明显,会导致速度估算剧烈波动。

我建议的做法是:在扇区内做线性插值。假设电机匀速转动,那么扇区内的角度可以表示为:

θ(t) = θ_k + ω_k × (t - t_k)

其中 θ_k 是第k个扇区的起始角度,ω_k 是当前扇区内的平均角速度,t_k 是进入该扇区的时间戳。

我的经验:插值后的角度精度取决于速度估算的准确性。如果速度估算不准,插值反而会引入更大的误差。我一般会在速度估算上做一个低通滤波,截止频率设在10-20Hz左右。

3.2.2 速度估计

速度估计有两种常用方法:

  • M法(测频法): 测量固定时间内霍尔边沿的个数。适合高速。
  • T法(测周法): 测量两个霍尔边沿之间的时间间隔。适合低速。

实际项目中,我更喜欢用T法。因为伺服系统经常工作在低速,T法在低速时的分辨率更高。速度计算公式:

ω = Δθ / Δt

Δθ 是固定的60°电角度,Δt 是两次霍尔跳变的时间差。这个公式看起来简单,但实际用起来坑不少。

我曾经踩过的坑:直接用相邻两次霍尔跳变的时间差算速度,结果速度信号噪声极大。原因是霍尔信号的跳变时刻本身就有抖动(机械振动、电磁干扰)。后来我改用多周期平均法,取最近3-5次跳变的时间差做加权平均,效果好了很多。

3.3 传递函数模型

有了位置和速度的数学表达,我们就可以把整个霍尔传感器+估算算法看作一个测量环节,用传递函数来描述它的动态特性。

霍尔传感器本身可以近似为一个零阶保持器。因为它在每个扇区内输出恒定的位置值,直到下一个跳变才更新。零阶保持器的传递函数是:

G_h(s) = (1 - e^(-T_s)) / s

其中 T 是霍尔信号的采样周期(即两次跳变的时间间隔)。这个周期不是固定的,它随转速变化。

如果加上插值算法,情况会复杂一些。插值相当于引入了一个一阶近似。我习惯把整个霍尔位置估算环节简化为:

G_est(s) = 1 / (τ_est × s + 1)

τ_est 是等效时间常数,它和霍尔信号的更新频率有关。一般来说,τ_est ≈ T/2。

核心结论:霍尔位置估算环节本质上是一个低通滤波器。它的带宽受限于霍尔信号的更新频率。转速越低,更新频率越低,带宽越窄,滞后越大。这就是低速时跟随误差大的根本原因。

3.4 状态空间方程

传递函数适合单输入单输出系统,但伺服系统是多变量的。我更喜欢用状态空间方程来描述整个系统。

考虑一个简化的伺服系统,状态变量包括:位置 θ、速度 ω、以及霍尔估算误差 e。状态空间方程可以写成:

d/dt [θ]   = [0   1   0] [θ]   + [0]   u
      [ω]     [0   0   0] [ω]     [Kt/J]
      [e]     [0   0  -1/τ] [e]     [0]

y = [1   0   1] [θ]
                [ω]
                [e]

其中:

  • u 是电流指令(转矩指令)
  • Kt 是转矩常数
  • J 是转动惯量
  • τ 是霍尔估算误差的衰减时间常数
  • y 是实际测量的位置(包含误差)

这个模型把霍尔误差作为一个独立的状态变量 e 来处理。e 的动态特性由时间常数 τ 决定。τ 越大,误差衰减越慢,对系统的影响越持久。

我个人习惯:在实际调试中,我会把 τ 作为一个可调参数。通过辨识实验(比如给一个阶跃速度指令,观察位置误差的收敛过程),可以拟合出 τ 的值。一般 τ 在 0.01s 到 0.1s 之间。

3.5 知识体系总览

为了让你更直观地理解这一章的知识结构,我画了一张图:

霍尔传感器误差建模知识体系 霍尔信号 HA/HB/HC 位置/速度估算(插值 + 滤波) 离散位置模型 传递函数模型 状态空间模型 扇区插值 / 误差补偿 频域分析 / 带宽设计 状态观测器 / 卡尔曼滤波 核心思想:从离散霍尔信号 → 连续数学模型 → 误差分析与补偿 模型精度决定了误差补偿的上限

3.6 模型怎么用?一个实际例子

理论讲完了,说点实际的。去年我做了一个AGV小车的轮毂电机项目,霍尔传感器就是位置反馈的唯一来源。

问题表现:小车在低速(< 50 rpm)时,速度波动很大,有明显的顿挫感。我用示波器抓了霍尔信号和估算速度,发现速度估算值在扇区切换时有剧烈的尖峰。

我用这一章的模型做了分析:

  1. 先建立霍尔信号的离散位置模型,确认分辨率是7.5°机械角度
  2. 然后用传递函数模型估算等效时间常数 τ_est ≈ 15ms(在50rpm时)
  3. 最后用状态空间模型仿真,发现误差状态 e 的衰减时间常数 τ 需要调到 0.05s 以上才能稳定

解决方案:在速度估算中增加一个自适应低通滤波器,截止频率随转速变化。低速时降低截止频率,抑制噪声;高速时提高截止频率,减少滞后。效果立竿见影,速度波动从 ±15% 降到了 ±3%。

总结一下:数学模型的价值不在于公式本身,而在于它能帮你定量地理解问题。有了模型,你就能预测不同参数下的表现,而不是盲目地试参数。