紅外通信學習筆記2020/01/17

紅外通信原理

一、紅外通信的目的

實現兩點間的近距離 保密通信和信息轉發

二、紅外通信組成

1、紅外發射部分 交互(按鍵、鍵盤)+編碼調製部分+電路
2、光電放大器(電路轉換放大器)+解調+電路

三、紅外通信過程

單片機(輸出調製)----紅外發射電路(發送)----紅外接收管(接收解調)------單片機(解碼)

四、調製與發射

1、二進制調製 :1、單片機將編碼後的二進制信號調製爲38KHz的間斷脈衝串(相當於二進制信號與38KHz的信號相乘)
在這裏插入圖片描述
2、紅外接收解調:HS0038直接輸出解調後的高低電平信號
3、編碼
紅外發射採用PPM編碼方式,編碼脈衝由前導碼、16位地址碼(8位地址碼、8位地址反碼)和16位操作碼(8位操作碼、8位操作碼的反碼)組成。

前導碼(起始部分)
一個9ms高電平(起始碼)
4.5ms低電平(結果碼)

數據碼
0.56ms脈寬+1.12ms週期= 0
1.68ms脈寬+2.24ms週期=1

五、概念詳解

1、紅外接收頭(分爲電平頭還有脈衝頭)

電平型的:接收連續的38K信號,可以輸出連續的低電平,時間可以無限長。其內部放大及脈衝整形是直接耦合的,所以能夠接收及輸出連續的信號。

脈衝型的:只能接收間歇的38K信號,如果接收連續的38K信號,則幾百ms後會一直保持高電平,除非距離非常近(二三十釐米以內)。其內部放大及脈衝整形是電容耦合的,所以不能能夠接收及輸出連續的信號。

紅外接收頭內部構造

2、紅外遙控中的載波
(1)38K的來源
38K脈衝信號,佔空比(高電平比周期)自己定,脈衝週期1/38000 S
例如利用一箇中斷產生38K脈衝,佔空比是1/2,中斷時間就要設置爲1/38000/2 S中斷一次,然後通過相隔一次中斷電平翻轉一次就形成了一個頻率爲38K佔空比1/2的脈衝。

(2)誤差問題
使用單片機的中斷模式會比查詢模式精準。

利用中斷的時候,在時鐘比較快的條件下可以產生比較準確的時間基準,來產生相對正確的脈衝。

而利用查詢方式,如果用51單片機,12M的晶振,利用查詢溢位來產生的38K脈衝,誤差會很大,
因爲利用查詢的方式查詢這個動作,它浪費了大把的單片機時間,誤差大得離譜。

(3)單片機查詢方式和中斷方式的區別詳解

查詢方式就是不斷的查詢某個標誌位,需要耗費大量的cpu 的時間,一般情況下除專門用於延時外不用這種方式(自己認爲),中斷方式比較適合處理具有隨即特性的事件,事件發生後向cpu提出申請,然後cpu會保存當前的任務轉去處理事件
編程時查詢方式要不斷查詢標誌位,而中斷要編寫中斷服務子程序來處理中斷事件

如:定時100ms,分別用查詢法和中斷法實現
查詢法
#include<reg52.h>
void main()
{
TMOD=0X01;//定時器0方式1
TH0=(65536-10000)%256;//定時器器初值
TL0=(65536-10000)/256;
ET0=0;//關定時器0中斷
TR0=1;
while(TF0==0);//若定時完成則中斷標誌位TF0爲1,在此不斷查詢TF0
TR0=1;//完成定時關閉定時器
while(1); //等待

}
中斷法
#include<reg52.h>
void main()
{
TMOD=0X01;//定時器0方式1
TH0=(65536-10000)%256;//定時器器初值
TL0=(65536-10000)/256;
EA=1;//開總中斷
ET0=1;//關定時器0中斷
TR0=1;//打開定時器
while(1); //等待
}
void timer0 interrupt 1
{
TR0=0;//關閉定時器
}

4、紅外發射信號的本質
驅動紅外發光的"IO"口的狀態便是38K脈衝信號從IO口發出來的觸發信號,脈衝中的低電平就是導通,高電平就是截止。
可以簡單理解爲:紅外接收頭只接受38K信號,我們把接收頭看出一個轉換器。遇到38K就輸出低電平,沒有遇到38K就被上拉成高電平。
然後我們通過有無38K來控制紅外燈閃爍頻率,進而對二進制信號進行編碼
在接收方讀取高低電平的時間長度與高低電平的各種組合來讀取發射方所提供的信息。這種就是所謂的協議

參考鏈接

1、https://www.geek-workshop.com/thread-2322-1-1.html
2、https://blog.csdn.net/nknkkn/article/details/103019838
3、http://www.51hei.com/bbs/dpj-154613-1.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章