物理基础:车窗/天窗电机工作原理、霍尔传感器与脉冲信号、电流与力矩的关系

各位同学,欢迎来到第二讲。上一章我们聊了防夹算法的整体框架,今天得把底层的物理基础打牢。说白了,你要是不懂电机怎么转、霍尔怎么数、电流怎么测,那后面写代码就是空中楼阁。

我个人习惯,做嵌入式开发之前,先花半小时把物理模型在脑子里过一遍。这比直接调代码管用多了。好,我们开始。

一、直流有刷电机:车窗/天窗的心脏

车窗和天窗用的电机,99%是直流有刷电机。为什么?便宜、皮实、控制简单。你想想看,一个电机要带动玻璃升降,还要能正反转,有刷电机天生就支持。

它的工作原理其实不复杂:

  • 定子:永磁体,产生固定磁场
  • 转子:线圈绕组,通电后产生电磁力
  • 换向器+电刷:保证转子持续朝一个方向转

电流从电刷流进去,经过换向器进入线圈,线圈在磁场中受力旋转。每转半圈,换向器自动切换电流方向,保证力矩方向不变。嗯,这里要注意,电刷是易损件,但车窗电机寿命内基本不用管它。

关键参数:

  • 额定电压:12V(汽车电气系统)
  • 空载转速:约 60-100 rpm(减速后)
  • 堵转电流:5-15A(视电机功率而定)
  • 减速比:通常 50:1 到 80:1

我在项目中遇到过一个问题:某款天窗电机在低温下启动困难。后来发现是润滑脂凝固导致阻力增大,电机堵转电流飙升。所以做防夹算法时,一定要考虑温度对电机特性的影响。

二、霍尔传感器:给电机装上"眼睛"

电机在转,你怎么知道它转了多少?靠霍尔传感器。

霍尔传感器利用霍尔效应:当磁场垂直于电流方向时,导体两侧会产生电势差。说白了,就是检测磁场变化。

在车窗电机里,通常这样布置:

  • 磁环安装在电机转轴上,有 N/S 交替的磁极
  • 霍尔元件固定在定子上,感应磁场变化
  • 每转过一对磁极,输出一个脉冲

脉冲信号长什么样?我画个示意图:

// 霍尔脉冲信号示意(伪代码)
// 电机匀速转动时,脉冲是等间距的方波
// 高电平:N极经过
// 低电平:S极经过

脉冲波形:
  ┌──┐    ┌──┐    ┌──┐
  │  │    │  │    │  │
──┘  └────┘  └────┘  └────
  T1  T2   T3  T4   T5  T6

每个脉冲对应固定的机械角度。比如磁环有4对磁极,那一个脉冲就是 360°/(4×2) = 45°。但注意,这是电机轴的角度,经过减速器后,到玻璃上的位移要除以减速比。

我的经验:

我曾经调试过一个项目,霍尔脉冲计数总是不准。查了半天,发现是磁环安装偏心,导致脉冲宽度不均匀。后来要求供应商把磁环同心度控制在0.1mm以内,问题就解决了。所以硬件公差也会影响算法精度,别光盯着代码。

三、电流与力矩:防夹判断的核心

防夹算法最终靠什么判断?电流。为什么?因为电流和力矩成正比。

直流有刷电机的力矩公式:

T = Kt × I

其中:
T  = 电机输出力矩 (N·m)
Kt = 力矩常数 (N·m/A)
I  = 电枢电流 (A)

说白了,电流越大,力矩越大。当玻璃遇到障碍物时,阻力增大,电机需要输出更大的力矩才能继续运动,于是电流上升。我们就是靠检测这个电流上升来判断是否夹到东西。

但事情没那么简单。电流变化受很多因素影响:

因素 对电流的影响 防夹算法需要考虑
玻璃位置 顶部和底部阻力不同 位置自适应阈值
温度 低温时润滑脂变稠,电流偏大 温度补偿
电压波动 电压低时,相同力矩需要更大电流 电压归一化
老化 导轨磨损,阻力逐渐增大 长期学习机制

避坑指南:

我曾经犯过一个错误:直接用固定电流阈值做防夹。结果夏天正常,冬天频繁误触发。后来才意识到,低温下空载电流都比夏天堵转电流高。所以一定要做温度补偿,或者用相对变化量而不是绝对阈值。

四、脉冲信号与电流的配合使用

光看电流不行,光看脉冲也不行。两者要配合。

举个例子:

  • 如果电流突然上升,但脉冲还在正常变化 → 可能是遇到障碍物
  • 如果电流上升,同时脉冲频率下降 → 电机堵转,肯定夹住了
  • 如果电流正常,但脉冲丢失 → 霍尔传感器故障,需要报错

我习惯用状态机来管理:

// 防夹检测状态机(简化版)
enum State {
    IDLE,       // 待机
    RUNNING,    // 正常运行
    CHECKING,   // 防夹检测中
    REVERSING   // 反转释放
};

// 在 CHECKING 状态,同时监测:
// 1. 电流变化率 dI/dt
// 2. 脉冲间隔变化率 dT/dt
// 3. 当前位置(脉冲累计数)

if (dI/dt > THRESHOLD_CURRENT && dT/dt > THRESHOLD_PERIOD) {
    // 电流上升 + 速度下降 = 大概率夹住了
    enter_state(REVERSING);
}

嗯,这里要注意,电流采样频率至少要比脉冲频率高10倍。比如脉冲频率是100Hz,电流采样就要1kHz以上,才能捕捉到瞬态变化。

五、总结一下

这一章的内容,说白了就是三件事:

  1. 电机怎么转:直流有刷电机,靠电刷换向,简单可靠
  2. 怎么知道转了多少:霍尔传感器数脉冲,每个脉冲对应固定角度
  3. 怎么知道遇到障碍:电流上升 = 力矩增大 = 阻力变大

下一章我们会讲具体的信号调理电路和采样策略。到时候你会看到,物理世界的信号到了单片机里,还得经过滤波、放大、归一化等一系列处理。但今天这些基础,是后面所有算法的根基。

好,今天就到这里。有问题欢迎在课程群里讨论,或者直接找我。记住,做嵌入式开发,物理直觉比代码能力更重要。