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