王秋云,汪 文,徐嘉琦,孫 琦,趙偉霞,富春巖
(1.佳木斯大學(xué)信息電子技術(shù)學(xué)院,黑龍江 佳木斯 154007;2.佳木斯大學(xué)機械工程學(xué)院,黑龍江 佳木斯 154007)
為防止步進電機啟動和停止時出現(xiàn)沖擊而產(chǎn)生失步和震蕩的現(xiàn)象,在步進電機的數(shù)控系統(tǒng)中,需要使用一種專用的加減速控制算法,通過控制驅(qū)動脈沖規(guī)律控制步進電機的加減速過程[1]。通過控制脈沖的頻率可以減少開環(huán)控制系統(tǒng)中的電機失步與震蕩現(xiàn)象,本文設(shè)計了一種基于STM32F103單片機的步進電機控制器,本控制器按照驅(qū)動算法控制STM32產(chǎn)生對應(yīng)的脈沖進而驅(qū)動電機驅(qū)動器控制步進電機。
本控制器由單片機(STM32F103C8T6)、CH340E、矩陣鍵盤、液晶顯示面板和電源等部分組成。系統(tǒng)采用單片機作為主控制器,CH340E芯片作為單片機與上位機進行數(shù)據(jù)交換的接口,液晶顯示面板采用LCD12864進行數(shù)據(jù)顯示,矩陣按鍵采用輕觸開關(guān)進行參數(shù)與模式設(shè)置,系統(tǒng)采用12V電池與12V直流雙電源供電方案,經(jīng)電源系統(tǒng)升降壓后供各個模塊使用。系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。
本控制器模塊的工作原理如下,主控制器接收用戶按鍵和上位機發(fā)來的控制信號,調(diào)用不同的控制算法,控制單片機產(chǎn)生指定頻率與數(shù)量的PWM脈沖,并將實時數(shù)據(jù)發(fā)送至上位機并在液晶面板上顯示。
圖1 系統(tǒng)總體結(jié)構(gòu)框圖
本控制模塊所選用的單片機為ST公司的STM32F103C8T6微控制器,最高主頻72MHz,支持JTAG、SWD與串口燒錄,下載方式豐富。具有3個UART,4個定時器(包括一個高級定時器,3個通用定時器)和26個通用輸入輸出端口,可同時輸出多路驅(qū)動脈沖。該芯片具有功耗低、價格低、性能好和速度快等優(yōu)點,完全能滿足本系統(tǒng)的性能需求。通訊模塊采用CH340E USB轉(zhuǎn)串口芯片連接控制器與計算機,該芯片速度快,價格便宜,滿足本系統(tǒng)的使用??紤]到本系統(tǒng)的數(shù)據(jù)量,對屏幕的通訊速率要求不高,故選用帶UART的串口LCD。對于鍵盤,因可設(shè)置的參數(shù)較多,故選用4×4矩陣鍵盤。
本控制器通過USB轉(zhuǎn)串口(CH340E)芯片與上位機進行通訊。CH340E內(nèi)置振蕩器,提供全速USB設(shè)備接口兼容USB2.0,硬件全雙工串口,支持通訊波特率50 bps~2 Mbps。通過USB接口和插針與PC或其他外設(shè)相連接。硬件電路設(shè)計如圖2所示。
圖2 通信接口硬件電路設(shè)計
控制器供電系統(tǒng)采用獨立電池供電與直流電源供電兩種方式(可手動切換),其中單片機最小系統(tǒng)需要3.3V供電,液晶顯示與CH340E芯片均支持3.3-5V寬電壓供電,而為了便于后期功能的擴展,現(xiàn)使用兩級降壓模式,第一級將系統(tǒng)電源電壓經(jīng)三端穩(wěn)壓器(AMS1117-5.0)降壓至5V,第二級將5V電壓通過三端穩(wěn)壓器(ASM117-3.3)降壓至3.3V,兩級電壓足以滿足各個模塊的使用以及未來的擴展。電路硬件原理圖如圖3所示。
圖3 電源電路硬件原理圖
當前,梯型加減速和S曲線加減速是步進電機最常用的兩種加減速方法[2],但是由于梯型加減速實現(xiàn)過程中存在加速度突變的情況[3],因此本控制器采用S曲線加減速的方式控制步進電機。
S型曲線算法,即通過Sigmoid函數(shù)變換得到的一種控制算法[4],具體的實現(xiàn)過程如下:
Sigmoid函數(shù)公式如下:
(1)
Sigmoid函數(shù)曲線如圖4所示。
圖4 Sigmoid函數(shù)曲線
由Sigmoid函數(shù)公式(1)可知,Sigmoid函數(shù)的值域為0-1,而計算出來的結(jié)果對應(yīng)單片機輸出脈沖的頻率,所以原始Sigmoid函數(shù)并不能直接用于計算輸出。若要將此曲線應(yīng)用到步進電機的加、減速控制過程中,需要對其進行X、Y方向的平移與拉伸變化。
整理后的公式為:
(2)
其中A控制y方向的拉伸變化、a控制x方向拉伸變化、B控制y方向的平移變化、b控制x方向的平移變化,通過此函數(shù)可以計算步進電機啟動過程中每個計算時間點的頻率。
同理可得到減速過程中的計算公式為:
(3)
由公式可知,當b為定值時,a值越大則加速曲線越陡峭,即從加速開始到目標值的時間越短。當a為定值,b值變化時可知,b值越大則加速時的低頻段與減速時的高頻段持續(xù)時間就越短,即調(diào)節(jié)時間越短。經(jīng)過測試后發(fā)現(xiàn)當在加減數(shù)點數(shù)為100,a值處于[0.9,3.5]之間時效果最好,而對于b值則應(yīng)根據(jù)a的值來設(shè)置。
在步進電機的啟動過程中,如果啟動頻率過低或者低頻時發(fā)出的脈沖太多將會影響加速時間,加速效果較差,所以實際應(yīng)用中應(yīng)該選擇合適的啟動頻率并設(shè)計好低頻時的脈沖數(shù)。
根據(jù)設(shè)置的啟動停止時間T與每個頻率持續(xù)的時間Ti,就可以得到總的加減速步數(shù)N,可得:
(4)
在設(shè)置過程中便可以根據(jù)要求(規(guī)定啟動時間或者規(guī)定啟動步數(shù)進行相應(yīng)的設(shè)置)。
MCU系統(tǒng)程序使用C語言編寫,主要實現(xiàn)與上位機的通信、人機交互和步進電機驅(qū)動算法。系統(tǒng)上位機以基于QT的C++圖形用戶界面應(yīng)用程序框架開發(fā),實現(xiàn)控制器的人機交互控制界面。具有手動設(shè)置各項參數(shù)和動態(tài)實時參數(shù)顯示等功能。系統(tǒng)實時顯示系統(tǒng)狀況、多路步進電機轉(zhuǎn)速和驅(qū)動頻率等信息。系統(tǒng)主程序的流程圖如圖5所示,步進電機驅(qū)動程序的流程圖如圖6所示。
圖5 主控制流程圖
圖6 步進電機驅(qū)動控制
本系統(tǒng)通過STM32單片機結(jié)合Sigmoid函數(shù)衍生的控制算法,實時計算出控制頻率。通過對控制器的實際測試,最終取得了較好的效果。同時若搭配專用的步進電機驅(qū)動器,即使在開環(huán)的情況下仍能提供滿足使用的控制精度,為用戶提供良好的使用體驗,節(jié)約用戶的設(shè)備開銷。同時結(jié)合遠距離與上位機通信也可讓控制器適應(yīng)更多的控制環(huán)境,提升控制系統(tǒng)的自動化程度。