最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請幫忙分析一款“學習型紅外遙控器”

作者:allstudy 欄目:單片機
請幫忙分析一款“學習型紅外遙控器”
    最近發(fā)現(xiàn)家里遙控器老是弄混(唉,遙控器多了,也是一件麻煩事)。如果有一種可對家中各種紅外遙控器發(fā)射的控制信號進行識別、存儲和再現(xiàn)的智能型紅外遙控器,用這樣一個遙控器控制家中所有電器該多好。這就是大家稱作的學習型紅外遙控器。于是,下了不少工夫查找了許多資料,對紅外遙控也做了一點表面研究,現(xiàn)總結(jié)一點文檔,與大家一同探討(有不對之處,請大家指正。;另外由于本人愚頓還未開竅,還有部分東西想不太明白,在此也向?qū)<覀冋埥,請知道的老兄支點招,在此小弟先謝過了!!
一、紅外遙控概述
    紅外遙控系統(tǒng)一般都是由發(fā)射部分和接收部分組成。
    1、發(fā)射部分的主要元件為紅外發(fā)光二極管。它實際上是一只特殊的發(fā)光二極管,由于其內(nèi)部材料不同于普通發(fā)光二極管,因而在其兩端施加一定電壓時,它發(fā)出的便是紅外線而不是可見光。目前大量使用的紅外發(fā)光二極管發(fā)出的紅外線波長為940nm左右,外形與普通Φ5發(fā)光二極管相同,只是顏色不同。

    2、接收部分主要元件是紅外接收管,它是一種光敏二極管(實際上是三極管,基極為感光部分)。在實際應用中要給紅外接收二極管加反向偏壓,它才能正常工作,亦即紅外接收二極管在電路中應用時是反向運用,這樣才能獲得較高的靈敏度。
    由于紅外發(fā)光二極管的發(fā)射功率一般都較小(100mW左右),所以紅外接收二極管接收到的信號比較微弱,因此就要增加高增益放大電路。前些年常用μPC1373H、CX20106A等紅外接收專用放大電路。最近幾年不論是業(yè)余制作還是正式產(chǎn)品,大多都采用成品紅外接收頭。成品紅外接收頭的封裝大致有兩種:一種采用鐵皮屏蔽;一種是塑料封裝(如圖中的HS0038),均有三只引腳,即電源正(VDD)、電源負(GND)和數(shù)據(jù)輸出(VO或OUT)。紅外接收頭的引腳排列因型號不同而不盡相同,可參考廠家的使用說明。成品紅外接收頭的優(yōu)點是不需要復雜的調(diào)試和外殼屏蔽,使用起來如同一只三極管,非常方便。但在使用時注意成品紅外接收頭的載波頻率。
http://bbs.21ic.com/upfiles/img/200682114849807.jpg(圖一)
    
    3、紅外通信的基本原理是發(fā)送端將基帶二進制信號調(diào)制為一系列的脈沖串信號,通過紅外發(fā)射管發(fā)射紅外信號。常用的有通過脈沖寬度來實現(xiàn)信號調(diào)制的脈寬調(diào)制(PWM)和通過脈沖串之間的時間間隔來實現(xiàn)信號調(diào)制的脈時調(diào)制(PPM)兩種方法。
    紅外遙控常用的載波頻率為38KHZ,這是由發(fā)射端編碼芯片所使用的455KHZ晶振來決定的。在發(fā)射端要對晶振進行整數(shù)分頻,分頻系數(shù)一般取12,所以455KHZ÷12≈37.9 kHz≈38KHZ。也有一些遙控系統(tǒng)采用36kHz、40kHz、56kHz等。
    紅外遙控的特點是不影響周邊環(huán)境、不干擾其它電器設備。由于其無法穿透墻壁,故不同房間的家用電器可使用通用的遙控器而不會產(chǎn)生相互干擾;電路調(diào)試簡單,只要按給定電路連接無誤,一般不需任何調(diào)試即可投入工作;編解碼容易,可進行多路遙控。
    由于各生產(chǎn)廠家生產(chǎn)了大量紅外遙控專用集成電路,需要時按圖索驥即可。因此,紅外遙控在家用電器、室內(nèi)近距離(小于10米)遙控中得到了廣泛的應用。

二、紅外遙控編碼標準
    目前市面上出現(xiàn)的遙控編碼有很多種,但常用的紅外遙控編碼主要是NEC標準和PHILIPS標準,其它都是這兩類的變種。
1、NEC編碼標準:編碼芯片有PT2221/PT2222、HT6221/HT6222等
此標準下的發(fā)射端所發(fā)射的一幀碼含有一個引導碼、8位用戶碼、8位用戶反碼,8位鍵數(shù)據(jù)碼、8位鍵數(shù)據(jù)反碼。引導碼由一個9ms的高電平和4.5ms的低電平組成。當按下持續(xù)時間超過108ms時,則發(fā)送簡碼(簡碼由9ms高電平和2.25ms的低電平組成)來告之接收端是某一個按一直按著,象電視的音量和頻道切換鍵都有此功能,簡碼與簡碼之間相隔是108ms!1”和“0”的區(qū)分采用脈沖位置調(diào)制方式(PPM)。如下圖所示:
../uploadfile/200705141459353767.jpg(圖二)

2、PHILIPS的RC-5編碼標準:編碼芯片有SAA3010、PT2210/PT2211/PT1215、HT6230
    RC-5編碼標準的一幀有以下幾部分組成:
1)起始碼部分  2個邏輯1;
2)控制碼部分,1位;
3)系統(tǒng)碼部分,5位;
4)指令碼部分,6位。
    連續(xù)發(fā)射時,重復波形與第一次發(fā)射波形相同?刂拼a位在前后再次按鍵中交替改變。0和1碼傳送采用雙相位編碼發(fā)送技術。編碼規(guī)則如下圖所示:
http://bbs.21ic.com/upfiles/img/20068211485728.jpg(圖三)

3、其它變種的編碼類型
    像TC9028、PT2212、PT2213等芯片的碼型與NEC標準類似,只是引導碼變?yōu)?.5ms高電平+4.5ms低電平,簡碼4.5ms高電平+4.5ms低電平+0.56ms高電平+1.68ms低電平+1.56ms高電平組成。
    像PT2461LC7461等芯片的碼型也是與NEC標準類似,數(shù)據(jù)幀長度變長了,引導碼+13位用戶碼+13位用戶反碼+8位鍵數(shù)據(jù)碼+8位鍵數(shù)據(jù)反碼。簡碼為9ms高電平+4.5ms低電平+0.56ms高電平組成。

     三、紅外信號的學習與再生(學習型遙控器的電路和編程實現(xiàn))
    目前大多數(shù)人采用的方法都是用一體化接收頭做為信號的接收,然后把解調(diào)出來的信號送入單片機進行學習(記錄各個高低電平的時間長度),然后存入EEPROM內(nèi),學習OK后再發(fā)送的是把EEPROM的高低電平的時間數(shù)據(jù)讀取并與38KHZ載波進行調(diào)制然后發(fā)送出去。如下圖所示:
http://bbs.21ic.com/upfiles/img/200682114921928.jpg(圖四)
    例如:由AVR系列單片機ATMEGA8、一體化紅外接收頭HS0038、存儲器、還原調(diào)制與紅外發(fā)光管驅(qū)動電路組成。一體化紅外接收頭負責紅外遙控信號的解調(diào),將調(diào)制在38KHZ上的紅外脈沖信號解調(diào)并反向后再輸入到ATMEGA8的INT0引腳,邊沿觸發(fā)方式,并由單片機計數(shù)器進行高電平與低電平寬度的測量。
這里使用具有I2C總線接口的E2PROM 芯片AT24C32作為存儲器,其容量為4KB,用來保存識別出來的遙控信號的高電平與低電平寬度數(shù)據(jù)。通常遙控信號的二進制脈沖碼長為32位,每位由一個高電平與一個低電平組成,應保存的信號寬度數(shù)據(jù)為64個,再加上引導碼2個數(shù)據(jù),共計66個數(shù)據(jù),每個數(shù)據(jù)用一個字節(jié)來表示,一個遙控信號命令就需要66個字節(jié)來保存?紤]到不同的遙控系統(tǒng)有一定的區(qū)別,有些遙控信號命令長度較長,所以存儲空間應適當留有余量。在實際應用中,可根據(jù)紅外遙控設備的數(shù)量及每個設備的遙控命令數(shù)量等具體情況來決定E2PROM 芯片的容量和型號。

    遙控信號的還原和發(fā)射是通過單片機的一個IO口輸出二進制脈沖碼(高電平與低電平的維持時間為學習識別時保存的一組寬度數(shù)據(jù))與38KHZ載波進行調(diào)制,調(diào)制后的信號經(jīng)驅(qū)動后通過紅外發(fā)光管發(fā)射出去。
但這樣的處理方法,因為一體化紅外接收頭工作電壓一般都要求是5V,在供電能力方便的情況下采用這種方式還是不錯的,但如果想象普通遙控器一樣只能采用兩節(jié)干電池供電,那以上方法是沒法做到的。
后來我從市場買了一個自學習型遙控器,打開小研究了一番,其電路原理如下圖所示:
http://bbs.21ic.com/upfiles/img/200682114949720.jpg(圖五)
    
    另外,我用編程器讀出AT24C32內(nèi)的數(shù)據(jù),發(fā)現(xiàn)每一個按鍵對應于一個32字節(jié)的區(qū)域,也就是說一個按鍵的紅外信號經(jīng)單片機學習處理變成一個32字節(jié)的數(shù)據(jù),但這32個字節(jié)數(shù),我一個個鍵進行分析,但沒想明白它反應的是個什么的關系,像電視的電源開關鍵其32字節(jié)的數(shù)據(jù)為(這里學習的紅外遙控器信號是用NEC標準編碼的):
8B  2A  1F  09  56  00  0B  AA     31  75  00  00  00  00  00  00
00  00  00  F0  A5  55  4A  49     29  52  95  49  4A  49  00  F1
數(shù)字鍵1的32字節(jié)數(shù)據(jù)如下:
8F  2A  1F  09  56  00  0B  AA     31  75  00  00  00  00  00  00
00  00  00  F0  A5  55  4A  49     29  55  55  24  92  49  00  F1

現(xiàn)在有兩點我沒想明白:
1、這里接收紅外信號是采用紅外接收二級管,但這里經(jīng)三極管放大反向之后送入單片機口線上的信號還是調(diào)制在38KHZ的波形,也就是說這個波形是沒有經(jīng)過解調(diào)的。
我想弄明白的事:單片機是如何對這波形進行解調(diào)的嗎?或者說這單片機處理程序是并沒有進行解調(diào)而是直接記錄特征數(shù)據(jù),然后存入EEPROM,這樣又是如何做到的嗎?
2、存儲于EEPROM的32字節(jié)數(shù),是個什么樣的特征數(shù)據(jù),它能再生重新原樣的發(fā)射出去。
     能只用32個字節(jié)的數(shù)據(jù)記錄一個按鍵的紅外遙控信息,這比之前用66個字節(jié)(甚至更多)的方法來得更加簡潔,一個4K的EEPROMAT24C32)能夠記錄的按鍵數(shù)就多得多了。

一直沒想明白這兩個問題,這款學
2樓: >>參與討論
allstudy
可能是由于級別沒到,圖沒法直接顯示出來
只能通過網(wǎng)址打開

3樓: >>參與討論
allstudy
先浮起來,靜等
 
4樓: >>參與討論
gipsyer
資料收集的比較全
先頂一下

5樓: >>參與討論
gipsyer
個人意見
1.感覺主芯片可能不是一個單純的mcu,可能內(nèi)部集成了載波調(diào)制/解調(diào)功能,如果能查到芯片資料,那就能肯定了。
2.如果用66個字節(jié)表示一個遙控信號,那么可稱之為“萬能”遙控,單片機只起一個轉(zhuǎn)發(fā)功能,不必去關心遙控具體是什么協(xié)議。
至于你從市場買的自學習型遙控器,從你提供的數(shù)據(jù)分析,其實他并不是用32個字節(jié),只是用了4個字節(jié)(52  95  49  4A/55  55  24  92  49 )來識別不同的按鍵,這樣的話,單片機就要能識別出遙控器使用的協(xié)議(如NEC)。

6樓: >>參與討論
conanfans
載波不同怎么
 
7樓: >>參與討論
conanfans
載波不同怎么辦呢?
 
8樓: >>參與討論
sxl_72
學習型遙控器的學習是連載波一起學的
再按原格式一起發(fā)出,因為載波有很多,一般20k到120K都有,還有400k的,所以要一起學進去;第二,由于數(shù)據(jù)量大,所以最好要壓縮再存儲,我以前做到128字節(jié)儲存一個250bit長的數(shù)據(jù)碼(不是載波),因為空調(diào)的碼很長;第三,有些遙控器有跳碼,要特殊處理。
所以只學習38k的遙控器不能稱之為萬能遙控器。

9樓: >>參與討論
lanmp
400K載波
8M晶振夠用么

10樓: >>參與討論
sxl_72
誰告訴你是8M晶振的,當然在電路上下點功夫也是可以的
 
11樓: >>參與討論
allstudy
TO:gipsyer
1、單片機用的是EM78P156E(義隆的),接的是TCC腳,應該是計錄下降沿或上升
2、按你這樣理解,他首先單片機要能識別出編碼協(xié)議,然后再記錄四個它了的數(shù)值,我是用了個NEC編碼的遙控器得到的數(shù)據(jù)。另外我在家時有試著學習我的空調(diào)遙控器,春蘭空調(diào),發(fā)現(xiàn)學習不了(空調(diào)編碼太長了)

還是沒想能,-----

12樓: >>參與討論
allstudy
TO:sxl_72
我想確實如你所說的,需要把載波一同記錄下來,但單片機是如何記錄的呢?
另外,按你所說如何壓縮?能詳細說明一下嗎?
有相關資料能不能Email(all_study@163.com)一些給我,先謝謝過

* - 本貼最后修改時間:2006-9-28 15:07:30 修改者:allstudy

13樓: >>參與討論
sxl_72
資料我就沒有了
我曾開發(fā)過一款學習型遙控器,我只是說了一些我的做法:
我是將收到的信號接到單片機的一個外部觸發(fā)中斷腳上,然后計時。


14樓: >>參與討論
allstudy
TO:sxl_72
你是把載波也都記錄下來了,就是把包括載波在內(nèi)的所有高、低電平的時間數(shù)記錄下來,那這樣的時間數(shù)占用字節(jié)很長時,那就是要象你所說的壓縮再存儲,那能解釋一下,你是采用什么算法壓縮的嗎?

15樓: >>參與討論
lanmp
TO: allstudy
晶振用的是多少的?
EM78P156E只有13KBIT ROM和48byte RAM。真的能完成么?

16樓: >>參與討論
allstudy
TO:lanmp
用的是10MHZ晶振,我對這款MCU不熟
你理順了它的處理方式嗎?

17樓: >>參與討論
談的元
學習型遙控器的學習是連載波一起學的,基本不可能
 
18樓: >>參與討論
老怪物
呵呵.
 
19樓: >>參與討論
allstudy
請老怪物兄發(fā)表一下看法,謝謝
 
20樓: >>參與討論
sxl_72
這么肯定
學習型遙控器的學習是連載波一起學的,基本不可能
---------------------------------------------------為什么,請解釋,不過我的產(chǎn)品已在歐洲上市了,呵呵

21樓: >>參與討論
石湖天隨
請談的元兄談下你用什么方法來識別栽波頻率的?
 
22樓: >>參與討論
gipsyer
連載波一起?
TO:sxl_72
連載波一起學?難度很大.
1.首先MCU速度要足夠快,因為38KHZ(占空比為1/3)的高電平只有8.8us,對于一個12M的C51來說,一個但周期指令就要1us,要完成計數(shù)/判斷/存儲,還有誤差,太難了。
2.數(shù)據(jù)量太大,一個電平(高或低)就要用一個字節(jié)的話,10ms就要380字節(jié)。
當然,不是完全照搬,有載波識別功能,另外記算,不過還是很驚人的。
當然連載波一起學的優(yōu)點很多,與載波無關,與協(xié)議無關,只要ROM足夠大,堪稱“萬能”。另外硬件電路也簡單,省去了調(diào)制/解調(diào)。
3.也很想知道數(shù)據(jù)怎么壓縮的,效率如何?

to allstudy :
從電路連接上看,似乎連載波一起學,但從MCU,EEPROM資料看,不可能。
所以猜測你的學習型遙控器只能學習有限的幾種遙控器。


23樓: >>參與討論
談的元
請教sxl_72的產(chǎn)品叫什么名字??在國內(nèi)哪有賣?我買幾個
 
24樓: >>參與討論
dadodo
連載波一起學?開玩笑!
一體化接收頭輸出的信號已經(jīng)沒有載波了,只有數(shù)據(jù).

對于確定的一體化接收頭,能接收的載波也已經(jīng)確定了.比如常用的1838系列,只能接收38K的紅外碼,如果用來接收36K或其他頻率調(diào)制的紅外信號,接收頭輸出的已經(jīng)是不準確的數(shù)據(jù).

除了電視以為的如空調(diào)/投影機等,紅外編碼格式并不完全符合NEC或PHILIPS的標準,甚至很多是企業(yè)自定的格式.

想要做一款"萬能"學習型紅外遙控器還是可行的,前提是紅外載波頻率一樣,如果采用38K接收頭,理論上可以學習任何一種38K調(diào)制的紅外信號,只要你的存儲空間夠大.我曾做過一個這樣的學習型遙控器在產(chǎn)品上,可以學習遙控電視/DVD/空調(diào)/投影機...效果很好.

* - 本貼最后修改時間:2006-9-13 0:32:04 修改者:dadodo

25樓: >>參與討論
談的元
國內(nèi)有嗎??什么名字
國內(nèi)有嗎??什么名字

26樓: >>參與討論
平常人
韓國有人用ARM做出來了;LOGITECH的Harmony早就上市啦
開開眼吧


* - 本貼最后修改時間:2006-9-6 22:09:57 修改者:平常人

27樓: >>參與討論
笨笨兔
為什么沒有人討論一下Apple的那個方案,
為什么沒有人討論一下Apple的那個方案,

我大概能看出他用的MCU型號(懶的去確認了),8M晶振時應該有2MIPS吧(或者4MIPS,反正不會到8MIPS的),那么如果要學習的載波是100K,也就是脈寬只有10uS,再考慮1/3的占空比,需要記錄的高電平只有3uS!,軟件還有其他功能要實現(xiàn)。。。。難呀。

我大致考慮的結(jié)果:如果用AVR的MEGA8以8MIPS,純軟件學習38k載波,可以做到?墒,38k載波的話,用紅外一體頭就可以了,根本不用學。


28樓: >>參與討論
LEITUOXIN
可以連載波一起學習
可以連載波一起學習,但這不是主要功能,還是好好想數(shù)據(jù)壓縮吧!一般4個bytes的碼用16個bytes EEPROM就可以記錄下來

29樓: >>參與討論
dadodo
如果要連載波一起學,就不能用一體化接收頭
在載波頻率未知的情況下,如何識別有效信號和濾除雜波是關鍵。

30樓: >>參與討論
hiberhe
前段時間在超市買過一個學習型的,20元錢,用著還不錯
 
31樓: >>參與討論
xwj
一般載波頻率是一致的,可以歸類成樣本的
同一遙控器載波頻率是一致的,可以歸類成樣本
也就是說只要學習幾個脈沖就知道載波頻率了
再根據(jù)載波樣本學習(或組合)編碼即可

一個按鍵保存載波的高、低寬度,解調(diào)后的編碼即可

32樓: >>參與討論
allstudy
謝謝
先試試看

33樓: >>參與討論
盧向東

在35樓時,還忘了一點,如果單片機是用高速單片機,低電平可以用每次累加得到,如果是51單片機,就不能累加了,只能計中斷次數(shù),結(jié)束后把中斷次數(shù)乘以38KHZ周期得到低電平時間長度,這樣就很精確了.

 

34樓: >>參與討論
kele

學習型遙控器當然不能用集成的接收模塊,要不載波頻率都無法學習的,應該就用一般的發(fā)射管就可以學習了,先開始學習載波頻率,然后對上升沿或者下降沿進行計數(shù)就可以算出接收的時間了!

35樓: >>參與討論
lowe88
關于載波的學習希望有高手能出來點醒下大家~
參與討論
昵稱:
討論內(nèi)容:
 
 
相關帖子
多個16c554怎樣初始化他的寄存器?
大俠:并口擴展用哪塊芯片。8255好嗎?
奇怪了,我的DS1302秒可以走,可是到了60,分就是不更新
DATASHEET你喜歡下載哪個廠商的?
C語言中子程序不能正常返回。
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號