夏 凡,王 粟,汪 峰
(湖北工業(yè)大學(xué)電氣與電子工程學(xué)院,湖北 武漢430068)
本設(shè)計(jì)采用型號(hào)為28BYJ48的步進(jìn)電機(jī),它是四相八拍永磁式減速電機(jī),步距角度為5.625/64,減速比為1∶64,定位轉(zhuǎn)矩大于或等于300Nm[1].本設(shè)計(jì)通過(guò)控制脈沖的個(gè)數(shù)來(lái)控制角位移,達(dá)到準(zhǔn)確定位的目的;同時(shí)通過(guò)控制脈沖頻率來(lái)控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,達(dá)到調(diào)速的目的.
由于步進(jìn)電機(jī)不能直接采用直流或者普通交流供電,必須采用專門(mén)的步進(jìn)電機(jī)驅(qū)動(dòng)控制器,步進(jìn)電機(jī)驅(qū)動(dòng)控制器基本原理見(jiàn)圖1,由脈沖發(fā)生與分配單元、功率驅(qū)動(dòng)單元、反饋與保護(hù)單元組成.
圖1 步進(jìn)電機(jī)驅(qū)動(dòng)控制基本原理框圖
綜合28BYJ48型步進(jìn)電機(jī)的參數(shù)與步進(jìn)電機(jī)的驅(qū)動(dòng)特點(diǎn),本設(shè)計(jì)采用四只9012的三極管,共集電極安放,將MC0-3電平反向輸出,以此增強(qiáng)電流驅(qū)動(dòng)能力,具體原理圖如下:
當(dāng)對(duì)步進(jìn)電機(jī)施加一系列連續(xù)不斷的控制脈沖時(shí),它可以連續(xù)不斷地轉(zhuǎn)動(dòng).每一個(gè)脈沖信號(hào)對(duì)應(yīng)步進(jìn)電機(jī)的某一相或兩相繞組的通電狀態(tài)改變一次,也就對(duì)應(yīng)轉(zhuǎn)子轉(zhuǎn)過(guò)一定的角度(一個(gè)步距角).步進(jìn)電機(jī)旋轉(zhuǎn)一周所需要的指令個(gè)數(shù)
其中m=8,即可以得到S′=4096.
那么旋轉(zhuǎn)一度所需要的指令數(shù)為4096/360,要旋轉(zhuǎn)N度,所需要的指令數(shù)
通過(guò)式(1)和式(2),達(dá)到準(zhǔn)確控制步進(jìn)電機(jī)旋轉(zhuǎn)角度的目的.
圖2 步進(jìn)電機(jī)設(shè)計(jì)原理圖
當(dāng)通電狀態(tài)的改變完成一個(gè)循環(huán)時(shí),轉(zhuǎn)子轉(zhuǎn)過(guò)一個(gè)齒距.四相步進(jìn)電機(jī)可以在不同的通電方式下運(yùn)行,常見(jiàn)的通電方式有單(單相繞組通電)四拍(A-B-C-D-A…),雙(雙相繞組通電)四拍(ABBC-CD-DA-AB…),八拍(A-AB-B-BC-C-CD-D-DA-A…).驅(qū)動(dòng)方式見(jiàn)圖3.
圖3 步進(jìn)電機(jī)驅(qū)動(dòng)方式示意圖
由運(yùn)行人員通過(guò)單片機(jī)實(shí)時(shí)控制兩個(gè)不同平面的步進(jìn)運(yùn)轉(zhuǎn),步進(jìn)電機(jī)通過(guò)機(jī)械耦合連接到監(jiān)控?cái)z像頭上,當(dāng)步進(jìn)電機(jī)運(yùn)行時(shí),會(huì)帶動(dòng)其監(jiān)控?cái)z像頭的相應(yīng)旋轉(zhuǎn).
具體而言,就是通過(guò)紅外通信遙控器和按鍵輸入器件,控制兩個(gè)步進(jìn)電機(jī)的相應(yīng)運(yùn)轉(zhuǎn),并由LED顯示出步進(jìn)電機(jī)實(shí)時(shí)工作狀態(tài),調(diào)節(jié)兩個(gè)不同平面的步進(jìn)電機(jī)轉(zhuǎn)向時(shí),監(jiān)控?cái)z像頭會(huì)在三維空間中任意角度旋轉(zhuǎn);同時(shí)合理控制兩個(gè)步進(jìn)電機(jī)轉(zhuǎn)速,使監(jiān)控?cái)z像頭勻速或加速度旋轉(zhuǎn);預(yù)設(shè)步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)圈數(shù),讓運(yùn)行人員自定義監(jiān)控?cái)z像頭的運(yùn)轉(zhuǎn)時(shí)間,達(dá)到監(jiān)控?cái)z像頭定時(shí)旋轉(zhuǎn)的效果.系統(tǒng)結(jié)構(gòu)框圖見(jiàn)圖4.
圖4 系統(tǒng)結(jié)構(gòu)框圖
在清楚了解整個(gè)系統(tǒng)的原理后,即可對(duì)整個(gè)系統(tǒng)的硬件進(jìn)行設(shè)計(jì),主要有下面內(nèi)容:?jiǎn)纹瑱C(jī)控制模塊,LED顯示模塊,紅外遙控模塊,按鍵輸入模塊,攝像頭組裝模塊等.
以STC89C51高性能CMOS 8位單片機(jī)為核心器件,具有以下標(biāo)準(zhǔn)功能:8KB Flash存儲(chǔ)器,256BRAM,32位I/O口線,看門(mén)狗定時(shí)器,2個(gè)數(shù)據(jù)指針,3個(gè)16位定時(shí)器/計(jì)數(shù)器,1個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路[1],它使用高密度、非易失性存儲(chǔ)器技術(shù)制造,按照設(shè)計(jì)原理一般化設(shè)計(jì),不再贅述.
本系統(tǒng)采用的LCD是1602字符液晶模塊,能夠同時(shí)顯示16字、2行即32個(gè)字符.
由于硬件設(shè)計(jì)原因,該處I/O比較緊缺,故將P1口左側(cè)的JP14跳線跳帽到Motor一側(cè)(左側(cè)),LCD模塊的ADDR0到ADDR3四個(gè)口需要用杜邦線引出來(lái),連接相對(duì)應(yīng)的P3.0,P3.1,P3.2和P3.5口,以使LCD正常工作.
圖5 顯示譯碼與步進(jìn)電機(jī)的選擇接口
采用HS0038作為紅外遙控接收端,HS0038是一個(gè)集紅外線信號(hào)接收和放大為一體的三端元器件,其中心接收頻率為38kHz,3個(gè)引腳分別為:1—地,2—電源,3—數(shù)據(jù)輸出.當(dāng)接收到38kHz的紅外信號(hào)時(shí),輸出端為低電平;沒(méi)有接收到38kHz的紅外信號(hào)時(shí),輸出端為高電平.HS0038的具體硬件電路見(jiàn)圖6.
圖6 HS0038的硬件電路
由于系統(tǒng)中的其他模塊對(duì)端口占有不多,所以在鍵盤(pán)連接上采用每一排按鍵組成獨(dú)立式按鍵進(jìn)行控制,共4排獨(dú)立式按鍵形成了矩陣按鍵(圖7).
本設(shè)計(jì)采用軟件去斗,即檢測(cè)出鍵閉合后執(zhí)行一個(gè)延時(shí)程序,產(chǎn)生5~10ms的延時(shí),讓前沿抖動(dòng)消失后再一次檢測(cè)鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)為真正有鍵按下[2].
圖7 按鍵電路
攝像頭組裝就是用來(lái)使監(jiān)控?cái)z像頭與兩個(gè)不同平面上的步進(jìn)電機(jī)機(jī)械連接的部分.具體處理辦法是在步進(jìn)電機(jī)的輸出軸上套裝一個(gè)齒輪套,該齒輪套與一個(gè)帶齒輪的支柱相嚙合,再將該支柱與監(jiān)控?cái)z像頭底座齒輪組相嚙合[3],由此,當(dāng)步進(jìn)電機(jī)左右旋轉(zhuǎn)時(shí)會(huì)帶動(dòng)監(jiān)控?cái)z像頭底座齒輪旋轉(zhuǎn),達(dá)到監(jiān)控?cái)z像頭自由旋轉(zhuǎn)的目的.
系統(tǒng)采用C語(yǔ)言模塊化結(jié)構(gòu)軟件設(shè)計(jì).隨著代碼量不斷加大,將所有代碼放在同一個(gè)C文件中使得程序結(jié)構(gòu)混亂,可讀性和可移植性較差,采用模塊化設(shè)計(jì),能夠有效解決此類問(wèn)題.
仿真系統(tǒng)的程序在KEIL C51Vision3環(huán)境下編譯.程序主要包括:數(shù)據(jù)讀取程序、正反轉(zhuǎn)判斷程序、步進(jìn)電機(jī)驅(qū)動(dòng)程序和紅外遙控解碼程序(圖8).
圖8 主程序流程圖
程序設(shè)計(jì)過(guò)程中,分別將紅外DS1302、1602、蜂鳴器等程序模塊進(jìn)行封裝,等待主函數(shù)的調(diào)用.從圖9中可以看出,單片機(jī)上電工作后,LCD顯示初始狀態(tài)信息平臺(tái),控制步進(jìn)電機(jī)驅(qū)動(dòng)的定時(shí)器0子程序和控制紅外解碼的外部中斷1子程序等待相應(yīng)指令.首先在主函數(shù)進(jìn)行系統(tǒng)的初始化過(guò)程,設(shè)置定時(shí)器0的初始值、顯示LCD初始態(tài)等,當(dāng)按鍵或紅外遙控輸入信號(hào)時(shí),定時(shí)器0中斷子程序進(jìn)行運(yùn)行,對(duì)T0進(jìn)行重裝初值,不停的統(tǒng)計(jì)脈沖個(gè)數(shù),當(dāng)滿足相關(guān)條件后,步進(jìn)電機(jī)進(jìn)行對(duì)應(yīng)的驅(qū)動(dòng)程序,程序運(yùn)行代碼如下:
void motor_onoff()interrupt 1
{
TL0=0x33;
TH0=0xf5;
q++;
if(q<rate)
{return;}
else
{q=0;
number++;}//脈沖計(jì)數(shù)
if(number==4096)//64個(gè)脈沖電機(jī)轉(zhuǎn)一圈{snum--;
number=0;
number1++;}//電機(jī)轉(zhuǎn)動(dòng)圈數(shù)
if(direction==1)//方向標(biāo)志
{if(v<8)
{P1= FFW[v];v++;}//取數(shù)據(jù),正轉(zhuǎn)
if(v==8)
{v=0;}
}
else
{if(v<8)
{P1= REV[v];v++;}//取數(shù)據(jù),反轉(zhuǎn)
if(v==8)
{v=0;}
}
}
在外部中斷1子程序中,通過(guò)紅外遙控接收器獲取紅外信號(hào),再通過(guò)紅外解碼程序進(jìn)行紅外通信的解碼,將所獲取的鍵碼值存入相關(guān)數(shù)組,等待主程序的調(diào)用[4].
在運(yùn)行主程序中,通過(guò)預(yù)設(shè)判斷是否滿足四種條件要求,如果滿足進(jìn)入相應(yīng)狀態(tài),對(duì)步進(jìn)電機(jī)進(jìn)行控制;如果不滿足,則直接返回到等待獲取紅外程序,繼續(xù)等待.
圖9 中斷子程序流程圖
本文提出了一種基于51單片機(jī)紅外遙控監(jiān)控?cái)z像頭的方案,將在不同平面上的兩個(gè)步進(jìn)電機(jī)機(jī)械組裝從而達(dá)到控制監(jiān)控?cái)z像頭的旋轉(zhuǎn)的目的.通過(guò)KEIL51軟件與Proteus軟硬件仿真驗(yàn)證了本方案的可行性.和傳統(tǒng)的控制攝像頭方案相比,本設(shè)計(jì)特點(diǎn)是:穩(wěn)定性好,可靠性高,實(shí)時(shí)性強(qiáng),操作簡(jiǎn)明.
在應(yīng)用于實(shí)際中時(shí),本設(shè)計(jì)的系統(tǒng)還存在一定不足,還需要考慮很多實(shí)際影響因素,比如兩個(gè)步進(jìn)電機(jī)協(xié)調(diào)度問(wèn)題,如何更加精準(zhǔn)地控制監(jiān)控?cái)z像頭的旋轉(zhuǎn)角度,同時(shí)考慮如何將該系統(tǒng)產(chǎn)業(yè)化等等一些實(shí)際問(wèn)題,展望未來(lái),隨著技術(shù)朝著高精度、更穩(wěn)定方向發(fā)展,設(shè)計(jì)中的一些死角問(wèn)題也將得到很好的解決,從方案到實(shí)際應(yīng)用還有一段路要走.
[1]劉波文,劉向宇,黎勝容.51單片機(jī)C語(yǔ)言應(yīng)用開(kāi)發(fā)[M].北京:北京航空航天大學(xué)出版社,2011:138-149.
[2]高 偉,曹國(guó)君.AT89單片機(jī)原理及應(yīng)用[M].北京:國(guó)防工業(yè)出版社,2008:39.
[3]李少遠(yuǎn),王景成.智能控制[M].北京:機(jī)械工業(yè)出版社,2005:53-83.
[4]戴仙金.51單片機(jī)C語(yǔ)言程序開(kāi)發(fā)實(shí)例[M].北京:清華大學(xué)出版社,2008:323-429.