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