摘 要:Proteus提供了兼容SIRC的IRLINK組件,使得在虛擬環境下仿真紅外遙控收發成為可能。本設計中,當按下發射器的任一按鍵時,對應的12位編碼被“發送”到接收端的紅外接收頭,經程序解碼后,12-Bit的編碼將會顯示在3個數碼管上。
關鍵詞:紅外遙控AVR單片機Proteus仿真
中圖分類號:TP273文獻標識碼:A文章編號:1674-098X(2011)06(a)-0069-01
紅外遙控技術實際上是一種遠程遙控技術,它在工業控制、家用電器等領域應用廣泛。紅外遙控是一種無線、非接觸式的控制技術,具有抗干擾能力強,信息傳輸可靠等優點,被越來越多的電子設備廣泛采用,并逐漸應用到計算機系統中。
1 紅外遙控的原理及特點
紅外遙控的發射端采用紅外發光二極管來發出經過調制的紅外光波;紅外接收端主要由紅外接收二極管組成,能將紅外發射端發出的紅外光轉換為相應的電信號。
由于紅外遙控不具備像無線電遙控那樣穿過障礙物去控制被控對象的能力,所以同類產品的紅外遙控器,可以有相同的遙控編碼,而不會出現遙控信號“串門”的情況。這為大批量生產以及在家用電器上普及紅外遙控提供了極大的方便。
2 Proteus仿真軟件簡介
Proteus軟件是英國Labcenterelectronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及其外圍器件。它是目前最好的仿真單片機及其外圍器件的工具。使用Proteus豐富的硬件資源庫和強大的仿真能力,它能夠仿真現階段大部分常用型號的單片機及其外圍電子系統。在軟件調試方面,將其與單片機編譯器聯合調試,可以立即進行硬、軟件聯調的系統仿真,直接使用仿真器來調試系統,觀察調試效果。
3 設計思路
紅外光的波長為950nm,低于人眼的可見光譜,因此我們是看不見這種光線的。在大量的電子產品中都能使用紅外遙控器對受控設備進行非接觸式控制,但由于有熱量的物體都能發出紅外光,所以為了保證紅外遙控器發出的紅外信號能夠不受干擾地被接收端識別,應將紅外信號進行編碼。為了解決這個問題,需要將待發送的編碼進行調制。紅外發射端和接收端都調諧到一定的頻率,這個頻率就是收發雙方所使用的載波頻率。
使用紅外信號發送編碼時,我們使用的是Proteus組件IRLINK兼容SONY的SIRC協議。SIRC紅外控制協議有3個版本:12位、15位及20位版本。本設計中使用的是12位版本,其中5位為地址編碼,7位為命令編碼,使用的載波頻率為40KHz。其中地址編碼與命令編碼需要事先預定義好。
SONY的SIRC協議使用脈寬調制,使用不同的脈沖寬度來對比特位進行編碼。對于40KHz的載波,它用1.2ms載波脈沖寬度表示邏輯“1”,用0.6ms載波脈沖寬度表示邏輯“0”,載波脈沖之間用0.6ms的固定空閑周期進行分隔。在發送12位的編碼之前要先發送2.4ms寬度的脈沖信號作為起始信號,隨后是0.6ms的空閑周期,接下來再發送7位命令與5位地址,發送順序是從低位向高位逐次發送。
4 具體實現方法
當前版本的Proteus中還未有調制發送SIRC濾波與解碼的仿真器件。本設計是通過兩塊AVR單片機來實現的,其中一塊ATmega8用于生成濾波信號,調制發送自己編制好的SIRC編碼,另一塊ATmega16則通過兼容SIRC協議的IRLINK組件接收紅外信號并進行解碼。前者在本設計中作為“紅外遙控器”使用,后者則作為紅外受控器件使用。
程序首先編寫出輸出600μs紅外載波的脈寬程序,因為載波脈沖寬度有3種,為2.4ms、1.2ms、0.6ms,它們分別是600μs的4倍、2倍和1倍,這樣調用時分別給出參數值4、2、1即可輸出3種不同寬度的濾波,它們分別表示起始信號,邏輯“1”與邏輯“0”。
在編寫好了輸出脈寬程序后,在發送12位紅外編碼數據的函數中就可以隨意調用它了,函數首先發送2.4ms起始信號,然后開始發送12位編碼,控制這12位編碼由低位到高位的逐次比特發送過程。當遇到1時就發送1.2ms寬度載波脈沖,當遇到0時就發送0.6ms寬度載波脈沖,每發送完一位后接著送出0.6ms的空閑區,該空閑區用來分隔所調制的各個比特位。
在調試過程中,可以用虛擬示波器的A、B兩通道觀察IRLINK的I/O信號,可觀察到兩組波形,上面是發送的調制信號,前面較寬的區域是2.4ms的載波信號,之間間隔的區域是0.6ms的間隔區域,如我們發送編碼“403”時,按從后向前的順序就可觀察到所顯示的頻帶編碼是010000000011。下面的波形是通過IRLINK解調的結果,濾波已去掉,我們可以清晰地觀察到在ATmega16上接收到的脈沖波的“0”和“1”兩種邏輯狀態。
最后就是ATmega16單片機在已接收到濾波信號后,如何解析出對應的12位SIRC編碼的問題。在濾波信號中,所有的高電平都與600μs的間隔區域相對應,它們的寬度完全相同。而所有的低電平則具有不同的寬度,SIRC編碼就是由這些不同寬度的低電平來分別表示邏輯“0”和“1”的。由IRLINK解調后的信號通過INT0送入ATmega16,再通過編寫INT0中斷程序來進一步完成解調后的信號解碼工作。對于最終解析出來的12位編碼,在本設計中將其看成3個獨立的字節,將其分別顯示在3個數碼管上。
5 結語
上述設計說明,利用Proteus仿真可以實現紅外遙控功能。并且利用Proteus軟件所提供的虛擬儀器和儀表來設計單片機系統,不僅經濟優勢明顯,而且大大提高了開發效率。但我們還應該意識到,這種實現方式還存在著一定的弊端,比如,Proteus元件庫中的模擬器件類型較少,可供我們選擇的余地較小等缺點。而且,仿真也不能完全地取代實物,只有將Proteus軟件的模擬結果應用于真實的電路系統中,才能真正完成一個實體項目。
參考文獻
[1]彭偉.單片機C語言程序設計實例100例——基于AVR+Protues仿真[M].北京:北航出版社,2010.
[2]周潤景,等.基于Proteus的電路及單片機設計與仿真[M].北京:北京航空航天大學出版社,2010.