王 瀟 張寶寧
(中國(guó)礦業(yè)大學(xué)(北京) 北京 100083)
步進(jìn)電機(jī)是一種通過電脈沖信號(hào)來控制的常用的機(jī)電元件,被廣泛應(yīng)用于國(guó)民生活、生產(chǎn)的各個(gè)領(lǐng)域。然而,常見的步進(jìn)電機(jī)多數(shù)采用固定的脈沖數(shù)量和脈沖頻率來進(jìn)行控制,難以達(dá)到較高的控制精度。因此目前最新研究采用細(xì)分驅(qū)動(dòng)技術(shù)來改善步進(jìn)電機(jī)的精準(zhǔn)控制和平穩(wěn)運(yùn)磚。
本文以STM32F4單片機(jī)為主控制器,采用2TB6600步進(jìn)電機(jī)專用驅(qū)動(dòng)器為驅(qū)動(dòng)模塊,利用USB口實(shí)現(xiàn)單片機(jī)與PC上位機(jī)的數(shù)據(jù)通信,根據(jù)PWM調(diào)速方法完成對(duì)步進(jìn)電機(jī)進(jìn)行驅(qū)動(dòng)控制。并通過角度傳感器檢測(cè)步進(jìn)電機(jī)的步距角,實(shí)現(xiàn)對(duì)細(xì)分控制效果的驗(yàn)證測(cè)試。
步進(jìn)電機(jī)細(xì)分控制系統(tǒng)基本工作原理為:首先,PC上位機(jī)以編程的方式預(yù)先設(shè)定所要輸出的脈沖數(shù)量、脈沖頻率等初始化信息,并將程序移植進(jìn)入STM32F4單片機(jī)中。其次,操作者通過按鍵控制步進(jìn)電機(jī)的運(yùn)行狀態(tài),控制器(控制信號(hào)處理模塊)收到按鍵信號(hào)后將按鍵信號(hào)轉(zhuǎn)換為相應(yīng)的運(yùn)行狀態(tài)控制信號(hào)輸送到電路,驅(qū)動(dòng)電路根據(jù)控制信號(hào)輸出相應(yīng)的脈沖電壓信號(hào)給步進(jìn)電機(jī),使步進(jìn)電機(jī)運(yùn)行起來。最后,控制信號(hào)處理模塊還將對(duì)應(yīng)的運(yùn)行狀態(tài)信號(hào)通過通信接口反饋到PC上位機(jī)上,LED點(diǎn)亮則對(duì)應(yīng)步進(jìn)電機(jī)處于運(yùn)行狀態(tài)。
(一)細(xì)分驅(qū)動(dòng)技術(shù)原理。步進(jìn)電機(jī)在整步驅(qū)動(dòng)時(shí),每接收到一個(gè)脈沖電機(jī)便會(huì)轉(zhuǎn)動(dòng)一個(gè)步距角,其步距角的大小由電機(jī)自身的結(jié)構(gòu)確定,是一個(gè)固定不變的值。假設(shè)步進(jìn)電機(jī)的步距角為θs,即每接收到一個(gè)脈沖,定子便會(huì)旋轉(zhuǎn)θs個(gè)角度,如果采用細(xì)分技術(shù)后,電機(jī)的步距角應(yīng)該是θs/n,n為細(xì)分?jǐn)?shù)。顯然,細(xì)分技術(shù)的運(yùn)用能有效減小步進(jìn)電機(jī)的步距角實(shí)現(xiàn)對(duì)轉(zhuǎn)子位置的精確控制。
(二)細(xì)分驅(qū)動(dòng)的實(shí)現(xiàn)。脈沖寬度調(diào)制(PWM),簡(jiǎn)稱脈寬調(diào)制,是利用微處理器的數(shù)字輸出來對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)。PWM波的產(chǎn)生可以通過時(shí)鐘頻率、自動(dòng)重裝值等參數(shù)進(jìn)行設(shè)置,從而調(diào)節(jié)PWM波的占空比和輸出頻率,即對(duì)脈沖寬度的控制。
本文設(shè)計(jì)的步進(jìn)電機(jī)細(xì)分控制系統(tǒng)的硬件系統(tǒng)主要包括:?jiǎn)纹瑱C(jī)模塊、串口通信模塊、按鍵輸入模塊和電機(jī)驅(qū)動(dòng)模塊四大部分。
(一)單片機(jī)模塊。本文的單片機(jī)微控模塊選用ST公司在2011年推出的基于Cortex M4內(nèi)核STM32F4系列產(chǎn)品。
(二)電機(jī)驅(qū)動(dòng)模塊。電機(jī)驅(qū)動(dòng)模塊選用TB6600步進(jìn)電機(jī)專用驅(qū)動(dòng)器,這是一款專業(yè)的兩相步進(jìn)電機(jī)驅(qū)動(dòng),具有噪音小,震動(dòng)小,運(yùn)行平穩(wěn)的特點(diǎn)。本文選用57BYG250B兩相步進(jìn)電機(jī)作為此次實(shí)驗(yàn)電機(jī)。
(三)按鍵控制模塊。按鍵控制模塊,可通過按鍵來控制信號(hào)處理模塊使之接收到高低電平后將其轉(zhuǎn)換為對(duì)應(yīng)的運(yùn)行狀態(tài)控制信號(hào)并輸送到電路,并通過檢測(cè)輸入信號(hào)來判斷是否有按鍵被按下。
(四)串口通信模塊。串口通信模塊中將單片機(jī)的PA9和PA10設(shè)置為復(fù)用功能,通過跳線帽將它們連接到CH340電路,這樣就可以將TTL信號(hào)轉(zhuǎn)換為USB信號(hào)把串口1等同于一個(gè)USB口使用。在PC上位機(jī)上安裝CH340驅(qū)動(dòng),即可實(shí)現(xiàn)單片機(jī)與計(jì)算機(jī)的通信功能。
本系統(tǒng)采用德國(guó)KEIL公司研發(fā)的RealView MDK(簡(jiǎn)稱MDK)開發(fā)工具,目前是針對(duì)Cortex M內(nèi)核處理器的最佳開發(fā)工具。所設(shè)計(jì)的軟件系統(tǒng)總體框架主要分為三部分:電機(jī)驅(qū)動(dòng)程序、輔助程序和主程序,其中輔助程序包括按鍵子程序、LED子程序、延時(shí)子程序、串口子程序。
(一)電機(jī)驅(qū)動(dòng)程序。電機(jī)驅(qū)動(dòng)程序使用了單片機(jī)定時(shí)器8的PWM功能,通過輸出頻率及占空比可變的PWM波來驅(qū)動(dòng)電機(jī)。具體實(shí)現(xiàn)方法為:首先,使能TIM8和相關(guān)IO口時(shí)鐘,將GPIOC7復(fù)用為定時(shí)器8。其次,對(duì)TIM8進(jìn)行初始化并設(shè)置其自動(dòng)重轉(zhuǎn)載值和預(yù)分頻值,將計(jì)數(shù)模式設(shè)置為向上計(jì)數(shù)模式。最后,再使能預(yù)裝載寄存器,使能定時(shí)器8,通過改變比較值CCRX,達(dá)到不同的占空比效果。
(二)輔助程序。在輔助程序中,由于延時(shí)子程序和LED子程序都較為簡(jiǎn)單所以在此不作說明,本文僅對(duì)按鍵子程序和串口子程序進(jìn)行說明。
在一般情況下,當(dāng)按鍵被按下時(shí),經(jīng)常會(huì)出現(xiàn)按鍵抖動(dòng)的情況,即按鍵介于閉合和松開之間會(huì)經(jīng)歷短暫的波動(dòng)才會(huì)到達(dá)穩(wěn)定的閉合狀態(tài),但是這種波動(dòng)時(shí)間通常不會(huì)大于10MS。所以,只需引入延時(shí)函數(shù)delay_ms(),在按鍵被按下后延時(shí)10MS即可實(shí)現(xiàn)防抖。在配置串口的過程中,首先要使能GPIO時(shí)鐘和相應(yīng)的外設(shè)時(shí)鐘,同時(shí)把GPIO模式設(shè)置為復(fù)用功能。
(三)主程序。系統(tǒng)主程序主要完成子程序調(diào)用和各種初始化操作包括:初始化延時(shí)函數(shù)、初始化串口、初始化LED、初始化按鍵和初始化驅(qū)動(dòng)器。為了更合理控制電機(jī),要利用好單片機(jī)定時(shí)器控制脈沖的頻率,改變其轉(zhuǎn)速和步距角。
為了測(cè)試本文所設(shè)計(jì)的步進(jìn)電機(jī)細(xì)分控制系統(tǒng)對(duì)于步距角控制精度的改善效果,本文設(shè)計(jì)了測(cè)量步進(jìn)電機(jī)在不同細(xì)分工作方式下步距角大小的實(shí)驗(yàn)。采用角度傳感器對(duì)其步距角進(jìn)行精準(zhǔn)測(cè)量,并將所獲取的數(shù)值上傳至PC上位機(jī),最后將實(shí)驗(yàn)數(shù)據(jù)導(dǎo)入Matlab中進(jìn)行處理并繪制出轉(zhuǎn)動(dòng)角度與時(shí)間的圖像。通過圖像不僅可以直觀反映出步進(jìn)電機(jī)步距角的大小,還可以根據(jù)圖像的平滑程度判斷電機(jī)運(yùn)行是否平穩(wěn)。
(一)實(shí)驗(yàn)內(nèi)容與結(jié)果分析。實(shí)驗(yàn)中,先將角度傳感器置0,為了方便對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行比較,把每次向步進(jìn)電機(jī)輸送的脈沖數(shù)設(shè)置為25,依次讓電機(jī)在未細(xì)分至16細(xì)分下進(jìn)行運(yùn)轉(zhuǎn),利用USB串口實(shí)現(xiàn)角度傳感器與PC上位機(jī)通信獲取實(shí)時(shí)步距角并保存到PC上位機(jī)中,當(dāng)角度傳感器的值到達(dá)360度時(shí),關(guān)閉串口停止實(shí)驗(yàn),將獲取的實(shí)驗(yàn)數(shù)據(jù)在Matlab中進(jìn)行處理得出角度-時(shí)間圖。
通過分析各細(xì)分?jǐn)?shù)下電機(jī)運(yùn)轉(zhuǎn)角度與時(shí)間圖像可知,各個(gè)細(xì)分工作方式下電機(jī)的轉(zhuǎn)動(dòng)角度都符合設(shè)計(jì)預(yù)期。當(dāng)電機(jī)在接收相同的脈沖數(shù)時(shí),如果不采用細(xì)分技術(shù),由圖像可知步進(jìn)電機(jī)的步距角相對(duì)較大,在接收25個(gè)脈沖后,每次轉(zhuǎn)動(dòng)角度為45°,此時(shí)的角度-時(shí)間圖像呈階梯狀,電機(jī)運(yùn)行時(shí)振動(dòng)較為明顯使得電機(jī)運(yùn)轉(zhuǎn)不夠平穩(wěn),此時(shí)對(duì)步進(jìn)電機(jī)的控制難以達(dá)到較高精度;當(dāng)加入細(xì)分驅(qū)動(dòng)技術(shù)后,隨著細(xì)分?jǐn)?shù)的增加,步進(jìn)電機(jī)的步距角越來越小,在同樣接收25個(gè)脈沖的條件下,電機(jī)每次轉(zhuǎn)動(dòng)的角度由45°逐漸減小至2.8125°,此時(shí)角度-時(shí)間圖像由階梯狀逐漸接近一條平滑傾斜的直線,證明電機(jī)運(yùn)轉(zhuǎn)越來越平穩(wěn),步進(jìn)電機(jī)的控制精度有了很大提高。
針對(duì)步進(jìn)電機(jī)步距角難以達(dá)到較高控制精度的問題,對(duì)步進(jìn)電機(jī)的細(xì)分控技術(shù)進(jìn)行實(shí)驗(yàn)研究,提出了采用STM32F407單片機(jī)作為主控芯片,設(shè)計(jì)并制作完成了步進(jìn)電機(jī)細(xì)分控制系統(tǒng),實(shí)現(xiàn)了對(duì)兩相步進(jìn)電機(jī)的細(xì)分控制。最后利用角度傳感器,通過實(shí)驗(yàn)測(cè)量電機(jī)在不同細(xì)分狀態(tài)下的步距角,通過實(shí)驗(yàn)得知:采用細(xì)分技術(shù)可以合理有效的降低步進(jìn)電機(jī)的步距角,提高電機(jī)定位的準(zhǔn)確度,達(dá)到精密控制的目的。此細(xì)分控制系統(tǒng)能適應(yīng)步進(jìn)電機(jī)高精度的控制要求,大大提高了電機(jī)工作的穩(wěn)定性。