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