关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 二相步进电机驱动芯片TA8435H及其应用

二相步进电机驱动芯片TA8435H及其应用

作者:时间:2005-06-28来源:网络收藏

摘要:是东芝公司推出的一款单片专用。文中介绍了该的特点、引脚功能和工作原理,给出了采用89C51和82C53作为控制核心的具体电路和相关程序代码。

关键词:;细分;82C53;89C51

1 主要特点

TA8435H是东芝公司生产的单片正弦细分二相步进电机驱动专用,TA8435H可以驱动二相步进电机,且电路简单,工作可靠。该芯片还具有以下特点:

●工作电压范围宽(10V~40V);

●输出电流可达1.5A?平均?和2.5A?峰值?;

●具有整步、半步、1/4细分、1/8细分运行方式可供选择;

●采用脉宽调制式斩波驱动方式;

●具有正/反转控制功能;

●带有复位和使能引脚?

●可选择使用单时钟输入或双时钟输入。

2 引脚功能

TA8435H采用ZIP25封装形式,图1为其引脚排列图。各引脚功能如下:

脚1(S-GND):信号地;

脚2(RESET):复位端,低电平有效,当该端有效时,电路复位到起始状态,此时在任何激励方式下,输出各相都置于它们的原点;

引脚3(ENABLE):使能端,低电平有效;当该端为高电平时电路处于维持状态,此时各相输出被强制关闭;

引脚4(OSC):该脚外接电容的典型值可决定芯片内部驱动级的斩波频率(15kHz~80kHz),计算公式为:

fosc=1/?5.15COSC?

式中,COSC的单位为μF?fOSC的单位为kHz。

脚5(CW/CCW):正、反转控制引脚;

脚6、7(CK2、CK1):时钟输入端,可选择单时钟输入或双时钟输入,最大时钟输入频率为5kHz;

脚8、9(M1、M2):选择激励方式,00表示步进电机工作在整步方式,10为半步方式,01为1/4细分方式,11为1/8细分方式;

脚10(REF IN):VNF输入控制,接高电平时VNF为0.8V,接低电平时VNF为0.5V;

脚11(MO):输出监视,用于监视输出电流峰值位置;

脚13(VCC):逻辑电路供电引脚,一般为5V;

脚15、24(VMB、VMA):B相和A相负载电源端;

脚16、19( B、B):B相输出引脚;

脚17、22(PG-B、PG-A):B相和A相负载地;

脚18、21(NFB、NFA):B相和A相电流检测端,由该引脚外接电阻和REF-IN引脚控制的输出电流为:IO=VNF/RNF

脚20、23( A、A):A相输出引脚。

3 实际电路

笔者为省重点科研项目《智能化大气污染系统的研究》所设计的电路共需驱动三个二相步进电机,以分别完成进样、采样和阀门控制。

图2是TA8435H的一个典型电路,该电路用一片TA8435H来驱动一个步进电机,输入信号有使能控制、正反转控制和时钟输入,通过光耦可将驱动器与输入级进行电隔离,以起到逻辑电平隔离和保护作用;该电路工作在1/8细分模式(M1、M1接高电平),可减小低速时的振动,R8和C1组成复位电路,D1~D4快恢复二极管可用来泄放绕组电流?由于REF IN引脚接高电平,因此VNF为0.8V,输出级斩波电流为VNF/RNF=0.8/0.8=1A,选用不同的二相步进电机时,应根据其电流大小选择合适的R13和R14。

图3是步进电机核心控制电路,该电路能够控制如图2所示的三个步进电机驱动器。本设计采用外部定时/计数器82C53来给TA8435H提供步进脉冲。因为82C53有三个定时/计数器,可以驱动三个步进电机控制器,因而能满足设计要求;另外,82C53的工作方式3是一种方波速率发生器。在这种方式下,当CPU设置控制字后,输出将为高电平,在写完计数值后就自动开始计数,输出保持高电平;而当计到一半计数值时,输出变低直到计数到0,此后输出又变高以重新开始计数。在计数期间写入新的计数值并不影响现行的计数过程。但是若在方波半周期结束前和新计数值写入后收到GATE脉冲,那么计数器将在下一个CLK脉冲时装入新的计数值并以这个计数值开始计数。否则,新的计数值将在现行半周期结束时装入计数值。因此,只要写入不同的计数初值,就能控制步进电机的转速而不需要用软件来控制高低电平的转换,因而编程比较容易。本设计将82C53的GATE端全部接高电平,新的计数值将在现行半周期结束时起作用。

由于采用了定时/计数器82C53作为步进脉冲产生电路,因此系统编程十分简单,以下语句为控制一个步进电机的相应程序代码。

#include <reg52.h>

#include <absacc.h>

#include <intrins.h>

#define A8253A XBYTE[0xB000] //计数器0地址

#define A8253B XBYTE[0xB100] //计数器1地址

#define A8253C XBYTE[0xB200] //计数器2地址

#define A8253D XBYTE[0xB300] //控制字口地址

#define uchar unsigned char

#define uint unsigned int

uint time1; //电机1运行时间

uchar speed1;//电机1运转速度

sbit en1=P1^0; //电机1使能控制

sbit dir1=P1^1; ///电机1方向控制

uint sum1;

uchar code sdtab[16]={0x30,0x35,0x40,0x45,0x50,0x55,0x60,0x65,0x70,

0x75,0x80,0x85,0x90,0x95,0xa0,0xa5};

图2

//16个计数初值,对应16种转速,初值大小应根据电机的转速要求和82C53计数器CLK端输入的时钟频率决定

main()

{

A8253D=0x16; //计数器0方式3,只读写高位字节

A8253D=0x56; //计数器1方式3,只读写高位字节

A8253D=0x96; //计数器2方式3,只读写高位字节

dir1=1; //运转方向

time1=200; //运转200秒

speed1=3; //速度等级3

//以上是电机1的运行参数,实际中?一般先用上位机通过串口将数据送入89C51单片机存储器,然后由单片机按照上位机送入的数据来控制步进电机的运行速度、方向和时间。

sum1=time1*20;

//sum1为89C51定时器T0中断次数,因为定时间隔为0.05秒

A8253A=sdtab[speed1];

//向82C53计数器0送初值,OUT0脚输出方波

en1=1;//电机1开始运转

TMOD=0x01;

TL0=-46080%256;

TH0=-46080/256;

ET0=1;

EA=1;

TR0=1;

//89C51的计数器0用于定时器,定时间隔0.05秒,方式1,中断方式,晶振11.0592M

while(10);?

}

void T0_srv(void) interrupt 1 using 1

{//中断服务程序,执行完后,电机停止运行

TL0=-46080%256;

TH0=-46080/256;

sum1--;

if(sum1==0)

{

en1=0?// 电机停止运行

}

}

图3

4 结论

采用TA8435H构成步进电机驱动器,利用82C53输出步进脉冲的设计方案具有占用CPU时间短、编程容易、结构简单、成本低、可靠性好、抗干扰能力强等优点,因此可在控制和测量领域中得到广泛应用。



评论


相关推荐

技术专区

关闭