王廬山
摘? 要:Labview是一款非常優(yōu)秀的圖形編程開放平臺(tái),很容易設(shè)計(jì)出非常好的上位機(jī)軟件,可以在多個(gè)平臺(tái)上運(yùn)行。微控制器可以很方便地進(jìn)行底層驅(qū)動(dòng)的設(shè)計(jì)。本文將兩者融合,開發(fā)Labview與微控制器步進(jìn)電機(jī)控制系統(tǒng),可以實(shí)現(xiàn)Labview上位機(jī)對(duì)步進(jìn)電機(jī)的轉(zhuǎn)速、方向進(jìn)行全方位的控制,從而實(shí)現(xiàn)遠(yuǎn)程控制。經(jīng)實(shí)際運(yùn)行,系統(tǒng)能夠較好地控制步進(jìn)電機(jī),可用于上位機(jī)對(duì)步進(jìn)電機(jī)控制場(chǎng)合。
關(guān)鍵詞:Labview? 步進(jìn)電機(jī)? 微控制器? 遠(yuǎn)程控制? 上位機(jī)
中圖分類號(hào):TP273.5? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ? ? ? ? ? ? ? ?文章編號(hào):1674-098X(2020)09(c)-0069-03
Abstract: Labview is a very excellent graphic programming open platform. It is easy to design a very good upper computer software, which can run on multiple platforms. The microcontroller can easily design the bottom driver. In this paper, the integration of the two, the development of Labview and microcontroller stepper motor control system, which can achieve the upper computer Labview stepper motor speed, direction of all-round control, so as to achieve remote control. After practical operation, the system can control the stepping motor better, and can be used in the upper computer to control the stepping motor.
Key Words: Labview; Stepper motor; Microcontroller; Telecontrol; Upper monitor
1? 硬件系統(tǒng)設(shè)計(jì)
1.1 微控制系統(tǒng)設(shè)計(jì)
微控制部分選用常用的STC89C52RC單片機(jī)為步進(jìn)電機(jī)的控制核心,可以更好地滿足步進(jìn)電機(jī)的控制,如果在之后的發(fā)展中對(duì)系統(tǒng)進(jìn)行延伸可以為其提供良好的接口。單片機(jī)產(chǎn)發(fā)生控制步進(jìn)電機(jī)運(yùn)行的數(shù)字脈中的信號(hào),將信號(hào)送到步進(jìn)電機(jī)驅(qū)動(dòng)電路,從而控制步進(jìn)電機(jī)啟動(dòng)、停止、加減速等功能,另外還可以用顯示器來顯示步進(jìn)電機(jī)當(dāng)前的工作狀態(tài)數(shù)據(jù)。
1.2 步進(jìn)電機(jī)驅(qū)動(dòng)電路設(shè)計(jì)
步進(jìn)電機(jī)是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機(jī)構(gòu)。通俗一點(diǎn)講:當(dāng)步進(jìn)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度(步進(jìn)角)??梢酝ㄟ^控制脈沖個(gè)數(shù)來控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時(shí)可以通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,從而達(dá)到調(diào)速的目的。
本文中用到的步進(jìn)電機(jī)為四相步進(jìn)電機(jī),在4相電機(jī)中有4組線圈,若電流按順序通過線圈則使電機(jī)產(chǎn)生轉(zhuǎn)動(dòng)。對(duì)于四相步進(jìn)電機(jī)而言,把各線圈中一端接在一起,就是步進(jìn)電機(jī)的公共端。各線圈的另一端引出來,就是四根相線,稱這四根相線為A、B、C、D的勵(lì)磁相。采用單雙相八拍工作方式既可以保持較高的轉(zhuǎn)動(dòng)力矩又可以提高控制精度。
步進(jìn)電機(jī)的驅(qū)動(dòng)電路采用ULN2003,ULN2003是大電流驅(qū)動(dòng)陣列,可直接驅(qū)動(dòng)繼電器等負(fù)載。輸入5V TTL電平,輸出可達(dá)500mA/50V。ULN2003是高耐壓、大電流達(dá)林頓系列,由七個(gè)硅NPN達(dá)林頓管組成。
采用微控制器來控制步進(jìn)電機(jī),實(shí)現(xiàn)了軟件與硬件相結(jié)合的控制方法。用軟件代替環(huán)形分配器,達(dá)到了對(duì)步進(jìn)電機(jī)的最佳控制。系統(tǒng)中采用51單片機(jī)接口線直接去控制步進(jìn)電機(jī)各相驅(qū)動(dòng)線路。微控制器發(fā)出勵(lì)磁依賴,實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的控制,可以控制電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)、停止、指定速度運(yùn)行等功能。
上位機(jī)Labview通過串行口與微控制器連接,上位機(jī)發(fā)送控制命令給單片機(jī),微控制器接收并解析命令,從而實(shí)現(xiàn)對(duì)步進(jìn)機(jī)的控制。
2? 軟件系統(tǒng)設(shè)計(jì)
2.1 微控制器軟件系統(tǒng)設(shè)計(jì)
在主程序中,當(dāng)接收到Labview上位機(jī)發(fā)出的步進(jìn)電機(jī)控制指令后,當(dāng)微控制器收到stop命令時(shí),步進(jìn)電機(jī)停止;當(dāng)微控制器收到forward命令時(shí),步進(jìn)電機(jī)正轉(zhuǎn);當(dāng)微控制器收到back命令時(shí),步進(jìn)電機(jī)反轉(zhuǎn);當(dāng)微控制器收到speed num命令時(shí),步進(jìn)電機(jī)調(diào)速;當(dāng)微控制器收到angle num命令時(shí),步進(jìn)電機(jī)轉(zhuǎn)動(dòng)指定的角度后停止。
2.2 步進(jìn)電機(jī)驅(qū)動(dòng)軟件設(shè)計(jì)
步進(jìn)電機(jī)驅(qū)動(dòng)程序主要有兩個(gè)函數(shù),一個(gè)是步進(jìn)電機(jī)控制函數(shù),一個(gè)是步進(jìn)電機(jī)設(shè)定轉(zhuǎn)動(dòng)角度的函數(shù),代碼如下:
/***************************************************************
函數(shù)功能:步進(jìn)電機(jī)控制
輸入?yún)?shù):無
輸出參數(shù):無
外部變量:Step_N2ms? BeatCode[]? Step_Drection? beats
相關(guān)函數(shù):無
注? ? 意:本函數(shù)要用到定時(shí)器T0
****************************************************************/
void BJDJ_Control()
{
unsigned char tmp;? //定義一個(gè)臨時(shí)變量
static unsigned char index = 0;? //定義節(jié)拍輸出索引
if((Step_N2ms==1)&&(beats!=0))//2ms執(zhí)行一拍
{
Step_N2ms=0;
tmp = Motor_Port;? ?//用tmp把P1口當(dāng)前值暫存
tmp = tmp & 0xF0;? ? ?//用&操作清零低4位
tmp = tmp | BeatCode[index]; //用|操作把節(jié)拍代碼寫到低4位
Motor_Port? = tmp; //把低4位的節(jié)拍代碼和高4位的原值送回P1
if(Step_Drection==1)
{index++; beats--; }
else if(Step_Drection==2)
{index--; beats--; }? ?//節(jié)拍輸出索引遞增
index = index & 0x07;? ?//用&操作實(shí)現(xiàn)到8歸零
}
}
2.3 Labview上位機(jī)軟件設(shè)計(jì)
在Labview上位機(jī)應(yīng)用程序中,主要設(shè)置步進(jìn)電機(jī)的轉(zhuǎn)速,啟動(dòng)與停止,正轉(zhuǎn)與反轉(zhuǎn)控制,當(dāng)按下相關(guān)的按鈕后,上位機(jī)通過串口線向微控制器發(fā)出相應(yīng)的指令,速度指令為speed8表示每分鐘轉(zhuǎn)3圈,dir1表示正轉(zhuǎn),dir2表示反轉(zhuǎn),start表示啟動(dòng)步進(jìn)電機(jī),stop表示停止步進(jìn)電機(jī)。上位機(jī)界面如圖1所示。
3? 結(jié)語
從系統(tǒng)運(yùn)行結(jié)果分析,本系統(tǒng)采用基于Labview與微控制器步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì),完成了該系統(tǒng)的硬件和軟件設(shè)計(jì)部分,硬件部分設(shè)計(jì)了微控制器系統(tǒng)和步進(jìn)電機(jī)控制系統(tǒng)。軟件部分包括微控制器部分步進(jìn)電機(jī)底層控制程序,上位機(jī)前面板設(shè)計(jì)、控制程序的編寫,實(shí)現(xiàn)了可以通過Labview上位機(jī),對(duì)步進(jìn)電機(jī)進(jìn)行轉(zhuǎn)動(dòng)方向和指定轉(zhuǎn)動(dòng)速度,與傳統(tǒng)的PLC或單片機(jī)步進(jìn)電機(jī)控制系統(tǒng)相比,其成本和可維護(hù)性、操作性更強(qiáng)更簡單,該系統(tǒng)已經(jīng)在實(shí)際測(cè)量系統(tǒng)中得到了應(yīng)用。
參考文獻(xiàn)
[1] 王敏生.Labview寶典[M].2版.北京:電子工業(yè)出版社,2017.
[2] 董海棠.單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計(jì)[M].成都:西南交通大學(xué)出版社,2017.
[3] 邢林峰.PCI Express 體系結(jié)構(gòu)導(dǎo)讀[M].北京:機(jī)械工業(yè)出版社,2020.
[4] 李曉芳,馬野,蔡暢.基于單片機(jī)的交通信號(hào)燈控制系統(tǒng)設(shè)計(jì)與仿真[J].科技創(chuàng)新導(dǎo)報(bào),2019,16(2):89-90.
[5] 楊麗.基于變結(jié)構(gòu)PID控制的兩相混合式步進(jìn)電機(jī)閉環(huán)控制系統(tǒng)設(shè)計(jì)[D].天津:天津理工大學(xué),2019.
[6] 吳一平.基于51單片機(jī)的直流電機(jī)PWM調(diào)速系統(tǒng)[J].科技創(chuàng)新導(dǎo)報(bào),2018,15(13):108,110.
[7] 焦玉朋.基于51單片機(jī)的PWM直流電機(jī)調(diào)速系統(tǒng)[D].呼和浩特:內(nèi)蒙古大學(xué),2013.