徐 志 何明華 林 武 湯云東
摘 要:提出了一類學習型遙控器的設計與實現,并對其工作原理、軟硬件進行簡單的介紹,詳細概述軟件中紅外遙控編碼學習的實現過程。該紅外遙控器采用測量脈沖寬度的原理,復制其紅外脈沖信號進行自學習,以軟件形式實現38 kHz載波,最后成功完成了對其他遙控器的學習。該裝置可以代替各種不同的遙控器控制家用電器。
關鍵詞:紅外遙控器;自學習;軟件載波;紅外脈沖信號
中圖分類號:TP368.1文獻標識碼:B
文章編號:1004 373X(2009)02 036 03
Design and Implement of a New Learning Remote-controller Based on Software Carrier Wave
XU Zhi,HE Minghua,LIN Wu,TANG Yundong
(College of Electrical Engineering and Automation,Fuzhou University,Fuzhou,350108,China)
Abstract:The design and realization of a new learning remote-controller are preposed,and the operating principle,the software and hardware about it is introduced simply,and the realization course of infrared controller′s code learning through software is narrated in details.The infrared remote controller is implemented by pulse width measuring,realizes self-learning function by copying infrared pulse signal and realizes 38kHz carrier wave based on software.At last,it has been successfully used in learning other remote controllers.The equipment can instead of several remote controllers and control many different electro-appliances.
Keywords:infrared remote controller;self-learning;software carrier wave;infrared pulse signal
0 引 言
紅外線遙控是目前使用最廣泛的一種通信和遙控方式,由于其具有結構簡單、體積小、功耗低、功能強、成本低等特點,因而廣泛應用于彩電、空調機、CD/VCD、錄像機家用電器設備及其工業控制中。隨著現在人們生活中家電日益增加的需要,使用紅外遙控器也越來越頻繁。因其各種紅外遙控器編碼格式不同[1],使得各種紅外遙控器不能兼容。經常需要更換遙控器,這也給人們生活帶來了不便。
目前國內學習型遙控器大多采用復制遙控器紅外波形達到學習目的,其方法簡單,實現起來較方便。但其采用專用遙控集成的芯片,導致設計復雜,成本高,并且遙控器的紅外信號形成都是采用紅外線遙控發射芯片產生,其集成度高,但價格昂貴。
在此介紹一種基于以AT89S52為核心的學習型紅外遙控器,通過測量紅外一體化接收頭輸出信號,并原樣地記錄其輸出脈沖寬度[2],然后保存在E2PROM,最后利用單片定時器中斷產生38 kHz載波信號,以軟件代替了硬件,節約了資源。該學習型紅外遙控器能成功地學習各種紅外遙控設備的編碼,并通過38 kHz載波發送學習到的記憶信號。實現了對各種各樣紅外遙控的學習,從而變成了真正的自學習遙控器。
1 學習型紅外遙控器系統
1.1 學習型紅外遙控器的原理
從家用萬能學習型紅外遙控一般原理出發,其可以分為2類:固定碼式學習遙控器和波形拷貝式學習遙控器[3]。前者,主要通過收集各種不同種類的遙控器信號,然后分而治之。這種學習型遙控器對硬件要求相對簡單,控制器的工作頻率不高,存儲容量大,其缺點是對未知遙控器無效。后者,主要是把原始遙控器所發出的信號進行完全拷貝,而不管遙控器是什么格式,進行適當的壓縮后,存儲在ROM存儲器中,當發射時,只需將儲存器中讀出的遙控編碼,還原成原始信號,便完成了學習功能。此學習型遙控器對MCU的主頻要求高,RAM要求大,其優點是對任何一種紅外遙控器可以進行學習。下面主要以第二種方法進行設計。
1.2 學習型紅外遙控器基本硬件組成
學習型紅外遙控器由單片機、紅外發射電路、紅外一體化接收頭、E2PROM存儲電路,矩陣鍵盤及LED指示燈構成[4],如圖1所示。單片機AT89S52構成紅外遙控的處理器,其數據存儲器RAM(258 B)用來存儲學習過程中編碼信號的脈沖寬度;紅外發射電路:用遙控脈沖信號調制38 kHz方波,經過三極管放大后,驅動紅外發光二極管,其中38 kHz載波由AT89S52定時器T0產生。紅外一體化接收頭:紅外接收頭輸出的信號經過檢波、整形、放大、解調38 kHz載波信號,其輸出信號為TTL高低電平。外接E2PROM存儲器:存放學習到的高低電平信號的脈寬值。
1.3 系統軟件設計
學習型遙控器的設計性能及實現與其軟件設計編寫具有密切的關系,特別是碼寬計數的采集周期及計數器采用的位數都關系到能否精確采集到遙控編碼信號。編碼寬度計數的采樣周期在編程中須經過多次實驗測試才能決定。該設計讀碼采樣周期大約為12 μs。
讀遙控編碼的計數器采用16位計數器,采樣時間在0~786.432 ms之間。其值保存在設定的數據存儲器中,然后寫入到外部E2PROM存儲器中,發射過程再從外部的E2PROM存儲器讀出,通過38 kHz載波發送編碼信號。
2 紅外遙控編碼學習與軟件載波的發射
2.1 紅外遙控信號編碼結構分析
紅外遙控器發射的遙控編碼脈沖由起始碼、系統碼、功能碼、功能碼的反碼組成[5],如圖2所示。起始碼是1個遙控碼的起始部分,由1個高電平和1個低電平組成,作為接收數據的準備脈沖。這些編碼是經38 kHz的載波脈沖調制后發射出去。
通過分析大量不同類型的紅外遙控碼波形,遙控碼的數據幀間歇寬度均為10 ms以上,起始碼的高電平均為5 ms 以上,通常為9 ms左右。編碼位在10 μs~5 ms之間,在設計中,只考慮遙控器發射信號的高低電平寬度,不考慮其編碼方式,以簡化設計[6]。
2.2 紅外遙控信號編碼學習軟件設計
一般紅外遙控器的的紅外信號都是通過38~40 kHz(周期大約為26.3 μs)進行載波調制而成的,經過載波后信號的脈沖寬度與單片機的指令周期時間(12 MHz晶振的指令周期為1 μs)數量級差不多。如果直接記錄載波信號的脈沖寬度,這樣誤差很大,必須對載波信號進行解調后,方可記錄此時遙控編碼信號的脈沖寬度。
在設計中采用計數器對信號高低電平計時的方法來采集數據并保存。當系統識別到起始碼的低電平時,系統啟動設計的采集信號對低電平進行采集,同時計數器開始計數,當起始碼的低電平結束時,并保存計數器此時的值,記錄下起始碼的低電平信號脈沖寬度值。然后依次保存采集到的編碼信號脈沖寬度值,如果采集到編碼信號位數大于設定值M(程序中設定值),就認為編碼采集已經結束,學習子程序結束,如圖3所示:
2.3 紅外遙控信號的發射
由軟件實現遙控信號的載波合成,用定時中斷0產生38 kHz的載波信號,用學習到的遙控編碼信號的低電平去控制載波的輸出,此時定時器0定時長度由相應的遙控信號低電平寬度計數值確定,即如果需發射的遙控信號為高電平時,關定時中斷0;如果為低電平,則開定時中斷0。輸出38 kHz 載波信號到紅外發射控制腳(P3.7),從而實現遙控信號的脈寬調制發射。不考慮紅外信號的編碼方式,只采集其高低電平寬度的方法,如圖4所示。
發射時并不需要用到38 kHz載波電路,而是采用以單片機的定時器T0產生載波,程序代碼[7]如下所示:
TMOD=0X02;//定時器0工作于方式2
TH0=0XF3; //定時器0定時26.3 μs,以產生38 kHz載波
TL0=0XF3;
EA=1;//開總中斷允許
ET0=1; //開定時器1中斷允許
TR0=1;//開定時器0,產生38 kHz載波
void timer0(void)interrupt 1
{ remoteout=~remoteout;}//遙控信號38 kHz載波輸出
用學習到的脈沖高低電平(0和1信號)來控制38 kHz的輸出,然后經三極管放大信號,編碼信號經二極管以38 kHz載波形式發射,這樣以軟件替代硬件,使電路簡化,有效實現了紅外遙控信號的接收和轉發。如圖5所示。
2.4 紅外編碼脈沖
學習型紅外遙控器對微處理器的頻率要求比較高,選擇單片機的晶振頻率12 MHz,其頻率大小直接影響到遙控器的學習效果。通過系統設計的遙控器學習效果優良,能學習到的各種紅外脈沖。
圖6以Ht6221標準紅外遙控器為例,其波形為“1”鍵的紅外編碼脈沖。圖6(a)的編碼脈沖是學習型紅外遙控器學習到的,圖6(b)的編碼脈沖是Ht6221標準紅外遙控器發射出的,學習到的“1”號鍵完全能取代原始的遙控器的“1”號鍵。遙控器發射電路中的38 kHz載波用單片機中的定時器產生,這樣節約了硬件資源,簡化了電路。
3 結 語
該次設計中紅外遙控器,可以準確采集到紅外編碼脈沖信號,并將原始的紅外編碼信號保存,發送,能成功學習各種不同家用紅外遙控器,對各種家用紅外遙控器進行控制,解決了家庭用戶眾多遙控器的煩勞。
參考文獻
[1]邱士安.通用遙控器的解決方案[J].昆明理工大學學報 2001(26):197-199.
[2]蘆健,彭軍,顏自勇,等.自學習智能型紅外遙控器的設計[J].國外電子測量技術,2006,25(8):63-65.
[3]張勁.淺談學習型遙控器[J].有線電視技術,2007(6):12-13.
[4]徐淑萍,譚寶成.智能型紅外遙控器的研制[J].現代電子技術,2002,25(1):44-45.
[5]王永華,周衛,詹宜巨,等.一種通用學習型紅外遙控器設計與實現[J].應用技術,2005(2):18-19.
[6] 樓然苗,李光飛.51系統單片機設計實例[M].北京:北京航空航天大學出版社,2006.
[7]蘇長贊.實用遙控技術手冊[M].北京:北京人民郵電出版社,1996.
[8]李遲生.智能遙控器的設計[J].電子技術應用,1997(3):38-40.
[9]嚴后選,孫健國,張天宏.無線紅外智能遙控器的設計[J].測控技術,2003,22(3):54-56.
[10]馬忠梅,籍順心,馬凱,等.單片機的C語言應用程序設計[M].北京:北京航空航天大學出版社,2007.
作者簡介 徐 志 男,1981年出生,碩士研究生。主要研究方向為單片機、嵌入式、無線遙控。
何明華 男,1971年出生,教授。主要研究方向為嵌入式系統與系統級芯片設計。
林 武 男,1984年出生,碩士研究生。主要研究方向為嵌入式系統。