基于摩托羅拉(現(xiàn)在 飛思卡爾) 大量使用但過時的 SAA1042 步進電機驅(qū)動器 IC,本設(shè)計理念描述了基于 CPLD(復(fù)數(shù)可編程邏輯器件)的步進電機驅(qū)動器實現(xiàn),該驅(qū)動器也可以取代基于 SAA1027 或 UCN5804B 的設(shè)計中的驅(qū)動器。該設(shè)計僅使用六個宏單元 賽靈思 XC9536 CPLD,因此可以在一個小容量CPLD中實現(xiàn)多個步進電機驅(qū)動器。CPLD步進電機驅(qū)動器需要時鐘、方向、步長和復(fù)位輸入。時鐘輸入接受邏輯電平脈沖,并在脈沖的正邊沿上激活。
方向或 CW/CCW(順時針/逆時針)輸入決定了電機的旋轉(zhuǎn)方向。根據(jù)電機的電氣連接,將此輸入保持在 0V 通常產(chǎn)生 CW 旋轉(zhuǎn),邏輯 1 輸入產(chǎn)生 CCW 旋轉(zhuǎn)。步長(即全步或半步)輸入決定了電機在每個時鐘脈沖下的角度旋轉(zhuǎn)。保持該輸入為低電平命令電機針對每個施加的時鐘脈沖執(zhí)行一個完整的步進,高輸入產(chǎn)生半步。復(fù)位輸入上的高電平使電機處于先前定義的狀態(tài),并命令CPLD忽略任何輸入時鐘脈沖。
CPLD的輸出包括A相和A_n相以及B相和B_n相,每個相位通過外部電源驅(qū)動器IC控制電機的兩個線圈之一2 和集成電路3 ,在電機的標(biāo)稱電壓(圖1 ).每個驅(qū)動器輸出端的一對肖特基二極管在通過反轉(zhuǎn)繞組電流引起的感性電壓瞬變期間保護驅(qū)動器的輸出。將 MOSFET 驅(qū)動器與內(nèi)部二極管配合使用,例如 微芯片的 TC4424A 雙驅(qū)動器,可省去對外部二極管的要求。
圖1 仿真專用步進電機控制器、可編程邏輯器件、IC1 ,將步進電機信號施加到電機驅(qū)動器IC2 和集成電路3 .
CPLD的程序包括一個八態(tài)摩爾有限狀態(tài)機,對應(yīng)于電機的八個半步態(tài)。 表1 顯示每個計算機狀態(tài)的驅(qū)動程序輸出。在全步狀態(tài)模式下,狀態(tài)機僅執(zhí)行步驟 0、步驟 2、步驟 4 和步驟 6。在每個時鐘脈沖的上升沿,如果 CW/CCW 為高電平,則機器狀態(tài)從步進 (n) 變?yōu)椴竭M (n+1),如果 CW/CCW 為低電平,則從步進 (n) 變?yōu)椴竭M (n–1)。您可以一個 通用 VHDL 實現(xiàn) 步進電機驅(qū)動器固件。雖然該代碼是為XC9536 CPLD編寫的,但它也適用于任何CPLD或FPGA目標(biāo)器件。 |