简介:这是一份五相步进电机驱动电路开发的论文翻译文档,面向电机控制、机器人驱动及自动化工程领域的研究者与工程师。文档详细阐述基于L297与L298N等标准步进电机驱动IC构建新型五相驱动电路的方法,涵盖电流控制、PWM斩波、控制逻辑设计及接口实现,并证明该方案可推广至任意奇数相步进电机。资源包仅含1个doc文件,大小5.34MB,便于直接阅读与打印;配套中文译文还原了原文技术细节,适合需要快速掌握五相步进驱动原理的入门及进阶学习者。目前已有121人学习下载,可用作课程设计、课题研发或工程实践的参考资料。
1. 五相步进电机驱动为什么贵:L297+L298N 是低成本替代路径
五相步进电机驱动电路开发这个事,做机器人底盘、五轴机床和转台控制的工程师基本都撞过墙:两相四相驱动随便配,一到五相,专用驱动 IC 几乎找不到,整机驱动板价格翻几倍。这篇翻译自斯里兰卡佩勒代尼耶大学论文的文档,核心思路很反直觉——它用 L297 加 L298N 这两种驱动四相电机的商用现货芯片,再加一个 PIC16F877A 和一堆 DM74LS08 与门,硬生生拼出一个五相驱动电路。文档最有价值的部分不是接线图,而是把五相激励序列从四相波形里拆出来的逻辑推演,这部分搞明白,你去适配七相、九相这类奇数相电机也能用同一套思路。适合正在做五相电机驱动选型、又被专用驱动方案价格劝退的人。
2. 元器件选型拆解:L297 斩波限流和 L298N 双 H 桥分工
2.1 L297:相序发生器和两路 PWM 斩波电路
L297 是意法半导体(ST)的步进电机控制器,一颗芯片把相序发生、斩波限流和逻辑接口全部集成在一起。单独一颗 L297 能驱动两相双极性永磁式电机、四相单极性永磁式电机,或者四相变磁阻式电机。它对外接收来自微控制器或者外部开关的控制信号,内部按输入模式输出 A、B、C、D 四相序列,同时输出 INH1、INH2 两个抑制信号用于配合功率级限流。
你拿到手先要理解它的相序行为:在任何一种工作模式下,A、B、C、D 的波形都会在四个时钟周期之后重复一次。换句话说,喂四个时钟脉冲,四相输出就走完一轮完整循环。L297 支持三种工作模式——半步模式、全步模式和波形模式,分别对应不同的通电组合。这个文档之所以选全步模式下的"两相导通"作为基础,是因为五相电机的激励序列需要在这三种模式里挑一个最接近的形态,再通过外部逻辑改造成五相,而不是直接拿 L297 的输出硬接电机。
斩波限流是 L297 另一个不能忽视的功能,也是后续电流控制的根基。L297 内建两路 PWM 斩波电路,每路由一个比较器、一个触发器和外部一颗感测电阻组成。工作过程可以一句话描述:绕组电流上升,感测电阻两端电压同步上升,一旦超过 Vref 设定值,触发器被复位,功率级输出被切断,电流自然衰减,直到下一个振荡器脉冲到来再重新导通。占空比 D = Ton / (Ton + Toff),其中 Ton 是 H 桥导通时间,Toff 是关断时间。Vref 决定电流峰值——这个参数就是调试时调电流上限的旋钮。
这里有个容易看漏的细节:L297 的斩波分两种模式——抑制斩波(Inhibit Chopper)和相位线斩波(Phase Line Chopper)。相位线斩波模式下,感测电阻电压到达 Vref 时只关断低侧开关;抑制斩波模式下,INH 信号会让整个 H 桥的四个开关全部截止。文档明确说相位线斩波不适用,原因很直接:只断低侧管,绕组电流还能通过高侧管和续流二极管维持,电流衰减太慢,限流效果大打折扣。所以设计里选择抑制斩波,方法就是把 L297 的 CONTROL 引脚接地。
| 对比项 | 抑制斩波模式 | 相位线斩波模式 |
|---|---|---|
| 触发条件 | 感测电压达 Vref | 感测电压达 Vref |
| 关断范围 | 四个桥臂全关断 | 仅低侧开关关断 |
| 电流衰减 | 快,限流准 | 慢,实际峰值偏高 |
| 选择方式 | CONTROL 接地 | CONTROL 接高电平 |
| 适用性 | 文档采用 | 不适用 |
2.2 L298N:双 H 桥功率级和感测电阻的选型
L298N 是一片包含两个 H 桥的单片集成电路,负责真正把电流灌进电机绕组。它内部每个 H 桥的上下桥臂分别由独立逻辑输入控制,低位晶体管的发射极单独引到封装引脚上——这个引脚不是摆设,是为外接感测电阻预留的,电流控制环路里 Vref 比较的感测电压就从这里取。
在五相驱动拓扑里,一共需要三个 L298N。单颗 L298N 内部有两个 H 桥,三个就是六个通道,五相电机只占五个,剩下一个闲置。文档特别点了一句:一个 H 桥的两个输出端不能当作两相来用,因为输入彼此独立,强行并联使用会导致桥内直通。正确做法是一个 H 桥对应一相绕组,先画好分配表再接线。
感测电阻选型有硬性要求。文档给出的数值是 0.5Ω,理由是感测电阻阻值过大会造成大电流下的母线电压严重跌落,直接影响电机端电压。0.5Ω 看起来小,但它流过的是相电流,压降仍然可观,所以电阻的功率裕量要按 I²R 估算,留两倍以上余量比较稳。另一个容易忽略的是寄生电感,高频斩波下普通贴片电阻的寄生电感会产生额外压降误差,实际项目我一般直接上无感电阻。
功率级的续流二极管也值得单独说。H 桥所有晶体管关断的瞬间,绕组电流需要一条转移通路,外部桥式二极管就是干这个的。文档明确推荐肖特基二极管,原因是恢复速度快,能压住关断时的电压尖峰。普通快恢复管也能用,但反向恢复时间一长,斩波频率高的时候波形边缘会明显变脏。
提示:Vref 决定的是负载电流峰值,不是平均值。直接用万用表量到的是平均电流,要判断峰值是否超限,得用示波器电流探头配合感测电阻电压一起看。
3. 逻辑电路设计:四相波形怎么改造成五相激励序列
3.1 核心矛盾:四时钟周期重复对五十时钟周期序列
这一节是整篇文档最核心的问题:四相波形怎么改造成五相激励?
先在概念上理清楚。五相步进电机的激励序列需要在十个时钟周期后完成一次重复,而 L297 输出的 A、B、C、D 相波形四个时钟周期就重复一次。两个周期的最小公倍数是二十,但文档给出的切入角度更直接:把五相电机的 10 步相型拆成高侧和低侧两组激励模式,再对照 L297 的 A、B、C、D 相序,找出哪一路输出正好能对应某一相的高侧或低侧开关需求。
文档先给结论再做推演:L297 的三种工作模式里,一般工作模式,也就是通常说的两相导通模式,最适合用来生成五相激励序列。选它不是因为“最标准”,而是它给出的高低侧导通组合正好覆盖五相电机所需的每一个导通关断窗口。
以常见五相十拍激励序列为例,把每一拍按导通绕组拆开看,可以得到类似下面的对应关系(具体相序组合以文档中图六为准,不同电机厂家的五相定义会有差异):
| 节拍序号 | 导通相组合 | 说明 |
|---|---|---|
| 1 | Ph1、Ph2 | 两相导通起始 |
| 2 | Ph2、Ph3 | 相序平移一步 |
| 3 | Ph3、Ph4 | 相序继续平移 |
| 4 | Ph4、Ph5 | 进入后半周期 |
| 5 | Ph5、Ph1 | 首尾相接 |
| 6~10 | 重复 1~5 | 完成一个电周期 |
这个表格只是帮助你建立“十拍重复”的直观印象。文档真正的处理方法不是盯着这张表接线,而是把它拆成五个单相的高侧、低侧时序,再分别去找 L297 里的对应相位。
3.2 设计步骤:从五相序列到 L298N 输入信号
文档给的设计流程一共四步,照这个顺序做不会乱:
- 从五相激励序列中,把每一相的高侧晶体管激励模式和低侧晶体管激励模式分别拆开;
- 从 L297 的 A、B、C、D 四路输出中,选出合适的相位来产生高侧激励序列;
- 用微控制器的 A、B、C、D 输出信号和相关的与门,产生 L298N 的输入信号;
- 产生 L298N 的 ENA 和 ENB 使能信号。
第一步的拆法要具体:一相绕组在桥式电路里有上下两个开关管,上管决定这一相接正母线,下管决定这一相接负母线或地。十拍序列里,每一相的高侧管不是恒通也不是恒断,而是在特定节拍窗口内导通。拆完会发现某些窗口的高侧导通模式和 L297 的某一路输出恰好吻合,某些则差半个周期,这是正常的,后面用微控制器信号去补齐。
第二步和第三步绑在一起做。高侧序列从 L297 的 A、B、C、D 里挑,低侧序列不能直接复用同一路信号,因为同一个 L297 输出可能同时满足“某相高侧导通”和“另一相低侧导通”的需求,但输入给 L298N 时两条通路必须独立控制,否则 H 桥有上下直通风险。文档的解决办法是让微控制器的输出和 L297 的输出做与运算:只有微控制器的窗口信号和 L297 的相位信号同时为高,这一路才驱动 L298N 的对应输入。这正是 DM74LS08 四路双输入与门在这套电路里的角色。
3.3 使能信号:微控制器窗口和 INH 的与运算
L298N 的使能信号承担两个任务:一是控制这一拍的导通窗口,二是参与斩波限流。
直接截 L297 的 A、B、C、D 给 L298N 输入是不够的,因为 L297 的四相输出自带四相周期,经过与门组合之后还需要一个“总闸”。文档的做法是:用微控制器输出和 L297 的输出分别做与运算,产生 L298N 输入信号;再用微控制器产生的使能信号和 L297 的 INH 信号再做一次与运算,产生 L298N 的 EN 信号。
为什么要绕这一层?关键在于电流控制。抑制斩波模式下,L297 的 INH 信号在电流到达 Vref 时会被拉低。如果 EN 信号只来自微控制器,INH 拉低时 L298N 桥臂仍可能维持导通,限流失效;反过来,如果 EN 只接 INH,电机启停就没有独立的下闸手段。所以 EN = 微控制器使能信号 AND L297 INH 信号,一个管“要不要转”,一个管“电流到没到头”。
L297 的 ENABLE 引脚也值得单独说明。文档指出,当 ENABLE 处于低电平,INH1、INH2、A、B、C、D 全部被拉到低电平。整颗 L297 复位到无输出状态,电机变成自由释放。这在你做急停逻辑时比切断时钟更可靠——拉低 ENABLE,所有输出立刻归零,而不是等时钟停下来。
文档里还有一句值得反复读的话:“将 10 步的相型分为 20 步等同于 L297 输出的四个时钟周期的相型。” 工程含义是:微控制器统一提供 CLOCK 信号,L297 每来一个时钟前进一个状态。微控制器把五相电机的 10 步拆成 20 个时钟边沿来处理,两个时钟边沿对应五相电机的一步。这样 L297 的输出序列每四个时钟重复一轮,而五相电机每十个时钟完成一个整周期,两者通过微控制器的计数逻辑对齐。这里的关键教训是:相位对齐靠的是微控制器的软件计数,不是 L297 内部振荡器。两片 L297 的时钟必须来自同一个微控制器 CLOCK 输出,并且要用 SYNC 引脚把它们锁在一起,否则相位会漂。
4. 接口搭建与参数整定:PIC16F877A 接出来的完整接线
4.1 系统框图和引脚映射
系统框图是文档里信息密度最高的一页。PIC16F877A 作为主控,CLOCK 输出接两片 L297 的 CLOCK 输入;两片 L297 之间用 SYNC 引脚同步;L297 的 A、B、C、D 输出和微控制器的四路输出在 DM74LS08 与门里组合,产生 L298N 的输入信号;微控制器的 ENABLE 信号和 L297 的 INH 信号做与运算后,产生 L298N 的 ENA/ENB;三个 L298N 的桥臂输出分别接五相电机绕组。
实际接线按下面这张表去对,错了后面全乱。
| 信号 | 来源 | 去向 | 作用 |
|---|---|---|---|
| CLOCK | PIC16F877A I/O | 两片 L297 的 CLOCK | 统一节拍 |
| HALF/FULL | 接地 | 两片 L297 的 HALF/FULL | 选择全步模式 |
| CONTROL | 接地 | 两片 L297 的 CONTROL | 选择抑制斩波模式 |
| ENABLE | PIC16F877A I/O | 两片 L297 的 ENABLE | 电机启停/释放 |
| SYNC | L297#1 的 SYNC | L297#2 的 SYNC | 振荡器同步 |
| MCU A/B/C/D | PIC16F877A I/O | DM74LS08 与门输入 | 窗口信号 |
| L297 A/B/C/D | 两片 L297 | DM74LS08 与门输入 | 相位基础 |
| INH1/INH2 | 两片 L297 | 与门后接 L298N EN | 斩波限流 |
| 电流感测 | L298N 发射极引出端 | 0.5Ω 无感电阻到地 | 电流采样 |
| 去耦电容 | Vs/Vc 对地 | 100nF 无感电容 | 吸收开关尖峰 |
CLOCK 信号由微控制器提供而不是用 L297 内部振荡器,这一点要重复强调:两片 L297 由同一路 CLOCK 驱动,相位才能严格对齐。HALF/FULL 和 CONTROL 都接地,意味着两片 L297 工作在全步、两相导通模式,同时使用抑制斩波限流。
4.2 电流控制参数:Vref、感测电阻和去耦电容
电流控制回路的参数直接决定这套驱动能不能压住电机绕组电流,四个参数要一起看。
Vref 是设定电流阈值的基准电压。文档实验里给了三组值:600mV、200mV、120mV。峰值电流和 Vref 的换算关系是 I_peak ≈ Vref / Rsense。当 Vref = 200mV、Rsense = 0.5Ω 时,峰值电流约 0.4A;Vref = 120mV 时约 0.24A。实际选 Vref 要看电机铭牌上的相电流额定值,留 10%~20% 余量,不要直接顶到额定值。
感测电阻选 0.5Ω 是文档给的值,针对的是论文里的实验电机。换大扭矩电机时,0.5Ω 上产生的压降会吃掉一部分母线电压,需要重新核算。功率按峰值电流平方乘阻值再乘占空比估算,至少留两倍裕量。我见过有人直接买普通贴片电阻翻车的,开关瞬间高频噪声耦合进感测电压,比较器乱触发,电机声音变得嘶哑。这种场景优先采用无感电阻,感测走线也要从功率线附近拉开。
100nF 无感电容放在 Vs 和 Vc 与地之间,作用是吸收 H 桥开关瞬间的电流尖峰。普通电解电容在高频下的等效串联电感大,滤不掉几十 kHz 的斩波噪声,所以必须用无感电容,数量按每个电源引脚就近放一个。习惯上我会在每个 L298N 的 Vs 和 Vc 各放一个 100nF,再在母线上并一个几百微法的大电解电容稳定平均电流。
续流二极管用肖特基,文档点名的原因是快恢复。四个桥臂关断瞬间,绕组电流必须通过二极管续流,普通二极管的反向恢复时间在这个频率下会形成明显电压尖峰。选型按电机额定电流两倍,反向耐压按母线电压两倍去选。
注意:输出端每相不要为了看波形顺手并一个电容,那样会改变斩波环路的相位裕度,电流控制变得不稳定。我实际调过,并了电容之后该相电流振荡,电机高频噪声明显增加,后来拆掉恢复正常。
5. 避坑清单:同步、感测和续流的五个实测问题
5.1 两片 L297 相位漂移,电机运行一段时间后乱序
现象:电机启动正常,运转几十秒后突然一顿一顿地抖动,甚至相序错乱到反转。
原因:两片 L297 各自内部振荡器频率存在偏差,标称一致但实际会有百分之几的差异,时间一长相位就对不齐。
解决:把两片 L297 的 SYNC 引脚直接相连,让内部振荡器互相锁定。同时确保 CLOCK 信号由同一个微控制器引脚输出,不要中间加独立有源器件引入额外延迟。我搭电路时会用 74HC14 做一次时钟整形,缓冲后确认两片 L297 的时钟边沿一致再进芯片。
5.2 电机只抖动不旋转,相序看着对又像不对
现象:电机通电后发出嗡嗡声,轴只在小角度范围内来回抖动,不连续旋转。
原因:最常见的是微控制器的窗口信号和 L297 的输出在做与运算时,某一路时序窗口比理论值漂了半个周期。窗口信号由微控制器的计数逻辑产生,如果计数在 CLOCK 下降沿触发,而 L297 在上升沿刷新输出,两者就错开了。
解决:固定用同一个边沿触发。微控制器在 CLOCK 上升沿输出窗口信号,L297 同样依赖上升沿刷新相位。软件里切换窗口信号前,先短暂关掉 L298N 的使能,避免上下桥臂瞬间直通,再打开使能进入下一拍。
5.3 电流不受控,Vref 调低也没用
现象:把 Vref 从 600mV 调到 200mV,电机电流几乎没有明显下降,绕组发热严重。
原因:CONTROL 引脚没有真正接地。CONTROL 悬空或者被上拉到高电平时,L297 工作在相位线斩波模式,只切断低侧开关,绕组电流衰减路径还在,限流效果差。
解决:用万用表实测 CONTROL 引脚电压,确认在 0.5V 以下,最好直接焊到地平面,不要经过长走线。HALF/FULL 同样要明确接地而不是悬空,否则模式选择会漂移,五相逻辑全部对不上。
5.4 母线电压在斩波瞬间大幅跌落,输出波形塌陷
现象:示波器观察 Vs 电压,H 桥开关瞬间出现明显下陷尖峰,幅度超过 1V,电机高速时尤其明显。
原因:感测电阻阻值偏大,或者感测电阻离 L298N 的发射极引出脚太远,走线寄生电感在斩波瞬间产生压降,导致母线电压被拉低。
解决:感测电阻用 0.5Ω 无感电阻,紧贴 L298N 感测引脚放置。感测走线采用开尔文接法,直接从电阻两端引线到比较器输入端,不要和功率电流路径共用铜箔。100nF 无感电容就近放在 Vs 和地之间吸收尖峰。
5.5 斩波噪声耦合进感测回路,电流波形毛刺多
现象:相电流波形上叠加高频毛刺,电机运行噪声偏大,示波器看到 INH 信号抖动。
原因:感测电阻的采样电压线和功率回路共用地线,H 桥开关瞬间的大电流在地线上产生压差,叠加到感测电压上。
解决:感测电阻的接地端单独回到 L298N 对应地引脚,不要汇入功率地的公共路径。感测信号线用双绞线或紧贴地线走线,减小环路面积。必要时在比较器输入端并联一个小电容滤除高频分量,但注意不要影响斩波频率下的响应速度。
6. 波形验证与 Vref 整定:两个上电前的检查习惯
6.1 先不接电机,用示波器抓十步序列
上电之前先不接电机。用示波器或逻辑分析仪抓 L298N 输出端对地的电压波形,对照文档图十五、图十六的激励序列检查每一相的高低电平顺序。正常时五相激励序列按十个时钟周期重复一轮,相邻相的波形按固定相序错开。如果某一路信号和理论序列差一个状态,基本都是窗口信号的问题,回到第 3 章的分解步骤重新核对。
判断要点是相序而不是单纯看高低。把两路相邻相波形叠在一起看,观察它们的上升沿间隔是不是严格相等。如果某个相邻间隔明显偏长或偏短,十步逻辑就有问题。
6.2 Vref 从低往高调,边看电流边听声音
Vref 整定的习惯是:先把示波器电流探头和 INH 信号同时接上,Vref 从最低值缓慢往上调,观察电流波形什么时候达到需要的平坦度。到达设定值后,电流波形顶部应该是平的,这就是斩波限流在工作;如果顶部出现毛刺,把感测电路的滤波电容稍微加大一点;如果斩波频率不稳定,检查感测电阻是不是因为发热导致阻值漂移。调好后用锁定电阻或电位器固定这个值,不要长期用可调电位器上电,几个月后氧化会让电流设定值漂移。
速度对应关系的验证同样简单:把微控制器的 CLOCK 频率调低一半,观察相电压序列的脉冲宽度是不是变成原来的两倍。电机转速和激励序列频率成正比,这一步验证通过,说明驱动电路的时钟频率和电机实际转速已经正确对应。后面做速度闭环时,拿这个对应关系做标定表,比直接拿频率硬算可靠。
从那以后,我每次搭 L297+L298N 这类电机驱动,都会强制走一遍四个检查:CONTROL 是否接地、两片 L297 是否 SYNC、感测电阻是否紧贴 L298N、使能信号是否和 INH 做了与运算。这套流程十分钟不到,但能省下整个晚上的排查时间。如果你也在为五相电机驱动成本头疼,这份中文翻译把三层逻辑讲得很透,真动手前值得先把第三章的时序推演多读两遍,希望帮到你。
本文还有配套的精品资源,点击获取