周建寅 謝超 姜婷婷
摘 要:隨著工業(yè)和科技的發(fā)展,嵌入式控制系統(tǒng)也越來(lái)越受到人們生產(chǎn)生活的青睞,其擁有強(qiáng)大的處理、控制的性能的同時(shí)還有著低功耗,體積小等特點(diǎn)。本設(shè)計(jì)選用基于ARM Cortex-M3內(nèi)核的STM32芯片作為主控芯片,外圍電路包括紅外接收模塊,電機(jī)驅(qū)動(dòng)器;該系統(tǒng)的控制流程是通過(guò)紅外遙控模塊發(fā)送指令,STM32接收指令并向步進(jìn)電機(jī)驅(qū)動(dòng)模塊發(fā)送相應(yīng)的脈沖。驅(qū)動(dòng)模塊通過(guò)細(xì)分等操作驅(qū)動(dòng)步進(jìn)電機(jī)完成所需的動(dòng)作特性;程序在MDK環(huán)境下進(jìn)行編程,通過(guò)程序?qū)崿F(xiàn)不斷掃描紅外遙控是否發(fā)出指令,發(fā)出什么指令,從而根據(jù)掃描的結(jié)果使步進(jìn)電機(jī)產(chǎn)生相對(duì)應(yīng)的動(dòng)作如正轉(zhuǎn)、反轉(zhuǎn)、加速、加速等動(dòng)作,再由測(cè)試軟件算法估算出電機(jī)的速度。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)的穩(wěn)定性和步進(jìn)電機(jī)各項(xiàng)運(yùn)動(dòng)指標(biāo)均滿(mǎn)足要求。
關(guān)鍵詞:STM32;步進(jìn)電機(jī);正反轉(zhuǎn);加減速
中圖分類(lèi)號(hào):TB 文獻(xiàn)標(biāo)識(shí)碼:A doi:10.19311/j.cnki.1672-3198.2019.35.116
STM32系列是由意法半導(dǎo)體(STMicroelectronics)生產(chǎn)的嵌入式控制芯片;32系列包含多款芯片,本設(shè)計(jì)采用STM32F103RB芯片,其基于ARM代表性的內(nèi)核Cortex-M3,該內(nèi)核采用市場(chǎng)目前主流的ARMv7架構(gòu)和面向高級(jí)語(yǔ)言的Thumb-2指令集的同時(shí)擁有很多其他鮮明的優(yōu)勢(shì)如更強(qiáng)大性能、位帶操作等,并在代碼密集度、實(shí)際應(yīng)用、能耗 、售價(jià)等方面均衡的發(fā)展。
步進(jìn)電機(jī)是將電脈沖轉(zhuǎn)換為線位移或者角位移的驅(qū)動(dòng)裝置,同時(shí)也是脈沖單值對(duì)應(yīng)的增量元件,不同的步進(jìn)電機(jī)需要不同的驅(qū)動(dòng)器去驅(qū)動(dòng)它們的運(yùn)動(dòng),在實(shí)際控制系統(tǒng)中,當(dāng)控制器輸出脈沖信號(hào)先經(jīng)過(guò)驅(qū)動(dòng)器,再由驅(qū)動(dòng)器驅(qū)動(dòng)。步進(jìn)電機(jī)按照特定的方向旋轉(zhuǎn)一定角度并且這個(gè)角度是固定的是電機(jī)的固有屬性被稱(chēng)為“步距角”,步進(jìn)電機(jī)位移與驅(qū)動(dòng)器輸入脈沖成正比,并與輸入脈沖同步,因此通過(guò)主控芯片來(lái)改變脈沖信號(hào)的頻率、占空比等,來(lái)具體的控制步進(jìn)電機(jī)獲得具體需要的運(yùn)行特征。
1 方案設(shè)計(jì)
本設(shè)計(jì)方案是以STM32F103RB為主要控制器,步進(jìn)電機(jī)和電機(jī)驅(qū)動(dòng)器為驅(qū)動(dòng)電路,遙控作為信號(hào)的輸入設(shè)備,STM32F103RB主板上紅外模塊接收到遙控發(fā)出的信號(hào),并將接收到的信號(hào)轉(zhuǎn)變成脈沖信號(hào)和方向信號(hào),為了控制步進(jìn)電機(jī)的速度大小和方向,再通過(guò)I/O口發(fā)出變換后的脈沖給匹配的驅(qū)動(dòng)器,驅(qū)動(dòng)器驅(qū)動(dòng)步進(jìn)電機(jī)相應(yīng)的運(yùn)動(dòng),方案設(shè)計(jì)如圖1。
2 硬件設(shè)計(jì)
本次設(shè)計(jì)采用開(kāi)發(fā)板是STM32F103RB作為主控芯片和其他功能的外圍電路構(gòu)成,就性能而言,STM32F103RB是一個(gè)32位內(nèi)核,且擁有高達(dá)72MHz的時(shí)鐘頻率和接近80MIPS的指令速度。同時(shí),32位硬件除法和單周期乘法器等體系增強(qiáng)了其數(shù)據(jù)處理和計(jì)算能力。而且STM3F103RB芯片集成了多種功能模塊,包括定時(shí)器、串行和通信接口等,可以滿(mǎn)足用戶(hù)的應(yīng)用環(huán)境。
根據(jù)總設(shè)計(jì)要求,步進(jìn)電機(jī)選用兩相雙極性步進(jìn)電機(jī)(14HD3809D5)。
步進(jìn)電機(jī)驅(qū)動(dòng)器的選型需要高度貼合所應(yīng)用的步進(jìn)電機(jī),主要需要完成兩個(gè)匹配問(wèn)題,電壓匹配,和電流匹配;本次設(shè)計(jì)采用ASD422R步進(jìn)電機(jī)驅(qū)動(dòng)器,該驅(qū)動(dòng)器可以完全匹配所應(yīng)用的電機(jī),還可以實(shí)現(xiàn)細(xì)分功能,實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)更精確的控制。
為了避免電路間濾除噪聲和干擾,將輸入、輸出信號(hào)之間干擾的控制在不影響結(jié)果的范圍內(nèi),硬件設(shè)計(jì)必須要考慮在CPU和驅(qū)動(dòng)器之間添加了一個(gè)隔離電路對(duì)輸入/輸出信號(hào)進(jìn)行隔離,本次設(shè)計(jì)選用的是光電耦合器,它可以實(shí)現(xiàn)由電到光再到電的轉(zhuǎn)換,它在輸入/輸出電信號(hào)之間起到良好的隔離作用,大大減少了輸入回路和輸出回路之間的電氣干擾。本設(shè)計(jì)選用的光電耦合器為HCPL2631。
根據(jù)上面的方案設(shè)計(jì)和硬件選型,可以知道步進(jìn)電機(jī)的方向和脈沖信號(hào)需要控制,所以STM32F103RB開(kāi)發(fā)板需要引出兩個(gè)引腳,在與電機(jī)驅(qū)動(dòng)器連接中,通過(guò)光電隔離電路進(jìn)行對(duì)輸入、輸出信號(hào)進(jìn)行隔離,CPU工作可以用USB供電5V,然后通過(guò)主板轉(zhuǎn)化成3.3V對(duì)CPU進(jìn)行供電,外接24V電源給電機(jī)供電驅(qū)動(dòng),以及需要將脈沖、方向的公共端接5V,步進(jìn)電機(jī)與驅(qū)動(dòng)器按原理圖接口對(duì)應(yīng)連接,由以上條件可以畫(huà)出相應(yīng)的電路圖,如圖2所示。
3 系統(tǒng)控制程序設(shè)計(jì)
3.1 軟件方案設(shè)計(jì)
本次設(shè)計(jì)的總體思路是通過(guò)紅外遙控發(fā)送指令對(duì)電機(jī)進(jìn)行控制,當(dāng)遠(yuǎn)程發(fā)出一個(gè)指令,單片機(jī)STM32通過(guò)外圍電路接收到該指令,判斷該指令所對(duì)應(yīng)的功能,在將對(duì)應(yīng)的功能轉(zhuǎn)化為對(duì)應(yīng)的脈沖波形,再由驅(qū)動(dòng)器對(duì)電機(jī)進(jìn)行驅(qū)動(dòng),采用C語(yǔ)言編寫(xiě)程序,按照需求設(shè)置了4個(gè)按鍵,分別是加速、減速、停止、正反轉(zhuǎn)4個(gè)功能,key1,key2,key3,key4分別對(duì)應(yīng)上述功能;圖3表示該過(guò)程流程圖。
程序初始化部分主要包括中斷初始化,I/O口初始化,延時(shí)函數(shù)初始化,定時(shí)器3初始化,步進(jìn)電機(jī)初始化和串口通信初始化,初始化部分主要目的完成軟件執(zhí)行前的準(zhǔn)備工作,當(dāng) NVIC中斷初始化時(shí),中斷優(yōu)先級(jí)分組設(shè)置為2,通過(guò)中斷方式來(lái)控制具體實(shí)現(xiàn)的功能。
3.2 速度方向控制方法
設(shè)定的電機(jī)驅(qū)動(dòng)細(xì)分為3200,電機(jī)的當(dāng)前的轉(zhuǎn)動(dòng)速度為“頻率/細(xì)分”。電機(jī)無(wú)論在加速、減速、停止都是同樣的計(jì)算步數(shù),若電機(jī)速度從10加速到100需要十步,CPU計(jì)算重裝載值表,會(huì)把電機(jī)動(dòng)作的步數(shù)分解成由10加速到20,再?gòu)?0加速到30,直至加速到100,然后啟動(dòng)定時(shí)器,接著進(jìn)入中斷,判斷是否到達(dá)目標(biāo)速度,如果沒(méi)有的話(huà),就不更新,沒(méi)有動(dòng)作,如果是的話(huà)就更新重裝載值,發(fā)出動(dòng)作。同樣減速、停止都是同樣的算法,而換向的分為兩個(gè)部分,先減速至零,然后在加速至指定速度,算法跟加速、減速、停止是一樣的,只是過(guò)程分成了兩個(gè)部分。
3.3 程序代碼
代碼使用KEIL MDK5軟件編寫(xiě)各個(gè)模塊,其中主要功能簡(jiǎn)單代碼如下:
int main(void)
{u8 key;
u16 printf_Clock;//打印時(shí)鐘
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級(jí)分組2
delay_init();//延時(shí)函數(shù)初始化
RUN_LED_Init();//相關(guān)I/O口初始化
USART2_Init(115200); //串口2初始化
TIM3_Init(1000,72-1);/ /定時(shí)器3初始化
Step_Motor_01_Init();//步進(jìn)電機(jī)01初始化
RS485_Init(115200); //RS485初始化
Remote_Init();//接收初始化
printf("系統(tǒng)啟動(dòng)完畢…");while(1)//紅外自檢模塊
{ListenDirProcess();
RS485_Receive_Process();//RS845接收程序進(jìn)程
delay_ms(5);if(Remote_Rdy)
{key=Remote_Process();//接收按鍵值賦給key
printf("key = %d",key);switch (key)
{case 194:// 加速
FastMotorFuc();break;
case 34:// 減速
SlowMotorFuc();break;
case 162:// 停止
StopMotorFuc();break;
case 226: //換向
DirMotorFuc();break;
Default;break;}}}}
4 結(jié)論
通過(guò)硬件調(diào)試,實(shí)現(xiàn)了預(yù)計(jì)的目標(biāo),通過(guò)STM32F103RB控制芯片對(duì)步進(jìn)電機(jī)實(shí)現(xiàn)正反轉(zhuǎn)、加減速、啟停的控制,通過(guò)遙控發(fā)送信號(hào),由STM32F103RB開(kāi)發(fā)板上的紅外模塊接收信號(hào),STM32F103RB控制器接收指令,步進(jìn)電機(jī)驅(qū)動(dòng)器接收到的指令必須是通過(guò)光電隔離模塊之后的,最后再由驅(qū)動(dòng)器控制步進(jìn)電機(jī),達(dá)到控制步進(jìn)電機(jī)的目的。該設(shè)計(jì)證明了STM32具有非常強(qiáng)大的控制能力,可以實(shí)現(xiàn)多種擴(kuò)展。不僅如此,其能耗相對(duì)較低,穩(wěn)定性卓越,具有很好實(shí)際使用價(jià)值。
參考文獻(xiàn)
[1]馮新宇.ARM Cortex-M3體系結(jié)構(gòu)與編程[M].2版.北京:清華大學(xué)出版社,2017.
[2]劉軍,張洋,嚴(yán)漢宇.例說(shuō)STM32[M].3版.北京:北京航空航天大學(xué)出版社,2018.
[3]楊百軍,王學(xué)春,黃雅琴.輕松玩轉(zhuǎn)STM32微控制器[M].北京:電子工業(yè)出版社,2016.
[4]劉一.基于STM32的嵌入式系統(tǒng)設(shè)計(jì)[M].北京:中國(guó)鐵道出版社,2015.
[5]楊振江,朱敏波,韋博,等.基于STM32 ARM處理器技的編程技術(shù)[M].西安:西安電子科技大學(xué)出版社,2016.
[6]謝耕,趙恒博,廖明棟.基于STM32的步進(jìn)電機(jī)控制程序設(shè)計(jì) [J].信息通信,2018,(184).
[7]北京市自動(dòng)化技術(shù)研究所,一機(jī)部電器科學(xué)研究院編.步進(jìn)電機(jī)綜述 附專(zhuān)題文獻(xiàn)索引[M].北京:北京市自動(dòng)化技術(shù)研究所,一機(jī)部電器科學(xué)研究院,1965.
[8]王永虹,徐煒,郝立平.STM32系列 ARM Cortex-M3微控制器原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008.