在實(shí)際的通信領(lǐng)域,發(fā)出來的信號(hào)一般有較寬的頻譜,而且都是在比較低的頻率段分布大量的能量,所以稱之為基帶信號(hào),這種信號(hào)是不適合直接在信道中傳輸?shù)摹楸阌趥鬏?、提高抗干擾能力和有效的利用帶寬,通常需要將信號(hào)調(diào)制到適合信道和噪聲特性的頻率范圍內(nèi)進(jìn)行傳輸,這就叫做信號(hào)調(diào)制。在通信系統(tǒng)的接收端要對(duì)接收到的信號(hào)進(jìn)行解調(diào),恢復(fù)出原來的基帶信號(hào)。這部分通信原理的內(nèi)容,大家了解一下即可。
我們平時(shí)用到的紅外遙控器里的紅外通信,通常是使用38k左右的載波進(jìn)行調(diào)制的,下面我把原理大概給大家介紹一下,了解一下,先看發(fā)送部分原理。
調(diào)制:就是用待傳送信號(hào)去控制某個(gè)高頻信號(hào)的幅度、相位、頻率等參量變化的過程,即用一個(gè)信號(hào)去裝載另一個(gè)信號(hào)。比如我們的紅外遙控信號(hào)要發(fā)送的時(shí)候,先經(jīng)過38k調(diào)制,如圖1所示。
圖1紅外信號(hào)調(diào)制
原始信號(hào)就是我們要發(fā)送的一個(gè)數(shù)據(jù)“0”位或者一位數(shù)據(jù)“1”位,而所謂38k載波就是頻率為38k的方波信號(hào),調(diào)制后信號(hào)就是最終我們發(fā)射出去的波形。我們使用原始信號(hào)來控制38k載波,當(dāng)信號(hào)是數(shù)據(jù)“0”的時(shí)候,38k載波毫無保留的全部發(fā)送出去,當(dāng)信號(hào)是數(shù)據(jù)“1”的時(shí)候,不發(fā)送任何載波信號(hào)。
那在原理上,我們?nèi)绾螐碾娐返慕嵌热?shí)現(xiàn)這個(gè)功能呢?如圖2所示。
圖2紅外發(fā)射原理圖
38k載波,我們可以用455k晶振,經(jīng)過12分頻得到37.91k,也可以由時(shí)基電路ne555來產(chǎn)生,或者使用單片機(jī)的pwm來產(chǎn)生。當(dāng)信號(hào)輸出引腳輸出高電平時(shí),q2截止,不管38k載波信號(hào)如何控制q1,右側(cè)的豎向支路都不會(huì)導(dǎo)通,紅外管l1不會(huì)發(fā)送任何信息。當(dāng)信號(hào)輸出是低電平的時(shí)候,那么38k載波就會(huì)通過q1釋放出來,在l1上產(chǎn)生38k的載波信號(hào)。這里要說明的是,大多數(shù)家電遙控器的38k的占空比是1/3,也有1/2的,但是相對(duì)少一些。
正常的通信來講,接收端要首先對(duì)信號(hào)通過監(jiān)測(cè)、放大、濾波、解調(diào)等等一系列電路處理,然后輸出基帶信號(hào)。但是紅外通信的一體化接收頭hs0038b,已經(jīng)把這些電路全部集成到一起了,我們只需要把這個(gè)電路接上去,就可以直接輸出我們所要的基帶信號(hào)了,如圖3所示。
圖3紅外接收原理圖
由于紅外接收頭內(nèi)部放大器的增益很大,很容易引起干擾,因此在接收頭供電引腳上必須加上濾波電容,官方手冊(cè)給的值是4.7uf,我們這里直接用的10uf,手冊(cè)里還要求在供電引腳和電源之間串聯(lián)100歐的電阻,進(jìn)一步降低干擾。
圖3所示的電路,用來接收?qǐng)D16-5電路發(fā)送出來的波形,當(dāng)hs0038監(jiān)測(cè)到有38k的紅外信號(hào)時(shí),就會(huì)在out引腳輸出低電平,當(dāng)沒有38k的時(shí)候,out引腳就會(huì)輸出高電平。那我們把out引腳接到單片機(jī)的io口上,通過編程,就可以獲取紅外通信發(fā)過來的數(shù)據(jù)了。
大家想想,out引腳輸出的數(shù)據(jù)是不是又恢復(fù)成為基帶信號(hào)數(shù)據(jù)了呢?那我們單片機(jī)在接收這個(gè)基帶信號(hào)數(shù)據(jù)的時(shí)候,如何判斷接收到的是什么數(shù)據(jù),應(yīng)該遵循什么協(xié)議呢?像我們前邊學(xué)到的uart、i2c、spi等通信協(xié)議都是基帶通信的通信協(xié)議,而紅外的38k僅僅是對(duì)基帶信號(hào)進(jìn)行調(diào)制解調(diào),讓信號(hào)更適合在信號(hào)中傳輸。
由于我們的紅外調(diào)制信號(hào)是半雙工的,而且同時(shí)空間只能允許一個(gè)信號(hào)源,所以我們紅外的基帶信號(hào)不適合在i2c或者spi通信協(xié)議中進(jìn)行的,我們前邊提到過uart雖然是2條線,但是通信的時(shí)候,實(shí)際上一條線即可,所以紅外可以在uart中進(jìn)行通信。當(dāng)然,這個(gè)通信也不是沒有限制的,比如在hs0038b的數(shù)據(jù)手冊(cè)中標(biāo)明,要想讓hs0038b識(shí)別到38k的紅外信號(hào),那么這個(gè)38k的載波必須要大于10個(gè)周期,這就限定了我們紅外通信的基帶信號(hào)的比特率必須不能高于3800,那如果把串口輸出的信號(hào)直接用38k調(diào)制的話,波特率也就不能高于3800。