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