从远程物联网 (IoT) 控制的车库开门器和车窗到卫星推进控制器,无刷直流 (BLDC) 电机越来越多地用于许多不同的应用。对于BLDC电机,设计人员面临的问题是驱动电机所需的控制算法很复杂,而且往往是专用的。这使得一般工程师很难在合理时间内启动并运行这种电机。
开发人员通常只能选择在微控制器上运行的基于软件的解决方案(这是一种灵活的软件解决方案,但也给微控制器带来了计算负担),或者使用专用集成电路 (IC)。后者封装了完整的BLDC电机控制功能,并将BLDC控制从主机转移到其中。
本文首先讨论基于微控制器的软件解决方案和专用硬件芯片解决方案之间的区别,随后深入探讨如何使用Allegro MicroSystems的A4964KJPTR-T——专为简化汽车应用BLDC电机控制而设计的电机驱动器。本文将展示如何与A4964KJPTR-T交互,以及一些避免意外行为的最佳做法。
BLDC电机极简介绍
BLDC电机在广泛的速度范围内提供高效扭矩输送,噪音小,没有有刷电机的机械摩擦。BLDC电机由电流而非电压控制,用途广泛,其形状、尺寸和成本也因应用不同而各异。
例如,TRINAMIC MoTIon Control的QBL4208-41-04-006是一款24V、4000RPM的电机,可提供高达0.06Nm的扭矩(图1)。该电机很轻巧(0.662lb),并为开发人员提供了多种电机控制选择,如通过使用反电动势 (BEMF) 的无传感器操作,或使用能报告位置的内置传感器。
图1:QBL4208-41-04-006是一款24V、4000RPM BLDC电机,最高速度下可提供略高于0.06Nm的扭矩。(图片来源:TRINAMIC MoTIon Control GmbH)
如需更大扭矩,设计人员可以使用QBL4208-41-04-025,这款电机也是来自TRINAMICMoTIon Control(图2)。这是一款24V、4000RPM BLDC电机,可提供略高于0.25Nm的扭矩。
图2:TRINAMIC MoTIon Control的QBL4208-41-04-025是一款24V、4000 RPM BLDC电机,最高速度下可提供略高于0.25Nm的扭矩。(图片来源:TRINAMIC Motion Control GmbH)
BLDC电机通过三相线驱动,产生磁场,磁场再推动永久磁铁,使定子移动并转动电机。
理论上,这听起来很容易,但实际上,驱动BLDC电机相当复杂,开发人员只能选择使用软件框架来驱动电机,或者选择专用芯片解决方案。
软件与专用芯片解决方案
在解决如何转动BLDC电机的问题时,开发人员应该考虑若干因素。这些因素基本上可归结为:
BOM成本与人工成本
电路板复杂性与软件复杂性
维护时间和成本
从硬件的角度来看,走软件路线可能非常有吸引力,因为专用芯片解决方案会给BOM增加一些额外的成本。若不使用专用芯片,则能去掉该成本,花很少的钱去买微控制器,把所有控制算法放进该微控制器里。这似乎是双赢的做法,但团队往往没考虑到该决定的全部后果。
是的,BOM成本降低了,但微控制器上增加了额外负担,要处理BLDC状态数据并持续驱动电机。如果微控制器还要对其他传感器进行采样、与无线电通信以及控制其他设备,那么稍不注意,软件开发和维护成本就可能突飞猛涨。
不过,微控制器中基于软件的解决方案具备灵活性,因为团队可以微调其电机控制算法。使用软件也并不意味着事情总会趋于极度复杂。
例如,通常情况下,将电机控制算法移入微控制器会占用更多的RAM,并需要大量闪存。然而,如果团队使用专为电机控制而设计的微控制器,如Texas Instruments的F280049CRSHSR电机控制微控制器,算法已内置在微控制器ROM的库中。这意味着向应用程序添加的额外代码只有对库进行访问的函数调用,所有繁重的工作都由该库完成。
不过,转动BLDC电机不仅是软件的问题,还需要硬件。图3显示了使用C2000微控制器的应用实例,其中F280049CRSHSR是该系列的成员。此图说明了驱动BLDC电机所需的一切以及可选项。除了微控制器,还需要某种三相功率级,用来驱动BLDC电机的三个相位,使电机转动。
图3:Texas Instruments的C2000微控制器专为电机控制应用而设计。此图为应用实例,中间是微控制器,其余为驱动BLDC电机的必需和可选电路。(图片来源:TexasInstruments)
利用微控制器驱动电机无疑具有吸引力,但专用硬件解决方案怎么样呢?我们来看看Allegro MicroSystems的A4964KJPTR-T电机驱动器芯片。
Allegro MicroSystems的A4964KJPTR-T电机驱动器
Allegro MicroSystems的A4964KJPTR-T电机驱动芯片是专用BLDC电机驱动器,其中包含了驱动电机所需的所有能力(图4)。该芯片专为汽车应用而设计,并与N沟道MOSFET搭配使用,具有无传感器启动和换向功能,因此需要的外部硬件极少。A4964KJPTR-T的工作电压范围也很广,从5.5V至50V,不仅适用于汽车系统,而且几乎涵盖了所有标准应用。
A4964KJPTR-T最引人注目的特性或许是,它能通过串行外设接口 (SPI) 与微控制器或中央电子控制单元 (ECU) 相连接,以配置电机运行的各种寄存器。显然,该微控制器不需要像运行电机控制算法本身的微控制器那样强大。
图4:A4964KJPTR-T BLDC电机驱动器工作电压为5.5V至50V,提供无传感器启动和换向。电机速度可通过SPI或专用PWM信号进行配置。(图片来源:AllegroMicroSystems)
另外,很有意义的是,A4964KJPTR-T电机速度也可以在没有SPI的情况下驱动,只需提供脉冲宽度调制 (PWM) 信号即可。它有非易失性存储器可以存储电机设置,上电时加载这些设置,允许只用PWM信号来控制电机。
从配置角度而言,A4964KJPTR-T有32个可寻址16位寄存器,外加一个状态寄存器。状态寄存器很独特,每次SP读/写操作时传输前5位,以便软件可以检查一般状态,了解是否有任何故障或问题。对芯片执行写操作时,A4964KJPTR-T不会回传数据,因此可以读取所有状态寄存器。
在32个可寻址寄存器中,还有两个特殊寄存器。寄存器30是只写寄存器,寄存器31是只读寄存器。只写寄存器允许开发人员以0 – 1023之间的值设置需求输入,即驱动电机的占空比速率。只读寄存器的数据根据写入寄存器29(即回读选择寄存器)的请求数据而改变。该寄存器允许检索各种遥测信息,例如:
诊断
电机速度
平均供电电流
供电电压
芯片温度
需求输入
应用的桥峰值占空比
应用的相位前移
除了这些特殊寄存器,其余30个寄存器允许对具体的电机应用进行调整,并允许使能或禁用故障,如限流和栅极驱动故障。
专用电机驱动器很有意义,其将运行电机所需的各种配置都存储在几十个配置寄存器中。这极大地消除了微控制器原本会产生的软件开销,也许更重要的是,还极大地降低了软件开发和维护成本。驱动BLDC不过是发送PWM(这不会造成微控制器的任何开销),或者使能电机位并提供基于SPI的需求输入来转动BLDC。
A4964KJPTR-T使用技巧与诀窍
A4964KJPTR-T的连接很简单,以下是开发人员应牢记的几个“技巧与诀窍”,可以简化和加快他们的开发,例如:
状态寄存器在每次写入芯片时都会通过SPI接口返回,而不是用作专门的可寻址寄存器。这意味着驱动代码在写入芯片时需要监控SPI总线SDO线路以获得状态信息。
故障信息包括在状态寄存器中,但当微控制器提供地址访问信息时,在前五位中可以看到每次SPI事务的芯片状态概览。此数据可用于确定是否出现任何问题。
存储器映射中有两个独特的寄存器,一个只读,一个只写。这很简单,但要注意不要试图读取只写寄存器,这样做会把读序列中的任何伪数据写入该寄存器中。
该芯片有非易失性存储器,可用于存储默认参数。这些参数被加载到RAM中,并在启动时使用。为确保芯片最有效地启动进入就绪状态,应将“安全”启动值写入芯片。
如果终端设备在嘈杂或重辐射环境中使用,那么设计应用程序代码定期重新确认配置数据是不错的主意。芯片配置存储在RAM中,这意味着它很容易受到宇宙射线、位反转以及所有可能发生在电子产品中的奇怪、罕见事件的影响。
本文小结
用于汽车、物联网或其他应用的BLDC电机实现相当普遍,但驱动会很复杂。为了应对软件复杂性,开发人员可以使用专用BLDC电机驱动器,如A4964KJPTR-T,其中封装了所有电机控制功能。
虽然仍然需要软件与芯片交互,但运行软件的微控制器只需要设定配置设置,A4964KJPTR-T就会负责驱动电机。尝试使用A4964KJPTR-T时,开发人员会发现,遵循所提供的“技巧与诀窍”可以帮助节省不少时间,避免许多麻烦。