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