<赤外線コントロール>
テレビ、レコーダなどで使用されてる赤外線リモコンで何かコントロールしたいと思い
赤外線リモコンの仕組みを調べ始めました。
赤外線の実験、左側は赤外線の受信、右側は赤外線の送信です。画像をクリックしてみて下さい。
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 */
}