李香飛,張曉光,張曉偉
(天津職業(yè)技術(shù)師范大學(xué) 工程實訓(xùn)中心,天津 300222)
運動系統(tǒng)數(shù)字控制通常采用硬件和軟件相結(jié)合方式,采用單片機,由C語言或匯編語言進行軟件開發(fā),通過串行或并行通信的方式實現(xiàn),可直接對數(shù)控系統(tǒng)中電動機實現(xiàn)控制,因此單片機控制在計算機外圍設(shè)備、數(shù)控機床和自動化生產(chǎn)線等領(lǐng)域的應(yīng)用,己經(jīng)成為了一種必然的趨勢,也符合數(shù)字化的時代發(fā)展要求。
本設(shè)計控制系統(tǒng)主要介紹了硬件組成、硬件工作原理分析、主要程序設(shè)計;其利用單片機作為控制器,采用了無線技術(shù),通過遠程控制和監(jiān)控步進電機運動狀態(tài),實現(xiàn)系統(tǒng)精確位置控制。
控制系統(tǒng)硬件主要由步進電機、步進電機驅(qū)動器、51單片機、LCD顯示屏、獨立按鍵、電源六部分組成[1]。運動控制結(jié)構(gòu)組成如圖1所示。
圖1 運動控制結(jié)構(gòu)組成
控制系統(tǒng)中適用中小功率晶體管驅(qū)動小功率的步進電機,晶體管具有放大倍數(shù)大、線路簡單等優(yōu)點。功率較大的步進電機因其繞組所通電流較大、電壓高并且具有較大的反電動勢,因此小功率晶體管不再適用,需采用大功率晶體管驅(qū)動[2]。ULN2003D單片機可承載高電壓、高電流,其內(nèi)部電路由多列達林頓晶體管組成,控制系統(tǒng)驅(qū)動電路主要用于繼電器驅(qū)動器、顯示驅(qū)動器(LED氣體放電)等驅(qū)動電路。
紅外遙控通信是利用紅外功能實現(xiàn)近距離通信功能,由紅外發(fā)射、接收系統(tǒng)組成。紅外輻射源對發(fā)射系統(tǒng)進行調(diào)制,然后發(fā)射紅外信號,接收系統(tǒng)利用光學(xué)裝置進行紅外探測接收信號,組成通信系統(tǒng)。
將J1跳線短接時,P3.2腳與紅外輸出端相連,此時開啟了紅外功能。當P3.2腳做別的用途時最好斷開,以免影響。
單片機控制步進電機的整體控制電路,將STC90C51單片機作為各控制核心,把驅(qū)動電路、接口電路有機結(jié)合起來形成一個完整的電路。
步進電機通過紅外遙控器控制,實現(xiàn)正轉(zhuǎn)/反轉(zhuǎn)/停止/加減速/螺距設(shè)定功能。在系統(tǒng)工作的過程中,LCD液晶屏顯示步進電機實時運行的圈數(shù)、度數(shù)、位移量、速度、螺距等參數(shù),并且LCD指示步進電機的當前運行狀態(tài)。控制系統(tǒng)電路圖如圖2所示。
圖2 原理圖
1)系統(tǒng)初始化,工作狀態(tài)的初始化。
2)系統(tǒng)啟動。液晶初始化,運行主要參數(shù)的顯示。
3)紅外遙控掃描。紅外遙控按鍵功能包括停止按鍵、正轉(zhuǎn)按鍵、反轉(zhuǎn)按鍵、螺距設(shè)置按鍵、加速按鍵、減速按鍵。
4)步進電機驅(qū)動控制。實現(xiàn)電機正反停功能、調(diào)速功能、位移監(jiān)測功能、螺距設(shè)定功能、紅外遙控功能等[2,3]。
主程序工作流程圖如圖3所示。在圖中簡單地反映出了整個控制系統(tǒng)的主程序工作流程。
圖3 主程序流程圖
根據(jù)步進電機正反轉(zhuǎn)控制功能,設(shè)計程序如下[4-5]:
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;
sbit key5=P3^7;
sbit key6=P3^5;
sbit key7=P3^6;
sbit lcden=P2^7;
sbit lcdrs=P2^6;
sbit lcdrw=P2^5;
void write_com(unsigned char com);
void delay2();
uchar IRCOM[7];
unsigned char code FFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6};
unsigned char code FFZ[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe};
unsigned char code disp1[]={"forward"};
unsigned char code disp2[]={"reverse"};
unsigned char code disp3[]={"stop"};
void motor_ffw()
{unsigned char i;
for (i=0; i<8; i++)
{if(K==1)
{P1=FFW[i]&0x1f;
n++;}
if(K==2)
{P1=FFZ[i]&0x1f;
n++;}} }
以單片機作為控制器,實現(xiàn)對步進電機的控制。在軟件設(shè)計過程中,應(yīng)用STC90C51單片機作為控制器,實現(xiàn)對電機的啟/停功能;正/反轉(zhuǎn)功能;加/減速;位移檢測;螺距設(shè)定、紅外遙控、獨立按鍵功能的控制。同時通過LCD液晶顯示步進電機的運行參數(shù),最終實現(xiàn)對控制系統(tǒng)的軟硬件控制。
(05)