基于摩托羅拉(現在 飛思卡爾) 大量使用但過時的 SAA1042 步進電機驅動器 IC,本設計理念描述了基于 CPLD(復數可編程邏輯器件)的步進電機驅動器實現,該驅動器也可以取代基于 SAA1027 或 UCN5804B 的設計中的驅動器。該設計僅使用六個宏單元 賽靈思 XC9536 CPLD,因此可以在一個小容量CPLD中實現多個步進電機驅動器。CPLD步進電機驅動器需要時鐘、方向、步長和復位輸入。時鐘輸入接受邏輯電平脈沖,并在脈沖的正邊沿上激活。
方向或 CW/CCW(順時針/逆時針)輸入決定了電機的旋轉方向。根據電機的電氣連接,將此輸入保持在 0V 通常產生 CW 旋轉,邏輯 1 輸入產生 CCW 旋轉。步長(即全步或半步)輸入決定了電機在每個時鐘脈沖下的角度旋轉。保持該輸入為低電平命令電機針對每個施加的時鐘脈沖執行一個完整的步進,高輸入產生半步。復位輸入上的高電平使電機處于先前定義的狀態,并命令CPLD忽略任何輸入時鐘脈沖。
CPLD的輸出包括A相和A_n相以及B相和B_n相,每個相位通過外部電源驅動器IC控制電機的兩個線圈之一2 和集成電路3 ,在電機的標稱電壓(圖1 ).每個驅動器輸出端的一對肖特基二極管在通過反轉繞組電流引起的感性電壓瞬變期間保護驅動器的輸出。將 MOSFET 驅動器與內部二極管配合使用,例如 微芯片的 TC4424A 雙驅動器,可省去對外部二極管的要求。

圖1 仿真專用步進電機控制器、可編程邏輯器件、IC1 ,將步進電機信號施加到電機驅動器IC2 和集成電路3 .

CPLD的程序包括一個八態摩爾有限狀態機,對應于電機的八個半步態。 表1 顯示每個計算機狀態的驅動程序輸出。在全步狀態模式下,狀態機僅執行步驟 0、步驟 2、步驟 4 和步驟 6。在每個時鐘脈沖的上升沿,如果 CW/CCW 為高電平,則機器狀態從步進 (n) 變為步進 (n+1),如果 CW/CCW 為低電平,則從步進 (n) 變為步進 (n–1)。您可以一個 通用 VHDL 實現 步進電機驅動器固件。雖然該代碼是為XC9536 CPLD編寫的,但它也適用于任何CPLD或FPGA目標器件。 |