夏 凡,王 粟,汪 峰
(湖北工業大學電氣與電子工程學院,湖北 武漢430068)
本設計采用型號為28BYJ48的步進電機,它是四相八拍永磁式減速電機,步距角度為5.625/64,減速比為1∶64,定位轉矩大于或等于300Nm[1].本設計通過控制脈沖的個數來控制角位移,達到準確定位的目的;同時通過控制脈沖頻率來控制電機轉動的速度和加速度,達到調速的目的.
由于步進電機不能直接采用直流或者普通交流供電,必須采用專門的步進電機驅動控制器,步進電機驅動控制器基本原理見圖1,由脈沖發生與分配單元、功率驅動單元、反饋與保護單元組成.

圖1 步進電機驅動控制基本原理框圖
綜合28BYJ48型步進電機的參數與步進電機的驅動特點,本設計采用四只9012的三極管,共集電極安放,將MC0-3電平反向輸出,以此增強電流驅動能力,具體原理圖如下:
當對步進電機施加一系列連續不斷的控制脈沖時,它可以連續不斷地轉動.每一個脈沖信號對應步進電機的某一相或兩相繞組的通電狀態改變一次,也就對應轉子轉過一定的角度(一個步距角).步進電機旋轉一周所需要的指令個數

其中m=8,即可以得到S′=4096.
那么旋轉一度所需要的指令數為4096/360,要旋轉N度,所需要的指令數

通過式(1)和式(2),達到準確控制步進電機旋轉角度的目的.

圖2 步進電機設計原理圖
當通電狀態的改變完成一個循環時,轉子轉過一個齒距.四相步進電機可以在不同的通電方式下運行,常見的通電方式有單(單相繞組通電)四拍(A-B-C-D-A…),雙(雙相繞組通電)四拍(ABBC-CD-DA-AB…),八拍(A-AB-B-BC-C-CD-D-DA-A…).驅動方式見圖3.

圖3 步進電機驅動方式示意圖
由運行人員通過單片機實時控制兩個不同平面的步進運轉,步進電機通過機械耦合連接到監控攝像頭上,當步進電機運行時,會帶動其監控攝像頭的相應旋轉.
具體而言,就是通過紅外通信遙控器和按鍵輸入器件,控制兩個步進電機的相應運轉,并由LED顯示出步進電機實時工作狀態,調節兩個不同平面的步進電機轉向時,監控攝像頭會在三維空間中任意角度旋轉;同時合理控制兩個步進電機轉速,使監控攝像頭勻速或加速度旋轉;預設步進電機的轉動圈數,讓運行人員自定義監控攝像頭的運轉時間,達到監控攝像頭定時旋轉的效果.系統結構框圖見圖4.

圖4 系統結構框圖
在清楚了解整個系統的原理后,即可對整個系統的硬件進行設計,主要有下面內容:單片機控制模塊,LED顯示模塊,紅外遙控模塊,按鍵輸入模塊,攝像頭組裝模塊等.
以STC89C51高性能CMOS 8位單片機為核心器件,具有以下標準功能:8KB Flash存儲器,256BRAM,32位I/O口線,看門狗定時器,2個數據指針,3個16位定時器/計數器,1個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路[1],它使用高密度、非易失性存儲器技術制造,按照設計原理一般化設計,不再贅述.
本系統采用的LCD是1602字符液晶模塊,能夠同時顯示16字、2行即32個字符.
由于硬件設計原因,該處I/O比較緊缺,故將P1口左側的JP14跳線跳帽到Motor一側(左側),LCD模塊的ADDR0到ADDR3四個口需要用杜邦線引出來,連接相對應的P3.0,P3.1,P3.2和P3.5口,以使LCD正常工作.

圖5 顯示譯碼與步進電機的選擇接口
采用HS0038作為紅外遙控接收端,HS0038是一個集紅外線信號接收和放大為一體的三端元器件,其中心接收頻率為38kHz,3個引腳分別為:1—地,2—電源,3—數據輸出.當接收到38kHz的紅外信號時,輸出端為低電平;沒有接收到38kHz的紅外信號時,輸出端為高電平.HS0038的具體硬件電路見圖6.

圖6 HS0038的硬件電路
由于系統中的其他模塊對端口占有不多,所以在鍵盤連接上采用每一排按鍵組成獨立式按鍵進行控制,共4排獨立式按鍵形成了矩陣按鍵(圖7).
本設計采用軟件去斗,即檢測出鍵閉合后執行一個延時程序,產生5~10ms的延時,讓前沿抖動消失后再一次檢測鍵的狀態,如果仍保持閉合狀態電平,則確認為真正有鍵按下[2].

圖7 按鍵電路
攝像頭組裝就是用來使監控攝像頭與兩個不同平面上的步進電機機械連接的部分.具體處理辦法是在步進電機的輸出軸上套裝一個齒輪套,該齒輪套與一個帶齒輪的支柱相嚙合,再將該支柱與監控攝像頭底座齒輪組相嚙合[3],由此,當步進電機左右旋轉時會帶動監控攝像頭底座齒輪旋轉,達到監控攝像頭自由旋轉的目的.
系統采用C語言模塊化結構軟件設計.隨著代碼量不斷加大,將所有代碼放在同一個C文件中使得程序結構混亂,可讀性和可移植性較差,采用模塊化設計,能夠有效解決此類問題.
仿真系統的程序在KEIL C51Vision3環境下編譯.程序主要包括:數據讀取程序、正反轉判斷程序、步進電機驅動程序和紅外遙控解碼程序(圖8).

圖8 主程序流程圖
程序設計過程中,分別將紅外DS1302、1602、蜂鳴器等程序模塊進行封裝,等待主函數的調用.從圖9中可以看出,單片機上電工作后,LCD顯示初始狀態信息平臺,控制步進電機驅動的定時器0子程序和控制紅外解碼的外部中斷1子程序等待相應指令.首先在主函數進行系統的初始化過程,設置定時器0的初始值、顯示LCD初始態等,當按鍵或紅外遙控輸入信號時,定時器0中斷子程序進行運行,對T0進行重裝初值,不停的統計脈沖個數,當滿足相關條件后,步進電機進行對應的驅動程序,程序運行代碼如下:
void motor_onoff()interrupt 1
{
TL0=0x33;
TH0=0xf5;
q++;
if(q<rate)
{return;}
else
{q=0;
number++;}//脈沖計數
if(number==4096)//64個脈沖電機轉一圈{snum--;
number=0;
number1++;}//電機轉動圈數
if(direction==1)//方向標志
{if(v<8)
{P1= FFW[v];v++;}//取數據,正轉
if(v==8)
{v=0;}
}
else
{if(v<8)
{P1= REV[v];v++;}//取數據,反轉
if(v==8)
{v=0;}
}
}
在外部中斷1子程序中,通過紅外遙控接收器獲取紅外信號,再通過紅外解碼程序進行紅外通信的解碼,將所獲取的鍵碼值存入相關數組,等待主程序的調用[4].
在運行主程序中,通過預設判斷是否滿足四種條件要求,如果滿足進入相應狀態,對步進電機進行控制;如果不滿足,則直接返回到等待獲取紅外程序,繼續等待.

圖9 中斷子程序流程圖
本文提出了一種基于51單片機紅外遙控監控攝像頭的方案,將在不同平面上的兩個步進電機機械組裝從而達到控制監控攝像頭的旋轉的目的.通過KEIL51軟件與Proteus軟硬件仿真驗證了本方案的可行性.和傳統的控制攝像頭方案相比,本設計特點是:穩定性好,可靠性高,實時性強,操作簡明.
在應用于實際中時,本設計的系統還存在一定不足,還需要考慮很多實際影響因素,比如兩個步進電機協調度問題,如何更加精準地控制監控攝像頭的旋轉角度,同時考慮如何將該系統產業化等等一些實際問題,展望未來,隨著技術朝著高精度、更穩定方向發展,設計中的一些死角問題也將得到很好的解決,從方案到實際應用還有一段路要走.
[1]劉波文,劉向宇,黎勝容.51單片機C語言應用開發[M].北京:北京航空航天大學出版社,2011:138-149.
[2]高 偉,曹國君.AT89單片機原理及應用[M].北京:國防工業出版社,2008:39.
[3]李少遠,王景成.智能控制[M].北京:機械工業出版社,2005:53-83.
[4]戴仙金.51單片機C語言程序開發實例[M].北京:清華大學出版社,2008:323-429.