李俊安 趙春麗 黃澤林 陳昊文 陳芳
摘 要:文章設(shè)計(jì)了一種控制魔方轉(zhuǎn)動(dòng)的控制系統(tǒng)。以三階魔方為主要模型,通過研究三階魔方的內(nèi)部結(jié)構(gòu),以一個(gè)控制轉(zhuǎn)動(dòng)的魔方軸作為定軸,剩余的五個(gè)旋轉(zhuǎn)的可動(dòng)的動(dòng)軸來控制魔方的轉(zhuǎn)動(dòng)。在該控制系統(tǒng)中,主要利用步進(jìn)電機(jī)的精準(zhǔn)角度的轉(zhuǎn)動(dòng)特性來控制魔方的每一個(gè)面的旋轉(zhuǎn),從而達(dá)到魔方控制的效果。步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)主要是通過STM32單片機(jī)的內(nèi)部計(jì)算,精確修改旋轉(zhuǎn)角度、細(xì)分系數(shù)。步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)器的設(shè)計(jì)是以STM32F103RCT6作為主控制器,以A4988步進(jìn)電機(jī)驅(qū)動(dòng)設(shè)備,詳細(xì)分析步進(jìn)電機(jī)驅(qū)動(dòng)設(shè)備的工作原理、各部分接口電路以及控制器設(shè)計(jì)方案。通過實(shí)物設(shè)計(jì)實(shí)現(xiàn)了步進(jìn)電機(jī)正反轉(zhuǎn)任意角度和細(xì)分系數(shù)的控制,并通過精確計(jì)算步進(jìn)脈沖個(gè)數(shù)實(shí)現(xiàn)了任意旋轉(zhuǎn)角度的精確控制,該驅(qū)動(dòng)控制器步進(jìn)角度精度高0.1125度,以至于達(dá)到了魔方的精準(zhǔn)旋轉(zhuǎn)控制。
關(guān)鍵詞:STM32;A4988;步進(jìn)電機(jī);魔方控制系統(tǒng)
中圖分類號(hào):TP242 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):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)動(dòng)可根據(jù)相關(guān)的魔方公式來進(jìn)行,從而可以使特定方格達(dá)到理想位置??刂颇Х睫D(zhuǎn)動(dòng)的動(dòng)力來源于步進(jìn)電機(jī),而步進(jìn)電機(jī)的驅(qū)動(dòng)有A4988模塊給予,其指令由STM32發(fā)出及控制。隨著科技的發(fā)展,步進(jìn)電機(jī)的數(shù)字化控制更為方便,也給項(xiàng)目的應(yīng)用帶來更多的便捷之處。尤其是在步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)速度、角度的精準(zhǔn)控制,這些是魔方控制結(jié)構(gòu)的基礎(chǔ)。本文主要介紹以STM32F103RCT6 作為A4988 控制器,并以A4988作為微型步進(jìn)電機(jī)驅(qū)動(dòng)器設(shè)計(jì)步進(jìn)電機(jī)控制器模塊, 實(shí)現(xiàn)閉環(huán)精確控制微型步進(jìn)電機(jī)的步進(jìn)角度的功能, 從而實(shí)現(xiàn)了魔方控制系統(tǒng)的精準(zhǔn)控制。
1 A4988的工作原理及特性
A4988是一款帶轉(zhuǎn)換器和過流保護(hù)的DMOS微步驅(qū)動(dòng)器,可在全、半、1/4、1/8及1/16步進(jìn)模式時(shí)操作雙極步進(jìn)電動(dòng)機(jī),輸出驅(qū)動(dòng)性能可達(dá)35V及±2V。A4988包括一個(gè)固定關(guān)斷時(shí)間電流穩(wěn)壓器,該穩(wěn)壓器可在慢或混合衰減模式下工作。轉(zhuǎn)換器是A4988易于實(shí)施的關(guān)鍵。只要在“步進(jìn)”輸入中輸入一個(gè)脈沖,即可驅(qū)動(dòng)電動(dòng)機(jī)產(chǎn)生微步。無須進(jìn)行相位順序表、高頻率控制行或復(fù)雜的界面編程。A4988界面非常適合復(fù)雜的微處理器不可用或過載的應(yīng)用。
除此之外,相比于其他的步進(jìn)電機(jī)的驅(qū)動(dòng)模塊
(如:LM358),A4988有著功耗小、用法簡單、體積小巧等優(yōu)點(diǎn)。因此在魔方的控制系統(tǒng)中,選用A4988作為步進(jìn)電機(jī)的驅(qū)動(dòng)模塊。
1.1 A4988的工作原理
從A4988的使用手冊中查詢到A4988的內(nèi)部結(jié)構(gòu)圖。如圖1所示。
A4988內(nèi)部有一個(gè)負(fù)責(zé)微控制器和驅(qū)動(dòng)電路的信息交互的編譯器。編譯器可以產(chǎn)生DA信號(hào),配合比較器輔助PWM鎖存器修復(fù)衰減信號(hào),并且該編譯器能夠產(chǎn)生邏輯電平控制邏輯控制器,邏輯控制器再配合電流調(diào)節(jié)器和N型MOS管驅(qū)動(dòng)電壓共同驅(qū)動(dòng)兩路全橋電路。電路中,ROSC主要更改并修復(fù)衰減模式,接VDD自動(dòng)修復(fù)衰減,接GND電流衰減設(shè)置為增減電流同時(shí)修復(fù)。SENSE1和SENSE2檢測驅(qū)動(dòng)輸出電壓,實(shí)則是實(shí)時(shí)檢測輸出電流,供電流調(diào)節(jié)器調(diào)節(jié)輸出電流信號(hào),形成閉環(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ù)位模式下會(huì)產(chǎn)生較大電流。置1為復(fù)位模式。
(4)ENABLE引腳:使能模式控制系統(tǒng)是否開始工作,ENBALBE管腳置0開始工作,置1停止工作。
(5)細(xì)分模式:MS1、MS2、MS3三個(gè)引腳可以控制細(xì)分系數(shù),A4988可以細(xì)分至1/16細(xì)分為最小,通過計(jì)算角度值可得最小細(xì)分角度為全步進(jìn)角度的1/16。
2 系統(tǒng)總體介紹
驅(qū)動(dòng)魔方控制系統(tǒng)的動(dòng)力來源于步進(jìn)電機(jī),而控制步進(jìn)電機(jī)的算法是由STM32來控制。因此,魔方控制系統(tǒng)的核心是STM32單片機(jī)。因?yàn)檎麄€(gè)魔方控制系統(tǒng)需要控制5個(gè)步進(jìn)電機(jī),所需要的功率相對較大,并且所需要的I/O口較多,因此我們選擇功耗較低的STM32F103RCT6單片機(jī)作為主控制器。根據(jù)A4988的工作原理,魔方控制系統(tǒng)的控制電路分為STM32模塊、A4988模塊、步進(jìn)電機(jī)模塊三個(gè)部分。由STM32模塊發(fā)出轉(zhuǎn)動(dòng)命令至A4988步進(jìn)電機(jī)驅(qū)動(dòng)模塊,進(jìn)而控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)角度及其正反轉(zhuǎn)。
如圖2所示,魔方控制系統(tǒng)由STM32作為主控,發(fā)送相關(guān)的控制步進(jìn)電機(jī)的命令通過串口給A4988模塊。A4988模塊進(jìn)而驅(qū)動(dòng)步進(jìn)電機(jī),使之按照STM32給予的算法進(jìn)行旋轉(zhuǎn)。然后帶動(dòng)魔方面的控制,實(shí)現(xiàn)魔方的控制。
3 硬件設(shè)計(jì)
3.1 控制硬件電路的設(shè)計(jì)
(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ū)動(dòng)模塊:主要用于驅(qū)動(dòng)并控制步進(jìn)電機(jī),用來執(zhí)行主控制器的。
(3)命令指示。這個(gè)模塊的主電路圖如圖4所示。
3.2 功能設(shè)計(jì)
魔方控制系統(tǒng)的步進(jìn)電機(jī)的控制要求如下:
(1)通過控制MS1、MS2、MS3引腳來實(shí)現(xiàn)步進(jìn)電機(jī)細(xì)分控制。步進(jìn)角度乘以細(xì)分系數(shù)可以得到細(xì)分的角度值。細(xì)分系數(shù)有STM32計(jì)算機(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)速控制實(shí)驗(yàn)的測試可以知道,步進(jìn)脈沖頻率在400Hz時(shí),步進(jìn)電機(jī)不會(huì)有失步現(xiàn)象,同時(shí)在這個(gè)脈沖頻率下且經(jīng)過細(xì)分之后,步進(jìn)電機(jī)平穩(wěn)轉(zhuǎn)動(dòng),同時(shí)不會(huì)出現(xiàn)任何震動(dòng)和噪聲。從步進(jìn)電機(jī)的旋轉(zhuǎn)速度與細(xì)分系數(shù)和脈沖頻率可以得到以下關(guān)系:當(dāng)脈沖頻率不變時(shí),細(xì)分系數(shù)與步進(jìn)電機(jī)的旋轉(zhuǎn)速度成正相關(guān)關(guān)系;而當(dāng)細(xì)分系數(shù)不變時(shí),脈沖頻率也與步進(jìn)電機(jī)的轉(zhuǎn)速成正相關(guān)的關(guān)系。
(3)A4988驅(qū)動(dòng)旋轉(zhuǎn)的最小的角度為0.1125°,可以使用這個(gè)角度來實(shí)現(xiàn)控制步進(jìn)電機(jī)的任意角度的旋轉(zhuǎn)。步進(jìn)電機(jī)的旋轉(zhuǎn)的角度值可以通過脈沖的個(gè)數(shù)與細(xì)分角度的乘積來得到。這個(gè)脈沖個(gè)數(shù)是由STM32的外部中斷的I/O口的PWM個(gè)數(shù)得到。
4 軟件設(shè)計(jì)
4.1 STM32控制程序設(shè)計(jì)
如圖5所示,STM32F103RCT6是ST公司生產(chǎn)的32位微控制器,擁有72MHz的運(yùn)算速度和256KB的存儲(chǔ)容量,內(nèi)置多路定時(shí)器, 能產(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ù)存儲(chǔ)與運(yùn)算。
控制器控制策略:STM32軟件負(fù)責(zé)該模塊的主控制器,首先初始化電機(jī)驅(qū)動(dòng)需要的相關(guān)寄存器和定時(shí)器,之后關(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è)計(jì)
魔方系統(tǒng)的結(jié)構(gòu)與旋轉(zhuǎn)方式與正常三階魔方一致:6個(gè)中心塊與中心軸連接在一起,但可以順著軸的方向自由的轉(zhuǎn)動(dòng),另外還有12個(gè)棱塊和8個(gè)角塊。以魔方中心為原點(diǎn),垂直于各個(gè)面的3條直線為x,y,z軸建立三維坐標(biāo)系,如下圖6所示。
中心魔方系統(tǒng)總共有12種旋轉(zhuǎn)方式,分別是6個(gè)面的順時(shí)針旋轉(zhuǎn)和逆時(shí)針旋轉(zhuǎn),每轉(zhuǎn)動(dòng)一次,魔方中的6個(gè)塊的位置相較于旋轉(zhuǎn)前會(huì)發(fā)生變化,而6個(gè)中心塊的位置永遠(yuǎn)不會(huì)變化。因此系統(tǒng)中主要記錄棱塊與角塊的變化即可。如圖6所示,將20個(gè)標(biāo)記塊按照一定規(guī)律標(biāo)記0-20號(hào)數(shù)碼,在一次旋轉(zhuǎn)后再按照相同規(guī)律輸出各個(gè)塊的位置即可完成對魔方各個(gè)塊的位置記錄。只要掌握12種旋轉(zhuǎn)方式的魔方塊的位置變化規(guī)律,即可在每一次旋轉(zhuǎn)后正確記錄魔方塊的變化。變化情況表格如表2。
5 測試
5.1 魔方系統(tǒng)運(yùn)算命令測試
0-19代表所要代表20個(gè)調(diào)用塊的編號(hào),21-32代表12種手動(dòng)變換方式。測試時(shí)輸入13即代表調(diào)取13號(hào)塊置于頂層,需要y軸正邊順時(shí)針旋轉(zhuǎn)2次,分別生成2次位置信息如圖7。
5.2 魔方控制系統(tǒng)實(shí)物
如圖8所示,魔方系統(tǒng)的固定部件是通過3D打印出來的,這樣可以更加節(jié)省成本,同時(shí)也可以達(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òng)速度,從而達(dá)到STM32控制步進(jìn)電機(jī)的目的。最終完成了魔方控制系統(tǒng)的動(dòng)力要求。在每個(gè)指定格上,都會(huì)有想相應(yīng)的算法,使之達(dá)到相應(yīng)的位置上。實(shí)現(xiàn)魔方的精準(zhǔn)控制。
魔方控制系統(tǒng)通過計(jì)算機(jī)設(shè)定三階算法,完成了對步進(jìn)電機(jī)的精準(zhǔn)控制,解決了魔方旋轉(zhuǎn)的動(dòng)力與方向性問題。但此控制系統(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ū)動(dòng)器[J].電子世界,2012(18).
[6]曹彪乾,陳遠(yuǎn)增,孫書鷹,等.基于STM32步進(jìn)電機(jī)多細(xì)分控制設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2013,13(23):6894-6897.
[7]孟英紅,齊婉玉,段學(xué)鋒.用L297,L298組成步進(jìn)電機(jī)驅(qū)動(dòng)電路[J].儀器儀表學(xué)報(bào),2003,24(4):573-574.