沈航,林淼,吳洪玲,胡鋼,陳超
(1.研祥智能科技股份有限公司,廣東深圳 518107;2.廣東省工業(yè)邊緣智能創(chuàng)新中心,廣東深圳 518107)
紅外光是電磁波的一種,其波長處于微波與紅光之間。在電磁波譜當中,間隔為0.76~1 000 μm的波譜段即為紅外光譜區(qū)[1-2]。自20世紀80年代以來,紅外遙控技術(shù)在日本開始流行起來,主要的應用范疇在電視機中[3]。紅外通信作為一種在電子設備中廣泛應用的無線通訊技術(shù),具有移動通信設備所必需的體積小、功率低的特點,其傳輸速率適用于家庭和辦公室網(wǎng)絡環(huán)境;且傳輸信號無干擾,傳輸準確度高。紅外遙控是指利用波長為0.76~1.5 μm之間的近紅外線來傳送控制信號。紅外遙控是一種非接觸的無線控制技術(shù),工業(yè)設備中,在高壓、輻射、有毒氣體、粉塵等環(huán)境下,采用紅外遙控能有效隔離電氣干擾,安全可靠[4-5]。一般紅外遙控系統(tǒng)分發(fā)射和接收兩個組成部分,其中發(fā)射部分主要元件為紅外發(fā)光二極管。紅外遙控常用38 kHz載波頻率,軟硬件實現(xiàn)方式各異,本文考慮軟件實現(xiàn)電路板元件少,經(jīng)濟實用,選用軟件方式實現(xiàn)38 kHz載波。
目前紅外遙控技術(shù)的主要應用有儀器儀表智能化的現(xiàn)代系統(tǒng)、工業(yè)設備中的輸入控制等。在本文中,紅外遙控解碼器主要體現(xiàn)在工業(yè)設備控制,企業(yè)在生產(chǎn)帶遙控器產(chǎn)品時會使用多種編碼類型的遙控器,常見的遙控編碼包括RC5、NEC、Toshiba、RCA、MITSHIBISHI、Sanyo等。在實際工業(yè)生產(chǎn)遙控器當中,會碰到不同編碼的遙控器對應不同的產(chǎn)品,而在對這些遙控器做產(chǎn)品檢測時,需要根據(jù)對應遙控碼來匹配相應的工業(yè)系統(tǒng)遙控器進行設備遙控檢測[6]。因此,當前遙控器產(chǎn)品檢測需要多種遙控器進行人工檢測,浪費成本,操作復雜。
本文針對遙控器產(chǎn)品“一遙控碼對應一遙控器”的檢測問題,基于通用的紅外通信、解碼環(huán)境,設計一種實現(xiàn)多種編解碼方式的紅外遙控解碼器,基于串口通信協(xié)議約定,設計串口通信數(shù)據(jù)幀格式,將紅外遙控碼封裝為數(shù)據(jù)幀,利用38 kHz載波實現(xiàn)紅外遙控,將遙控碼編碼規(guī)則轉(zhuǎn)換成指令脈沖編碼信號驅(qū)動紅外發(fā)射。對本文提出的設計方法,通過應用演示證明了其有效性。
紅外遙控解碼器架構(gòu)如圖1所示。紅外遙控解碼器通過串口接口與電腦主板連接,當單片機編碼IC接收到電腦主板發(fā)送來的數(shù)據(jù)后,驅(qū)動紅外發(fā)射管發(fā)送紅外信號。通過紅外遙控解碼器發(fā)射電路、發(fā)射機、接收電路、信號解調(diào)、紅外信號的接收[7],搭建紅外通信、解碼環(huán)境。紅外遙控解碼器在接收到遙控器發(fā)送的紅外光信號后,對紅外光信號進行解碼,將紅外光信號轉(zhuǎn)換成數(shù)字信號,得到數(shù)字遙控碼,將數(shù)字遙控碼轉(zhuǎn)換成十六進制的遙控鍵值。紅外遙控解碼器把遙控鍵值通過遙控解碼器的八段數(shù)碼管顯示出來,讓用戶清晰可見;同時把遙控鍵值通過單片機串口按照指定協(xié)議傳輸給其他儀器設備,以控制其他儀器設備運轉(zhuǎn)。
圖1 紅外遙控解碼器架構(gòu)
單片機的P3.0接紅外發(fā)射管LED G,連接圖如圖2所示(以SC51P0304單片機作為處理器為例)。紅外發(fā)光二極管發(fā)出紅外光波,經(jīng)調(diào)制后,將紅外發(fā)射器發(fā)射的紅外光轉(zhuǎn)換為相應的電信號,再送到后置放大器。發(fā)射機由調(diào)制電路、驅(qū)動電路、指令鍵、指令編碼系統(tǒng)、發(fā)射電路等幾部分組成,當按下指令鍵或推動操作桿時,指令編碼電路產(chǎn)生指令編碼信號,對載波進行調(diào)制,再由驅(qū)動電路進行功率放大后由發(fā)射電路向外發(fā)射經(jīng)調(diào)制定的指令編碼信號。接收電路由放大電路、指令譯碼電路、調(diào)制電路、驅(qū)動電路、執(zhí)行電路等組成,接收電路接收發(fā)射器發(fā)出的編碼指令信號,并進行放大后送解調(diào)電路,解調(diào)電路將指令編碼信號解調(diào)出來,還原為編碼信號,指令譯碼器將編碼指令信號進行譯碼,最后由驅(qū)動電路來驅(qū)動執(zhí)行實現(xiàn)各種指令的操作控制[8-9]。
圖2 P3.0接紅外發(fā)射管LED G的連接示意圖
紅外信號解調(diào)將一體化紅外接頭讀取到的信號儲存起來,對實際測試編碼進行比較,相同后輸出即可,紅外信號的接收采用一體化紅外接收頭,將紅外接收管、放大器、濾波器及解調(diào)器集成在個硅片上,不僅尺寸小、無需外部元件,并且具有抗光電干擾性能好、接收角度寬等特點[10-11]。
紅外遙控解碼器架構(gòu)主要含電腦主板端、單片機及紅外發(fā)光二極管,電腦主板為控制端,基于此架構(gòu),實現(xiàn)紅外通信解碼,一方面將各種類型遙控碼編碼規(guī)則寫入單片機,設計一種串口通信數(shù)據(jù)幀格式,基于串口通信協(xié)議約定及遙控碼編碼規(guī)則,將電腦主板遙控碼控制信號封裝成遙控碼數(shù)據(jù)幀傳輸給單片機,實現(xiàn)電腦主板端與解碼器單片機串口通信數(shù)據(jù)傳輸;另一方面,38 kHz載波實現(xiàn)紅外發(fā)射過程,需要在單片機接收到電腦主板串口數(shù)據(jù)幀中遙控碼信號時,設計遙控碼編碼規(guī)則轉(zhuǎn)換成指令脈沖編碼信號,驅(qū)動紅外發(fā)射管發(fā)送紅外信號。
單片機與電腦主板控制端通過串口通信協(xié)議進行通信,串口通信協(xié)議約定如下:波特率9 600,數(shù)據(jù)位8,停止位2,校驗位None。紅外遙控解碼器要實現(xiàn)多種遙控碼兼容,必須把所有類型的遙控碼編碼規(guī)則寫入單片機中,同時為了區(qū)分遙控碼類型,設計單片機與主控端串口通信數(shù)據(jù)幀格式如表1所示。
表1 電腦主板控制端與單片機串口通信數(shù)據(jù)幀格式
紅外碼類型定義:0x00研祥碼;0x01 TOSHIBA碼;0x02 NEC碼;0x03 MITSUBISHI碼;0x0n。編碼規(guī)則接收一個完整的碼包括:兩個3 ms的頭脈沖,八位客戶碼,接下來是遙控碼,最后是4.5 ms的保護碼。接收碼必須要驗證頭脈沖寬度、客戶碼、保護脈沖寬度3個部分都是正確的才可以保證所接收碼的正確性。根據(jù)數(shù)據(jù)幀規(guī)則,研祥碼數(shù)據(jù)幀為:0xA5 0x5A 0x000x02客戶碼數(shù)據(jù)碼,其他遙控碼按其對應的編碼規(guī)則進行編排。
基于以上方法,解碼器將遙控碼編碼信號封裝成數(shù)據(jù)幀通過串口發(fā)送給單片機,比如用戶在控制端遙控碼類型項選擇研祥碼,遙控碼項選擇0x02作為客戶碼,0x1C作為數(shù)據(jù)碼,封裝成數(shù)據(jù)幀為:0xA5 0x5A 0x00 0x02 0x02 0x1C,通過串口發(fā)送給單片機。
紅外發(fā)射將單片機指令脈沖編碼信號調(diào)制在載波振蕩器產(chǎn)生的載波上,用脈碼調(diào)制信號驅(qū)動紅外發(fā)光二極管發(fā)出經(jīng)過調(diào)制的紅外光波。紅外遙控解碼器將二進制脈沖碼調(diào)制在38 kHz載波上,緩沖放大后送至紅外發(fā)光二極管,轉(zhuǎn)化為紅外信號發(fā)射出去。發(fā)射紅外遙控碼過程如圖3所示(以SC51P0304單片機作為處理器為例)。
圖3 發(fā)射紅外遙控碼過程
為實現(xiàn)38 kHz載波頻率,單片機內(nèi)置定時器產(chǎn)生周期性26.3μs的矩形脈沖,定時器產(chǎn)生中斷輸出一個相反的信號使輸出端產(chǎn)生周期的38 kHz脈沖信號。二進制脈沖碼的形式最為常用的是PWM碼(脈沖寬度調(diào)制碼)和PPM碼(脈沖位置調(diào)制碼)[12],PWM碼和PPM碼分別代表NEC碼和PHILIPS的RC-5碼、RC-6碼等。本文設計采用PPM碼,以寬脈沖表示1,窄脈沖表示0。碼位寬的代表1,碼位窄的代表0。紅外碼發(fā)送處理過程如圖4所示(以SC51P0304單片機作為處理器為例)。
圖4 紅外碼發(fā)送處理過程
遙控碼編碼脈沖信號由碼、功能碼、功能反碼、系統(tǒng)碼、系統(tǒng)反碼等信號組成。引導碼由寬度為3 ms的高電平和寬度為3 ms的低電平組成,用來標志遙控編碼脈沖信號的開始。功能碼代表相應的控制功能,接收機可根據(jù)功能碼的數(shù)值完成各種功能操作[13-14]。系統(tǒng)碼用來指示遙控系統(tǒng)的種類,以區(qū)別其他遙控系統(tǒng),防止各遙控系統(tǒng)的誤動作,系統(tǒng)反碼與功能反碼分別是系統(tǒng)碼與功能碼的反碼,反碼的加入是為了能在接收端校對傳輸過程中數(shù)據(jù)是否產(chǎn)生差錯。
對于同一臺設備,功能碼是固定的,在發(fā)送紅外碼時,將要發(fā)送的功能碼按指定的遙控碼編碼規(guī)則轉(zhuǎn)換成指令脈沖編碼信號,將指令脈沖編碼信號調(diào)制在38 kHz的載波上即可[5]。在轉(zhuǎn)換指令脈沖編碼信號階段,根據(jù)接收到的串口數(shù)據(jù)幀中的遙控碼類型標識來進行轉(zhuǎn)換,指定類型按指定遙控碼編碼規(guī)則進行轉(zhuǎn)換,實現(xiàn)遙控解碼器支持多種類型的遙控碼發(fā)射。
把USB連接線的一端接到遙控解碼器的USB接口上,另一端接到儀器或設備的USB接口上;按下遙控解碼器的電源開關(guān),遙控解碼器啟動初始化程序,大約200 ms,初始化完成進入工作狀態(tài)。初始化完成后,數(shù)碼管顯示兩個0:用遙控器對著遙控解碼器的紅外接收器按鍵,其對應的遙控鍵值就出現(xiàn)在遙控解碼器的數(shù)碼管上,按下電視機遙控器的信號選擇鍵,1C顯示在數(shù)碼管上。同時,如果接收儀器/設備端成功安裝了USB轉(zhuǎn)串口驅(qū)動并且啟動了串口工具,可看到串口軟件接收到一串數(shù)據(jù):A5 5A 00 02 02 1C,其中,“A5 5A”是協(xié)議頭,“00”是遙控碼類型,“02”是遙控碼數(shù)據(jù)長度,“02 1C”是遙控碼數(shù)據(jù)。遙控解碼器的電源開關(guān)和紅外接收器指示如圖5所示。
圖5 遙控解碼器的電源開關(guān)和紅外接收器指示
本文設計了一款實現(xiàn)多種編解碼方式的紅外遙控解碼器,解碼器通過基于串口通信的紅外遙控碼封裝方法,實現(xiàn)多種類遙控碼的數(shù)據(jù)幀封,并基于38 kHz載波實現(xiàn)遙控碼編碼脈沖信號調(diào)制,驅(qū)動對應紅外發(fā)射。將本文解碼器引入不同編碼遙控器的檢測當中,能夠解決當前在對帶遙控器產(chǎn)品做檢測時,需要使用多種遙控器做人工檢測,浪費遙控器制作成本、操作復雜、浪費人力以及增加工人學習難度的問題,可普遍應用于工業(yè)自動化領域,大大提升設備控制效率和準確率。