陳茂添,王文華,吳偉娜
(1.廣東海洋大學(xué)電子與信息工程學(xué)院,廣東湛江 524088;2.廣東海洋大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院,廣東湛江 524088)
步進(jìn)電機(jī)是按步驟前進(jìn)的,電機(jī)旋轉(zhuǎn)一周分為n步進(jìn)行,n取決于應(yīng)用場(chǎng)合的旋轉(zhuǎn)精度要求以及步進(jìn)電機(jī)的性能,完成一周的動(dòng)作后再次進(jìn)行循環(huán),從而將數(shù)字式脈沖信號(hào)通過(guò)步進(jìn)電機(jī)精確地帶動(dòng)執(zhí)行機(jī)構(gòu),實(shí)現(xiàn)設(shè)定的角位移或者是線位移[1]。在步進(jìn)電機(jī)的驅(qū)動(dòng)下,執(zhí)行機(jī)構(gòu)能夠快速且較精確地定位在所需要的位置,實(shí)現(xiàn)執(zhí)行機(jī)構(gòu)較高精度的動(dòng)作,同時(shí)又可以輕松實(shí)現(xiàn)正轉(zhuǎn)/前進(jìn)、反轉(zhuǎn)/后退,或者需要特定的角度、線位移量,并且切換平滑[2],所以步進(jìn)電機(jī)在機(jī)器人的驅(qū)動(dòng)、現(xiàn)代測(cè)量、機(jī)械加工、激光加工和自動(dòng)焊接等領(lǐng)域的自動(dòng)控制系統(tǒng)中得到了廣泛的應(yīng)用[3-5]。驅(qū)動(dòng)步進(jìn)電機(jī)執(zhí)行動(dòng)作時(shí),可以通過(guò)減小步進(jìn)電機(jī)的步進(jìn)量提高電機(jī)和執(zhí)行機(jī)構(gòu)運(yùn)行的平穩(wěn)性,降低噪聲,從而改善控制系統(tǒng)的動(dòng)態(tài)性能和靈活性等,滿足自動(dòng)控制系統(tǒng)的高精度定位、精確的位移量、高精度測(cè)量,以及機(jī)械加工等方面的精細(xì)加工要求[6-7]。
本文采用步進(jìn)電機(jī)模塊、51單片機(jī)模塊、按鍵控制電路和ULN2003驅(qū)動(dòng)模塊等硬件,結(jié)合軟件開(kāi)發(fā),實(shí)現(xiàn)步進(jìn)電機(jī)正轉(zhuǎn)、反轉(zhuǎn)、暫停和給定角度的精確旋轉(zhuǎn)和控制,精確帶動(dòng)步進(jìn)電機(jī)的執(zhí)行機(jī)構(gòu),進(jìn)而實(shí)現(xiàn)精確測(cè)量。
為了有較高的性能和功能的通用性,采用AT89C51單片機(jī)作為智能控制的核心處理器。因?yàn)樵撎幚砥魇?位的,所需電壓低,并且其存儲(chǔ)器提供了4 k的字節(jié),同時(shí)又兼容了51單片機(jī)的各項(xiàng)功能。結(jié)合硬件和軟件,實(shí)現(xiàn)設(shè)定的步進(jìn)電機(jī)動(dòng)作,使得執(zhí)行機(jī)構(gòu)帶動(dòng)待測(cè)部件的正轉(zhuǎn)、反轉(zhuǎn)、以及設(shè)定角度的旋轉(zhuǎn)、暫停。本文設(shè)計(jì)了具有步進(jìn)電機(jī)模塊、51單片機(jī)模塊、ULN2003驅(qū)動(dòng)模塊、電源模塊和鍵盤(pán)控制模塊等5個(gè)部分,其中的鍵盤(pán)控制電路模塊用于在需要的時(shí)候采取人為手動(dòng)控制,實(shí)現(xiàn)執(zhí)行機(jī)構(gòu)帶動(dòng)待測(cè)部件進(jìn)行正轉(zhuǎn)、反轉(zhuǎn)、旋轉(zhuǎn)45°、旋轉(zhuǎn)90°和暫停等功能。硬件系統(tǒng)如圖1所示。
圖1 硬件系統(tǒng)模塊圖
5 V的工作電壓條件下,ULN2003驅(qū)動(dòng)器可以直接連接一些基本電路,如TTL和CMOS等;ULN2003在單片機(jī)驅(qū)動(dòng)的情況下,通常選擇2 kΩ的上拉電阻,而對(duì)于ULN2003驅(qū)動(dòng)器連接的電路可以接電源,也可以采用懸空的方式。基于ULN2003具有帶負(fù)載能力強(qiáng)等特點(diǎn),經(jīng)常被用于控制電路中用于智能控制或自動(dòng)控制。
步進(jìn)電機(jī)將接收到的一系列脈沖數(shù)字信號(hào)轉(zhuǎn)換為執(zhí)行機(jī)構(gòu)旋轉(zhuǎn)或者直行的角位移或線位移信號(hào),達(dá)到執(zhí)行機(jī)構(gòu)精確運(yùn)動(dòng)的目的。
本文選用DC-5 V的永磁式步進(jìn)電機(jī)作為測(cè)量部件動(dòng)作執(zhí)行機(jī)構(gòu)的驅(qū)動(dòng)源。當(dāng)ULN2003驅(qū)動(dòng)器輸出的脈沖式電流加載到步進(jìn)電機(jī)時(shí),磁場(chǎng)將在定子繞組上產(chǎn)生,繼而該磁場(chǎng)帶動(dòng)DC-5 V永磁式步進(jìn)電機(jī)的轉(zhuǎn)子旋轉(zhuǎn)預(yù)定的角度,該角度與脈沖數(shù)相對(duì)應(yīng)。因此,步進(jìn)電機(jī)產(chǎn)生的矢量磁場(chǎng)與轉(zhuǎn)子能夠保持同步旋轉(zhuǎn),使他們的方向始終相同,即本文采用的DC-5 V永磁式步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的原理。當(dāng)步進(jìn)電機(jī)接收到一個(gè)數(shù)字式電流脈沖的時(shí)候,它就會(huì)轉(zhuǎn)動(dòng)一個(gè)角度,其轉(zhuǎn)速與接收到的數(shù)字脈沖頻率成正比;如果要加快步進(jìn)電機(jī)的速度,則通過(guò)軟件增加單位時(shí)間內(nèi)輸入的脈沖頻率就可以實(shí)現(xiàn),所以待測(cè)部件速度的調(diào)節(jié)關(guān)鍵在于軟件代碼的編寫(xiě)。而步進(jìn)電機(jī)帶動(dòng)待測(cè)部件的轉(zhuǎn)動(dòng)角度與ULN2003驅(qū)動(dòng)器輸出的脈沖數(shù)量有關(guān),它們之間的關(guān)系是正比關(guān)系。步進(jìn)電機(jī)正轉(zhuǎn)的問(wèn)題解決了,其反轉(zhuǎn)也就容易了,改變繞組的接通數(shù)字式脈沖電流的順序即可。本文就是利用步進(jìn)電機(jī)的這個(gè)控制原理,通過(guò)編寫(xiě)代碼對(duì)步進(jìn)電機(jī)輸入不同的脈沖數(shù)量、脈沖頻率實(shí)現(xiàn)設(shè)定角度的轉(zhuǎn)動(dòng)和轉(zhuǎn)速,通過(guò)硬件系統(tǒng)的鍵盤(pán)模塊控制通電順序?qū)崿F(xiàn)電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)等功能。
鍵盤(pán)控制電路如圖1(b)所示,它是整個(gè)智能步進(jìn)電機(jī)系統(tǒng)中的關(guān)鍵部分,在需要的時(shí)候可以通過(guò)人工干預(yù)單片機(jī)來(lái)控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)性質(zhì),其實(shí)質(zhì)是多個(gè)開(kāi)關(guān)分別控制步進(jìn)電機(jī)不同的功能。由于開(kāi)關(guān)的斷開(kāi)和閉合都是通過(guò)按下或松開(kāi)開(kāi)關(guān)實(shí)現(xiàn)的,因此這個(gè)過(guò)程都會(huì)產(chǎn)生短暫的抖動(dòng),抖動(dòng)的幅度在10 ms以內(nèi)。開(kāi)關(guān)的接通與否將導(dǎo)致鍵盤(pán)電路的輸出電壓呈現(xiàn)高低變化,因此,可以通過(guò)檢測(cè)輸出電壓的高低來(lái)判斷開(kāi)關(guān)是否接通。
根據(jù)本次設(shè)計(jì)與實(shí)現(xiàn)的實(shí)際需求,本文需要用到步進(jìn)電機(jī)的功能有正轉(zhuǎn)、反轉(zhuǎn)、45°旋轉(zhuǎn)、90°旋轉(zhuǎn)和暫停。正轉(zhuǎn)和反轉(zhuǎn)功能的實(shí)現(xiàn),是通過(guò)改變電機(jī)的導(dǎo)通相序來(lái)改變步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)方向,而想要改變步進(jìn)電機(jī)的導(dǎo)通相序,只要把AT89C51單片機(jī)P0口的電平輪流置高就行了,這時(shí)候電機(jī)會(huì)順時(shí)針旋轉(zhuǎn),每執(zhí)行完一次這個(gè)順序,電機(jī)順時(shí)針旋轉(zhuǎn)會(huì)旋轉(zhuǎn)0.72°。如果需要步進(jìn)電機(jī)順時(shí)針旋轉(zhuǎn),則電機(jī)的通電順序設(shè)置為D-C-B-A,P0口先將0x08的置為高電平,其次將0x04置為高電平,然后0x02,0x01依次為高電平,如果需要步進(jìn)電機(jī)逆時(shí)針旋轉(zhuǎn),則電機(jī)的通電順序?yàn)锳-B-C-D,P0口電平置高順序與順時(shí)針時(shí)相反,每執(zhí)行完一次這個(gè)順序,電機(jī)會(huì)逆時(shí)針旋轉(zhuǎn)0.72°。如果電機(jī)暫停,則P0口全部置0就行了。
本文的軟件系統(tǒng)采用C語(yǔ)言編寫(xiě),使用模塊化思想分別設(shè)計(jì)延時(shí)函數(shù)和中斷函數(shù)等,根據(jù)所需的功能劃分好每個(gè)模塊,一個(gè)模塊由一個(gè)函數(shù)完成,一個(gè)模塊實(shí)現(xiàn)一個(gè)功能,然后運(yùn)用面向?qū)ο蟮姆椒ǜ鶕?jù)所需功能來(lái)調(diào)用每個(gè)模塊,最后將各個(gè)模塊聯(lián)合起來(lái),構(gòu)成一個(gè)系統(tǒng)??紤]到程序的易讀性,選用Keil作為程序編輯代碼的平臺(tái),Keil平臺(tái)如圖2所示。
圖2 Keil軟件平臺(tái)
為了防止誤觸,確保按鍵接收到的就是一次按鍵,對(duì)電機(jī)系統(tǒng)進(jìn)行消抖操作是必須的??梢栽O(shè)計(jì)相應(yīng)的硬件電路對(duì)按鍵進(jìn)行消抖從而防止誤觸,但是硬件消抖的電路設(shè)計(jì)比較復(fù)雜,而且效果也不是很理想;另外一種消抖的辦法是用軟件來(lái)實(shí)現(xiàn),編寫(xiě)適當(dāng)?shù)难訒r(shí)(抖動(dòng)幅度以內(nèi)的延時(shí)時(shí)間即可)并執(zhí)行,通過(guò)執(zhí)行延時(shí)函數(shù)之后再判斷開(kāi)關(guān)是否處于接通狀態(tài),如果是,則接收到信號(hào)就是有一個(gè)按鍵動(dòng)作,這樣就消抖成功了。
本文電機(jī)系統(tǒng)的設(shè)計(jì)和開(kāi)發(fā)是為了實(shí)現(xiàn)透明材料折射率的精確和自動(dòng)測(cè)量,通過(guò)電機(jī)系統(tǒng)驅(qū)動(dòng)執(zhí)行機(jī)構(gòu)帶動(dòng)被測(cè)量的部件執(zhí)行順時(shí)針轉(zhuǎn)旋轉(zhuǎn)的動(dòng)作,或者是逆時(shí)針旋轉(zhuǎn),45°旋轉(zhuǎn)、90°旋轉(zhuǎn)和暫停等。主程序的設(shè)置是在選擇正轉(zhuǎn)的條件下,電機(jī)有旋轉(zhuǎn)45°和旋轉(zhuǎn)90°這兩種選擇;選擇反轉(zhuǎn)的條件下,電機(jī)也有旋轉(zhuǎn)45°和旋轉(zhuǎn)90°這兩種選擇。步進(jìn)電機(jī)控制系統(tǒng)主程序的流程圖如圖3所示。
圖3 步進(jìn)電機(jī)控制系統(tǒng)主程序流程圖
電機(jī)的順時(shí)針旋轉(zhuǎn)和逆時(shí)針旋轉(zhuǎn)功能是通過(guò)改變電機(jī)的導(dǎo)通相序來(lái)實(shí)現(xiàn)的,而改變P0口電平置高的順序就可以改變電機(jī)的導(dǎo)通相序。順時(shí)針旋轉(zhuǎn)功能如圖4所示,逆時(shí)針旋轉(zhuǎn)功能同理。
圖4 電機(jī)順時(shí)針旋轉(zhuǎn)
本文所用的DC-5 V步進(jìn)電機(jī)是一種四相五線的步進(jìn)電機(jī),其步進(jìn)角為0.72°,也就是說(shuō)電機(jī)每把這四相執(zhí)行完一次,步進(jìn)電機(jī)就轉(zhuǎn)動(dòng)0.72°,想要電機(jī)旋轉(zhuǎn)90°或者45°,則通過(guò)軟件控制電機(jī)把這四相執(zhí)行對(duì)應(yīng)的次數(shù)即可,由設(shè)定的需要旋轉(zhuǎn)的角度除以0.72°。電機(jī)旋轉(zhuǎn)90°的代碼如圖5所示。暫停功能可以采用單片機(jī)的中斷技術(shù),也可以使用較為簡(jiǎn)單的的暫停功能,即將P0口的電平置0,沒(méi)有高電平驅(qū)動(dòng),則電機(jī)就不會(huì)旋轉(zhuǎn)。
圖5 電機(jī)旋轉(zhuǎn)角度
本文步進(jìn)電機(jī)系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)目的是帶動(dòng)轉(zhuǎn)盤(pán)轉(zhuǎn)動(dòng)從而實(shí)現(xiàn)待測(cè)量的測(cè)量,需要在轉(zhuǎn)動(dòng)一個(gè)精確的角度后停下,如果按照步進(jìn)電機(jī)原本的速度來(lái)驅(qū)動(dòng)電機(jī),則電機(jī)旋轉(zhuǎn)的非???,當(dāng)步進(jìn)電機(jī)帶動(dòng)被測(cè)部件達(dá)到某一個(gè)角度后,慣性將會(huì)導(dǎo)致執(zhí)行機(jī)構(gòu)帶動(dòng)被測(cè)部件繼續(xù)旋轉(zhuǎn),這樣會(huì)導(dǎo)致待測(cè)量的測(cè)量造成很大的誤差。解決方法是給各相通電的時(shí)候添加一個(gè)延時(shí)函數(shù),這樣電機(jī)轉(zhuǎn)動(dòng)的速度就會(huì)慢下來(lái)??刂齐姍C(jī)轉(zhuǎn)速的方法如圖6所示。
本文將設(shè)計(jì)和開(kāi)發(fā)的步進(jìn)電機(jī)系統(tǒng)應(yīng)用于透明材料折射率的自動(dòng)精確測(cè)量[8],步進(jìn)電機(jī)在系統(tǒng)軟硬件的控制下帶動(dòng)執(zhí)行機(jī)構(gòu)旋轉(zhuǎn),使得待測(cè)材料隨之精確地順時(shí)針或逆時(shí)針旋轉(zhuǎn)到對(duì)應(yīng)位置,此時(shí)激光束以設(shè)定的角度入射和出射,從而達(dá)到折射率精確測(cè)量的結(jié)果,最終測(cè)得玻璃折射率的不確定度為0.001。
圖6 電機(jī)轉(zhuǎn)速的控制
步進(jìn)電機(jī)廣泛應(yīng)用于驅(qū)動(dòng)執(zhí)行機(jī)構(gòu)按指定的方向和設(shè)定的角度轉(zhuǎn)動(dòng)或者完成既定的線位移,在機(jī)械加工、激光加工、自動(dòng)測(cè)量、機(jī)器人的驅(qū)動(dòng)等智能控制方面的應(yīng)用潛力很好。本文通過(guò)單片機(jī)、電源模塊、ULN2003驅(qū)動(dòng)器集成芯片結(jié)合的方法,運(yùn)用C語(yǔ)言做軟件開(kāi)發(fā),實(shí)現(xiàn)步進(jìn)電機(jī)通過(guò)執(zhí)行機(jī)構(gòu)帶動(dòng)被測(cè)部件順時(shí)針旋轉(zhuǎn)、逆時(shí)針旋轉(zhuǎn)、暫停、以及設(shè)定角度的精確旋轉(zhuǎn),確保所需要的角度能夠做到精確位置的控制,實(shí)現(xiàn)透明材料折射率的自動(dòng)精確測(cè)量,能夠很大程度上提高實(shí)驗(yàn)的測(cè)量精度,減少了人為旋轉(zhuǎn)所造成的實(shí)驗(yàn)誤差。