紅外通信原理詳解

2020-11-22 電子發燒友

一、紅外通信原理

紅外遙控有發送和接收兩個組成部分。發送端採用單片機將待發送的二進位信號編碼調製為一系列的脈衝串信號,通過紅外發射管發射紅外信號。紅外接收完成對紅外信號的接收、放大、檢波、整形,並解調出遙控編碼脈衝。為了減少幹擾,採用的是價格便宜性能可靠的一體化紅外接收頭(HS0038, 它接收紅外信號頻率為38kHz,周期約26μs) 接收紅外信號,它同時對信號進行放大、檢波、整形得到TTL 電平的編碼信號,再送給單片機,經單片機解碼並執行去控制相關對象。如圖1 所示:

紅外發送部分由51單片機、鍵盤、紅外發光二極體和7段數碼管組成。鍵盤用於輸入指令, 51單片機檢測鍵盤上按鍵的狀態,並對紅外信號進行調製,發光二極體產生紅外線,數碼管用來顯示發送的鍵值。圖2紅外發射電路

紅外接收部分由51單片機、一體化紅外接收頭HS0038和7段數碼管組成。51單片機檢測HS0038,並對HS0038接收到的數據解碼,通過數碼管顯示接收到的鍵值。圖 3紅外接收電路

二、編碼、解碼

(1) 二進位信號的調製

二進位信號的調製由單片機來完成,它把編碼後的二進位信號調製成頻率為38kHz 的間斷脈衝串,相當於用二進位信號的編碼乘以頻率為38kHz 的脈衝信號得到的間斷脈衝串,即是調製後用於紅外發射二極體發送的信號如圖4 二進位碼的調製所示

(2) 紅外接收需先進行解調,解調的過程是通過紅外接收管進行接收的。其基本工作過程為:當接收到調製信號時,輸出高電平,否則輸出為低電平,是調製的逆過程(圖5 解調)。HS0038是一體化集成的紅外接收器件,直接就可以輸出解調後的高低電平信號;紅外接收器HS0038的應用電路(圖6)。

(3)紅外遙控發射晶片採用 PPM 編碼方式,當發射器按鍵按下後 ,將發射一組 108ms 的編碼脈衝。遙控編碼脈衝由前導碼、16位地址碼(8 位地址碼、 8 位地址碼的反碼)和16位操作碼(8 位操作碼、 8 位操作碼的反碼)組成。通過對用戶碼的檢驗,每個遙控器只能控制一個設備動作,這樣可以有效地防止多個設備之間的幹擾。編碼後面還要有編碼的反碼,用來檢驗編碼接收的正確性,防止誤操作,增強系統的可靠性。前導碼是一個遙控碼的起始部分,由一個 9ms 的高電平 ( 起始碼 ) 和一個 4. 5ms 的低電平 ( 結果碼 ) 組成,作為接受數據的準備脈衝。以脈寬為 0. 56ms 、周期為 1. 12ms 的組合表示二進位的 「0」 ;以脈寬為 1. 68ms 、周期為 2. 24ms 的組合表示二進位的 「1」 。

(4)單片機採用外部中斷 INT0 管腳和紅外接收頭的信號線相連,中斷方式為邊沿觸發方式。計算中斷的間隔時間,來區分前導碼、二進位的 「1」 、 「0」 碼。並將 8 位操作碼提取出來在數碼管上顯示。

紅外接收頭輸出的原始遙控數據信號,正好和發射端倒向.也就是以前發射端原始信號是高電平,那接收頭輸出的就是低電平,反之.

軟體原理:

開始時發射一個特定的同步碼頭,對於接收端而言就是一個9ms的低電平,和一個4.5ms的高電平,這個同步碼頭可以使程序知道從這個同步碼頭以後可以開始接收數據。

採用脈寬調製的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進位的「0」;以脈

寬為0.565ms、間隔1.685ms、周期為2.25ms 的組合表示二進位的「1」。

解碼的關鍵是如何識別「0」和「1」,從位的定義我們可以發現「0」、「1」均以0.56ms的高電平開始,不同的是低電平的寬度不同,「0」為0.56ms,「1」為1.685ms,所以必須根據高電平的寬度區別「0」和「1」。如果從0.56ms低電平過後,開始延時,0.56ms以後,若讀到的電平為低,說明該位為「0」,反之則為「1」,為了可靠起見,延時必須比0.56ms長些,但又不能超過1.12ms,否則如果該位為「0」,讀到的已是下一位的高電平,因此取(1.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms 左右即可。根據紅外編碼的格式,程序應該等待9ms的起始碼和4.5ms的結果碼完成後才能讀碼。

HS0038紅外接收器,接收紅外遙控器發射的信號,輸出DATA口和單片機的外部中斷0P3.2口相連。當有紅外信號時,觸發中斷查詢中斷時間,並和紅外起始碼,「0」、「1」、終止碼的時間進行比較。從而檢測紅外的操作碼。

51可參考的程序

(1)發送程序

#include

static bit OP; //紅外發射管的亮滅

static unsigned int count; //延時計數器

static unsigned int endcount; //終止延時計數

static unsigned int temp; //按鍵

static unsigned char flag; //紅外發送標誌

static unsigned char num;

sbit ir_in=P3^4;

char iraddr1; //十六位地址的第一個字節

char iraddr2; //十六位地址的第二個字節

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //共陽數碼管 0~~f

void SendIRdata(char p_irdata);

void delay(unsigned int);

void keyscan();

void main(void)

{

num=0;

P2=0x3f;

count = 0;

flag = 0;

OP = 0;

ir_in= 0;

EA = 1; //允許CPU中斷

TMOD = 0x11; //設定時器0和1為16位模式1

ET0 = 1; //定時器0中斷允許

TH0 = 0xFF;

TL0 = 0xE6; //設定時值0為38K 也就是每隔26us中斷一次

TR0 = 1;//開始計數

iraddr1=3;//00000011

iraddr2=252;//11111100

do{keyscan();

}while(1);

}

void timeint(void) interrupt 1

{

TH0=0xFF;

TL0=0xE6; //設定時值為38K 也就是每隔26us中斷一次

count++;

if (flag==1)

{

OP=~OP;

}

else

{

OP = 0;

}

ir_in= OP;

}

void SendIRdata(char p_irdata)

{

int i;

char irdata=p_irdata;

//發送9ms的起始碼

endcount=223;

flag=1;

count=0;

do{}while(count

endcount=117;

flag=0;

count=0;

do{}while(count

irdata=iraddr1;

for(i=0;i<8;i++)

{

endcount=10;

flag=1;

count=0;

do{}while(count

if(irdata-(irdata/2)*2) //判斷二進位數個位為1還是0

{

endcount=41; //1為寬的高電平

}

else

{

endcount=15; //0為窄的高電平

}

flag=0;

count=0;

do{}while(count

irdata=irdata>>1;

}

irdata=iraddr2;

for(i=0;i<8;i++)

{

endcount=10;

flag=1;

count=0;

do{}while(count

if(irdata-(irdata/2)*2)

{

endcount=41;

}

else

{endcount=15;

}

flag=0;

count=0;

do{}while(count

irdata=irdata>>1;

}

irdata=p_irdata;

for(i=0;i<8;i++)

{

endcount=10;

flag=1;

count=0;

do{}while(count

if(irdata-(irdata/2)*2)

{

endcount=41;

}

else

{

endcount=15;

}

flag=0;

count=0;

do{}while(count

irdata=irdata>>1;

}

irdata=~p_irdata;

for(i=0;i<8;i++)

{

endcount=10;

flag=1;

count=0;

do{}while(count

if(irdata-(irdata/2)*2)

{

endcount=41;

}

else

{

endcount=15;

}

flag=0;

count=0;

do{}while(count

irdata=irdata>>1;

}

endcount=10;

flag=1;

count=0;

do{}while(count

flag=0;

}

void delay(unsigned int z)

{

unsigned char x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

(2)接收程序

#include"reg52.h"

#define uchar unsigned char

#define uint unsigned int

uchar dis_num,num,num1,num2,num3;

sbit led=P1^0;

unsigned char code table[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e}; //共陽數碼管 0~~f

sbit prem =P3^2; //定義遙控頭的接收腳

uchar ram[4]={0,0,0,0};//存放接受到的4個數據 地址碼16位+按鍵碼8位+按鍵碼取反的8位

void delaytime(uint time) //延遲90uS

{

uchar a,b;

for(a=time;a>0;a--)

{

for(b=40;b>0;b--);

}

}

void rem()interrupt 0 //中斷函數

{

uchar ramc=0; //定義接收了4個字節的變量

uchar count=0; //定義現在接收第幾位變量

uint i=0; //此處變量用來在下面配合連續監測9MS 內是否有高電平

prem=1;

for(i=0;i<1100;i++) //以下FOR語句執行時間為8MS左右

{

if(prem) //進入遙控接收程序首先進入引導碼的前半部判斷,即:是否有9MS左右的低電平

return; //引導碼錯誤則退出

}

while(prem!=1); //等待引導碼的後半部 4.5 MS 高電平開始的到來。

delaytime(50); //延時大於4.5MS時間,跨過引導碼的後半部分,來到真正遙控數據32位中

//第一位數據的0.56MS開始脈衝

for(ramc=0;ramc<4;ramc++)//循環4次接收4個字節

{ for(count=0;count<8;count++) //循環8次接收8位(一個字節)

{

while(prem!=1); //開始判斷現在接收到的數據是0或者1 ,首先在這行本句話時,

//保已經進入數據的0.56MS 低電平階段

//等待本次接受數據的高電平的到來。

delaytime(9);//高電平到來後,數據0 高電平最多延續0.56MS,而數據1,高電平可

//延續1.66MS大於0.8MS 後我們可以再判斷遙控接收腳的電平,

if(prem) //如果這時高電平仍然在繼續那麼接收到的數據是1的編碼

{

ram[ramc]=(ram[ramc]<<1)+1;//將目前接收到的數據位1放到對應的字節中

delaytime(11); //如果本次接受到的數據是1,那麼要繼續延遲1MS,這樣才能跨入//下個位編碼的低電平中(即是開始的0.56MS中)

}

else //否則目前接收到的是數據0的編碼

ram[ramc]=ram[ramc]<<1; //將目前接收到的數據位0放到對應的字節中

} //本次接收結束,進行下次位接收,此接收動作進行32次,正好完成4個字節的接收

}

if(ram[2]!=(~(ram[3]&0x7f))) //本次接收碼的判斷

{

for(i=0;i<4;i++) //沒有此對應關係則表明接收失敗,清除接受到的數據

ram[i]=0;

return ;

}

dis_num=ram[2]; //將接收到的按鍵數據賦給顯示變量

}

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 紅外遙控器通信原理_紅外遙控器協議_紅外通信對比無線通信的優勢
    紅外遙控器通信原理_紅外遙控器協議_紅外通信對比無線通信的優勢 佚名 發表於 2017-08-03 17:50:56   紅外通訊,顧名思義,就是通過紅外線傳輸數據
  • 【E課堂】紅外通信協議及原理精講
    紅外通信基本原理本文引用地址:http://www.eepw.com.cn/article/201701/343102.htm  紅外通信是利用近紅外波段的紅外線作為傳遞信息的媒體,即通信信道。發送端將基帶二進位信號調製為一系列的脈衝串信號,通過紅外發射管發射紅外信號。
  • 一文詳解紅外遙控模塊工作原理
    本文首先介紹了紅外遙控模塊的基本原理,其次詳解闡述了紅外遙控模塊工作原理,最後介紹了紅外遙控的重要環節及應用。 紅外遙控的基本原理   紅外遙控的發射電路是採用紅外發光二極體來發出經過調製的紅外光波;紅外接收電路由紅外接收二極體、三極體或矽光電池組成,它們將紅外發射器發射的紅外光轉換為相應的電信號,再送後置放大器。
  • 「硬見小百科」一文詳解紅外遙控模塊工作原理
    本文首先介紹了紅外遙控模塊的基本原理,其次詳解闡述了紅外遙控模塊工作原理,最後介紹了紅外遙控的重要環節及應用。 紅外遙控的基本原理 紅外遙控的發射電路是採用紅外發光二極體來發出經過調製的紅外光波;紅外接收電路由紅外接收二極體、三極體或矽光電池組成,它們將紅外發射器發射的紅外光轉換為相應的電信號,再送後置放大器。
  • 紅外線通信原理及特點
    打開APP 紅外線通信原理及特點 發表於 2017-11-02 17:46:18   紅外線通信是一種利用紅外線傳輸信息的通信方式。
  • 基於單片機的主從紅外通信的系統設計
    紅外通信是目前比較常用的一種無線數據傳輸手段,其具有無汙染、信息傳輸穩定、信息安全性高以及安裝使用方便等優點,並且可以在很多場合應用,如家電產品,工業控制、娛樂設施等領域。  紅外通信是利用950nm近紅外波段的紅外線作為傳遞信息的載體,通過紅外光在空中的傳播來傳遞信息,由紅外發射器和接收器實現。
  • 紅外傳感器工作原理
    請看下文~本文引用地址:http://www.eepw.com.cn/article/274599.htm一、紅外傳感器工作原理- -簡介  紅外傳感器,英文名稱為infra-red sensor,是一種以紅外線為介質來完成測量功能的傳感器,具有響應速度快等諸多優點,現已在工農業、國防、科技等諸多領域應用廣泛。
  • 熱釋電紅外報警電路圖大全(六款熱釋電紅外報警電路設計原理圖詳解)
    打開APP 熱釋電紅外報警電路圖大全(六款熱釋電紅外報警電路設計原理圖詳解) 發表於 2018-03-04 10:14:41
  • 簡明光學理論:紅外光譜分析原理
    將一束不同波長的紅外射線照射到物質的分子上,某些特定波長的紅外射線被吸收,形成這一分子的紅外吸收光譜。每種分子都有由其組成和結構決定的獨有的紅外吸收光譜,據此可以對分子進行結構分析和鑑定。紅外吸收光譜是由分子不停地作振動和轉動運動而產生的,分子振動是指分子中各原子在平衡位置附近作相對運動,多原子分子可組成多種振動圖形。
  • 紅外對射報警主機接線(圖文詳解)
    打開APP 紅外對射報警主機接線(圖文詳解) 發表於 2018-01-19 16:24:25 紅外對射是防盜報警系統中最實用和基礎的組成部分,可以在發生意外時能及時與外界聯繫,得到援助,也因此在部分城市將其作為必備的安防設備。
  • 詳解無線通信原理和LoRa擴頻通信技術
    當人類進入了無線通信時代,我們的生活發生了巨大的改變。無線通信具有一些天生優勢,我們常說一個模擬信號代表的就是一個連續變化電磁波,一個數位訊號就是代表一個電壓脈衝序列,計算機局域共享則是典型的數字數據通過數位訊號傳輸。通信信號最大的問題就是噪聲,因為噪聲會影響數字位,今天我們來了解一下它的具體原理。 1901年,古列爾默。
  • 無線雷射通信技術詳解
    一、無線雷射通信的基本原理   無線雷射通信不是用光纖作為傳輸媒介,而是以大氣為媒質,通過雷射或光脈衝在太赫茲(THz)光譜範圍內傳送信息的通信系統;其傳送終端在原理上與光纖傳送終端十分相似,但由於用在接入系統,因而組成更為簡單。
  • 智能垃圾桶的工作原理詳解
    打開APP 智能垃圾桶的工作原理詳解 發表於 2018-01-04 15:11:01 下面我們來了解一下智能垃圾桶原理      智能垃圾桶的工作原理   原理是利用熱釋電紅外、紅外對管、微波感應,自動打開垃圾桶蓋子
  • 智慧機器人紅外發送接收電路詳解
    藍牙是一種全球開放性的、低成本的無線通信規範。另外,由於藍牙具有傳輸距離遠,抗幹擾能力強、功耗低、傳輸速率高的優點,設計採用了藍牙無線通信技術,設計主體為一輪式移動小車機器人,擁有跟隨主人行走、播放音樂、遙控運行、彩燈隨拍手頻率閃爍以及家庭安防等多項功能。
  • 紅外熱像儀原理
    2.紅外熱像儀原理--分類  紅外熱像儀就是探測這種物體表面輻射的不為人眼所見的紅外線的設備,它反映物體表面的紅外輻射場,也就是溫度場。3.紅外熱像儀原理  紅外熱像儀是利用紅外探測器、光學成像物鏡,接受被測目標的紅外輻射能量分布圖形反映到紅外探測器的光敏元上。
  • 紅外發射器的基本原理
    打開APP 紅外發射器的基本原理 佚名 發表於 2010-03-01 10:08:41   紅外線遙控是目前使用最廣泛的一種通信和遙控手段。
  • 紅外測溫儀原理
    導讀:本文主要講述的是紅外測溫儀的原理,感興趣的盆友們快來學習一下吧~~~很漲姿勢的哦~~~本文引用地址:http://www.eepw.com.cn/article/277509.htm  紅外測溫儀是檢測電力變壓器的內部結構故障檢測的必備工具紅外測溫技術已發展到可對有熱變化表面進行掃描測溫
  • 紅外遙控器原理
    導讀:本文主要講述的是紅外遙控器的原理,感興趣的童鞋們快來學習一下吧~~~很漲姿勢的哦~~~本文引用地址:http://www.eepw.com.cn/article/277558.htm  紅外遙控器是一種可遙控多臺家用電器的遙控器,為人們解決了大多數的家用電器都有各自不同的遙控器
  • 光電傳感器的種類與工作原理詳解
    光電傳感器工作原理(紅外線光電傳感器原理)  光電傳感器是通過把光強度的變化轉換成電信號的變化來實現控制的。  ⑶反光板型光電開關  把發光器和收光器裝入同一個裝置內,在它的前方裝一塊反光板,利用反射原理完成光電控制作用的稱為反光板反射式(或反射鏡反射式)光電開關。正常情況下,發光器發出的光被反光板反射回來被收光器收到;一旦光路被檢測物擋住,收光器收不到光時,光電開關就動作,輸出一個開關控制信號。
  • 紅外測溫儀工作原理及應用
    紅外診斷技術正是通過吸收這種紅外輻射能量,測出設備表面的溫度及溫度場的分布,從而判斷設備發熱情況。目前應用紅外診技術的測試設備比較多,如紅外測溫儀、紅外熱電視、紅外熱像儀等等。像紅外熱電視、紅外熱像儀等設備利用熱成像技術將這種看不見的「熱像」轉變成可見光圖像,使測試效果直觀,靈敏度高,能檢測出設備細微的熱狀態變化,準確反映設備內部、外部的發熱情況,可靠性高,對發現設備隱患非常有效。