• <menu id="qseaa"><tt id="qseaa"></tt></menu><nav id="qseaa"><tt id="qseaa"></tt></nav>
    <optgroup id="qseaa"><tt id="qseaa"></tt></optgroup>
  • <object id="qseaa"><acronym id="qseaa"></acronym></object><input id="qseaa"></input>
    <menu id="qseaa"></menu>
  • <nav id="qseaa"><u id="qseaa"></u></nav>
  • <object id="qseaa"></object>
  • <input id="qseaa"></input><menu id="qseaa"></menu>
  • <s id="qseaa"></s>
  • <menu id="qseaa"><u id="qseaa"></u></menu>
  • <input id="qseaa"></input>
    ACS880-07C
    關注中國自動化產業發展的先行者!
    隨著會計的發展,追蹤碳足跡
    CAIAC 2025
    2024
    工業智能邊緣計算2024年會
    2023年工業安全大會
    OICT公益講堂
    當前位置:首頁 >> 案例 >> 案例首頁

    案例頻道

    基于DSP的步進電機控制系統和PC的串行通信
    • 企業:控制網     行業:輸配電    
    • 點擊數:2711     發布時間:2006-08-16 17:58:25
    • 分享到:
    介紹基于TMS320LF2407A的步進電機控制系統的工作原理,并討論了與PC機進行串行通信的功能;分析步進電機的工作狀態,及其在通信控制系統和工控中的應用。

     

    一.引言

    本文設計的基于DSP的步進電機控制系統是一個獨立的系統,采用的DSPTI公司的TMS320LF2407A。運動控制系統本身可以實現步進電機的正反轉及速度調節,而且微機可以通過串口通信改變DSP程序中電機的轉速和轉向,得以精確的控制步進電機的運行。

    二.設計方案概述

       本測控系統主要分為兩個模塊:一個是串行通信接口SCI同微機的RS-232接口,另一個就是脈寬調制電路PWM控制步進電機。在串行通信接口模塊中使用SCITXD/IOPA0SCIRXD/IOPA1引腳,電路由Maxim公司的芯片MAX232A和少量的外圍元件構成。PC的串行通信使用的是VB提供的控件MSComm,通過事件驅動方式,利用MSComm控件的OnComm事件捕獲并處理通信事件。步進電機的驅動器為UCN5804B,它提供有方向和輸出使能控制,STEP IN引腳接DSP輸出的PWM信號,按照收到的脈沖頻率和個數輸出四相電流驅動步進電機的運行。

    三.系統硬件設計

    1所示是SCI串行通信總線接口電路,該電路采用了符合RS-232標準的驅動芯片

    MAX232,進行串行通信。MAX232芯片功耗低,集成度高,+5V供電,具有兩個接收和發送通道。由于TMS320LF2407采用+3.3V供電,所以在MAX232TMS320LF2407之間加了TI公司提供典型電平匹配電路。SCITXD/IOPA0SCIRXD/IOPA1DSP控制器SCI串行通信模塊的輸入輸出,RXDTXD接外部RS-232接口。                               

    2所示是DSPUCN5804B的主要接口電路,UCN5804BAllegro公司生產的步進電機專用驅動芯片,對四相步進電機提供完全的控制和驅動。其中DSPIOPA5IOPA6被設置成通用I/O口輸出,分別控制UCN5804B的使能和方向。T1PWM/T1CMP/IOPB4被設置為PWM功能,提供脈沖輸入。其中運行模式被強制設置為單-雙相勵磁,無須DSP控制。在用PWM信號控制步進電機時,主要是輸出脈沖的頻率決定電機的運行速度,因此只要能實時改變PWM的脈沖輸出頻率,也就是更改相應計時器的周期寄存器的值,就能實時更改電機的運行速度。

    系統所使用DSP芯片內部硬件資源包括EVA的通用計時器1SCI接收器和發送器,以及控制器復位引腳,功率驅動保護中斷輸入引腳,PLL振蕩器輸入引腳。

    因為2407A芯片為3.3V供電,而外圍電路接口為+5V,所以對于多電源工作的DSP應用系統,可以采用TI公司的TPS7333Q芯片。這是輸入電壓+5V,輸出電壓3.3V,輸出電流500mADC/DC芯片。由于DSP的外圍器件一般為5V的居多,這就存在一個DSP與外圍器件之間的電平轉換問題。74LVC4245芯片的輸入端可承受5.5V信號,輸出信號的電平為3.3V,可以輕松實現2407A與周圍器件的電平轉換。

     

                                       1

     

                                         2

    四.系統軟件設計

    本系統控制程序主要有初始化子程序,通信中斷子程序,主程序以及脈沖輸出中斷子程序。主程序調用系統初始化子程序,進行通信接口,定時器等部分及必要中間寄存器的初始化,設置中斷標志,讀取定時器1的計數值。當發生中斷時,調用相應中斷程序,并修改或重置標志位。

    通信中斷子程序包括接收中斷和發送中斷,完成數據的接收和發送。由SCI的中斷向量寄存器PIVR的值判斷是接收中斷還是發送中斷,并調用相應服務子程序。再計算定時器周期寄存器的值,結果放入中間寄存器,并把計數器清零。發送中斷時,系統讀取電機電流,轉速和方向等寄存器的值,同時相應寄存器清零,將各結果發送到PC機。

    當定時器中計數器與周期寄存器匹配時,即發生輸出中斷,相應標志位置位,脈沖輸出中斷子程序根據標志位讀取相應中間寄存器的脈沖值和方向標志,并輸出到I/O,隨即計數器清零,重新開始計數,同時標志位清零。為增強程序容錯性能,系統使能看門狗定時器。另外,為防止干擾影響控制性能,需增加返回中斷服務子程序,此程序只有一條“return”指令,當發生干擾中斷時,系統直接返回主程序。

       
        在本程序中,使用了眾多的寄存器,現在分別把它們各自的定義說明如下:SCI通信程序部分中,DSP的時鐘頻率為24M HZ,串行通訊的波特率為96008位數據、1位停止位、不設奇偶校驗位。SCSR1設置為81FESCICCR000FSCICTL10003SCICTL20002SCIHBAUD0001SCILBAUD0038;產生PWM的寄存器設置中首先不使能看門狗,WDCR0E8IMR0002,再根據所需的PWM載波周期設置T1PR,設置T1CON寄存器以確定計數模式和時鐘源并啟動PWM輸出操作,最后將相應于PWM脈沖的在線計算寬度(占空比)的值加載到T1CMPR寄存器中。系統初始化程序包括通用定時器1的初始化程序:

    LDP        #DP_EVA            ;指向7400h7480h單元

    SPLK       #41H,GPTCONA       ;允許定時器比較輸出

    SPLK       #5HT1PR          ;設置周期寄存器

    SPLK       #3HT1CMPR        ;設置比較寄存器

    SPLK       #0HT1CNT         ;設置計數寄存器

    SPLK       #0F4EHT1CON     

    以及串行通信初始化程序:

    LDP        #0E1H

    LACL       MCRA

    OR         #03H

    SACL       MCRA               ;設置串行口引腳為特殊功能:TXDRXD

    LDP        #DP_PF1

    SPLK       #000FHSCICCR     ;地址位喚醒模式,8位數據1位停止位

    SPLK       #0003HSCICTL1    ;接收,發送,內部時鐘使能

    SPLK       #0002HSCICTL2    ;接收中斷使能

    SPLK       #0001HSCIHBAUD

    SPLK       #0038HSCILBAUD   ;波特率為9600

    SPLK       #0027HSCICTL1    ;串口初始化完成

    LAR        AR1#SCIRXBUF     ;接收緩沖寄存器地址

    LAR        AR2#SCITXBUF     ;發送緩沖寄存器地址

    LAR        AR3#RXD_PTR      ;接收的數據指針

    LAR        AR4#TXD_PTR      ;發送的數據指針

    LDP        #0

    SPLK       #0001HIMR        ;允許INT1中斷

    SPLK       #0FFFFHIFR       ;清所有中斷標志

    CLRC       INTM               ;開中斷

    RET

    在本程序中,DSPPC接收數據,接收的數據存放到了RXD_PTR,我們就用這個值來改變定時器的周期,從而改變PWM的周期和頻率,也就改變步進電機的運行速度。其中四相步進電機以單極驅動,是脈沖驅動方式。從PC機接收數據的中斷程序為:

    GISR1                                 INT1中斷入口

    LDP        #0E0H              ;保護現場

    LACC       PIVR1            ;讀取外設中斷向量寄存器

    ADD        #PVECTORS          ;加上外設中斷入口地址

    BACC                          ;跳到相應的中斷服務子程序

    SCI_RX_ISR                            ;接收中斷服務程序

    LDP        #DP_PF1

    MAR        *AR1

    BIT        SCICTL1BIT2

    LACC       *AR3             ;讀入數據

    SACL       *+AR0            ;保存數據

    LAR        AR0#RXD_PTR

    ADRK       #N

    MAR        *AR3

    CMPR       00

    BCND       SCI_RX_ENDNTC    ;判是否接收完

    LAR        AR7#RXD_PTR     

    SAR        AR7T1PR

    LAR        AR3#RXD_PTR      ;恢復數據指針

    SCI_RX_END

    CLRC       INTM               ;中斷返回,恢復現場

    RET

    五.結束語

        本文所設計的DSP測控系統通過與微機的接口,可以方便的控制四相步進電機的運行。在PC機的接收端,使用Visual Basic編一個簡易的軟件界面,設好通信的波特率,就可以發送不同的數據到DSP,這樣控制就顯得比較簡便。適合于通信距離近的場合,現場控制等。

    參考文獻:

    [1]  劉和平等TMS320LF240X DSP結構原理及應用[M]。北京:北京航空航天大學出版社

    [2]  王曉明。電動機的單片機控制[M]北京:北京航空航天大學出版社

    [3]  王福瑞。單片機測控系統設計大全[M]北京:北京航空航天大學出版社                                                              

    [4]   劉和平等TMS320LF240X DSP C語言開發應用[M]。北京:北京航空航天大學出版社

    熱點新聞

    推薦產品

    x
    • 在線反饋
    1.我有以下需求:



    2.詳細的需求:
    姓名:
    單位:
    電話:
    郵件:
  • <menu id="qseaa"><tt id="qseaa"></tt></menu><nav id="qseaa"><tt id="qseaa"></tt></nav>
    <optgroup id="qseaa"><tt id="qseaa"></tt></optgroup>
  • <object id="qseaa"><acronym id="qseaa"></acronym></object><input id="qseaa"></input>
    <menu id="qseaa"></menu>
  • <nav id="qseaa"><u id="qseaa"></u></nav>
  • <object id="qseaa"></object>
  • <input id="qseaa"></input><menu id="qseaa"></menu>
  • <s id="qseaa"></s>
  • <menu id="qseaa"><u id="qseaa"></u></menu>
  • <input id="qseaa"></input>
    啊灬啊灬啊灬快灬深用力试看