二相步進(jìn)電機(jī)驅(qū)動芯片TA8435H及其應(yīng)用
摘要:TA8435H是東芝公司推出的一款單片步進(jìn)電機(jī)專用驅(qū)動芯片。文中介紹了該芯片的特點、引腳功能和工作原理,給出了采用89C51和82C53作為控制核心驅(qū)動步進(jìn)電機(jī)的具體電路和相關(guān)程序代碼。
關(guān)鍵詞:步進(jìn)電機(jī);TA8435H;細(xì)分驅(qū)動;82C53;89C51
1 主要特點
TA8435H是東芝公司生產(chǎn)的單片正弦細(xì)分二相步進(jìn)電機(jī)驅(qū)動專用芯片,TA8435H可以驅(qū)動二相步進(jìn)電機(jī),且電路簡單,工作可靠。該芯片還具有以下特點:
●工作電壓范圍寬(10V~40V);
●輸出電流可達(dá)1.5A?平均?和2.5A?峰值?;
●具有整步、半步、1/4細(xì)分、1/8細(xì)分運行方式可供選擇;
●采用脈寬調(diào)制式斬波驅(qū)動方式;
●具有正/反轉(zhuǎn)控制功能;
●帶有復(fù)位和使能引腳?
●可選擇使用單時鐘輸入或雙時鐘輸入。
2 引腳功能
TA8435H采用ZIP25封裝形式,圖1為其引腳排列圖。各引腳功能如下:
腳1(S-GND):信號地;
腳2(RESET):復(fù)位端,低電平有效,當(dāng)該端有效時,電路復(fù)位到起始狀態(tài),此時在任何激勵方式下,輸出各相都置于它們的原點;
引腳3(ENABLE):使能端,低電平有效;當(dāng)該端為高電平時電路處于維持狀態(tài),此時各相輸出被強(qiáng)制關(guān)閉;
引腳4(OSC):該腳外接電容的典型值可決定芯片內(nèi)部驅(qū)動級的斬波頻率(15kHz~80kHz),計算公式為:
fosc=1/?5.15COSC?
式中,COSC的單位為μF?fOSC的單位為kHz。
腳5(CW/CCW):正、反轉(zhuǎn)控制引腳;
腳6、7(CK2、CK1):時鐘輸入端,可選擇單時鐘輸入或雙時鐘輸入,最大時鐘輸入頻率為5kHz;
腳8、9(M1、M2):選擇激勵方式,00表示步進(jìn)電機(jī)工作在整步方式,10為半步方式,01為1/4細(xì)分方式,11為1/8細(xì)分方式;
腳10(REF IN):VNF輸入控制,接高電平時VNF為0.8V,接低電平時VNF為0.5V;
腳11(MO):輸出監(jiān)視,用于監(jiān)視輸出電流峰值位置;
腳13(VCC):邏輯電路供電引腳,一般為5V;
腳15、24(VMB、VMA):B相和A相負(fù)載電源端;
腳16、19( B、B):B相輸出引腳;
腳17、22(PG-B、PG-A):B相和A相負(fù)載地;
腳18、21(NFB、NFA):B相和A相電流檢測端,由該引腳外接電阻和REF-IN引腳控制的輸出電流為:IO=VNF/RNF
腳20、23( A、A):A相輸出引腳。
3 實際應(yīng)用電路
筆者為省重點科研項目《智能化大氣污染系統(tǒng)的研究》所設(shè)計的電路共需驅(qū)動三個二相步進(jìn)電機(jī),以分別完成進(jìn)樣、采樣和閥門控制。
圖2是TA8435H的一個典型應(yīng)用電路,該電路用一片TA8435H來驅(qū)動一個步進(jìn)電機(jī),輸入信號有使能控制、正反轉(zhuǎn)控制和時鐘輸入,通過光耦可將驅(qū)動器與輸入級進(jìn)行電隔離,以起到邏輯電平隔離和保護(hù)作用;該電路工作在1/8細(xì)分模式(M1、M1接高電平),可減小低速時的振動,R8和C1組成復(fù)位電路,D1~D4快恢復(fù)二極管可用來泄放繞組電流?由于REF IN引腳接高電平,因此VNF為0.8V,輸出級斬波電流為VNF/RNF=0.8/0.8=1A,選用不同的二相步進(jìn)電機(jī)時,應(yīng)根據(jù)其電流大小選擇合適的R13和R14。
圖3是步進(jìn)電機(jī)核心控制電路,該電路能夠控制如圖2所示的三個步進(jìn)電機(jī)驅(qū)動器。本設(shè)計采用外部定時/計數(shù)器82C53來給TA8435H提供步進(jìn)脈沖。因為82C53有三個定時/計數(shù)器,可以驅(qū)動三個步進(jìn)電機(jī)控制器,因而能滿足設(shè)計要求;另外,82C53的工作方式3是一種方波速率發(fā)生器。在這種方式下,當(dāng)CPU設(shè)置控制字后,輸出將為高電平,在寫完計數(shù)值后就自動開始計數(shù),輸出保持高電平;而當(dāng)計到一半計數(shù)值時,輸出變低直到計數(shù)到0,此后輸出又變高以重新開始計數(shù)。在計數(shù)期間寫入新的計數(shù)值并不影響現(xiàn)行的計數(shù)過程。但是若在方波半周期結(jié)束前和新計數(shù)值寫入后收到GATE脈沖,那么計數(shù)器將在下一個CLK脈沖時裝入新的計數(shù)值并以這個計數(shù)值開始計數(shù)。否則,新的計數(shù)值將在現(xiàn)行半周期結(jié)束時裝入計數(shù)值。因此,只要寫入不同的計數(shù)初值,就能控制步進(jìn)電機(jī)的轉(zhuǎn)速而不需要用軟件來控制高低電平的轉(zhuǎn)換,因而編程比較容易。本設(shè)計將82C53的GATE端全部接高電平,新的計數(shù)值將在現(xiàn)行半周期結(jié)束時起作用。
由于采用了定時/計數(shù)器82C53作為步進(jìn)脈沖產(chǎn)生電路,因此系統(tǒng)編程十分簡單,以下語句為控制一個步進(jìn)電機(jī)的相應(yīng)程序代碼。
#include <reg52.h>
#include <absacc.h>
#include <intrins.h>
#define A8253A XBYTE[0xB000] //計數(shù)器0地址
#define A8253B XBYTE[0xB100] //計數(shù)器1地址
#define A8253C XBYTE[0xB200] //計數(shù)器2地址
#define A8253D XBYTE[0xB300] //控制字口地址
#define uchar unsigned char
#define uint unsigned int
uint time1; //電機(jī)1運行時間
uchar speed1;//電機(jī)1運轉(zhuǎn)速度
sbit en1=P1^0; //電機(jī)1使能控制
sbit dir1=P1^1; ///電機(jī)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個計數(shù)初值,對應(yīng)16種轉(zhuǎn)速,初值大小應(yīng)根據(jù)電機(jī)的轉(zhuǎn)速要求和82C53計數(shù)器CLK端輸入的時鐘頻率決定
main()
{
A8253D=0x16; //計數(shù)器0方式3,只讀寫高位字節(jié)
A8253D=0x56; //計數(shù)器1方式3,只讀寫高位字節(jié)
A8253D=0x96; //計數(shù)器2方式3,只讀寫高位字節(jié)
dir1=1; //運轉(zhuǎn)方向
time1=200; //運轉(zhuǎn)200秒
speed1=3; //速度等級3
//以上是電機(jī)1的運行參數(shù),實際應(yīng)用中?一般先用上位機(jī)通過串口將數(shù)據(jù)送入89C51單片機(jī)存儲器,然后由單片機(jī)按照上位機(jī)送入的數(shù)據(jù)來控制步進(jìn)電機(jī)的運行速度、方向和時間。
sum1=time1*20;
//sum1為89C51定時器T0中斷次數(shù),因為定時間隔為0.05秒
A8253A=sdtab[speed1];
//向82C53計數(shù)器0送初值,OUT0腳輸出方波
en1=1;//電機(jī)1開始運轉(zhuǎn)
TMOD=0x01;
TL0=-46080%256;
TH0=-46080/256;
ET0=1;
EA=1;
TR0=1;
//89C51的計數(shù)器0用于定時器,定時間隔0.05秒,方式1,中斷方式,晶振11.0592M
while(10);?
}
void T0_srv(void) interrupt 1 using 1
{//中斷服務(wù)程序,執(zhí)行完后,電機(jī)停止運行
TL0=-46080%256;
TH0=-46080/256;
sum1--;
if(sum1==0)
{
en1=0?// 電機(jī)停止運行
}
}
圖3
4 結(jié)論
采用TA8435H構(gòu)成步進(jìn)電機(jī)驅(qū)動器,利用82C53輸出步進(jìn)脈沖的設(shè)計方案具有占用CPU時間短、編程容易、結(jié)構(gòu)簡單、成本低、可靠性好、抗干擾能力強(qiáng)等優(yōu)點,因此可在控制和測量領(lǐng)域中得到廣泛應(yīng)用。
評論