概略 テレビ及びビデオ用赤外線リモコンの送信器から送信される、コードを判定し制御 端子を、on、off、及び反転することが出来ます。 家電製品協会ホーマットに準拠している送信器であれば、殆ど動作可能にしてあり ます、当方でソニー製マルチリモコン送信器で確認を行ったメーカーは、松下、日 立、東芝、NEC、サンヨー、ビクター、パイオニアのテレビリモコンが動作しま した、ソニー、三菱、シャープはホーマットが少し違うため動作しません。ただし 動作したメーカーの純正リモコンで確認はしていません。また、一つのメーカーの リモコンにもホーマットに幾つかの種類が有るため、必ずうまく動作するとは限り ません。
Pic12c509にしていますが、プログラムステップが半分の12c508で かまいません。ただし、コードを学習記憶する機能は有りませんからソースプログ ラムに受信判定のコードを記述する必要が有るため、リモコン送信器を変える場合 は、ソースプログラムを変更しなければなりません。その為コード解析器が無いと 変更が出来ません。 回路図
サンプルプログラムでは、日立製のテレビリモコンのチャンネルUPKeyと音量 UPkeyを受信して2ch の出力端子をトグル動作を行うように書いて有ります。 日立製のリモコンコードにしたのは、リモコンパルスの時間が比較的長く判定がし やすく安定動作が期待出来そうだったからです。ただし、日立製のテレビリモコン に2種類有るようなので注意が必要です。 コンフィグレーションレジスタの設定で、MCLRは内部Vcc接続、OSCは内 部RC発信器でテストを行ってあります。 一応内部クロックで動かす事を考えて、エラーチェックを甘くしてありますが、 温度変化に対する安定性を考えると4MHzのセラロックにしたほうが良いと思 います。 変更方法 使用目的に合わせて変更を行う場合は、ソースファイルの4カ所の ;***** で囲 まれた部分を変更します。なお、変更箇所はソースファイルの先頭部分にまとめて 有ります。 1・リモコン受信コード設定 リモコンのコードを調べて、コード解析器の表示した16進コードに書き替えます サンプルでは2個しか使用していませんが最大3個まで出来ます。ソースファイル の10行目からの以下の部分を変更します。 ;----------------------------------------------------------- ; --- リモコン受信コード設定 --- ; ******************************** vr_code0_0 equ 0x50 ; _code0 最上位(コード解読機の左端) vr_code0_1 equ 0xaf vr_code0_2 equ 0x12 vr_code0_3 equ 0xed vr_code1_0 equ 0x50 ; _code1 最上位(コード解読機の左端) vr_code1_1 equ 0xaf vr_code1_2 equ 0x19 vr_code1_3 equ 0xe6 vr_code2_0 equ 0xff ; _code2 最上位(コード解読機の左端) vr_code2_1 equ 0xff vr_code2_2 equ 0xff vr_code2_3 equ 0xff ; ******************************** 2・出力ピンの変更及び追加 出力ピンを変更、追加を行う場合はその宣言と初期化を行う必要が有ります。 サンプルプログラムでは、GPIO−0を赤外線センサーの入力、GPIO−1と 2をリモコン出力にしてあります。そうして初期化プログラムで電源をonした時 に、Highになるようにしてあります。 Vccと出力ピンの間にホトリレー(SSR)を接続しAC電源を制御するように 予定で、リモコン受信器の電源をonした時に負荷がoffになるようにしてあり ます、もし負荷として照明器具をしようするので有れば負荷がonになるようにし ておくほうが良いと思います。そうしないとリモコン送信器が壊れた時に照明を点 灯する事が出来なくなります。それには、GNDと出力ピンの間にSSRを接続す るか、初期化プログラムを変更します。ソースファイルの40行目からの以下の部 分を変更します。 ;--------------------------------------------------------------- ; 入出力ポートの宣言と初期化 ;--------------------------------------- ; _gpio: gpioポートの操作するビット名設定 注意 ( gp-3 は入力のみ) ; ******************************** _Rcnin equ 0 ; リモコン入力(このラベル名の変更禁止) _out0 equ 1 ; リモコン出力0 _out1 equ 2 ; リモコン出力1 ; ******************************** ; --- 入出力ポートの初期化( gp-0,1,3 プルアップ済み ) ---- set_gpio: macro ; ******************************** movlw b'00001001' ; gp-0,3(in) gp-1,2,4,5(out) tris _gpio movlw b'00000110' ; gp-1,2(High) movwf _gpio ; ******************************** endm 3・出力動作の変更 コード照合して合致した場合は _code0 であれば、_buff1 レジスタの bit0 がH ighになります、また _code1 であれば、_buff1 レジスタの bit1 がHigh になります、また _code2 であれば、_buff1 レジスタの bit2 がHighになり ますから、それらのビットをチェックして出力ピンを制御するプログラムを作成し てください。サンプルはトグル動作を行います。ソースファイルの77行目からの 以下の部分です。 ;------------------------------------------------------------------------ ; *** コード照合した時の出力制御 ******* ; _buff1のbit0(_code0)とbit1(_code1)とbit2(_code2)が受信したデータで ; 1 になります。メモリーは_buff2,_count1,_count2 は自由に使用できます ;------------------------------------------------------------------------ out_control: macro ; ******************************** btfss _buff1,_code0 ; コード0が1だとスキップ goto o_cont_10 btfss _gpio,_out0 ; _out0 が1だとスキップ goto o_cont_01 bcf _gpio,_out0 ; _out0 を0にする goto o_cont_end o_cont_01: bsf _gpio,_out0 ; _out0 を1にする goto o_cont_end o_cont_10: btfss _buff1,_code1 ; コード1が1だとスキップ goto o_cont_end btfss _gpio,_out1 ; _out1 が1だとスキップ goto o_cont_11 bcf _gpio,_out1 ; _out1 を0にする goto o_cont_end o_cont_11: bsf _gpio,_out1 ; _out1 を1にする o_cont_end: ; マクロにしたため必要になります。 nop ; こうすると本体と独立できます ; ******************************** endm 参考文献 トランジスタ技術 1998年12月号 最後に 疑問点等があればメールをください。出来る限りお答えするようにします。 このプログラムは、フリーウェアーなので、自由に配布可能です。 使用者自身の責任でご使用下さい。 「このソフトによってどのような損害が出ても私は責任を負いかねます。」
ファイル内容 picrcn52.asm ソースファイル picrcn52.hex Hexファイル picrcn52.gif 回路図 readme.txt 説明 バージョン履歴 Ver5.0B 99/11/03 gp-3 が入力のみにもかかわらず出力設定になっていたのを修正(未チェック) Ver5.0A スタートバージョン