<赤外線コントロール>

テレビ、レコーダなどで使用されてる赤外線リモコンで何かコントロールしたいと思い
赤外線リモコンの仕組みを調べ始めました。
赤外線の実験、左側は赤外線の受信、右側は赤外線の送信です。画像をクリックしてみて下さい。
SW1を、押すと約80ms巾の単純赤外線パルスが出ます。SW2を押すと80ms巾の中に38Khzで変調した
赤外線パルスが出ます。(下のパルス波形参照)送信側の赤色LEDは送信確認用で点滅します。




動画で分かったと思いますが、SW2で押した即ち38Khzで変調したパルスを受光すると
受信側の赤色LEDが点滅し、SW1で押した方は、受信側の赤色LEDが点灯のままです。

すなわち、受光モジュールは38Khzで変調したパルスを受光するとH→Lになる。
従って、受信側の赤外線モジュール出力は通常H(5V)なので2SC1815がONで赤LEDが点灯する
38Khzで変調したパルスを受光するとH→Lになり2SC1815がOFFで赤LEDが消灯する。
ここでは、赤LEDの点滅が視認出来るようにパルス巾は80msにしました。

パルス波形

実験用赤外線送受信回路図
赤外線送信回路プログラムソース


#include <htc.h>

__CONFIG(FCMDIS & IESODIS & BOREN & UNPROTECT & MCLREN & PWRTEN & WDTDIS & HS);

__IDLOC(0001);

   #define _XTAL_FREQ 20000000	/* 20MHz */
 
ioport();
swra0();
swra1();
_80ms();

int n=0;
int j=0;

main()
{
	
	ioport();


	while(1){
		
		if(RA0==0 && RA1==1) swra0();
		

		if(RA1==0 && RA0==1) swra1();
		

	}///while
			
}///main


swra0()
{
/// 80ms Hレベル///
_80ms();

/// 80ms Lレベル///
	__delay_ms(80);
		
}

swra1()
{
/// 80ms Hレベル///
	RC2=1;
	__delay_ms(80);

/// 80ms Lレベル///
	RC2=0;
	__delay_ms(80);

}


_80ms()
{
/// 80ms Hレベル///
		for(j=0;j<83;++j){				
								
			for(n=0;n<40;++n){			
								
				RC2=1;				
					__delay_us(9);		
				RC2=0;					
					__delay_us(9);		
			}							
		}
					
}

ioport()
{
		ANSEL=0x0;			/* AN4-7はデジタルI/Oモード */
		CMCON0=0x07;
		TRISA=0xFF;			/* RA0-5は入力ピン */
		TRISC=0x03;			/* RC2-5は出力ピン ,RC0,1は入力ピン*/
		PORTA=0xFF;			/* RA0-5はH */
		PORTC=0x03;			/* RC1-5はL,RC0,1はH */
}