• <rp id="wfxtb"><acronym id="wfxtb"></acronym></rp><em id="wfxtb"></em><dd id="wfxtb"><big id="wfxtb"><video id="wfxtb"></video></big></dd>
  • <rp id="wfxtb"></rp>

    <mark id="wfxtb"><center id="wfxtb"></center></mark>

      <rp id="wfxtb"><span id="wfxtb"><u id="wfxtb"></u></span></rp>

      <rp id="wfxtb"><object id="wfxtb"></object></rp>

      注意:訪問本站需要Cookie和JavaScript支持!請設置您的瀏覽器! 打開購物車 查看留言付款方式聯系我們
      初中電子 單片機教材一 單片機教材二
      搜索上次看見的商品或文章:
      商品名、介紹 文章名、內容
      首頁 電子入門 學單片機 免費資源 下載中心 商品列表 象棋在線 在線繪圖 加盟五一 加入收藏 設為首頁
      本站推薦:
      用單片機控制步進電機
      文章長度[] 加入時間[2007/8/14] 更新時間[2025/7/8 1:03:28] 級別[0] [評論] [收藏]

      用單片機控制步進電機
       


      步進電機是機電控制中一種常用的執行機構,它的用途是將電脈沖轉化為角位移,通俗地說:當步進驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度(及步進角)。通過控制脈沖個數即可以控制角位移量,從而達到準確定位的目的;同時通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達到調速的目的。 

       

      一、步進電機常識
          常見的步進電機分三種:永磁式(PM),反應式(VR)和混合式(HB),永磁式步進一般為兩相,轉矩和體積較小,步進角一般為7.5度 或15度;反應式步進一般為三相,可實現大轉矩輸出,步進角一般為1.5度,但噪聲和振動都很大。在歐美等發達國家80年代已被淘汰;混合式步進是指混合了永磁式和反應式的優點。它又分為兩相和五相:兩相步進角一般為1.8度而五相步進角一般為 0.72度。這種步進電機的應用最為廣泛。

      二、永磁式步進電機的控制
          下面以電子愛好者業余制作中常用的永磁式步進電機為例,來介紹如何用單片機控制步進電機。
          圖1是35BY型永磁步進電機的外形圖,圖2是該電機的接線圖,從圖中可以看出,電機共有四組線圈,四組線圈的一個端點連在一起引出,這樣一共有5根引出線。要使用步進電機轉動,只要輪流給各引出端通電即可。將COM端標識為C,只要AC、 C、BC、 C,輪流加電就能驅動步進電機運轉,加電的方式可以有多種,如果將COM端接正電源,那么只要用開關元件(如三極管),將A、 、B、 輪流接地。
          下表列出了該電機的一些典型參數:
      表1 35BY48S03型步機電機參數
      型號 步距角 相數 電壓 電流 電阻 最大靜轉距 定位轉距 轉動慣量
      35BY48S03 7.5 4 12 0.26 47 180 65 2.5
          有了這些參數,不難設計出控制電路,因其工作電壓為12V,最大電流為0.26A,因此用一塊開路輸出達林頓驅動器(ULN2003)來作為驅動,通過P1.4~P1.7來控制各線圈的接通與切斷,電路如圖3所示。開機時,P1.4~P1.7均為高電平,依次將P1.4~P1.7切換為低電平即可驅動步進電機運行,注意在切換之前將前一個輸出引腳變為高電平。如果要改變電機的轉動速度只要改變兩次接通之間的時間,而要改變電機的轉動方向,只要改變各線圈接通的順序。

       

       
       

      圖1 35BY48S03型步進電機外形圖

       

       

       
       

      圖2 35BY48S03型步進電機的接線圖


       
       
       
       

      圖3 單片機控制35BY48S03型步進電機的電路原理圖


      三、步進電機的驅動實例
          要求:控制電路如圖3所示,開機后,電機不轉,按下啟動鍵,電機旋轉,速度為25轉/分,按下加1鍵,速度增加,按下減1鍵,速度降低,最高速度為100轉/分,最低轉帶為25轉/分,按下停止鍵,電機停轉。速度值要求在數碼管上顯示出來。

       

      1.要求分析
          按上面的分析,改變轉速,只要改變P1.0~P1.3輪流變低電平的時間即可達到要求,這個時間不應采用延時來實現,因為會影響到其他功能的實現。這里以定時的方式來實現。下面首先計算一下定時時間。
      按要求,最低轉速為25轉/分,而上述步進電機的步距角為7.5,即每48個脈沖為1周,即在最低轉速時,要求為1200脈沖/分,相當于50ms/脈沖。而在最高轉速時,要求為100轉/分,即48000脈沖/分,相當于12.5ms/脈沖?梢粤谐鱿卤
      表1 步進電機轉速與定時器定時常數關系
      速度 單步時間(us) TH1 TL1 實際定時(us)
      25 50000 76 0 49996.8
      26 48077 82 236 48074.18
      27 46296 89 86 46292.61
      28 44643 95 73 44640.155
      … … … … …
      100 12500 211 0 12499.2
          表中不僅計算出了TH1和TL1,而且還計算出了在這個定時常數下,真實的定時時間,可以根據這個計算值來估算真實速度與理論速度的誤差值。
      表中TH1和TL1是根據定時時間算出來的定時初值,這里用到的晶振是11.0592M。有了上述表格,程序就不難實現了,使用定時/計數器T1為定時器,定時時間到后切換輸出腳即可。

      2.程序實現
          定義DSB-1A實驗板的S1為啟動鍵,S2為停止鍵,S3為加1鍵,S4為減1鍵,程序如下:
       
      StartEnd bit  01H ;起動及停止標志
      MinSpd  EQU 25  ;起始轉動速度
      MaxSpd   EQU 100 ;最高轉動速度
      Speed  DATA 23H ;流動速度計數
      DjCount  DATA 24H ;控制電機輸出的一個值,初始為11110 111
      Hidden EQU 10H ;消隱碼
      Counter DATA 57H ;顯示計數器
      DISPBUF DATA 58H ;顯示緩沖區

          ORG    0000H
          AJMP   MAIN
      ORG 000BH
      JMP DISP
      ORG 001BH
      JMP DJZD
          ORG     30H
      MAIN:   
          MOV   SP,#5FH
          MOV   P1,#0FFH
      MOV A,#Hidden
      MOV DispBuf,A
      MOV DispBuf+1,A
      MOV DispBuf+2,A

      MOV DjCount,#11110111B 
          MOV   SPEED,#MinSpd ;起始轉動速度送入計數器
          CLR    StartEnd ;停轉狀態
      MOV TMOD,#00010001B ;
      MOV TH0,#HIGH(65536-3000)
      MOV TL0,#LOW(65536-3000)
      MOV TH1,#0FFH;
      MOV TL1,#0FFH
      SETB TR0
      SETB EA
      SETB ET0
      SETB ET1

      LOOP:  ACALL   KEY   ;鍵盤程序
          JNB     F0,m_NEXT1 ;無鍵繼續
          ACALL   KEYPROC  ;否則調用鍵盤處理程序
      m_NEXT1:
      MOV A,Speed
      MOV B,#10
      DIV AB
      MOV DispBuf+5,B ;最低位
      MOV B,#10
      DIV AB
      MOV DispBuf+4,B
      MOV DispBuf+3,A
      JB StartEnd,m_Next2
      CLR TR1 ;關閉電機
      JMP LOOP
      ORL P1,#11110000B
      m_Next2:
      SETB TR1 ;啟動電機
          AJMP   LOOP  ;主程序結束
      ;---------------------------------------
      D10ms:  
      ……
      ;---------延時程序,鍵盤處理中調用
      KEYPROC:
          MOV     A,B  ;獲取鍵值
          JB      ACC.2,StartStop  ;分析鍵的代碼,某位被按下,則該位為1
          JB      ACC.3,KeySty
          JB      ACC.4,UpSpd
          JB      ACC.5,DowSpd
          AJMP    KEY_RET
      StartStop:
          SETB StartEnd    ;啟動
          AJMP    KEY_RET
      KeySty:  
      CLR StartEnd; ;停止
          AJMP    KEY_RET
      UpSpd:
          INC     SPEED;
          MOV    A,SPEED
          CJNE    A,#MaxSpd,K1 ;到了最多的次數?
          DEC     SPEED ;是則減去1,保證下次仍為該值 
      K1:
          AJMP    KEY_RET
      DowSpd:
          DEC     SPEED
          MOV     A,SPEED
          CJNE    A,#MAXSPD,KEY_RET ;不等(未到最大值),返回
      MOV SPEED,#MinSpd; 
      KEY_RET:
          RET

      KEY:    
      ……獲取鍵值的程序
          RET

      DjZd: ;定時器T1用于電機轉速控制
      PUSH ACC
      PUSH PSW
      MOV A,Speed
      SUBB A,#MinSpd ;減基準數
      MOV DPTR,#DjH
      MOVC A,@A+DPTR
      MOV TH1,A
      MOV A,Speed
      SUBB A,#MinSpd
      MOV DPTR,#DjL
      MOVC A,@A+DPTR
      MOV TL1,A 
      MOV A,DjCount
      CPL A
      ORL P1,A
      MOV A,DjCount
      JNB ACC.7,d_Next1
      JMP d_Next2
      d_Next1:
      MOV DjCount,#11110111B
      d_Next2:
      MOV A,DjCount
      RL A
      MOV DjCount,A ;回存
      ANL P1,A
      POP PSW
      POP ACC
      RETI

      DjH: DB 76,82,89,95,100,106,110,115,119,123,12……
      DjL: DB 0,236,86,73,212,0,214,96,163,165
      ……

      DISP: ;顯示程序
      POP PSW
      POP ACC
      ……
      RETI
      BitTab: DB 7Fh,0BFH,0DFH,0EFH,0F7H,0FBH
      DISPTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
      END 

      3.程序分析
          本程序主要由鍵盤程序、顯示器程序、步進電機驅動程序三部份組成,主程序首先初始化各變量,將顯示器的高3位消隱,步進電機驅動的各引腳均輸出高電平,然后調用鍵盤程序,并作判斷,如果有鍵按下,則調用鍵盤處理程序,否則直接轉下一步。下一步是將當前的轉速值轉換為BCD碼,送入顯示緩沖區;接著判斷StartEnd這個位變量,是“1”還是“0”,如果是“1”,則開啟定時器T1,否則關閉定時器T1,為防止關閉時某一相線圈長期通電,因此,在關閉定時器T1時,將P1.0~P1.3均置高。至此,主程序的工作即結束。這里為簡便起見,這里沒有做高位“0”消隱的工作,即如果速度為10轉/分,則顯示值“010”,讀者可以自行加入相關的代碼來處理這一工作。
          步進電機的驅動工作是在定時器T1的中斷服務程序中實現的,由前述分析,每次的定時時間到達以后,需要將P1.0~P1.3依次接通,程度中用了一個變量DjCntr來實現這一功能,在主程序初始化時,該變量被賦予初值11110111B,進入到定時中斷以后,將該變量取出送ACC累加器,并在累加器中進行左移,這樣,該數值就變為1110 1111,然后將該數與P1相“與”,此時,P1.4即輸出低電平,第二次進入中斷時,先將該數取反,成為 0001 0000,然后將該數與P1相“或”,這樣,P1.4即輸出高電平,關斷了相應的線圈,然后將該數重新取出,并作左移,即 1110,1111右移成為1101 1111,將該數與P1相“與”,這樣P1.5即輸出低電平,依次類推,P1.7~P1.4即循環輸出低電平。當這一數據變為0111 1111后,需要作適當的改動,將數據重新變回 1111 0111,進行第二次循環,相關代碼,請讀者自行分析。
          定時時間又是如何確定的呢?這里用的是查表的方法,首先用Excel計算得出在每一種轉速下的TH值和TL值,然后,分別放入DjH和DjL表中,在進入T1中斷程序之后,將速度值變量Speed送入累加器ACC,然后減去基數25,使其基數從0開始計數,然后分別查表,送入TH1和TL1,實現重置定時初值的目的。

      1、 本站不保證以上觀點正確,就算是本站原創作品,本站也不保證內容正確。
      2、如果您擁有本文版權,并且不想在本站轉載,請書面通知本站立即刪除并且向您公開道歉! 以上可能是本站收集或者轉載的文章,本站可能沒有文章中的元件或產品,如果您需要類似的商品請 點這里查看商品列表!
      本站協議。 版權信息。 關于我們。 本站地圖。 營業執照。 發票說明。 付款方式。 聯系方式
      深圳市寶安區西鄉五壹電子商行——粵ICP備16073394號-1;地址:深圳西鄉河西四坊183號;郵編:518102
      E-mail:51dz$163.com($改為@);Tel:(0755)27947428
      工作時間:9:30-12:00和13:30-17:30和18:30-20:30,無人接聽時可以再打手機13537585389
      91嫩草黄片动漫版