基于單片機(jī)的主從紅外通信的系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1、引言
紅外通信是目前比較常用的一種無(wú)線數(shù)據(jù)傳輸手段,其具有無(wú)污染、信息傳輸穩(wěn)定、信息安全性高以及安裝使用方便等優(yōu)點(diǎn),并且可以在很多場(chǎng)合應(yīng)用,如家電產(chǎn)品,工業(yè)控制、娛樂(lè)設(shè)施等領(lǐng)域。紅外通信是利用950nm近紅外波段的紅外線作為傳遞信息的載體,通過(guò)紅外光在空中的傳播來(lái)傳遞信息,由紅外發(fā)射器和接收器實(shí)現(xiàn)。發(fā)射端將二進(jìn)制數(shù)字信號(hào)調(diào)制成某一頻率的脈沖序列,經(jīng)電光轉(zhuǎn)換電路,驅(qū)動(dòng)紅外發(fā)射管以光脈沖的形式發(fā)送到空中。接收端將接收到的光脈沖轉(zhuǎn)換成電信號(hào),再經(jīng)解調(diào)和譯碼后恢復(fù)出原二進(jìn)制數(shù)字信號(hào)。本文設(shè)計(jì)了一種基于單片機(jī)PIC18F248的主從式紅外通信系統(tǒng),主要設(shè)計(jì)了紅外接口電路以及主機(jī)和從機(jī)通信軟件流程。
2、系統(tǒng)硬件電路設(shè)計(jì)
在主從式紅外通信系統(tǒng)中,主機(jī)及從機(jī)的紅外發(fā)射電路相同,紅外線的載波頻率都為38KHz,在同一時(shí)間內(nèi),可以是主機(jī)發(fā)射,從機(jī)接收;或者從機(jī)發(fā)射,主機(jī)接收。
2.1 紅外發(fā)射電路設(shè)計(jì)
紅外發(fā)射器電路主要由單片機(jī),驅(qū)動(dòng)管Q1和Q2、紅外發(fā)射管D1等組成,電路如下:
紅外發(fā)射器工作原理為:?jiǎn)纹瑱C(jī)通過(guò)I/O端口控制整個(gè)發(fā)射過(guò)程。其中,紅外載波信號(hào)采用頻率為38KHz的方波,由PIC18F248的*模塊的PWM功能實(shí)現(xiàn),并由*1端口傳輸?shù)饺龢O管T2的基極。待發(fā)送到數(shù)據(jù)由單片機(jī)的TX端口以串行方式送出并驅(qū)動(dòng)三極管Q1,當(dāng)TX為“0”時(shí)使Q1管導(dǎo)通,通過(guò)Q2管采用脈寬調(diào)制(PWM)方式調(diào)制成38KHz的載波信號(hào),并由紅外發(fā)射管D1以光脈沖的形式向外發(fā)送。當(dāng)TX為“1”時(shí)使Q1管截止,Q2管也截止,連接Q1和Q2的兩個(gè)上拉電阻R1和R3把三極管的基極拉成高電平,分別保證兩個(gè)三極管可靠截止,紅外發(fā)射管D1不發(fā)射紅外光。因此通過(guò)待發(fā)送數(shù)據(jù)的“0”或“1”就可控制調(diào)制后兩個(gè)脈沖串之間的時(shí)間間隔,即調(diào)制PWM的占空比。比如若傳送數(shù)據(jù)的波特率為1200bps,則每個(gè)數(shù)位“0”就對(duì)應(yīng)32個(gè)載波脈沖調(diào)制信號(hào)。紅外發(fā)射管D1采用TSAL6200紅外發(fā)射二極管,其實(shí)現(xiàn)將電信號(hào)轉(zhuǎn)變成一定頻率的紅外光信號(hào),它發(fā)射一種時(shí)斷時(shí)續(xù)的高頻紅外脈沖信號(hào),由于脈沖串時(shí)間長(zhǎng)度是恒定的,根據(jù)脈沖串之間的間隔大小就可以確定傳輸?shù)臄?shù)據(jù)是“0”還是“1”。
2.2 紅外接收電路設(shè)計(jì)
紅外接收電路主要采用Vishay公司的專用紅外接收模塊HS0038B。接收電路及HS0038B內(nèi)部結(jié)構(gòu)如下:
接收電路工作原理為:當(dāng)接收到載波頻率為38KHz的脈沖調(diào)制信號(hào)時(shí),首先,HS0038B內(nèi)的紅外敏感元件將脈沖調(diào)制紅外光信號(hào)轉(zhuǎn)換成電信號(hào),再由前置放大器和自動(dòng)增益控制電路進(jìn)行放大處理,然后通過(guò)帶通濾波器進(jìn)行濾波,濾波后的信號(hào)由解調(diào)電路進(jìn)行解調(diào),最后由輸出電路進(jìn)行反向放大并輸出低電平;未接收到載波信號(hào)時(shí),電路則輸出高電平。這樣就可以將斷斷續(xù)續(xù)的紅外光信號(hào)解調(diào)成一定周期的連續(xù)方波信號(hào),并通過(guò)單片機(jī)的串口輸入單片機(jī),由單片機(jī)處理后便可以恢復(fù)出原始數(shù)據(jù)信號(hào)。
3、主從式紅外通信軟件設(shè)計(jì)
主從式紅外通信中主機(jī)紅外接收、發(fā)送電路與從機(jī)的電路完全相同,紅外線的載波頻率也相同。在紅外通信系統(tǒng)中,若采用不同載波頻率來(lái)區(qū)分主機(jī)及從機(jī)之間的通信可以通過(guò)改善紅外發(fā)射和接收電路的頻率特性,但是這樣會(huì)大大提高硬件成本,本系統(tǒng)通過(guò)配置適當(dāng)?shù)耐ㄐ艆f(xié)議來(lái)降低硬件成本。為了避免發(fā)射時(shí)造成對(duì)本機(jī)的干擾,系統(tǒng)采用異步半雙工通信模式,在同一時(shí)間內(nèi)可以是主機(jī)發(fā)送,從機(jī)接收;也可以是從機(jī)發(fā)射,主機(jī)接收。主機(jī)及從機(jī)通信流程如下:
主機(jī)通信過(guò)程為:(1) 上電初始化,完成UART的工作模式、波特率的設(shè)置(系統(tǒng)波特率為2400bps);CCU模塊PWM工作模式、PWM頻率設(shè)定。CCU模塊工作在對(duì)稱的、非反向的PWM模式,頻率38KHz,占空比50%;(2) 等待數(shù)據(jù)發(fā)送控制信號(hào)到來(lái);(3) 若接收到發(fā)送控制信號(hào),則立即通過(guò)紅外串行發(fā)送16字節(jié)數(shù)據(jù);(4) 通過(guò)紅外接口接收從機(jī)返回的16字節(jié)數(shù)據(jù);(5) 比較接收到的16字節(jié)與發(fā)送到16字節(jié)數(shù)據(jù),若一致則發(fā)送下一個(gè)數(shù)據(jù),否則重發(fā)該數(shù)據(jù)。
從機(jī)通信過(guò)程為:(1) 上電初始化,完成UART的工作模式、波特率設(shè)置;CCU模塊PWM工作模式、PWM頻率設(shè)定;(2) 通過(guò)紅外接口從主機(jī)接收16字節(jié)數(shù)據(jù);(3) 判斷是否為重發(fā)數(shù)據(jù),若是則覆蓋前次接收到的數(shù)據(jù)。
主機(jī)和從機(jī)通信過(guò)程包括的函數(shù)主要有系統(tǒng)初始化函數(shù)UART_Init(),向串口發(fā)送數(shù)據(jù)函數(shù)UART_SendByte()、 串口接收紅外信號(hào)數(shù)據(jù) UART_RcvByte( )等。部分函數(shù)程序代碼如下:
UART_SendByte(unit8 dat) //向串口發(fā)送數(shù)據(jù)
{ SBUF = dat; //發(fā)送數(shù)據(jù)
while(TI = =0; // 等待發(fā)送完畢
TI = 0;
}
unit8 UART_RcvByte() //接收串口數(shù)據(jù)
{if(RI = =0) return(0); //若沒(méi)有接收到數(shù)據(jù),則返回0
*dat = SBUF;
RI = 0;
return(1);
}
4、結(jié)束語(yǔ)
紅外通信可用于許多需短距離及非接觸式傳輸數(shù)據(jù)的場(chǎng)合。本文設(shè)計(jì)的主從式紅外通信接口具有硬件電路簡(jiǎn)單、成本低、通信可靠等特點(diǎn),實(shí)現(xiàn)了主機(jī)及從機(jī)雙方非接觸式的數(shù)據(jù)傳輸。適當(dāng)修改通信軟件就可以讓系統(tǒng)用于紅外抄表、遙控、遙測(cè)等許多場(chǎng)合。