李俊安 趙春麗 黃澤林 陳昊文 陳芳
摘 要:文章設(shè)計了一種控制魔方轉(zhuǎn)動的控制系統(tǒng)。以三階魔方為主要模型,通過研究三階魔方的內(nèi)部結(jié)構(gòu),以一個控制轉(zhuǎn)動的魔方軸作為定軸,剩余的五個旋轉(zhuǎn)的可動的動軸來控制魔方的轉(zhuǎn)動。在該控制系統(tǒng)中,主要利用步進(jìn)電機(jī)的精準(zhǔn)角度的轉(zhuǎn)動特性來控制魔方的每一個面的旋轉(zhuǎn),從而達(dá)到魔方控制的效果。步進(jìn)電機(jī)的轉(zhuǎn)動主要是通過STM32單片機(jī)的內(nèi)部計算,精確修改旋轉(zhuǎn)角度、細(xì)分系數(shù)。步進(jìn)電機(jī)的轉(zhuǎn)動器的設(shè)計是以STM32F103RCT6作為主控制器,以A4988步進(jìn)電機(jī)驅(qū)動設(shè)備,詳細(xì)分析步進(jìn)電機(jī)驅(qū)動設(shè)備的工作原理、各部分接口電路以及控制器設(shè)計方案。通過實物設(shè)計實現(xiàn)了步進(jìn)電機(jī)正反轉(zhuǎn)任意角度和細(xì)分系數(shù)的控制,并通過精確計算步進(jìn)脈沖個數(shù)實現(xiàn)了任意旋轉(zhuǎn)角度的精確控制,該驅(qū)動控制器步進(jìn)角度精度高0.1125度,以至于達(dá)到了魔方的精準(zhǔn)旋轉(zhuǎn)控制。
關(guān)鍵詞:STM32;A4988;步進(jìn)電機(jī);魔方控制系統(tǒng)
中圖分類號:TP242 文獻(xiàn)標(biāo)志碼:A 文章編號:2095-2945(2018)20-0005-05
Abstract: A control system is designed to control the rotation of Rubik's Cube. Taking the three-order Rubik's Cube as the main model, the internal structure of the three-order Cube is studied. A rotating Cube axis is used as the fixed axis, and the remaining five rotating movable axes are used to control the rotation of the Cube. In this control system, the rotation characteristics of the precise angle of the stepping motor are mainly used to control the rotation of each side of the Rubik's Cube, so as to achieve the effect of the Rubik's Cube control. The rotation of stepper motor is mainly through the internal calculation of STM32 single chip computer, precise modification of rotation angle, and subdivision coefficient. The design of stepping motor rotator is based on STM32F103RCT6 as the main controller and A4988 as the driving device. The working principle, interface circuit and controller design scheme of the stepping motor drive device are analyzed in detail. The control of the forward and backward rotation angle and subdivision coefficient of the stepping motor is realized through the physical design, and the precise control of any rotation angle is realized by calculating the number of step pulses accurately. The stepping angle precision of the driving controller is 0.1125 degrees higher so as to achieve the precise rotation control of the Rubik's Cube.
Keywords: STM32; A4988; stepping motor; Rubik's Cube control system
引言
隨著教育事業(yè)的不斷發(fā)展,要求學(xué)生多元化方向發(fā)展,從而學(xué)生的課程越來越多,所需的書籍也隨之增多。因此,基于書籍的分類,在魔方結(jié)構(gòu)的基礎(chǔ)上,我們推出一款以魔方結(jié)構(gòu)為基礎(chǔ)的智能書架。
以三階魔方為例,魔方的轉(zhuǎn)動可根據(jù)相關(guān)的魔方公式來進(jìn)行,從而可以使特定方格達(dá)到理想位置??刂颇Х睫D(zhuǎn)動的動力來源于步進(jìn)電機(jī),而步進(jìn)電機(jī)的驅(qū)動有A4988模塊給予,其指令由STM32發(fā)出及控制。隨著科技的發(fā)展,步進(jìn)電機(jī)的數(shù)字化控制更為方便,也給項目的應(yīng)用帶來更多的便捷之處。尤其是在步進(jìn)電機(jī)的轉(zhuǎn)動速度、角度的精準(zhǔn)控制,這些是魔方控制結(jié)構(gòu)的基礎(chǔ)。本文主要介紹以STM32F103RCT6 作為A4988 控制器,并以A4988作為微型步進(jìn)電機(jī)驅(qū)動器設(shè)計步進(jìn)電機(jī)控制器模塊, 實現(xiàn)閉環(huán)精確控制微型步進(jìn)電機(jī)的步進(jìn)角度的功能, 從而實現(xiàn)了魔方控制系統(tǒng)的精準(zhǔn)控制。
1 A4988的工作原理及特性
A4988是一款帶轉(zhuǎn)換器和過流保護(hù)的DMOS微步驅(qū)動器,可在全、半、1/4、1/8及1/16步進(jìn)模式時操作雙極步進(jìn)電動機(jī),輸出驅(qū)動性能可達(dá)35V及±2V。A4988包括一個固定關(guān)斷時間電流穩(wěn)壓器,該穩(wěn)壓器可在慢或混合衰減模式下工作。轉(zhuǎn)換器是A4988易于實施的關(guān)鍵。只要在“步進(jìn)”輸入中輸入一個脈沖,即可驅(qū)動電動機(jī)產(chǎn)生微步。無須進(jìn)行相位順序表、高頻率控制行或復(fù)雜的界面編程。A4988界面非常適合復(fù)雜的微處理器不可用或過載的應(yīng)用。
除此之外,相比于其他的步進(jìn)電機(jī)的驅(qū)動模塊
(如:LM358),A4988有著功耗小、用法簡單、體積小巧等優(yōu)點(diǎn)。因此在魔方的控制系統(tǒng)中,選用A4988作為步進(jìn)電機(jī)的驅(qū)動模塊。
1.1 A4988的工作原理
從A4988的使用手冊中查詢到A4988的內(nèi)部結(jié)構(gòu)圖。如圖1所示。
A4988內(nèi)部有一個負(fù)責(zé)微控制器和驅(qū)動電路的信息交互的編譯器。編譯器可以產(chǎn)生DA信號,配合比較器輔助PWM鎖存器修復(fù)衰減信號,并且該編譯器能夠產(chǎn)生邏輯電平控制邏輯控制器,邏輯控制器再配合電流調(diào)節(jié)器和N型MOS管驅(qū)動電壓共同驅(qū)動兩路全橋電路。電路中,ROSC主要更改并修復(fù)衰減模式,接VDD自動修復(fù)衰減,接GND電流衰減設(shè)置為增減電流同時修復(fù)。SENSE1和SENSE2檢測驅(qū)動輸出電壓,實則是實時檢測輸出電流,供電流調(diào)節(jié)器調(diào)節(jié)輸出電流信號,形成閉環(huán)控制。SENSE1和SENSE2管腳連接的電阻相對較小,一般只有零點(diǎn)幾歐姆。
1.2 A4988的邏輯控制
A4988的邏輯控制分為:睡眠、正反轉(zhuǎn)、復(fù)位、使能、細(xì)分模式。具體如下:
(1)對于Sleep引腳:當(dāng)該引腳電平電平置0為睡眠模式,Sleep管腳置1,A4988處于正常工作模式。
(2)DIR引腳:DIR引腳置0或1為正轉(zhuǎn),置1或0為反轉(zhuǎn)。
(3)REST引腳:為復(fù)位模式的引腳,在復(fù)位模式下會產(chǎn)生較大電流。置1為復(fù)位模式。
(4)ENABLE引腳:使能模式控制系統(tǒng)是否開始工作,ENBALBE管腳置0開始工作,置1停止工作。
(5)細(xì)分模式:MS1、MS2、MS3三個引腳可以控制細(xì)分系數(shù),A4988可以細(xì)分至1/16細(xì)分為最小,通過計算角度值可得最小細(xì)分角度為全步進(jìn)角度的1/16。
2 系統(tǒng)總體介紹
驅(qū)動魔方控制系統(tǒng)的動力來源于步進(jìn)電機(jī),而控制步進(jìn)電機(jī)的算法是由STM32來控制。因此,魔方控制系統(tǒng)的核心是STM32單片機(jī)。因為整個魔方控制系統(tǒng)需要控制5個步進(jìn)電機(jī),所需要的功率相對較大,并且所需要的I/O口較多,因此我們選擇功耗較低的STM32F103RCT6單片機(jī)作為主控制器。根據(jù)A4988的工作原理,魔方控制系統(tǒng)的控制電路分為STM32模塊、A4988模塊、步進(jìn)電機(jī)模塊三個部分。由STM32模塊發(fā)出轉(zhuǎn)動命令至A4988步進(jìn)電機(jī)驅(qū)動模塊,進(jìn)而控制步進(jìn)電機(jī)的轉(zhuǎn)動角度及其正反轉(zhuǎn)。
如圖2所示,魔方控制系統(tǒng)由STM32作為主控,發(fā)送相關(guān)的控制步進(jìn)電機(jī)的命令通過串口給A4988模塊。A4988模塊進(jìn)而驅(qū)動步進(jìn)電機(jī),使之按照STM32給予的算法進(jìn)行旋轉(zhuǎn)。然后帶動魔方面的控制,實現(xiàn)魔方的控制。
3 硬件設(shè)計
3.1 控制硬件電路的設(shè)計
(1)STM32 控制器模塊:微型步進(jìn)電機(jī)控制器的主控模塊, 執(zhí)行步進(jìn)電機(jī)控制指令, 主要控制步進(jìn)電機(jī)細(xì)分操作、速度控制、旋轉(zhuǎn)角度控制。如圖3所示。
在STM32單片機(jī)的9、10、11引腳分別與A4988的MS1、MS2、MS3引腳相接,控制其細(xì)分模式;STM32的12引腳于A4988的DIR引腳相接,控制步進(jìn)電機(jī)的正反轉(zhuǎn);STM32的13、14引腳分別與A4988的ENABLE、REST分別控制A4988D的復(fù)位與使能。
(2)A4988驅(qū)動模塊:主要用于驅(qū)動并控制步進(jìn)電機(jī),用來執(zhí)行主控制器的。
(3)命令指示。這個模塊的主電路圖如圖4所示。
3.2 功能設(shè)計
魔方控制系統(tǒng)的步進(jìn)電機(jī)的控制要求如下:
(1)通過控制MS1、MS2、MS3引腳來實現(xiàn)步進(jìn)電機(jī)細(xì)分控制。步進(jìn)角度乘以細(xì)分系數(shù)可以得到細(xì)分的角度值。細(xì)分系數(shù)有STM32計算機(jī)內(nèi)部進(jìn)行設(shè)定,其中全步進(jìn)方式運(yùn)行為初始細(xì)分值1。
(2)步進(jìn)脈沖頻率和細(xì)分系數(shù)是影響步進(jìn)電機(jī)轉(zhuǎn)速的主要原因。通過對步進(jìn)電機(jī)的轉(zhuǎn)速控制實驗的測試可以知道,步進(jìn)脈沖頻率在400Hz時,步進(jìn)電機(jī)不會有失步現(xiàn)象,同時在這個脈沖頻率下且經(jīng)過細(xì)分之后,步進(jìn)電機(jī)平穩(wěn)轉(zhuǎn)動,同時不會出現(xiàn)任何震動和噪聲。從步進(jìn)電機(jī)的旋轉(zhuǎn)速度與細(xì)分系數(shù)和脈沖頻率可以得到以下關(guān)系:當(dāng)脈沖頻率不變時,細(xì)分系數(shù)與步進(jìn)電機(jī)的旋轉(zhuǎn)速度成正相關(guān)關(guān)系;而當(dāng)細(xì)分系數(shù)不變時,脈沖頻率也與步進(jìn)電機(jī)的轉(zhuǎn)速成正相關(guān)的關(guān)系。
(3)A4988驅(qū)動旋轉(zhuǎn)的最小的角度為0.1125°,可以使用這個角度來實現(xiàn)控制步進(jìn)電機(jī)的任意角度的旋轉(zhuǎn)。步進(jìn)電機(jī)的旋轉(zhuǎn)的角度值可以通過脈沖的個數(shù)與細(xì)分角度的乘積來得到。這個脈沖個數(shù)是由STM32的外部中斷的I/O口的PWM個數(shù)得到。
4 軟件設(shè)計
4.1 STM32控制程序設(shè)計
如圖5所示,STM32F103RCT6是ST公司生產(chǎn)的32位微控制器,擁有72MHz的運(yùn)算速度和256KB的存儲容量,內(nèi)置多路定時器, 能產(chǎn)生多路脈寬與頻率可調(diào)的PWM 波,配合A4988步進(jìn)電機(jī)控制模塊,可以輕松精準(zhǔn)的控制步進(jìn)電機(jī),其最大精度可以達(dá)到0.1125°;配有多路串口通信口,方便與各種通信模塊直連;可以使用藍(lán)牙等模塊與手機(jī)進(jìn)行通信進(jìn)而改變配置。
內(nèi)置大容量FLASH方便將魔方數(shù)據(jù)存儲與運(yùn)算。
控制器控制策略:STM32軟件負(fù)責(zé)該模塊的主控制器,首先初始化電機(jī)驅(qū)動需要的相關(guān)寄存器和定時器,之后關(guān)閉PWM輸出,之后初始化內(nèi)部大容量FLASH并進(jìn)行讀取,完成全系統(tǒng)的初始化。之后在內(nèi)部運(yùn)算魔方的相關(guān)算法,更改數(shù)組,并在旋轉(zhuǎn)完過后將改變的數(shù)組寫入FLASH中,以供下次讀取。
4.2 魔方控制系統(tǒng)設(shè)計
魔方系統(tǒng)的結(jié)構(gòu)與旋轉(zhuǎn)方式與正常三階魔方一致:6個中心塊與中心軸連接在一起,但可以順著軸的方向自由的轉(zhuǎn)動,另外還有12個棱塊和8個角塊。以魔方中心為原點(diǎn),垂直于各個面的3條直線為x,y,z軸建立三維坐標(biāo)系,如下圖6所示。
中心魔方系統(tǒng)總共有12種旋轉(zhuǎn)方式,分別是6個面的順時針旋轉(zhuǎn)和逆時針旋轉(zhuǎn),每轉(zhuǎn)動一次,魔方中的6個塊的位置相較于旋轉(zhuǎn)前會發(fā)生變化,而6個中心塊的位置永遠(yuǎn)不會變化。因此系統(tǒng)中主要記錄棱塊與角塊的變化即可。如圖6所示,將20個標(biāo)記塊按照一定規(guī)律標(biāo)記0-20號數(shù)碼,在一次旋轉(zhuǎn)后再按照相同規(guī)律輸出各個塊的位置即可完成對魔方各個塊的位置記錄。只要掌握12種旋轉(zhuǎn)方式的魔方塊的位置變化規(guī)律,即可在每一次旋轉(zhuǎn)后正確記錄魔方塊的變化。變化情況表格如表2。
5 測試
5.1 魔方系統(tǒng)運(yùn)算命令測試
0-19代表所要代表20個調(diào)用塊的編號,21-32代表12種手動變換方式。測試時輸入13即代表調(diào)取13號塊置于頂層,需要y軸正邊順時針旋轉(zhuǎn)2次,分別生成2次位置信息如圖7。
5.2 魔方控制系統(tǒng)實物
如圖8所示,魔方系統(tǒng)的固定部件是通過3D打印出來的,這樣可以更加節(jié)省成本,同時也可以達(dá)到硬度及韌性的要求。將步進(jìn)電機(jī)包裹與3D打印的磨具當(dāng)中,將其固定,其磨具就是魔方控制系統(tǒng)的機(jī)械結(jié)構(gòu),這樣的結(jié)構(gòu)完全仿照與三階魔方的內(nèi)部控制結(jié)構(gòu),具有很好的穩(wěn)定性及操作性。
6 結(jié)束語
魔方控制系統(tǒng)的主要控制器為STM32,以A4988作為中介,通過對A4988進(jìn)行控制,從而控制步進(jìn)電機(jī)的正反轉(zhuǎn)、旋轉(zhuǎn)角度以及轉(zhuǎn)動速度,從而達(dá)到STM32控制步進(jìn)電機(jī)的目的。最終完成了魔方控制系統(tǒng)的動力要求。在每個指定格上,都會有想相應(yīng)的算法,使之達(dá)到相應(yīng)的位置上。實現(xiàn)魔方的精準(zhǔn)控制。
魔方控制系統(tǒng)通過計算機(jī)設(shè)定三階算法,完成了對步進(jìn)電機(jī)的精準(zhǔn)控制,解決了魔方旋轉(zhuǎn)的動力與方向性問題。但此控制系統(tǒng)的程序比較復(fù)雜,魔方塊記錄方式過于繁瑣。
參考文獻(xiàn):
[1]SCHMIDT D J. Holistic handset power management: transisitor
to platform[R]. IWPC, 2010,4.
[2]GARCIA D, HILL J, BARRON D, et al. An RDMA protocol speci fication(Version 1.0)[EB/OL].(2014-09-29).
[3]■ Donald A.Neamen. Electronic Circuit Analysis and Design(Second Endition)■1/4■New York(USA):Mc Graw Hill,June,2004.
[4]Albert C.Leenhouts.Smooth Step Motor Motion With Half Driver.Annual Symposium on IMCSD.1995,24(2).
[5]王凱,韓力立.采用STM32 控制L6470步進(jìn)電機(jī)驅(qū)動器[J].電子世界,2012(18).
[6]曹彪乾,陳遠(yuǎn)增,孫書鷹,等.基于STM32步進(jìn)電機(jī)多細(xì)分控制設(shè)計[J].科學(xué)技術(shù)與工程,2013,13(23):6894-6897.
[7]孟英紅,齊婉玉,段學(xué)鋒.用L297,L298組成步進(jìn)電機(jī)驅(qū)動電路[J].儀器儀表學(xué)報,2003,24(4):573-574.