歡迎您光臨本站 登入註冊首頁

概述

   步進電機是一種將脈衝信號轉換成角位移的伺服執行器件。其特點是結構簡單、運行可靠、控制方便。尤其是步距值不受電壓、溫度的變化的影響、誤差不會長期積累,這給實際的應用帶……

    步進電機是一種將脈衝信號轉換成角位移的伺服執行器件。其特點是結構簡單、運行可靠、控制方便。尤其是步距值不受電壓、溫度的變化的影響、誤差不會長期積累,這給實際的應用帶來了很大的方便。它廣泛用於消費類產品(印表機、照相機)、工業控制(數控機床、工業機器人)、醫療器械等機電產品中。
    通常的步進電機控制方法是採用CPU(PC機、單片機等)配合專用的步進電機驅動控制器來實現,這存在成本較高、各個環節搭配不便(不同類的電機必須要相應的驅動控制器與之配對)等問題。
    CPLD器件具有速度快、功耗低、保密性好、程序設計靈活、抗干擾能力強、與外圍電路介面方便等特點,越來越多的應用於各種工控、測量、儀器儀錶等方面。同時單片機非常適合應用於需要複雜的控制演算法的場合。因此本設計採用的方法是:用單片機採集現場信號後計算出步進電機運轉所需的控制信息后,再傳給CPLD,CPLD把接收到的信息轉換成步進電機實際的控制信號(運轉方向、運轉速度)輸出給電機的驅動電路。這樣的好處是單片機與CPLD各行其是。單片機可以專註於處理輸入信號與輸出信息之間的轉換等複雜的演算法.不必佔用過多的CPU資源去直接控制電機,也減小了由此引入干擾的可能性;CPLD只需把單片機傳送過來的信息轉換成電機的控制信號。這樣就發揮了單片機和CPLD兩者的優點。

1 步進電機原理簡介
    通常電機的轉子為永磁體,當電流流過定子繞組時,定子繞組產生一矢量磁場。該磁場會帶動轉子旋轉一角度,使得轉子的一對磁場方向與定子的磁場方向一致。當定子的矢量磁場旋轉一個角度。轉子也隨著該磁場轉一個角度。每輸入一個電脈衝,電動機轉動一個角度前進一步。它輸出的角位移與輸入的脈衝數成正比、轉速與脈衝頻率成正比。改變繞組通電的順序,電機就會反轉。所以可用控制脈衝數量、頻率及電動機各相繞組的通電順序來控制步進電機的轉動。
    我們使用的單極四相步進電機為例。其結構如圖1:
 
    四個繞組引出四相(相A1相A2相B1相B2)和兩個公共線(接到電源的正機)。把繞組的某一相接到電源的地線。這樣該繞組就會受到激勵。我們採用四相八拍的控制方式,即1相與2相交替導通,這樣可提高解析度。每一步可轉0.9°控制電機正轉的勵磁順序如下表:
 
    若要求電機反轉,將勵磁信號倒過來傳送即可。

2 步進電機控制方案
    控制系統的框圖如下:
 
    本方案採用AT89S51作為主控制器件。它與AT89C51兼容,同時還增加了SPI介面和看門狗模塊,這不但使程序調試變得方便而且也使程序運行更加穩定。在方案中該單片機主要實現現場信號的採集並計算出步進電機運轉的方向和速度信息。然後傳送給CPLD。
    CPLD採用EPM7128SLC84-15,EPM7128是可編程的大規模邏輯器件,為ALTERA公司的MAX7000系列產品。具有高阻抗、電可擦等特點,可用單元為2500個,工作電壓為+5V。CPLD接收到單片機發送過來的信息后,轉換成對應的控制信號輸出給步進電機驅動器。驅動器則把控制信號處理后輸入電機繞組,實現了電機的有效控制。

2.1 電機驅動器硬體結構
    電機的驅動器採用如下電路:
 
    其中R1-R8的電阻值為320Ω。R9-R12的電阻值為2.2KΩ。Q1-Q4為達林頓管D401A,Q5-Q8為S8550。J1、J2與步進電機的六條引線相連
2.2 CPLD硬體電路的設計
    使用CPLD器件使電路的設計變得十分簡潔。我們只需要把CPLD的I/O腳引出來, 接上相應的外圍器件就可以了。CPLD與專用數字晶元(如74SC164等)的一個重要區別是其I/O 口的功能可任意在軟體上設定,這樣在硬體設計中便可只用考慮電源線與地線的分佈。以減小高頻電流雜訊對數據傳輸的影響。
    在設計CPLD電路時,電源、時鐘以及I/O與目標晶元都可通過接插件進行連接。最後在管腳鎖定的時候把CPLD的I/O分別與單片機和電機電路部分相連就可以了,這樣使電路的安裝調試變得更加簡便。
2.3 控制的實現
    由於篇幅的限制。在此只討論單片機與CPLD邏輯介面部分以及CPLD中控制信號的產生部分。
    首先說明單片機和CPLD邏輯介面的問題。AT89S51與EPM7128SLC84的I/O電壓都為5V。所以它們的I/O可以直接連接。無需增加額外的電路。如果使用的是I/O電壓為3.3V的可編程邏輯器件,則需要考慮邏輯介面這個問題。
    同時通過時序分析. 我們可以知道該系統中EPM7128SLC84的輸入信號建立時間Ts=8ns。也就是說輸入CPLD的信號必須持續8ns以上才能夠被CPLD識別。單片機如採用12MHZ的晶振,則信號的改變時間為微秒級,完全滿足這個條件。
    當單片機根據實際情況計算出控制信息(電機的速度和方向)后就要"聯絡"CPLD以便及時的把信息傳給它。單片機和CPLD交換數據可以選用并行傳送或者串列傳送的方式。考慮到單片機和CPLD的引腳都比較豐富。而且并行傳送的介面相對簡單,因此選用并行的方式交換數據。規定傳送數據的協議如下圖所示:
 
    由圖可知,單片機每次用P0口發送3個位元組的數據(N1、N2分別為速度和方向控制字,N3為和校驗位元組),當CPLD檢測到EN從高到低的跳變表示傳進數據開始。每個位元組的有效數據出現在CLK的上升沿。ACK為CPLD的應答信號。當CPLD接收完數據後進行和校驗.如果不對則把ACK拉高。單片機若檢測到ACK為高電平則重新開始送數的過程。CPLD接收到正確的數據后就把它轉換成步進電機的物理運動。直到接收到新的控制信息。我們用VHDL語言編程,並選擇EPM7128SLC84-15作為目標器件進行時序模擬和硬體測試。程序的框圖如下:
 
EN:系統使能信號。
CPLD_CLK:系統時鐘信號。
N1:速度控制信號。
N2:方向控制信號。
    系統時鐘CPLD_CLK在速度控制信號N1的控制下得到脈衝分配器(狀態機)的輸入時鐘,此時鐘的頻率決定控制邏輯輸出的頻率從而(在允許的範圍內)控制電機的轉速。EN為高電平時系統使能開始正常運轉。N1為01H代表電機正轉,00H代表電機反轉。
    程序的脈衝分配器部分採用狀態機的方法編寫。狀態機是純硬體數字系統中的順序控制電路,在狀態機的運行方式上類似於控制靈活方便的CPU,而在運行速度和工作可靠性方面都優於CPU。
狀態機部分的VHDL代碼如下:
PROCESS(C_ST,EN,N1,BCLK)
BEGIN
IF RISING_EDGE(BCLK) THEN C_ST<=N_ST;
IF EN='1' THEN
CASE C_ST IS
WHEN ST0=> IF N1="00000000" THEN
N_ST<=ST1; ELSE N_ST<=ST7;END IF;
CON_OUT<="1000";
WHEN ST1=> IF N1="00000000" THEN
N_ST<=ST2; ELSE N_ST<=ST0;END IF;
CON_OUT<="1100";
WHEN ST2=> IF N1="00000000" THEN
N_ST<=ST3;ELSE N_ST<=ST1;END IF;
CON_OUT<="0100";
WHEN ST3=> IF N1="00000000" THEN
N_ST<=ST4;ELSE N_ST<=ST2;END IF;
CON_OUT<;"0110";
WHEN ST4=> IF N1="00000000" THEN
N_ST<=ST5;ELSE N_ST<=ST3;END IF;
CON_OUT<="0010";
WHEN ST5=> IF N1="00000000" THEN
N_ST<=ST6; ELSE N_ST<=ST4;END IF;
CON_OUT<="0011";
WHEN ST6=> IF N1="00000000" THEN
N_ST<=ST7;ELSE N_ST<=ST5;END IF;
CON_OUT<="0001";
WHEN ST7=> IF N1="00000000" THEN
N_ST<=ST0; ELSE N_ST<=ST6;END IF;
CON_OUT<="1001";
WHEN OTHERS=> N_ST<=ST0;
CON_OUT<="0000";
END CASE;
END IF;
END IF;
END PROGESS;

2.4 結論
    實踐表明.這樣的控制方法切實可行。在整個工作過程中,單片機運行穩定.電機能夠根據情況完成正常的正轉反轉,加速減速。

3 結語
    單片機是一種非常傳統的智能控制器件,無論是智能家電還是消費類產品都有它的身影。CPLD器件在各種場合的應用也越來越廣泛。兩者有各自的優缺點。單片機控制功能很強,能完成複雜的數學運算.但是穩定性稍差。CPLD運行速度快。程序不會跑飛。適合產生各種複雜組合邏輯和時序邏輯。可以靈活的定義各個引腳的與外圍電路連接的電氣特性等。使用單片機和CPLD聯合控制步進電機只是不同類型的器件協同完成同一任務在實際應用中的一個例子。實踐證明這種方法是可取的。


[admin via 研發互助社區 ] 用單片機和CPLD實現步進電機的控制已經有2082次圍觀

http://cocdig.com/docs/show-post-43082.html