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時間短、編程容易、結構簡單、成本低、可靠性好、抗干擾能力強等優點,因此可在控制和測量領域中得到廣泛應用。
評論
查看更多