• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 關 閉

    新聞中心

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



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 元朗区| 太湖县| 梁平县| 南京市| 微博| 社旗县| 沂南县| 南平市| 肇庆市| 台中市| 吉隆县| 玛多县| 南丹县| 宁乡县| 盱眙县| 建德市| 同德县| 饶河县| 吴桥县| 玉山县| 丰县| 玉山县| 贺州市| 拜城县| 通道| 永吉县| 百色市| 沙洋县| 永安市| 敦化市| 博野县| 平昌县| 余干县| 河津市| 金塔县| 新化县| 托克逊县| 池州市| 田林县| 祁东县| 乐安县|