TMC246A是为2相步进电机控制应用的双全桥驱动器,能预知过载的能力使TMC246A成为最适宜的渴望需要高稳定的驱动器的选择,即使在高温环境下也允许有1.5A的电流输出(在105度高温下输出大于800毫安)。
驱动器可以用串行SPI(12bit协议)或模拟、数字信号来控制,内部综合了短路保护、超温保护、低压和高压保护。为平稳电机运转采用混合延迟特性,通过一个电容器或外部时钟编程PWM振荡器频率。电机电压供电范围是7到34V,数字部分供电电压是3.3V或5V.
内部结构框图及引脚功能

TMC246A采用PQFP44封装,其引脚排列如上图所示,其应用电路及内部结构框图如下图所示,由DAC数模转换电路、PWM控制、电流控制的门激励、传感器电流比较仪及桥式电机驱动电路、各种保护电路和控制诊断电路、SPI接口等组成。

引脚功能引脚功能
VS电机电压供电端VT对地短路检测比较仪,若不用,接VS端
VCC模拟、数字电路3-5.5V供电端GND数字、功率电路地
AGND模拟地(为SRA,SRB,OSC,SLP,INA,INB,SLP提供参考)OSC断路器的振荡器电容或外接时钟输入
INAA相模拟电流控制INBB相模拟电流控制
SCK串行SPI的时钟SDO串行SPI的数据输出(三态)
SDI串行SPI的数据输入CSN串行SPI的片选
ENN驱动器使能端(低电平有效)和过压关闭端SPESPI模式使能端,接地不使用SPI功能
ANN模拟电流使能端,低电平有效,通过INA、INB来控制SLP斜率控制电阻
BL1、BL2数字式空白时间选择SRA.SRB桥A/B传感器电流比较仪电流输入端
OA1、OA2全桥A输出端081、OB2全桥B输出端
VSA、VSB桥A/B电源供电端BRA.BRB桥A/B外接传感电阻端
上表是TMC246A的引脚功能,由于个别脚与多个引脚是一个功能,因此,给出引脚符号所对应的功能,具体哪个脚是哪个符号参照上图。

SPI接口控制
SPI数据设置了2极电机的电流和极性,通过使用连续的值,描述了一个正弦和余弦波,电机被微步驱动。
微处理器发送数据到TMC246A微处理器发送12bit数据到TMC246A,先发送高位,如下表所示。

BITName功能备注
11MDAA相混合延迟使能为1,混合延迟
10CA3A桥电流设置第3位高位
9CA2A桥电流设置第2位
8CA1A桥电流设置第1位
7CAOA桥电流设置第0位低位
6PHAA桥极性为1,电流从OA1到OA2
5MDBB相混合延迟使能为1,混合延迟
4CB3B桥电流设置第3位高位
3CB2B桥电流设置第2位
2CB1B桥电流设景第1位
1CBOB桥电流设置第0位低位
0PHBB桥极性为1,电流从OB1到OB2
电流值用标准4bit通信,CA3至CAO或CB3至CBO从0000到1111,电流值按照每6.7%的增幅变化,最小为0,最大为,100%.所有记录内容在电源开机复位时清零或通过ENN脚使芯片进入到低功耗待机状态消失,所有SPI输入都有施密特触发器功能。
TMC246A发送数据到微处理器TMC246A发送12bit数据到微处理器,先发送高位,如下表所示。微处理器根据TMC246A发送回来的12bit数据,做信号处理。

在SPI模式下通过INA和INB来控制基础电流在SPI模式下,芯片为每个DAC提供一个外部参考电压,将ANN接地,使能模拟电流控制,INA和INB的2V输入电压给出100%电流的满刻度,在此情形下,传感器电流比较仪的负向电压由INA和INB输入电压和DAC电流设置(在表2中设置)决定,有以下的公式:
VTRIP,A=0.17 VINAדpercent-age SPI current setting A” VTRIP,B=0.17 VINBדpercent-age SPI current setting B” 传感器的电阻RS= VTRIP/lmax,在典型应用中RS=0.34V /lmax,(本设计中已将INA、INB脚接在一起,且用电阻分压使VINA、VINB约2V),我们选择传感器电阻为0 3欧,因此,电机最大电流I-max为0.34V/RS=0.34V/0.3=1.13A.
硬件电路设计
下图所示是TMC246A电机驱动器的应用电路图,其设计思路如下。

VS是电源供电端(TMC246A的36脚),PCB布线和连接外电源时,接线要尽可能的短和粗,而且在靠近每个电源引脚边接一个100-470微法的电解电容(或钽电容)与一个0.01-0.1微法的高频电容,能起到很好的滤波作用。VSA、VSB(TMC246A的30、4脚)是桥A/B电源供电端,VS通过0Ω保护电阻加到VSA、VSB上。OA1,OA2,081,082是电机输出端口,OA1,OA2,(TMC246A的2、3、7、8和5、6、10、1 1脚)接两相电机的一个绕组上,OB1,082(TMC246A的26、27、31、32和23、24、28、29脚)接两相电机的另一个绕组上,若电机运动方向不是我们想要的方向的时候,只需对调OA1,OA2,或OB1,082中的任两根线就可以改变电机的转向。
在电机输出引脚和地间分别接4个肖特基二极管以减小热消耗,给电机绕组上的反电动势在断电时提供回路。BRA,BRB(TMC246A的9、25脚)是输出电流传感器电阻连接端口,外接一个0.1 ~0.3Ω的电阻用于电流检测。该电阻应能满足功率需求,我们设计使用了0.3Ω/2W的电阻。BRA,BRB经100Q电阻,再经SRA、SRB(TMC246A的12、22脚)接传感器电流比较仪。
检测BRA,BRB上的电压来判断电机是否过流,一旦检测到BRA,BRB上的电压超过0.61V,PWM周期立即停止,在PWM周期剩下的时间里,桥内的所有晶体管都关闭。错误计数加1,若错误计数达到3,则桥保持关闭余下的60个PWM周期,即这一次正弦波,并将错误标志读出有效。在下一轮正弦波,超过63个PWM周期若没有过流,就取消错误标志。
VT(TMC246A的35脚)是对地短路检测比较仪端,检测对地短路或过流。在任何时候只要VS和VT间电压超过0.15V,在PWM周期剩下的时间里,桥内的所有晶体管都关闭。
PWM周期的空白时间由BL1、BL2(TMC246A的21、33脚)决定,空白时间即PWM的死区时间,为的是防止全桥上、下管直通短路。空白时间得兼顾低端晶体管的关闭时间和高端晶体管的打开时间,还有电流建立的时间。因此完整的转换持续时间不能超过1.5 μ s.BL2、BL1为GND、GND,空白时间为0.6 μ s;BL2、BL1为GND,VCC,空白时间为0.9 μ s:BL2、BL1为VCC、GND,空白时间为1.2μs;BL2、BL1为VCC、VCC,空白时间为1.5 μ s;本设计中BL2、BL1为VCC、GND,因此选择PWM周期的空白时间为1.2 μ s.尽可能低的空白时间为微步给出了最好的结果。
OSC(TMC246A的13脚)是PWM振荡器频率设定端,由外部电容器来设定。内部振荡器采用28kQ电阻对外部电容器充电/放电。也可以在此脚输入外部的CMOS电平的方波信号,不要把频率设定超过100 kHz,也不能悬空此脚。PWM振荡器频率Fosc一1/(40 u sxCosc(n F》,本设计OSC端外接电容器是1 nF,因此,PWM振荡器频率为25 kHz.
电机在锁定状态,为减少电流,微处理器发出低电平LOCK信号,使Q1导通,INA和INB端原来的2.2k电阻和1k电阻并联,电阻变为0.69K,此时VIN/VINB电压约为0.9V,则电机电流|为(0.17*0.9V)/0.3=0.51A,大大降低了功耗。
SLPtTMC246A的43脚)是斜率控制电阻端,全桥输出的输出电压斜率可控制,以减少对电力供应和汽车线路的噪声,且减少电路的电磁辐射。它是由在SLP引脚外接一个外部电阻来控制,这个电阻的范围是0到lOOk.该SLP引脚可直接连接到AGND以获得最快输出电压斜率,输出电压由15%到85%的时间和斜率控制电阻的关系如下30ns,2.2kQ;60ns,10kΩ;1 10ns,22kΩ;245ns,51kΩ;460ns,lOOkQ.本设计斜率控制电阻为22k,因此输出电压由15%到85%的时间为110ns.
ENN(TMC246A的19脚)是驱动器使能端,也是过压保护端。在禁用条件期间,电路关闭所有的输出功率晶体管,并进入低电流停机模式。所有登记内容将被清除为“0”,所有状态标志清除。利用外接分压电阻给ENN引脚提供一个固定的1/2VCC电压,则允许简单的使过压保护提高到40V.若VCC使用5V,过压保护阈值是26-29V,则可以按下图所示那样,将R15设为100k,R14设为10k.若VCC使用3.3V,过压保护阈值是26-29V,则下图中,将R15改为160k,R14仍为lOk.若想用微处理器来控制ENN,可以将R14左端接地去掉,改接微处理器,微处理器发出低电平信号,使能有效,若发出高电平信号,则使能无效。本设计始终使能。

SPE(TMC246A的20脚)是SPI模式使能端,接VCC,使能SPI功能。
软件设计
在上图所示TMC246A电机驱动器的应用电路图中,SDO (TMC246A的14脚)是串行SPI的数据输出端,SDI(TMC246A的1 5脚)是串行SPI的数据输入端,SCK (TMC246A的16脚)是串行SPI的时钟端,CSN (TMC246A的18脚)是串行SPI的片选端,低电平有效。这四个引脚和微处理器的10口相连,由微处理器来控制。下图所示是SPI接口时序。

我们使用飞利浦公司的ARM7微处理器LPC2119来控制TMC246A.
定义数组先定义如下2个数组,上面的数组完成电机的正传,下面的数组完成电机的反传,这两个数组都是为了实现正弦波。



SPI总线发送数据下面的函数是向SPI总线发送数据,函数名称:MSPLSendData0,函数功能:向SPI总线发送数据。入口参数:data待发送的数据,出口参数:返回值为读取的数据。

电机运转控制 下面的函数是电机运转控制函数,函数名称:step(),函数功能:电机运转控制。入口参数:dir方向,出口参数:无。串行SPI的时钟由微处理器的定时器1来实现。


lo由数组sinus_tab_l [64]或si-nus_tab_r [64】中某个8bit数据先左移6位,再加上数组中这个数据后第16个的8bit数据,合并为14bit数据,前2bit数据不要,后面的12bit数据就是我们所需要的。对照表2微处理器发送12bit数据到TMC246A,就知道1个数组正好是一个完整的正弦波。