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