劉 凱,傅惠南
(廣東工業(yè)大學(xué) 機電工程學(xué)院,廣東 廣州 510006)
彈性浮動研磨是針對傳統(tǒng)單晶金剛石表面研磨提出的一種先進加工方法,在彈性浮動研磨系統(tǒng)中,步進電機的微進給平穩(wěn)控制往往直接關(guān)系到金剛石表面的加工質(zhì)量,而為了方便步進電機的調(diào)試和控制,一般選擇以臺式PC機或筆記本電腦作為人機交互的上位機。在實際的金剛石表面研磨的加工現(xiàn)場,往往需要考慮到彈性浮動研磨系統(tǒng)設(shè)備的體積、安裝的模塊化、調(diào)試的便捷性、控制的可視化。針對上述問題,提出了對步進電機進行細分控制以提高其微進給的平穩(wěn)性,同時以嵌入式LCD觸摸屏作為步進電機微進給控制的操控界面,取代PC機作為上位機對設(shè)備進行人機交互操作,從而實現(xiàn)彈性浮動研磨過程的平穩(wěn)控制。
本文主要研究了如何對步進電機進行細分以達到步進電機的平穩(wěn)控制,同時在以Samsung S3C2440處理器為核心的ARM開發(fā)板上,實現(xiàn)了在觸摸屏界面上對步進電機的微進給控制。
步進電機又稱脈沖電機,與普通電機的相同之處是基于最基本的電磁原理,區(qū)別在于它的驅(qū)動控制:每向步進電機輸入一個電脈沖信號,電機轉(zhuǎn)子對應(yīng)地轉(zhuǎn)動一定角度的角位移(或直線位移);而且步進電機的轉(zhuǎn)速取決于脈沖頻率,其角速度與脈沖頻率成正比,在時間上與脈沖同步[1]?;诖朔N特性,步進電機可以實現(xiàn)數(shù)字化控制,因此特別適合利用計算機進行驅(qū)動控制。
步進電機由于自身制造工藝的限制,轉(zhuǎn)子齒數(shù)、運行拍數(shù)都有限,而步距角由轉(zhuǎn)子齒數(shù)和拍數(shù)決定,這意味著步進電機的步距角一般比較大且固定,這就帶來一個問題:在同一裝置系統(tǒng)中,如根據(jù)不同的工況,需要不同的控制精度,即需要不同的步距角,就不得不更換另一型號的步進電機。這就造成生產(chǎn)成本的上升和生產(chǎn)效率的下降。同時步進電機的分辨率不高,低頻運行時,電機容易產(chǎn)生振動,而且噪聲比其他微電機都高,這使得裝置容易損壞,這些都限制了步進電機的應(yīng)用和有效的控制。
基于步進電機的上述缺點,20世紀(jì)70年代,美國學(xué)者T.R.Fredriksen首次在美國增量運動控制系統(tǒng)及器件年會上提出了一種對步進電機步距角進行細分的控制方法[2]。幾十年來細分驅(qū)動得到較快的發(fā)展,使得步進電機的相數(shù)和步距角都不受限制,同時對步進電機的控制也更加方便。
基于步進電機驅(qū)動原理可知,每當(dāng)向繞組輸入一個脈沖式相電流時,步進電機轉(zhuǎn)子就轉(zhuǎn)動一個設(shè)定的步距角;而當(dāng)向繞組輸入的相電流分別按正弦和余弦的輪廓呈階梯式變化(如圖1所示)時,轉(zhuǎn)子在每個相電流脈沖變量下轉(zhuǎn)過一個微小步距角,則整個步距就分成若干微步距角,而更小的步距角將會使步進電機的微進給運行更加平穩(wěn)。
目前,步進電機細分驅(qū)動主要采用脈沖寬度調(diào)制驅(qū)動、斬波恒流驅(qū)動、電流矢量恒幅均勻旋轉(zhuǎn)驅(qū)動。而隨著計算機技術(shù)的發(fā)展,會給步進電機細分驅(qū)動控制技術(shù)的發(fā)展帶來新的思路。
隨著近些年以ARM芯片為代表的嵌入式設(shè)備的發(fā)展,使得步進電機的細分驅(qū)動控制朝著更加智能化、可視化、模塊化的方向發(fā)展。針對這一發(fā)展趨勢,本文提出了一種基于ARM的觸摸屏的細分驅(qū)動控制系統(tǒng)方案。控制系統(tǒng)主要包括硬件系統(tǒng)和軟件系統(tǒng)。硬件系統(tǒng)包括以ARM9處理器為核心的開發(fā)板以及LCD觸摸屏;軟件系統(tǒng)包括 Linux操作系統(tǒng)[3,4]、文件系統(tǒng)、步進電機驅(qū)動程序、觸摸屏驅(qū)動程序。
圖1 繞組輸入正弦、余弦輪廓相電流
因為市面上已經(jīng)有性能穩(wěn)定和功能強大的嵌入式ARM開發(fā)板,因此,在硬件方面,可以直接使用現(xiàn)成的產(chǎn)品,這樣可以節(jié)約大量的硬件設(shè)計和調(diào)試時間。
(1)首先在PC機Windows操作系統(tǒng)平臺下安裝虛擬機軟件Vmware8.0,然后在Vmware的基礎(chǔ)上安裝桌面版本的Linux操作系統(tǒng),這里我們安裝的是Ubantu12.0.4版本的操作系統(tǒng)。
(2)建立TFTP服務(wù)器,用于將在PC上生成的文件下載到開發(fā)板上。
(3)建立NFS服務(wù)器,用于將開發(fā)板所用到的根文件系統(tǒng)掛載到主機目錄下,從而方便程序的調(diào)試。
(1)建立引導(dǎo)安裝程序bootloader??梢詮木W(wǎng)上下載u-boot壓縮包,根據(jù)需要進行裁剪,然后下載到開發(fā)板。
(2)Linux內(nèi)核裁剪和移植。在網(wǎng)上下載2.6.30版本的Linux內(nèi)核壓縮包,在虛擬機Linux操作系統(tǒng)平臺進行解壓裁剪,然后生成開發(fā)板所需的zImage內(nèi)核,通過TFTP下載到開發(fā)板中。
(3)建立根文件系統(tǒng)。從網(wǎng)上下載busybox壓縮包,利用busybox軟件生成一個最基本的根文件系統(tǒng),然后利用mkcranfs genromfs等工具生成燒寫映像文件。
(4)步進電機驅(qū)動程序開發(fā)。步進電機驅(qū)動程序是溝通應(yīng)用程序與底層步進電機硬件設(shè)備的橋梁,在驅(qū)動程序中,首先通過static int stepmotor_init(void)函數(shù)實現(xiàn)設(shè)備號的申請和注冊;然后初始化file_operations結(jié)構(gòu)體,file_operations結(jié)構(gòu)體成員函數(shù)open()、close()、read)()、write()執(zhí)行對設(shè)備文件的打開、關(guān)閉、讀寫操作。而對于步進電機的操作命令由ioctl()函數(shù)實現(xiàn),ioctl()函數(shù)原型如下:
int(*ioctl)(struct inode*inode,struct file*filp,unsigned int cmd,unsigned long arg).
其中,inode和filp指針對應(yīng)應(yīng)用程序的文件描述符fd,cmd代表應(yīng)用程序傳遞給驅(qū)動程序的命令參數(shù),arg為可選參數(shù)。
步進電機的操作完成后,通過static void stepmotor_eixt(void)函數(shù)對步進電機驅(qū)動卸載,實現(xiàn)設(shè)備的注銷和設(shè)備號資源的釋放。
幀緩沖是Linux操作系統(tǒng)為LCD觸摸屏顯示提供的接口,用來將顯示緩沖區(qū)抽象,屏蔽底層硬件差異[5]。這樣使軟件系統(tǒng)的設(shè)計者不用過多考慮底層硬件細節(jié),從而將精力放在對觸摸屏的驅(qū)動部分。
幀緩沖設(shè)備驅(qū)動的程序結(jié)構(gòu)如圖2所示。幀緩沖設(shè)備最關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)體是fb_info結(jié)構(gòu)體,此結(jié)構(gòu)體包括關(guān)于幀緩沖設(shè)備屬性和操作的完整描述。fb_info結(jié)構(gòu)體成員變量fb_fops是指向底層操作的函數(shù)指針,通過這些成員函數(shù)對LCD觸摸屏進行讀寫和I/O控制等操作。在幀緩沖設(shè)備的模塊加載函數(shù)中,完成申請fb_info結(jié)構(gòu)體的內(nèi)存空間和初始化fb_info結(jié)構(gòu)體的屏幕參數(shù),即填充fb_info結(jié)構(gòu)體成員fb_var_screeninfo和fb_fix_screeninfo;根據(jù)具體LCD屏幕的特點,完成LCD控制器硬件的初始化;申請幀緩沖設(shè)備的顯示緩沖區(qū)空間,最后注冊幀緩沖設(shè)備。在幀緩沖設(shè)備驅(qū)動模塊函數(shù)中,完成fb_info結(jié)構(gòu)體內(nèi)存的釋放,關(guān)閉LCD,釋放顯示緩沖區(qū)以及注銷緩沖區(qū)設(shè)備。
圖2 幀緩沖設(shè)備驅(qū)動的程序結(jié)構(gòu)
本文提出了基于ARM的觸摸屏界面控制步進電機的方法,通過觸摸屏選擇步進電機的細分控制,以此根據(jù)不同工況對步進電機采取不同的細分,從而達到對步進電機的穩(wěn)定控制,同時將采集到的數(shù)據(jù)實時反映到觸摸屏上,并在觸摸屏上對數(shù)據(jù)進行實時處理。從而達到了對金剛石進行數(shù)字化、智能化加工的目的。
[1] 王宗培.步進電動機的發(fā)展及建議[J].微機電,2004,37(4):47-49.
[2] 史敬灼,王宗培.步進電動機驅(qū)動控制技術(shù)的發(fā)展[J].微特電機,2007,35(7):50-54.
[3] 宋寶華.Linux設(shè)備驅(qū)動開發(fā)詳解[M].北京:人民教育出版社,2005.
[4] 科波特.Linux設(shè)備驅(qū)動程序[M].魏永明,耿岳,鐘書毅,譯.北京:中國電力出版社,2009.
[5] 蘇哲欣,劉鴻飛,薛曉.基于嵌入式Linux的LCD的驅(qū)動分析與實現(xiàn)[J].工業(yè)控制計算機,2009,22(2):29-30.