步进电机是设计师,工程师和制造商的最爱,因此几乎可以在任何有电子控制系统的地方找到。事实上,它们是如此受欢迎和有用,以至于人们往往很容易忘记它们是如何工作的,并确保它们被正确驱动。
电机本身是无刷同步直流电机,其中每个360°旋转被分成许多相等的离散步长。台阶的角度旋转由围绕中心齿轮形铁片排列的“齿形”电磁铁的数量决定(图1)。正是磁铁的通电,以及随之而来的齿轮形轴齿的磁力吸引,使轴围绕其旋转轴拉过。
图 1:永磁转子根据施加的脉冲顺序旋转,以激发电磁“齿”。(图片来源:恩智浦)
重要的是要注意,当轴的齿与第一个电磁铁对齐时,它们会与下一个电磁铁稍微偏移。这确保了当下一个电磁铁通电时,齿被拉向下一个电磁铁的方向。
完成一次360°旋转所需的步骤数决定了其分辨率,或者电机的控制精细程度。典型的电机每转有200步,但每转1600步,以便对运动进行非常精细的控制,例如硬盘驱动器的手臂,这并不罕见。
控制使用一系列方形数字脉冲(通常来自微控制器)完成,用于智能驱动线圈。“智能地”这个词在这里是故意的:线圈的排列,构造和驱动方式决定了关键参数,如效率,准确性,精度,可重复性和扭矩。每个脉冲都是一个离散的步长,因此脉冲的数量及其速率决定了旋转距离和速度。
根据线圈的连接和驱动方式,步进器可以是单极性或双极性。在单极性设计中,电流始终在同一方向上以实现旋转。在双极性中,绕组中电流的交替反转用于实现旋转。
步进电机的一些有趣,有用和有趣的特性包括这样一个事实,即一旦通电,它就会以全扭矩保持稳定,直到下一个脉冲;可以控制的精度,特别是在使用齿轮的情况下;它们可以通过手动或电子方式改变脉冲极性来快速反转;他们的快速停止能力;坚固性和可靠性;和低成本。
增加成本和简单性的因素是它们是开环的。这意味着不需要额外的传感器或反馈机制来确定轴的位置。
步进电机的特性使其成为从玩具和游戏到汽车和航天器的系统设计人员的最爱(图2)。
图 2:步进电机有多种形式,适用于从玩具到医疗、工业控制和航天器的各种应用。(图片来源:恩智浦)
在医疗应用中,它们用于控制胰岛素和血氧泵、存储检索系统和 CT 扫描仪。在汽车中,它们用于从挡风玻璃雨刷器到腰部支撑装置再到前照灯调节电机的所有设备。工业和玩具机器人也是受欢迎的应用,这也是因为它们具有精确的位置控制能力。
设计人员谨防:简单掩盖驱动复杂性
当然,由于电机通常是磁,电,模拟和数字的组合,因此它是一门充满变化和细微差别的科学,许多书籍都写过。步进电机是一种特定类型的电机,但在设计和驱动复杂性以及选项方面也同样多变。
例如,它们有三种主要品种:永磁体、混合同步磁力和可变磁阻。选择取决于速度和扭矩方面的参数要求。
驱动电路也是一个很大的探索区域。驱动电路设计可以更快地影响扭矩曲线以切换定子极,因此存在驱动电路变化,包括L / R(电感/电阻),斩波驱动器,波驱动,全步进驱动,微步进和半步进,仅举几例。
目标是实现脉冲的最佳排序,同时确保步进电机控制器的输出驱动器能够提供足够的电流。电机线圈是感性负载,因此需要高瞬时电流。
当然,有针对特定应用的步进电机驱动器,但这些驱动器可能成本高昂。相反,最好选择廉价的通用I/O(GPIO)扩展器,例如恩智浦的PCA9537。
使用恩智浦PCA9537驱动单极步进电机
恩智浦 PCA9537 是一款 10 引脚 CMOS 图腾柱 GPIO,具有 SMBus 和 I2C 双线式总线,因此可以连接到大多数微控制器(图 3)。
图 3:恩智浦 PCA9537 是一个图腾柱 GPIO,它从主机控制器获取 I2C 字节序列,并为栅极输入 G1 至 G4 提供必要的波形。(图片来源:恩智浦)
在图中,电机是12 V单极步进电机,额定电流为1.25 A。对于想要修改图表并将其调整为自己的应用程序的用户,Schematics.com 上提供了单极性驱动程序的完全交互式原理图。
PCA9537具有一个4位配置寄存器、一个4位输入端口寄存器和一个4位输出端口寄存器,以及一个用于“高电平有效”或“低电平有效”操作的4位极性反转寄存器。GPIO具有固定的I2C总线从地址92H,它从主机控制器获取I2C字节序列,并向栅极输入G1至G4提供必要的波形。
该图还显示了恩智浦PCA9665,这是一款IC,用作大多数标准并行总线微控制器/微处理器与串行I2C总线之间的接口,允许并行总线系统与I2C总线进行双向通信。波形类型为一个对应于波形、两相或半步驱动,由用户选择。脉冲的持续时间由主机控制器固件中实现的时间延迟控制。它显示为各种波形的参考。PCA9537支持的最大I2C总线速度为400 kHz。
要以大约 18 RPM 的速度驱动步进电机,请使用以下字节序列,其中“S”代表 I2C 总线启动条件,“P”代表停止条件。此外,DLY1 和 DLY2 是由微控制器固件实现的时间延迟。数字以十六进制表示法表示:
S, 0x92, 0x03, 0x00, P // 将PCA9537的4个IO引脚全部设置为输出引脚;
// IO 配置寄存器 = 0x00
设置 DLY1 = 300 ms // 步骤之间的时间延迟;18 RPM,适用于 7.5° 电机
波形环路
S 的开始, 0x92, 0x01, 0x08, P // 开始半步序列波形
执行步数之间的时间延迟 = DLY1
S、0x92、 0x01、 0x0C、 P // 下一步的
输出 步骤之间的执行时间延迟 = DLY1
S,0x92, 0x01, 0x04, P // 下一步的
输出 步骤之间的执行时间延迟 = DLY1
S,0x92,0x01,0x06, P // 下一步的
输出 步骤之间的执行时间延迟 = DLY1
S,0x92,0x01,0x02,P // 下一步的
输出 步骤之间的执行时间延迟 = DLY1
S,0x92,0x01,0x03,P // 下一步的
输出 步骤之间的执行时间延迟 = DLY1
S,0x92,0x01,0x01,P // 下一步的
输出 步骤之间的执行时间延迟 = DLY1
S, 0x92,0x01,0x09,P // 下一步的
输出 步骤之间的执行时间延迟 = DLY1
// 循环波形序列以保持运行的电机
// 或根据需要执行接下来的两个步骤
执行时间延迟 = DLY2 // 保持当前位置的时间 = DLY2
S,0x92,0x01,0x00,P // 关闭电机
(字节序列源:恩智浦)当然,有些用户可能希望驱动多个电机。为此,还提供许多单芯片选项。同时,最好在PCA9537和此处所示的单极、单电机、交互式原理图上进行练习。