佚名 發表於 2017-08-03 17:50:56
紅外通訊,顧名思義,就是通過紅外線傳輸數據。在電腦技術發展早期,數據都是通過線纜傳輸的,線纜傳輸連線麻煩,需要特製接口,頗為不便。於是後來就有了紅外、藍牙、802.11等無線數據傳輸技術。在紅外通訊技術發展早期,存在好幾個紅外通訊標準,不同標準之間的紅外設備不能進行紅外通訊。為了使各種紅外設備能夠互聯互通,1993年,由二十多個大廠商發起成立了紅外數據協會(IrDA),統一了紅外通訊的標準,這就是目前被廣泛使用的IrDA紅外數據通訊協議及規範。
紅外通信與無線通信相比有何優勢紅外通信是以紅外線作為載體來傳送數據信息。它作為無線通信的一種,與無線電通信相比,由於其性能價格比高,實現簡單,具有抗電磁幹擾、便於高速應用、空間接入靈活、經濟的特點,可用於室內外實現點對點、無線紅外LAN通信及軍用紅外引信,在移動計算和移動通訊的設備中獲得了廣泛的應用。
在某些場合,需要數據交換但又不是很大,且實時性要求又不是很高的情況下,可以使用紅外通訊方式,這樣既可以得到無繩化通信帶來的便利,又可以避開採用無線電高頻電路可能引發的一些問題。譬如用於家用電器的遙控器,計算機的遙控鍵盤和遙控滑鼠以及可攜式數據收集裝置(煤水電錶的登錄器、報稅機)與主機的數據交換等。
目前,利用紅外線進行無線數據通信,無論從小型化、輕量化,還是從安全性等方面考慮,其可行性都比較高,並且已經在無線多信道室內話音系統,無繩電話以及鍵盤和終端間的短距離無線連接中得到了應用。所有這些應用中的工作帶寬遠低於WLAN需要的帶寬。
遙控紅外通信原理在實際的通信領域,發出來的信號一般有較寬的頻譜,而且都是在比較低的頻率段分布大量的能量,所以稱之為基帶信號,這種信號是不適合直接在信道中傳輸的。為便於傳輸、提高抗幹擾能力和有效的利用帶寬,通常需要將信號調製到適合信道和噪聲特性的頻率範圍內進行傳輸,這就叫做信號調製。在通信系統的接收端要對接收到的信號進行解調,恢復出原來的基帶信號。這部分通信原理的內容,大家了解一下即可。
我們平時用到的紅外遙控器裡的紅外通信,通常是使用38K左右的載波進行調製的,下面我把原理大概給大家介紹一下,了解一下,先看發送部分原理。
調製:就是用待傳送信號去控制某個高頻信號的幅度、相位、頻率等參量變化的過程,即用一個信號去裝載另一個信號。比如我們的紅外遙控信號要發送的時候,先經過38K調製,如圖1所示。
圖1 紅外信號調製
原始信號就是我們要發送的一個數據「0」位或者一位數據「1」位,而所謂38K載波就是頻率為38K的方波信號,調製後信號就是最終我們發射出去的波形。我們使用原始信號來控制38K載波,當信號是數據「0」的時候,38K載波毫無保留的全部發送出去,當信號是數據「1」的時候,不發送任何載波信號。
那在原理上,我們如何從電路的角度去實現這個功能呢?如圖2所示。
圖2 紅外發射原理圖
38K載波,我們可以用455K晶振,經過12分頻得到37.91K,也可以由時基電路NE555來產生,或者使用單片機的PWM來產生。當信號輸出引腳輸出高電平時,Q2截止,不管38K載波信號如何控制Q1,右側的豎向支路都不會導通,紅外管L1不會發送任何信息。當信號輸出是低電平的時候,那麼38K載波就會通過Q1釋放出來,在L1上產生38K的載波信號。這裡要說明的是,大多數家電遙控器的38K的佔空比是1/3,也有1/2的,但是相對少一些。
正常的通信來講,接收端要首先對信號通過監測、放大、濾波、解調等等一系列電路處理,然後輸出基帶信號。但是紅外通信的一體化接收頭HS0038B,已經把這些電路全部集成到一起了,我們只需要把這個電路接上去,就可以直接輸出我們所要的基帶信號了,如圖3所示。
圖3 紅外接收原理圖
由於紅外接收頭內部放大器的增益很大,很容易引起幹擾,因此在接收頭供電引腳上必須加上濾波電容,官方手冊給的值是4.7uF,我們這裡直接用的10uF,手冊裡還要求在供電引腳和電源之間串聯100歐的電阻,進一步降低幹擾。
圖3所示的電路,用來接收圖16-5電路發送出來的波形,當HS0038監測到有38K的紅外信號時,就會在OUT引腳輸出低電平,當沒有38K的時候,OUT引腳就會輸出高電平。那我們把OUT引腳接到單片機的IO口上,通過編程,就可以獲取紅外通信發過來的數據了。
大家想想,OUT引腳輸出的數據是不是又恢復成為基帶信號數據了呢?那我們單片機在接收這個基帶信號數據的時候,如何判斷接收到的是什麼數據,應該遵循什麼協議呢?像我們前邊學到的UART、I2C、SPI等通信協議都是基帶通信的通信協議,而紅外的38K僅僅是對基帶信號進行調製解調,讓信號更適合在信號中傳輸。
由於我們的紅外調製信號是半雙工的,而且同時空間只能允許一個信號源,所以我們紅外的基帶信號不適合在I2C或者SPI通信協議中進行的,我們前邊提到過UART雖然是2條線,但是通信的時候,實際上一條線即可,所以紅外可以在UART中進行通信。當然,這個通信也不是沒有限制的,比如在HS0038B的數據手冊中標明,要想讓HS0038B識別到38K的紅外信號,那麼這個38K的載波必須要大於10個周期,這就限定了我們紅外通信的基帶信號的比特率必須不能高於3800,那如果把串口輸出的信號直接用38K調製的話,波特率也就不能高於3800。
常用紅外遙控器協議一、 NEC 協議
特徵:
8 位地址和 8 位命令長度為提高可靠性每次傳輸兩遍地址(用戶碼)和命令(按鍵值)通過脈衝串之間的時間間隔來實現信號的調製 38Khz 載波每位的周期為 1.12ms 或者 2.25ms
調製方式:
Note:對於測試紅外接收頭的信號來說,有脈衝信號的地方就是高電平。即邏輯「1」 為 0.56ms 高電平+1.69ms 低電平,邏輯「0」為 0.56ms 高電平+0.56ms 低電平。
協議:
上圖為典型的 NEC 協議傳輸格式,起始位(引導碼)為 9ms 高+4.5ms 低組成,有效數據為地址+地址反碼+命令+命令反碼。反碼的作用是用來校準前面的地址和命令,如果對可靠性不感興趣,也可以去掉取反的數據,或者將地址和命令擴展到 16 位
上圖傳輸的地址數據為 10011010,需要注意的是先發低位地址再發高位地址,因此該波形的地址為 01011001=0X59,同理,命令為 00010110=0X16。
長按鍵時,如下圖所示,每隔 110ms 重複發送一次,但是命令只發送一次,重複發送的是 9ms 高電平+2.25ms 低電平+0.56ms 高電平+低電平
擴展協議:
擴展協議只是將地址改為 16 位,其他不變。
實測波形:
下面的波形是從紅外接收頭上得到的波形:(調製脈衝信號轉變成高低電平了)
由於紅外接收頭在接收信號時(或者是發送的時候)將波形反向了,因此在讀數據時可以將示波器的反向功能打開,就能讀到有效數據了。
下面實例是已知 NEC 類型遙控器所截獲的波形:
遙控器的識別碼是 Address=0xDD20;其中一個鍵值是 Command=0x0E
最後一位是一個邏輯「1」。
二、 Philips RC5 協議
特徵:
5 位地址和 6 位命令長度(擴展協議用 7 位)
雙向編碼或者叫曼徹斯特編碼(即電平的變化來表示邏輯 0 和 1)
36Khz 載波
每位的周期為 1.778ms(64 cycles of 36 kHz)
調製方式:
協議:
一段數據包含 14 位,周期長度為 25ms。
前兩位是起始位 S 通常都是邏輯 1。
在 RC5 擴展模式下第二位 S2 將 6 位命令代碼擴充到 7 位代碼(作為高位 MSB),這樣可以從 64 個鍵值擴充到 128 個鍵值。
第三位是控制位 C 它在每按下了一個鍵後翻轉,這樣就可以區分一個鍵到底是一直按著沒鬆手還是鬆手後重複按。
長按鍵時,數據每隔 114ms 重複發送一次,第三位不發生翻轉,即重複發送的信號是完全一致的。
實測波形:
連續按同一個鍵兩次時,只有第三位發生翻轉,其他位不變
從上面波形可以讀出該段數據的值為 101 01010 010111,由於該協議為 RC5 擴展協議,即第二位作為命令的第七位,因此地址為 01010=0X0A,命令為 0010111=0X17。(實際遙控器廠商給出的命令為 57,可能是將第二位反相後作為命令的第七位)。
三、 Sony SIRC 協議
特徵:
有 12,15,20 位三種模式(下面介紹的 12 位模式)
5 位地址和 7 位命令長度
脈衝寬度編碼
40Khz 載波
每位的周期為 1.2ms 或 1.8ms
調製方式:
協議:
起始位為 2.4ms 高電平+0.6ms 低電平;
長按鍵時,數據每隔 45ms 重複發送一次。
實測波形:
從上面波形可以讀出該段數據的值為 1001000 10000 cmd:0001001 addr: 00001.
四、其他
1、ITT
2、JVC
3、Nokia NRC17
4、RCA
5、Sharp
6、X-Sat
打開APP閱讀更多精彩內容
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴