2. 电机基础:直流有刷电机原理、步进电机原理、电机驱动芯片选型(L298N/DRV8825)

好,咱们进入第二章。这一章聊电机,而且是窗帘电机里最核心的两种:直流有刷电机和步进电机。你想想看,窗帘要开合顺畅、定位准确,电机选型就是第一道坎。我这些年做过的项目里,因为电机选型翻车的案例可不少,今天就把这些经验掰开揉碎了讲给你。

2.1 直流有刷电机原理

直流有刷电机,说白了就是最经典的电机。通电就转,换向靠电刷和换向器。结构简单,控制也简单——给电压就转,电压越高转速越快。

工作原理:定子产生磁场,转子线圈通电后在磁场中受力旋转。电刷负责在转子转到特定位置时切换电流方向,保证转子持续转下去。

关键参数

  • 额定电压:常见 12V、24V,窗帘电机多用 12V
  • 空载转速:不带负载时的转速,单位 RPM
  • 堵转扭矩:电机卡住不转时的最大扭矩,这个值很重要
  • 额定电流:正常工作时的电流,选驱动芯片的依据

我在项目中遇到过一个问题:某次选了一款标称 12V、200RPM 的直流电机,结果装上窗帘导轨后,带不动厚重的遮光布。一查才发现,堵转扭矩只有 0.2Nm,而实际负载需要 0.5Nm。嗯,这就是典型的只看转速不看扭矩的坑。

我的经验:直流有刷电机适合做窗帘的快速开合,但定位精度差。想精确停在某个位置?得加编码器做闭环控制。我个人习惯在电机尾部加一个霍尔编码器,每转输出几十个脉冲,配合单片机就能做位置估算。

2.2 步进电机原理

步进电机就不一样了。它是一步一步转的,每给一个脉冲信号,就转一个固定的角度。你想想看,这天然就适合做定位控制,不需要编码器也能知道转了多少步。

工作原理:定子上有多组线圈,转子是永磁体或带齿的铁芯。按顺序给线圈通电,转子就会一步步跟着转。常见的步进电机有 2 相、4 相,步距角有 1.8°、0.9° 等。

驱动方式

  • 整步驱动:每次转一个步距角,比如 1.8°
  • 半步驱动:每次转半个步距角,0.9°,分辨率翻倍
  • 微步驱动:把一步细分成 16、32、64 等份,运行更平滑

步进电机 vs 直流有刷电机

对比项 直流有刷电机 步进电机
控制方式 电压/电流控制 脉冲控制
定位精度 低(需编码器) 高(开环即可)
低速扭矩 一般
噪音 电刷摩擦声 低频共振声
成本 中等

我曾经在一个智能窗帘项目里用了步进电机,想着开环控制省事。结果发现一个问题:步进电机在低速运行时会有明显的振动和噪音,客户投诉说「窗帘像在跳舞」。后来我加了微步驱动,把 1.8° 的步距角细分成 32 微步,噪音问题才解决。所以啊,步进电机不是万能的,微步驱动是必选项。

注意:步进电机有「丢步」的风险。如果负载突然增大,电机可能转不动但控制器还以为它转了。我建议在要求高的场合加一个限位开关或霍尔传感器做位置校验。

2.3 电机驱动芯片选型

选好了电机,还得有驱动芯片。驱动芯片说白了就是把单片机的控制信号转换成电机需要的电流和电压。我常用的两款芯片是 L298N 和 DRV8825,它们各有千秋。

2.3.1 L298N

L298N 是个老将了,双 H 桥驱动芯片,能同时驱动两个直流电机或一个步进电机。最大电流 2A,峰值 3A,供电电压最高 46V。

特点

  • 价格便宜,几块钱一片
  • 驱动简单,逻辑电平兼容 5V 和 3.3V
  • 发热量大,需要加散热片
  • 效率不高,压降约 2V

典型电路

// L298N 控制直流电机示例(Arduino)
// 使能引脚接 PWM,控制速度
// 输入引脚接数字 IO,控制方向

#define ENA 9
#define IN1 8
#define IN2 7

void setup() {
  pinMode(ENA, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
}

void loop() {
  // 正转,速度 50%
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  analogWrite(ENA, 128);
  delay(2000);

  // 反转,速度 80%
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  analogWrite(ENA, 204);
  delay(2000);
}

我记得有一次用 L298N 驱动一个 12V、1.5A 的直流电机,没加散热片,结果芯片烫得能煎鸡蛋。后来加了散热片,又用 PWM 频率从 1kHz 调到 10kHz,发热才降下来。嗯,L298N 的发热问题是个老生常谈的坑。

2.3.2 DRV8825

DRV8825 是 TI 出的步进电机驱动芯片,专门为微步驱动设计的。最大电流 2.5A,支持 1/32 微步,内部集成过流、过热保护。

特点

  • 微步分辨率高,运行平滑
  • 内置电流调节,不需要外部限流电阻
  • 体积小,适合嵌入式设计
  • 价格比 L298N 贵一些

典型电路

// DRV8825 控制步进电机示例(Arduino)
// STEP 引脚每给一个脉冲,电机走一步
// DIR 引脚控制方向

#define STEP 2
#define DIR 3
#define ENABLE 4

void setup() {
  pinMode(STEP, OUTPUT);
  pinMode(DIR, OUTPUT);
  pinMode(ENABLE, OUTPUT);
  digitalWrite(ENABLE, LOW);  // 使能驱动
}

void loop() {
  // 正转 200 步(一圈)
  digitalWrite(DIR, HIGH);
  for (int i = 0; i < 200; i++) {
    digitalWrite(STEP, HIGH);
    delayMicroseconds(1000);
    digitalWrite(STEP, LOW);
    delayMicroseconds(1000);
  }
  delay(1000);

  // 反转 200 步
  digitalWrite(DIR, LOW);
  for (int i = 0; i < 200; i++) {
    digitalWrite(STEP, HIGH);
    delayMicroseconds(1000);
    digitalWrite(STEP, LOW);
    delayMicroseconds(1000);
  }
  delay(1000);
}

选型建议

  • 如果做窗帘的快速开合,对定位精度要求不高,用直流有刷电机 + L298N,成本低
  • 如果要求精确定位、静音运行,用步进电机 + DRV8825,微步驱动是王道
  • 如果电流超过 2A,考虑用 DRV8825 的兄弟型号 DRV8833 或外接 MOS 管

2.4 避坑指南

最后,我把自己踩过的坑总结一下,你以后遇到了能少走弯路:

  • 我曾经以为 L298N 的 2A 电流是持续的,结果长时间 1.5A 运行就过热保护了。后来才知道,2A 是峰值,持续电流最好控制在 1A 以内。
  • 我曾经用 DRV8825 驱动步进电机,没接电源滤波电容,结果电机运行时电压波动导致芯片复位。加一个 100μF 的电解电容就解决了。
  • 我曾经把步进电机的微步设置成 1/32,结果单片机算不过来,脉冲频率太高电机反而转不动。后来把微步降到 1/16,速度才正常。

好了,这一章的内容就这些。直流有刷电机和步进电机各有适用场景,驱动芯片选型要看电流、精度和成本。下一章我们讲传感器,到时候你会看到这些电机怎么和传感器配合,实现窗帘的智能控制。