用AT89S51和CPLD實(shí)現步進(jìn)電機的控制
步進(jìn)電機是一種將脈沖信號轉換成角位移的伺服執行器件。其特點(diǎn)是結構簡(jiǎn)單、運行可靠、控制方便。
本文引用地址:http://dyxdggzs.com/article/201706/352485.htm 尤其是步距值不受電壓、溫度的變化的影響、誤差不會(huì )長(cháng)期積累,這給實(shí)際的應用帶來(lái)了很大的方便。它廣泛用于消費類(lèi)產(chǎn)品(打印機、照相機)、工業(yè)控制(數控機床、工業(yè)機器人)、醫療器械等機電產(chǎn)品中。
通常的步進(jìn)電機控制方法是采用CPU(PC機、單片機等)配合專(zhuān)用的步進(jìn)電機驅動(dòng)控制器來(lái)實(shí)現,這存在成本較高、各個(gè)環(huán)節搭配不便(不同類(lèi)的電機必須要相應的驅動(dòng)控制器與之配對)等問(wèn)題。
CPLD器件具有速度快、功耗低、保密性好、程序設計靈活、抗干擾能力強、與外圍電路接口方便等特點(diǎn),越來(lái)越多的應用于各種工控、測量、儀器儀表等方面。 同時(shí)單片機非常適合應用于需要復雜的控制算法的場(chǎng)合。因此本設計采用的方法是:用單片機采集現場(chǎng)信號后計算出步進(jìn)電機運轉所需的控制信息后,再傳給 CPLD,CPLD把接收到的信息轉換成步進(jìn)電機實(shí)際的控制信號(運轉方向、運轉速度)輸出給電機的驅動(dòng)電路。這樣的好處是單片機與CPLD各行其是。單 片機可以專(zhuān)注于處理輸入信號與輸出信息之間的轉換等復雜的算法.不必占用過(guò)多的CPU資源去直接控制電機,也減小了由此引入干擾的可能性;CPLD只需把 單片機傳送過(guò)來(lái)的信息轉換成電機的控制信號。這樣就發(fā)揮了單片機和CPLD兩者的優(yōu)點(diǎn)。
1 步進(jìn)電機原理簡(jiǎn)介
通常電機的轉子為永磁體,當電流流過(guò)定子繞組時(shí),定子繞組產(chǎn)生一矢量磁場(chǎng)。該磁場(chǎng)會(huì )帶動(dòng)轉子旋轉一角度,使得轉子的一對磁場(chǎng)方向與定子的磁場(chǎng)方向一致。當 定子的矢量磁場(chǎng)旋轉一個(gè)角度。轉子也隨著(zhù)該磁場(chǎng)轉一個(gè)角度。每輸入一個(gè)電脈沖,電動(dòng)機轉動(dòng)一個(gè)角度前進(jìn)一步。它輸出的角位移與輸入的脈沖數成正比、轉速與 脈沖頻率成正比。改變繞組通電的順序,電機就會(huì )反轉。所以可用控制脈沖數量、頻率及電動(dòng)機各相繞組的通電順序來(lái)控制步進(jìn)電機的轉動(dòng)。
我們使用的單極四相步進(jìn)電機為例。其結構如圖1:
四個(gè)繞組引出四相(相A1相A2相B1相B2)和兩個(gè)公共線(xiàn)(接到電源的正機)。把繞組的某一相接到電源的地線(xiàn)。這樣該繞組就會(huì )受到激勵。我們采用四相八拍的控制方式,即1相與2相交替導通,這樣可提高分辨率。每一步可轉0.9°控制電機正轉的勵磁順序如下表:
若要求電機反轉,將勵磁信號倒過(guò)來(lái)傳送即可。
2 步進(jìn)電機控制方案
控制系統的框圖如下:
本方案采用AT89S51作為主控制器件。它與AT89C51兼容,同時(shí)還增加了SPI接口和看門(mén)狗模塊,這不但使程序調試變得方便而且也使程序運行更加 穩定。在方案中該單片機主要實(shí)現現場(chǎng)信號的采集并計算出步進(jìn)電機運轉的方向和速度信息。然后傳送給CPLD。
CPLD采用EPM7128SLC84-15,EPM7128是可編程的大規模邏輯器件,為ALTERA公司的MAX7000系列產(chǎn)品。具有高阻抗、電可 擦等特點(diǎn),可用單元為2500個(gè),工作電壓為+5V。CPLD接收到單片機發(fā)送過(guò)來(lái)的信息后,轉換成對應的控制信號輸出給步進(jìn)電機驅動(dòng)器。驅動(dòng)器則把控制 信號處理后輸入電機繞組,實(shí)現了電機的有效控制。
2.1 電機驅動(dòng)器硬件結構
電機的驅動(dòng)器采用如下電路:
其中R1-R8的電阻值為320Ω。R9-R12的電阻值為2.2KΩ。Q1-Q4為達林頓管D401A,Q5-Q8為S8550。J1、J2與步進(jìn)電機的六條引線(xiàn)相連
2.2 CPLD硬件電路的設計
使用CPLD器件使電路的設計變得十分簡(jiǎn)潔。我們只需要把CPLD的I/O腳引出來(lái), 接上相應的外圍器件就可以了。CPLD與專(zhuān)用數字芯片(如74SC164等)的一個(gè)重要區別是其I/O 口的功能可任意在軟件上設定,這樣在硬件設計中便可只用考慮電源線(xiàn)與地線(xiàn)的分布。以減小高頻電流噪聲對數據傳輸的影響。
在設計CPLD電路時(shí),電源、時(shí)鐘以及I/O與目標芯片都可通過(guò)接插件進(jìn)行連接。最后在管腳鎖定的時(shí)候把CPLD的I/O分別與單片機和電機電路部分相連就可以了,這樣使電路的安裝調試變得更加簡(jiǎn)便。
2.3 控制的實(shí)現
由于篇幅的限制。在此只討論單片機與CPLD邏輯接口部分以及CPLD中控制信號的產(chǎn)生部分。
首先說(shuō)明單片機和CPLD邏輯接口的問(wèn)題。AT89S51與EPM7128SLC84的I/O電壓都為5V。所以它們的I/O可以直接連接。無(wú)需增加額外的電路。如果使用的是I/O電壓為3.3V的可編程邏輯器件,則需要考慮邏輯接口這個(gè)問(wèn)題。
同時(shí)通過(guò)時(shí)序分析. 我們可以知道該系統中EPM7128SLC84的輸入信號建立時(shí)間Ts=8ns。也就是說(shuō)輸入CPLD的信號必須持續8ns以上才能夠被CPLD識別。單片機如采用12MHZ的晶振,則信號的改變時(shí)間為微秒級,完全滿(mǎn)足這個(gè)條件。
當單片機根據實(shí)際情況計算出控制信息(電機的速度和方向)后就要聯(lián)絡(luò )CPLD以便及時(shí)的把信息傳給它。單片機和CPLD交換數據可以選用并行傳送或者 串行傳送的方式??紤]到單片機和CPLD的引腳都比較豐富。而且并行傳送的接口相對簡(jiǎn)單,因此選用并行的方式交換數據。規定傳送數據的協(xié)議如下圖所示:
由圖可知,單片機每次用P0口發(fā)送3個(gè)字節的數據(N1、N2分別為速度和方向控制字,N3為和校驗字節),當CPLD檢測到EN從高到低的跳變表示傳進(jìn) 數據開(kāi)始。每個(gè)字節的有效數據出現在CLK的上升沿。ACK為CPLD的應答信號。當CPLD接收完數據后進(jìn)行和校驗.如果不對則把ACK拉高。單片機若 檢測到ACK為高電平則重新開(kāi)始送數的過(guò)程。CPLD接收到正確的數據后就把它轉換成步進(jìn)電機的物理運動(dòng)。直到接收到新的控制信息。我們用VHDL語(yǔ)言編 程,并選擇EPM7128SLC84-15作為目標器件進(jìn)行時(shí)序仿真和硬件測試。程序的框圖如下:
EN:系統使能信號。
CPLD_CLK:系統時(shí)鐘信號。
N1:速度控制信號。
N2:方向控制信號。
系統時(shí)鐘CPLD_CLK在速度控制信號N1的控制下得到脈沖分配器(狀態(tài)機)的輸入時(shí)鐘,此時(shí)鐘的頻率決定控制邏輯輸出的頻率從而(在允許的范圍內)控制電機的轉速。EN為高電平時(shí)系統使能開(kāi)始正常運轉。N1為01H代表電機正轉,00H代表電機反轉。
程序的脈沖分配器部分采用狀態(tài)機的方法編寫(xiě)。狀態(tài)機是純硬件數字系統中的順序控制電路,在狀態(tài)機的運行方式上類(lèi)似于控制靈活方便的CPU,而在運行速度和工作可靠性方面都優(yōu)于CPU。
狀態(tài)機部分的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 結論
實(shí)踐表明.這樣的控制方法切實(shí)可行。在整個(gè)工作過(guò)程中,單片機運行穩定。電機能夠根據情況完成正常的正轉反轉,加速減速。
3 結語(yǔ)
單片機是一種非常傳統的智能控制器件,無(wú)論是智能家電還是消費類(lèi)產(chǎn)品都有它的身影。CPLD器件在各種場(chǎng)合的應用也越來(lái)越廣泛。兩者有各自的優(yōu)缺點(diǎn)。單片 機控制功能很強,能完成復雜的數學(xué)運算.但是穩定性稍差。CPLD運行速度快。程序不會(huì )跑飛。適合產(chǎn)生各種復雜組合邏輯和時(shí)序邏輯??梢造`活的定義各個(gè)引 腳的與外圍電路連接的電氣特性等。使用單片機和CPLD聯(lián)合控制步進(jìn)電機只是不同類(lèi)型的器件協(xié)同完成同一任務(wù)在實(shí)際應用中的一個(gè)例子。實(shí)踐證明這種方法是 可取的。
評論