我們知道,在紅外通信中(例如電視機、電風扇、DVD等家電的遙控器),其載波頻率通常為38KHz。也有一些系統使用32KHz,36KHz,40KHz,56KHz等載波頻率,但是比較少見。我們可以用T0或T1腳產生38KHz的波特率,然后把串口TXD送出的信號也疊加到上面(調制),這樣就形成線外信號的載波傳輸,調制后再通過紅外發光二極管發送出去。接收則使用3端紅外接收模塊。紅外接收模塊的載波頻率固定為38KHz,集成了紅外線的接收、放大、解調等功能,解調后的數據直接輸入UART的RXD引腳。通信的波特率設置為2400bps(38KHz的載波頻率不適于更高的波特率)。 為了避免發射時造成對本機的干擾,我們采用了半雙工的通信方式。所謂半雙工通信,指的是主機與從機可以進行雙向通信,但是不能同時進行,在同一時間內,要么是主機發射,從機接收;要么是從機發射,主機接收。事實上,一般紅外線接收模塊的接收載波中心頻率雖然是38KHz,但其接收頻率實際上是非常寬的,從30KHz到60KHz它都可以正確接收和解調。所以主機和從機使用不同的載波頻率以實現全雙工通信也是比較困難的,除非使用選頻特性比較好的紅外線接收電路。在紅外線傳輸過程中采用的是負邏輯,即有紅外線表示邏輯0,無紅外線表示邏輯1。而紅外接收模塊平時為高電平,接收到紅外信號就變為低電平。 如何增加傳送距離呢?有兩個方法:其中一個方法是采用高靈敏度的紅外接收電路,但是其成本比較高,且比較容易受到干擾。另一個方法是提高發射功率(指峰值功率,不一定需要提高平均功率),這可以通過減小連接到發射器的電阻R來實現,通常可以減小到10Ω。但是需要注意的是,在這種情況下,為了降低功耗和對其他紅外設備的干擾,紅外線載波的占空比需要降低。一般選擇30%左右的占空比,,也就是DATCLK的高電平時間應為18uS左右,而低電平時間應為8uS左右(38KHz載波頻率) 二. PC紅外接收原理 1. RS232標準簡介 現在的PC中,一般已經集成了紅外通信端口,但由于其通信協議比較復雜,與單片機接口不便。為簡便起見,我們采用在PC的COM口(RS232端口)上擴展一個紅外接收電路來實現。在此,首先對RS232標準作一個簡單介紹。 RS232是EIA(電子工業聯合會)制定的一個串行通信推薦標準,用于DTE與DCE的連接(典型的DTE是PC,典型的DCE是調制解調器),有效傳輸距離15米,如果采用4~20mA的電流環則可達到1公里以上的通信距離。RS232中,共規定了25條信號線(包括數據線、控制線、狀態線等),但是在實際應用中不一定要用到全部的信號線。在早期的PC中,通常配置有一個25針的串行口和一個9針的串行口;而現在生產的PC中,兩個串行口一律采用9針的DB9插座。9針串行口的信號線定義如表1所示: 2. 紅外接收擴展電路 這里我們認為DTE是PC,那么就可以從表1中看到,PC的輸出腳有3個:TXD、DRT和RTS。TXD是串行數據發送端口,波特率從110bps到115200bps(需硬件支持)。DTE用DTR以告訴DCE已經準備好接收數據,并用RTS向DCE請求發送數據,這兩個信號主要用于硬件流量控制。在紅外接收擴展電路中,不需要進行流量控制,而是利用DTR和RTS為接收電路提供電源。我們知道,標準的RS232電平是負邏輯:+3V~+15V表示邏輯0;-3V~-15V表示邏輯1。這樣,只要使能DTR和RTS,這兩個引腳就可以輸出+15V左右的電平,從而給紅外接收電路供電。根據這樣的設計思路,紅外接收擴展電路如圖1: 上圖中,D1、D2和D4起隔離作用,R1主要用來保護PC串口,C1和C2用來濾波,U1是三端穩壓器,為紅外接收模塊提供+5V工作電源。U2是三端集成紅外接收模塊,一般接收中心頻率為38KHz,可以完成從紅外接收、濾波到解調的全部過程。LED作為指示燈,當接收到紅外信號時,LED會閃亮。此電路的關鍵之處在于DTR、RTS和TXD三個引腳的接法:DTR和RTS為電源供應腳,可提供+15V左右的電源,前提是需要在PC監控程序中使能。TXD引腳為接收提供負電源。TXD腳是數據發送腳,為什么可以提供負電源呢?這正是本電路的巧妙之所在。我們知道,RS232協議標準中,當不發送數據時,TXD腳輸出低電平,即-15V左右。在紅外接收擴展電路中,只具有紅外接收功能,而無發送功能,因此正好可以利用TXD腳為接收提供低電平。當沒有接收到紅外信號時,紅外接收模塊的1腳輸出高電平,三極管Q1截止,TXD通過D4把RXD腳下拉到低電平;而當接收到紅外信號時,紅外接收模塊輸出低電平,三極管Q1導通,這時RXD腳變為高電平。 |