隨著信息技術(shù)的飛速發(fā)展,無線通信技術(shù)正在向各個領(lǐng)域滲透,特別是利用紅外線進(jìn)行通信,無論從小型化、輕量化、還是從安全性等方面考慮,其可行性都比較高。本文主要研究步進(jìn)電機(jī)在手動、自動控制模式下,通過增加紅外遙控模式以實現(xiàn)步進(jìn)電機(jī)的多功能操作。
摘要:介紹了以89C2051單片機(jī)為核心,針對步進(jìn)電機(jī)在手動和自動控制模式的基礎(chǔ)上,設(shè)計出能夠?qū)崿F(xiàn)遙控操作的控制器。以四相五線步進(jìn)電機(jī)為研究對象,以集成紅外接收器接收遙控器發(fā)來的信號作為輸入信號,并送單片機(jī)進(jìn)行解碼,單片機(jī)根據(jù)接收的輸入信號進(jìn)行運算處理后,發(fā)出控制命令送步進(jìn)驅(qū)動器,驅(qū)動步進(jìn)電機(jī)工作。實現(xiàn)了步進(jìn)電機(jī)的手動、自動及遙控方式下的正反轉(zhuǎn),還實現(xiàn)定時時鐘控制以及LCD狀態(tài)顯示等功能。
關(guān)鍵詞:步進(jìn)電機(jī),自動控制,手動,遙控
步進(jìn)電機(jī)是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓位移的開環(huán)控制元件。在非超載情況下,電機(jī)的轉(zhuǎn)速、停止的位置取決于脈沖信號的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機(jī)加一個脈沖信號,電機(jī)則轉(zhuǎn)過一個步距角。由于這一關(guān)系的存在,加上步進(jìn)電機(jī)只有周期性的誤差而無累積誤差等特點,使得在速度、位置等控制領(lǐng)域用步進(jìn)電機(jī)來控制變的非常的簡單,更加方便用戶的應(yīng)用與掌握。
1控制器組成
為了能夠?qū)崿F(xiàn)步進(jìn)電機(jī)的手動、自動及遙控等多功能操作模式,設(shè)計出如圖1所示的系統(tǒng)組成原理圖。由圖1知,該系統(tǒng)主要由傳感器、A/D轉(zhuǎn)換器、手動輸入控制、紅外線接收與發(fā)送電路、時鐘控制電路、顯示電路、電機(jī)驅(qū)動、步進(jìn)電機(jī)及單片機(jī)控制器等部分組成。
其中手動輸入控制電路主要用來實現(xiàn)系統(tǒng)參數(shù)的設(shè)置,以便在手動模式下控制電機(jī)的正反轉(zhuǎn);時鐘控制電路一方面用來提供時鐘信息,另一方面可以實現(xiàn)步進(jìn)電機(jī)的定時啟動與停止;傳感器及A/D轉(zhuǎn)換電路主要實現(xiàn)自動狀態(tài)時,根據(jù)外部的檢測信號,通過軟件開發(fā)實現(xiàn)不同要求下步進(jìn)電機(jī)的自動運行;紅外發(fā)送與接收電路主要負(fù)責(zé)發(fā)送外部紅外控制信息及接收遙控器發(fā)送來的控制信息,并送給單片機(jī)控制器進(jìn)行解碼,從而發(fā)出控制命令;顯示電路主要實現(xiàn)對系統(tǒng)運行過程中的狀態(tài)信息及工作模式進(jìn)行顯示;單片機(jī)控制器是系統(tǒng)的核心部件,完成對輸入信號的采集,通過預(yù)先設(shè)置的算法進(jìn)行運算、判斷及處理,并發(fā)出控制命令或輸出相應(yīng)的顯示信息。電機(jī)驅(qū)動電路接收控制器發(fā)出的控制命令,驅(qū)動步進(jìn)電機(jī)實現(xiàn)正轉(zhuǎn)或反轉(zhuǎn)。
2硬件電路設(shè)計
根據(jù)圖1所示組成框圖,選擇89C2051單片機(jī)作為控制器,以4×4輸入鍵盤和按鈕作為手動輸入電路,選用DS1302作為時鐘電路,以LCD1602作為輸出顯示電路,選擇HS0038作為紅外接收電路,采用PCF8591作為A/D轉(zhuǎn)換裝置,傳感器選擇了光敏元件。選用ULN2003步進(jìn)驅(qū)動器,對型號為28BYJ48型步進(jìn)電機(jī)進(jìn)行驅(qū)動。下面主要介紹步進(jìn)電機(jī)及步進(jìn)驅(qū)動器,紅外接收及時鐘電路的設(shè)計。
2.1步進(jìn)電機(jī)及步進(jìn)驅(qū)動器
。1)步進(jìn)電機(jī)
步進(jìn)電機(jī)選用的是28BYJ48型四相八拍電機(jī),電壓為DC5V—DC12V。當(dāng)對步進(jìn)電機(jī)施加一系列連續(xù)不斷的控制脈沖時,它可以連續(xù)不斷地轉(zhuǎn)動。每一個脈沖信號對應(yīng)步進(jìn)電機(jī)的某一相或兩相繞組的通電狀態(tài)改變一次,也就對應(yīng)轉(zhuǎn)子轉(zhuǎn)過一定的角度(一個步距角)。當(dāng)通電狀態(tài)的改變完成一個循環(huán)時,轉(zhuǎn)子轉(zhuǎn)過一個齒距。四相步進(jìn)電機(jī)可以在不同的通電方式下運行,常見的通電方式有單(單相繞組通電)四拍(A-B-C-D-A),雙(雙相繞組通電)四拍(AB-BC-CD-DA-AB),八拍(A-AB-B-BC-C-CD-D-DA-A)。
。2)步進(jìn)驅(qū)動器
步進(jìn)驅(qū)動器采用的是ULN2003驅(qū)動器,它是一個單片高電壓、高電流的達(dá)林頓晶體管陣列集成電路。它是由7對NPN達(dá)林頓管組成的,它的高電壓輸出特性和陰極鉗位二極管可以轉(zhuǎn)換感應(yīng)負(fù)載。ULN2003是大電流驅(qū)動陣列,多用于單片機(jī)、智能儀表、PLC、數(shù)字量輸出卡等控制電路中?芍苯域(qū)動繼電器等負(fù)載。輸入5VTTL電平,輸出可達(dá)500mA/50V。達(dá)林頓管并聯(lián)可以承受更大的電流,ULN2003是高耐壓、大電流達(dá)林頓陳列。
(3)電機(jī)驅(qū)動電路
28BYJ48型步進(jìn)電機(jī)是4相5線的步進(jìn)電機(jī),而且是減速步進(jìn)電機(jī),減速比為1:64,步進(jìn)角為5.625/64度。如果需要轉(zhuǎn)一圈,那么需要360/5.625×64=4096個脈沖信號。該步進(jìn)電機(jī)的耗電流為200mA左右,采用ULN2003進(jìn)行驅(qū)動,驅(qū)動端口為P1.0(A),P1.1(B),P1.2(C),P1.3(D)。正轉(zhuǎn)次序:AB組–BC組--CD組--DA組(即一個脈沖,正轉(zhuǎn)5.625度);反轉(zhuǎn)次序:AB組--AD組--CD組--CB組(即一個脈沖,正轉(zhuǎn)5.625度),其接線原理如圖2所示。
其中MOT1~MOT4依次接單片機(jī)的P1.0~P1.3口。
2.2紅外線接收與發(fā)送電路
紅外線接收電路選用了型號為HS0038的集成紅外接收器,靜態(tài)時輸出端輸出高電平,當(dāng)接收到紅外信號后,按紅外信號的數(shù)據(jù)波形輸出負(fù)脈沖數(shù)據(jù)信號。HS0038工作頻率為38kHz,能對收到遙控信號進(jìn)行放大、檢波、整形、解調(diào),得到TTL電平的編碼信號,再送給單片機(jī),經(jīng)單片機(jī)解碼并執(zhí)行相關(guān)控制程序。
紅外接收電路的輸出接單片機(jī)的P3.2,該口對應(yīng)的第二功能是外部中斷0(INT0),利用該口的第二功能,一旦紅外線信號到來,P3.2被拉低,單片機(jī)中止當(dāng)前的工作轉(zhuǎn)移到接收、處理紅外信號。開啟中斷功能的目的,既減輕了單片機(jī)的工作負(fù)擔(dān),又保證接收到的紅外信號的完整性,單片機(jī)進(jìn)入睡眠后,利用外部中斷功能完成對單片機(jī)的喚醒,其接線圖如圖3所示。
紅外發(fā)送電路可選用昂達(dá)播放器的遙控器,也可采用電視遙控器。由于系統(tǒng)簡單,采用昂達(dá)播放器的遙控器。
2.3時鐘電路
時鐘電路采用DS1302集成芯片,其主要特點是采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通32768Hz晶振,步進(jìn)電機(jī)的啟閉時間都保存在DS1302自帶的RAM中,不需要單獨的EEPROM。DS1302與CPU的連接僅需要三條線,即SCLK(7)、I/O(6)、RST(5)。
3系統(tǒng)軟件設(shè)計
軟件系統(tǒng)主要包括主程序、紅外中斷子程序、A/D轉(zhuǎn)換子程序、顯示子程序、時鐘控制子程序及步進(jìn)電機(jī)程序。下面主要介紹紅外線解碼程序。
3.1紅外線解碼原理
昂達(dá)播放器的遙控器產(chǎn)生的遙控編碼是連續(xù)的32位二進(jìn)制碼組,其中前16位為用戶識別碼,能區(qū)別不同的電器設(shè)備,防止不同機(jī)種遙控碼互相干擾。該芯片的用戶識別碼固定高8位地址為0BFH,低8位地址為40H;后16位為8位操作碼(功能碼)及其反碼。
遙控器按鍵按下后,周期性地發(fā)出同一種32位二進(jìn)制碼,周期約為108ms。一組碼本身的持續(xù)時間隨它包含的二進(jìn)制“0”和“1”的個數(shù)不同而不同,大約在45~63ms之間。
當(dāng)一個鍵按下超過36ms,振蕩器使芯片激活,將發(fā)射一組108ms的編碼脈沖,這108ms發(fā)射代碼由一個起始碼(9ms),一個結(jié)果碼(4.5ms),低8位地址碼(9~18ms),高8位地址碼(9~18ms),8位數(shù)據(jù)碼(9~18ms)和這8位數(shù)據(jù)的反碼(9~18ms)組成。如果鍵按下超過108ms仍未松開,接下來發(fā)射的代碼(連發(fā)代碼)將僅由起始碼(9ms)和結(jié)束碼(2.5ms)組成。
其代碼寬度的計算方法為:
16位地址碼的最短寬度:1.12×16=18ms
16位地址碼的最長寬度:2.24ms×16=36ms
已知8位數(shù)據(jù)代碼及其8位反代碼的寬度和不變:(1.12ms+2.24ms)×8=27ms。所以得32位代碼的寬度為(18ms+27ms)~(36ms+27ms)
解碼的關(guān)鍵是如何識別“0”和“1”,代碼格式以接收代碼為準(zhǔn),接收代碼與發(fā)射代碼反向。從位的定義我們可以發(fā)現(xiàn)“0”、“1”均以0.56ms的低電平開始,不同的是高電平的寬度不同,“0”為0.56ms,“1”為1.68ms,所以必須根據(jù)高電平的寬度區(qū)別“0”和“1”。如果從0.56ms低電平過后,開始延時,0.56ms以后,若讀到的電平為低,說明該位為“0”,反之則為“1”,為了可靠起見,延時必須比0.56ms長些,但又不能超過1.12ms,否則如果該位為“0”,讀到的已是下一位的高電平,因此取(1.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms左右均可;根據(jù)碼的格式,應(yīng)該等待9ms的起始碼和4.5ms的結(jié)果碼完成后才能讀碼。
3.2解碼程序設(shè)計
根據(jù)以上分析,采用89C2051單片機(jī)實現(xiàn)紅外解解碼的思路為:有信號產(chǎn)生中斷→EA清零→延時小于9ms(低電平)→等待高電平的到來→延時小于4.5ms(高電平)→等待下一次高電平的到來→延時0.84ms左右→讀區(qū)P3.2腳電平值→再等待下一次高電平的到來→延時0.84ms左右→讀取P3.2腳電平值,依次取得32位代碼,前16位為識別碼,后18位既為8位數(shù)據(jù)碼和8位數(shù)據(jù)反碼。解碼中斷服務(wù)程序流程圖如圖4所示。
4結(jié)束語
通過系統(tǒng)調(diào)試及運行結(jié)果表明,采用步進(jìn)電機(jī)作為執(zhí)行元件,89C2051單片機(jī)作為控制器,光敏元件傳感器作為檢測元件,以手動輸入按鈕作為手動輸入信號,以紅外遙控裝置進(jìn)行遙控操作,并輔以時鐘控制及狀態(tài)顯示的步進(jìn)電機(jī)控制系統(tǒng),能夠方便實現(xiàn)步進(jìn)電機(jī)的手動、自動及遙控多功能操作,操作更加方便可靠。
參考文獻(xiàn)
[1]樊慶偉,許峰.紅外遙控接收與單片機(jī)識別技術(shù)[J].信息技術(shù),2005,5:6-17.
[2]江衍煊,鄭振杰.單片機(jī)連接ULN2003驅(qū)動步進(jìn)電機(jī)的應(yīng)用[J].機(jī)電元件2010,9,3.
[3]聶詩良,李磊民.采用單片機(jī)發(fā)送并接收紅外遙控信號的方法[J].信息技術(shù),2007,2,2.
轉(zhuǎn)載請注明來自:http://www.jinnzone.com/dianzijishulw/25373.html