□ 金建超 江蘇聯(lián)宏自動化系統(tǒng)工程有限公司
分體式空調(diào)紅外遙控編解碼研究及應(yīng)用
□ 金建超江蘇聯(lián)宏自動化系統(tǒng)工程有限公司
本文首先介紹了紅外通信的基本原理,然后提出一種利用Neuron芯片邊沿記錄輸入對象采集遙控器編碼,分析得出編碼脈沖組中每個脈沖的寬度、各個字節(jié)數(shù)據(jù)的方法。介紹一種基于Neuron的紅外遙控編碼的軟件實現(xiàn)。為各類紅外遙控控制在LonWorks節(jié)點設(shè)備中的開發(fā)應(yīng)用提供一個參考。
Neuron 芯片;紅外遙控;編解碼;研究
紅外遙控使用方便、功耗低、成本低廉,已經(jīng)得到了廣泛應(yīng)用。但都是針對各自的遙控對象(彩電、空調(diào)、DVD等),由專用CPU解碼,作為一般的單片機控制系統(tǒng)不能直接使用。本文探討了如何參考紅外遙控系統(tǒng)的原理,自行設(shè)計解碼電路和解碼、控制程序,利用現(xiàn)有遙控器使普通單片機控制系統(tǒng)嵌入紅外遙控技術(shù)。
紅外通信,即以紅外線作為通信載體,通過紅外光在空中的傳播來傳輸數(shù)據(jù)的通信方式,它由發(fā)射端和接收端來完成。在發(fā)射端,發(fā)送的數(shù)字信號經(jīng)過適當(dāng)?shù)恼{(diào)制編碼后,送入電光變換電路,經(jīng)紅外發(fā)射管轉(zhuǎn)變?yōu)榧t外光脈沖發(fā)射到空中;在接收端,紅外接收器對接收到的紅外光脈沖進行光電變換,解調(diào),再經(jīng)單片機處理,便可以恢復(fù)出原數(shù)據(jù)信號。
目前應(yīng)用中的各種紅外遙控系統(tǒng)的原理都大同小異,區(qū)別只是在于各系統(tǒng)的信號編碼格式不同,這里我們以運用比較廣泛,解碼比較容易的一類來加以說明,現(xiàn)以日本NEC的uPD6121G組成發(fā)射電路為例說明編碼原理。發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的“1”,其波形如圖2所示。
圖2 遙控碼的“0”和“1”上述“0”和“1”組成的32位二進制碼經(jīng)38kHz的載頻進行二次調(diào)制以提高發(fā)射效率,達到降低電源功耗的目的。然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射,如圖3所示。
圖3 遙控信號編碼波形圖
UPD6121G產(chǎn)生的遙控編碼是連續(xù)的32位二進制碼組,其中前16位為用戶識別碼,能區(qū)別不同的電器設(shè)備,防止不同機種遙控碼互相干擾。該芯片的用戶識別碼固定為十六進制01H;后16位為8位操作碼(功能碼)及其反碼。UPD6 121G最多額128種不同組合的編碼。遙控器在按鍵按下后,周期性地發(fā)出同一種32位二進制碼,周期約為108ms。一組碼本身的持續(xù)時間隨它包含的二進制“0”和“1”的個數(shù)不同而不同,大約在45—63ms之間,圖4為發(fā)射波形圖。
圖4 遙控連發(fā)信號波形
當(dāng)一個鍵按下超過36ms,振蕩器使芯片激活,將發(fā)射一組108ms的編碼脈沖,這108ms發(fā)射代碼由一個引導(dǎo)碼(9ms),一個結(jié)束碼(4.5ms),低8位地址碼(9ms~18ms),高8 位地址碼(9ms~18ms),8位數(shù)據(jù)碼(9ms~18ms)和這8位數(shù)據(jù)的反碼(9ms~18ms)組成。如果鍵按下超過108ms仍未松開,接下來發(fā)射的代碼(連發(fā)碼)將僅由起始碼(9ms)和結(jié)束碼(2.25ms)組成。
圖5 起始碼 連發(fā)碼
3.1紅外接收電路
接收電路可以使用一種集紅外線接收和放大于一體的一體化紅外線接收器,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號兼容的所有工作,而體積和普通的塑封三極管大小一樣,它適合于各種紅外線遙控和紅外線數(shù)據(jù)傳輸。
接收器對外只有3個引腳:Out、GND、Vcc與單片機接口非常方便,如圖6所示。
脈沖信號輸出接,直接接單片機的IO 口;2)GND接系統(tǒng)的地線(0V);3)Vcc接系統(tǒng)的電源正極(+5V)。
3.2紅外解碼過程
下面以志高空調(diào)遙控器為例,介紹一下紅外解碼的過程。將邏輯分析儀測試引腳接到紅外接收管輸出管腳,對準(zhǔn)接收管按下遙控器,得到以下波形。
通過分析儀的測量功能可以得出遙控編碼協(xié)議格式:
將Neuron芯片IO4設(shè)置為邊沿記錄輸入對象
IO_4 input edgelog clock(7) io_time_stream;
IO_4 input byte io_time_stream_level;
通過定義邊沿記錄輸入對象,Neuron可以用于連接諸如UPC條形閱讀器或紅外接收機等I/O設(shè)備。通過測量IO_4引腳輸入的比特流上升沿(默認(rèn))或下降沿之間的時間周期,來分析這些I/O設(shè)備產(chǎn)生的復(fù)雜波形。
將測量到的時間周期通過網(wǎng)絡(luò)變量輸出:
為方便分析將以上數(shù)據(jù)放到excel中分析(表格略).通過表格分析,將0/1比特流轉(zhuǎn)換成8位byte,轉(zhuǎn)換時低字節(jié)在前,高字節(jié)在后(LSB)??梢钥闯鲞@組波形解碼后得到的數(shù)據(jù)為:
起始碼 + {0xff,0x00,0xff,0x00,0xff,0x00,0x87,0x78,0xd5,0x2 a,0x2a,0xd5} + 結(jié)束碼。
4.1紅外發(fā)送電路
紅外發(fā)送時由PWM引腳產(chǎn)生38K調(diào)制信號,由FR_TX引腳輸出相應(yīng)的紅外編碼信息。實現(xiàn)相應(yīng)的紅外指令遙控控制。
4.2紅外編碼過程
紅外編碼即將解碼得到數(shù)據(jù)按對應(yīng)的紅外協(xié)議轉(zhuǎn)出成高低電平時序流發(fā)送出去,是解碼的逆過程。
發(fā)送起始碼:
Infrsend_L;
scaled_delay(480); // 約6.11MS
Infrsend_H;
scaled_delay(590); // 約7.412MS
發(fā)送bit“1”:
Infrsend_L;
scaled_delay(40); // 約0.53ms
Infrsend_H;
scaled_delay(133); // 約1.685ms
發(fā)送bit“0”:
Infrsend_L;
scaled_delay(40); // 約0.53ms
Infrsend_H;
scaled_delay(40); // 約0.53ms
發(fā)送結(jié)束碼:
Infrsend_L;
scaled_delay(40); //約0.53ms
Infrsend_H;
scaled_delay(590); //約7.43ms
Infrsend_L;
scaled_delay(40); //約0.53ms
Infrsend_H;
紅外發(fā)送子程序軟件流程圖:
本文介紹了利用Neuron芯片邊沿記錄輸入對象進行紅外解碼的詳細方法。在實際應(yīng)用中紅外編碼都有規(guī)律可循,例如同一遙控器溫度、模式等指令代碼都在固定的比特位,根據(jù)這些規(guī)律能進一步簡化解碼過程加快解碼效率。目前以上所介紹的遍解碼方法已經(jīng)應(yīng)用到多個工程項目中,實現(xiàn)了分體式空調(diào)的溫度模式遠程紅外控制的功能。使得分體式空調(diào)的用能監(jiān)測,統(tǒng)一控制管理成為可能。
[1]楊育紅.《LON網(wǎng)絡(luò)控制技術(shù)》,2001
[2]Echelon Corporation.《Neuron C Programmers Guide》
[3]Echelon Corporation,《5000 Databook》
[4]Echelon Corporation,《I/O Model Reference》
[5]Echelon Corporation,《LonMark SVNT Master List》