前言:
意法半导体新推出的步进电机控制芯片L6470在一颗芯片上集成了功率级和一个数字控制内核。这款步进电机控制芯片能够通过SPI接口接收微控制器的运动曲线命令,按照预制的加速度和速度曲线自动执行运动,还能自动加快电机的运转速度,并使之保持预设的转速。
该控制器的结构如图1所示。控制逻辑电路是一个可以设置的状态机,能够接收并保存各种参数,例如:加速度、减速度、启动转速、转速、相电流控制 (PWM)和步进模式。从全步进到1/128微步进,该控制器共支持8种步进模式。内部绝对位置计数器负责计算所选步进模式的步进或微步进的数量,以相当于该步进模式的分辨率跟踪电机转子位置。每步旋转1.8 度,1/128微步电机转子旋转一整圈后,位置计数器将自动增加25600(128 × 200步)。
所有的运动参数和命令都是通过SPI接口送到控制器。控制逻辑电路负责解释前进步数等运动命令,控制电机从静止开始做加速运转再返回到停止状态所需的步进时间和步数输出,同时执行命令中的步进总数。该芯片还能给这些运动命令排队和发送,进行复杂的运动控制,从而能够大幅减少微控制器的开销。
图1: 结构框图
运动和位置命令
数字内核可执行五种运动命令和4种停止命令:
Run (Direction, Speed) 加速运转直到接到停止命令为止
Move (Direction, N_Steps) 沿命令方向运动N步
GoTo (Position) 沿最直接路径运动到绝对位置
GoTo (Direction, Position) 沿指令方向运动到绝对位置
GoUntil (Act, Direction, Speed) 加速运转直到有外部事件发生为止
SoftStop 减速直到停止
Hard Stop 紧急制动(无减速过程)
SoftHiZ 减速到停止,然后关闭电桥
HardHiZ 紧急制动,并关闭电桥
在开始任何运动之前,通过SIP接口使用SetParam命令设置运转参数:最低转速、最高转速、加速度、减速度以及其它运动参数值。为确保运动的完整性,在电机运动过程中,运动曲线的很多参数值是锁定的,只能在电机被制动后才能更改这些参数。
图2所示是Move命令的一个典型运动曲线。当接收到一条 Move命令时,控制器将计算电机从静止开始做加速运转再返回到起始位置所需的步数N的运动曲线,整个过程都是由数字内核硬件独立完成的。
GoTo命令指示驱动器根据内部22位绝对位置计数器的数值驱动电机旋转到一个特定位置。 GoTo命令分为两种:一种沿特定方向旋转;另一种是沿最直接路径旋转,即确定以最少步数达到所需位置的运动方向。对于每步旋转1.8度的1/128微步电动机,22位计数器的解析率相当于电机旋转大约164周。即便齿轮减速比很大,有效解析率仍然在位置计数器的范围内。GoTo命令的运动曲线看起来与 Move命令曲线相同,但是有一点不同,在GoTo命令中,达到命令指定的绝对位置所需步数是自动计算结果。
Run和GoUntil命令用于使电动机保持恒速旋转,直到接到一条制动命令 (适用于Run命令)或者有外部事件发生(适用于GoUntil)为止。当接收到一条制动命令时,控制器执行下面两种操作之一:紧急制动或减速制动。该器件还能执行紧急制动或减速停止,然后提供三态输出。
图 2:典型运动曲线
如图3所示,使用一系列Run命令可以执行复杂的运动。每接到一个新的Run命令后,控制器都会驱动电机做加速或减速旋转到新命令指定的位置,并以指定速度保持旋转,直到接收到下一条Run命令或一条Stop命令为止。当接收到一条反向运转命令时,电机减到最低速度,然后再向相反方向加速运转。
图 3:多条Run命令可实现复杂运动。
电压控制式微步进
通常情况下,步进电机驱动电路是电流式控制设计,电流控制器监测并控制绕组电流强度。这种结构让设计人员能够在宽转速范围内保持所需的转矩,而且电源电压波动很小。这种设计非常适合全步和半步驱动器,而且也易于实现。很多设计人员避免在微步进驱动器中使用电压控制方式,因为电源电压变化导致峰流有很大变化,而且,随着转速提高,电机的反电动势(EMF )也会增强。不过,利用数字控制技术可以修正这些不利因素。
为实现这种电压控制式驱动电路,需要利用一个PWM计数器/定时器电路来控制输出脉宽,以数字方式设置输出占空比。L6470通过在电机绕组上施加电压来控制相电流。虽然不能直接控制相电流的幅度,但是,相电流与相电压的大小、负载、转矩、电机电学特性和转速密切相关。有效输出电压与电机电源电压和 KVAL系数的积成正比。KVAL的取值范围是电源电压的0%到100%。在微步进驱动器中,这个最大值再乘以调制指数,可产生所选步数的正弦波。峰值电压由下面的公式得出:
VOUT = VS ⋅KVAL
KVAL值由下面的公式得出:
KVAL = (Ipk x R)/Vs
其中:
Ipk = 所需的峰流
Vs = 典型电源电压
R = 电机绕组电阻
该器件的寄存器支持加速度、减速度、恒速运转和保持位置等不同的 KVAL设置,在运动曲线每个部分轻松实现不同的转矩设置。
BEMF补偿
如果在整个转速范围内始终向电机供给相同的峰值电压,随着电机转速增加,电流强度会逐渐降低,因为电机的反电动势BEMF会显著降低施加到线圈上的电压。图4左边的波形描述了没有采用BEMF补偿技术的电机工作状况。从图中不难看出,随着电机转速增加,BEM以线性方式提高,因为线圈上的电压是实际施加的相电压与BEMF电压的差值,所以电流将会降低。
图 4:有BEMF补偿电路和无BEMF补偿电路的相电流
为修正BEMF增加对电流的影响,该产品在KVAL系数中增加一个修正BEMF的因数。本质上,就是在 KVAL初始设置值中增加一个修正值,以抵消BEMF的影响。由于BEMF直接与转速成正比,因此这个修正值因数是一个斜率,根据这个斜率和电流转速来计算实时修正值。该产品提供不同的修正值:第一个值是一个标准值,适用于电机从零转速开始加速运转,直到相交转速参数INT_SPEED设置的最高速度为止。在相交速度之上,可以用两个附加的斜率调整标准斜率,一个用于恒速运转和加速度,另一个则用于减速运转。当 BEMF修正值设置适当时,峰值电流在电机全程转速范围内保持恒定,如图4所示。图6描述了当一个电机加速运转时的实际电流波形。
图5: BEMF修正曲线
图 6:有BEMF修正功能的相电流
电源和相电阻修正
电机的电源电压和相电阻是另外两个影响相电流的主要因素。因为控制器采用电压控制方式,对输出占空比进行控制,所以这两个要素之中任何一个发生变化,都会影响相电流。
当电机没有稳压电源时,在从电源到电机驱动电路的电压上会出现大量的脉动电压。随着电源电压变化,电机电流也会波动。如果电源上的脉动电压很大,当电机电流变得太小时,电机很可能会停止运转。该控制器内置一个电源电压修正电路,如图7所示。在这个电路内,内部模数转换器负责测定电源电压,然后由在数字内核实现的修正算法计算修正因数,将其施加到PWM占空比内,使输出电压值在整个电源电压变化范围内保持恒定。
图 7:电源修正
随着电机发热,相阻变化也会直接影响相电流。KTHERM设置用于修正电机内部发热导致的相阻变化。驱动器控制器的软件可以监测或估计电机温度的升高状况,设置KTHERM值,修正因为温度升高而引起的电机相阻的变化。例如,可以使用一个简单的算法测定在运转间隔时电机停止运转时的相阻,根据测量结果调整KTHERM值。
结论
L6470实现的功能让设计人员可以实现电压控制式微步进驱动器,修正过去需要采用电流控制式驱动器才能解决的典型的系统问题。从总体上看,系统控制变得更加顺畅,没有电流控制式驱动器的常见限制性问题。使用数字化电压控制式PWM方法,可以轻松实现每步最多128微步进 的微步进驱动器。电压控制式解决方案的正弦波曲线更加精确,位置解析率高于电流控制式方法,电压控制式操作可大幅降低系统谐振。此外,该器件实现的数字运动引擎能够大幅降低系统微控制器的负荷,在多电机应用环境中,无需另设一个专用微控制器。