ta8435h是东芝公司推出的一款单片步进电机专用驱动芯片。文中介绍了该芯片的特点、引脚功能和工作原理,给出了采用89c51和82c53作为控制核心驱动步进电机的具体电路和相关程序代码。
关键词:步进电机;ta8435h;细分驱动;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~80kh z),计算公式为:fosc=1/?5.15×cosc式中,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};
//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?// 电机停止运行
}
}
结论
采用ta8435h构成步进电机驱动器,利用82c53输出步进脉冲的设计方案具有占用cpu时间短、编程容易、结构简单、成本低、可靠性好、抗干扰能力强等优点,因此可在控制和测量领域中得到广泛应用。
一款针对柔性材料生产应用的高速3D打印设备FLEX 510
3.6万米世界第一跳:揭秘高科技极限跳伞装备
浦东要建设成为国内顶级的机器人产业发展高地 规模将达500亿
一种用于户外电源电池管理系统的冗余设计
新唐科技NUC505DLA控制器简介
TA8435H应用电路
全面解读电信LTE网络进程
高通:2020年一定会有支持5G芯片
Codasip通过收购Cerberus增强RISC-V处理器设计的安全性
广州创龙电子嵌入式C2000实验箱简介
网络安全对于我们而言有多重要
猫,量子力学,和手机人像摄影之变
中兴微电子成立新公司对于半导体产业的影响?
产业低谷是必经之路 VR冬去春来前景仍然光明_VR,VR应用
实现CCDP系统功能的双极化双工设计方法
机器人记者正在崛起
基于Python强大的模式匹配工具
AMD怒发三款专业级显卡正面对杀NVIDIA
什么水货相机
朗科U盘系列推荐:这三款产品外观时尚小巧 性能各有亮点