-
Ⅳ 赤外線 LED 活用例(赤外線通信)
3 実験
(1) 赤外線通信の様子を調べる回路の製作
ア 使用部品
実験に使用する部品を表Ⅳ-3に示す。
No
部品名
個数
1
家庭用電化製品のリモコン
1
2
ブレットボード
1
3
赤外線受信モジュール
1
4
抵抗 430Ω
1
5
信号確認用赤色発光ダイオード
1
6
測定用オシロスコープ
1
7
電池 BOX 単三 4 本
1
8
電池スナップ
1
9
接続ケーブル
数本
10
電池
4本
イ 実験回路
受信回路図を図Ⅳ-8に示す。また、完成した写真を図Ⅳ-9に示す。
ウ 実験手順
① 家電用赤外線リモコンと製作した基板を、図Ⅳ-10 のように配置する。
② 図Ⅳ-11 のように、オシロスコープをセットし波形を観測する。観測された波形を
スケッチする。
表Ⅳ-3 赤外線通信実験ボード部品表
図Ⅳ-9 完成基板
図Ⅳ-10 配置の様子
図Ⅳ-8 受信回路図
③ 各自の測定波形と、図Ⅳ-12 と比較検討する。
エ 参考資料
赤外線通信の様子をオシロスコープで観測した波形の例を図Ⅳ-12 に示す。
(2)赤外線通信応用回路の製作
ア 使用部品
赤外線送信基板の部品表を表Ⅳ-4に、赤外線受信基板の部品表を表Ⅳ-5に示す。
No
部品名
個数
1
PIC16F84A
1
2
ユニバーサル基板
1
3
赤外線発光ダイオード
1
4
赤色発光ダイオード
1
5
三端子レギュレータ
1
6
抵抗 430Ω
1
7
抵抗 200Ω
3
8
電解コンデンサ 47μF
2
9
セラミックコンデンサ
2
10
電池スナップ
1
11
錫メッキ線
数本
12
006P 電池
1
13
トグルスイッチ
1
図Ⅳ-11 実験の様子
表Ⅳ-4 送信基板部品表
図Ⅳ-12 赤外線通信の波形(参考)
No
部品名
個数
1
PIC16F84A
1
2
ユニバーサル基板
1
3
赤外線受信モジュール
1
4
発光ダイオード 各4色
4
5
三端子レギュレータ
1
6
抵抗 430Ω
5
8
電解コンデンサ 47μF
2
9
セラミックコンデンサ
2
10
電池スナップ
1
11
錫メッキ線
数本
12
006P 電池
1
イ 製作する赤外線通信基板
通信制御には送信回路側のマイコンを利用し、押しボタンスイッチにより通信情報
を変化させ、受信基板側の4種類のLED点灯を制御するものである。製作する基板の写
真を、図Ⅳ-13と図Ⅳ-14に示す。
表Ⅳ-5 受信基板部品表
図Ⅳ-13 通信基板 送信部
図Ⅳ-14 通信基板 受信部
ウ 赤外線通信によるロボットの制御
ロボットは、赤外線LEDから信号を送信し、受信した信号により、各部のモータを制
御する。試作したロボットを、図Ⅳ-15と図Ⅳ-16に示す。
(ア) 市販のキット
ワイヤードコントロールキット「シャベルトーザ」(㈱タミヤ製)のワイヤードリ
モコンの制御部分に、今回製作した赤外線受信基板を取り付ける。受信信号をLEDで確
認し、そこに、モータ駆動用ICを追加する。このキットはアームと左右のキャタピラ
用モータと合計3個モータが使用されているため、3個のモータドライブ用ICを取り付
ける。製作回路図を図Ⅳ-17、図Ⅳ-18に示す。
図Ⅳ-17 赤外線通信送信基板 回路図
図Ⅳ-15 赤外線通信を用いた
通信ロボット
図Ⅳ-16
市販キットに赤外線通信
を装備させたもの
(イ) 制御プログラム
通信基板送信プログラムリスト ; **************************************************************** ; 情報教育教材プログラムリスト ; 赤外線送信機プログラム ; **************************************************************** LIST P=PIC16F84A ; 使用する PIC を指定 INCLUDE "P16F84A.INC" ; 読み込む設定ファイルを指定 ; **************************************************************** LEDOFF EQU 0FFH ; LED消灯データ設定 LEDON EQU 00H ; LED点灯データ設定 CNT1 EQU 0CH ; タイマ1用カウント変数 CNT2 EQU 0DH ; タイマ2用カウント変数 CNT3 EQU 0EH ; タイマ3用カウント変数 WWW EQU 0FH ; 搬送波用カウント変数 ; **************************************************************** ORG 0 ; プログラム先頭アドレス BSF STATUS,RP0 ; バンク1を選択 CLRF TRISA ; portA をすべて出力 node に 設定 MOVLW 0FFH ; ポート B 設定用データ MOVWF TRISB ; ポート B をすべて入力モード に設定 BCF OPTION_REG,7 ; ポート B のプルアップ抵抗は 有効 BCF STATUS,RP0 ; バンク0を選択 MOVLW LEDOFF ; 消灯データを W レジスタにセ ット MOVWF PORTA ; 消灯データをポート A に出力 ; スイッチの読み込み ******************************************* REPEAT BTFSS PORTB,4 ; SW4 をチェックGOTO MAE ; 0(ON)ならば上へ
BTFSS PORTB,3 ; SW3 をチェック
GOTO MIGI ; 0(ON)ならば右へ
BTFSS PORTB,0 ; SW0 をチェック GOTO USHIRO ; 0(ON)ならば後へ BTFSS PORTB,2 ; SW2 をチェック GOTO HIDARI ; 0(ON)ならば左へ BTFSS PORTB,1 ; SW1 をチェック
GOTO NAKA ; 0(ON)ならば中へ
GOTO REPEAT ; 繰り返し ; 各スイッチのデータ送信 8 ビット(1+ABCD+10101) *********** MAE CALL B_1 ; スタートビット 1 CALL B_0 ; データ4個 B0101 CALL B_1 CALL B_0 CALL B_1 CALL B_1 ; ストップビット 10101 CALL B_0 CALL B_1 CALL B_0 CALL B_1 CALL TIMER3 ; 時間かせぎ CALL TIMER3 GOTO REPEAT MIGI CALL B_1 ; スタートビット 1 CALL B_0 ; データ4個 B0010 CALL B_1 CALL B_0 CALL B_0 CALL B_1 ; ストップビット 10101 CALL B_0 CALL B_1 CALL B_0 CALL B_1 CALL TIMER3 ; 時間かせぎ CALL TIMER3 GOTO REPEAT USHIRO CALL B_1 ; スタートビット 1 CALL B_1 ; データ4個 B1010 CALL B_0 CALL B_1 CALL B_0 CALL B_1 ; ストップビット 10101 CALL B_0 CALL B_1 CALL B_0 CALL B_1 CALL TIMER3 ; 時間かせぎ CALL TIMER3 GOTO REPEAT HIDARI CALL B_1 ; スタートビット 1 CALL B_0 ; データ4個 B0001 CALL B_0 CALL B_0 CALL B_1 CALL B_1 ; ストップビット 10101
図Ⅳ-18 赤外線通信受信部 回路図
CALL B_0 CALL B_1 CALL B_0 CALL B_1 CALL TIMER3 ; 時間かせぎ CALL TIMER3 GOTO REPEAT NAKA CALL B_1 ; スタートビット 1 CALL B_0 ; データ4個 B0000 CALL B_0 CALL B_0 CALL B_0 CALL B_1 ; ストップビット 10101 CALL B_0 CALL B_1 CALL B_0 CALL B_1 CALL TIMER3 ; 時間かせぎ CALL TIMER3 GOTO REPEAT ;データ0の送信 ******************************************* B_0 MOVLW D'50' ; 12×50=600μS MOVWF WWW MOVLW LEDOFF ; 消灯データを W レジスタにセ ット MOVWF PORTA ; 消灯データをポート A に出力 L0 CALL TIMER1 DECFSZ WWW,1 GOTO L0 RETURN ; データ1の送信 ******************************************* B_1 MOVLW D'25' ; 12×25×2=600μS MOVWF WWW L1 MOVLW LEDON ; 点灯データを W レジスタにセット MOVWF PORTA ; 点灯データをポート A に出力 CALL TIMER1 MOVLW LEDOFF ; 消灯データを W レジスタにセット MOVWF PORTA ; 消灯データをポート A に出力 CALL TIMER1 DECFSZ WWW,1 GOTO L1 RETURN ; タイマサブルーチン ******************************** TIMER1 MOVLW D'6' ; 12μ秒タイマサブルーチン MOVWF CNT1 LOOP1 NOP NOP DECFSZ CNT1,1 GOTO LOOP1 RETURN TIMER2 MOVLW D'62' ; 0.1 ミリ秒タイマサブルーチン MOVWF CNT2 LOOP2 NOP DECFSZ CNT2,1 GOTO LOOP2 RETURN TIMER3 MOVLW D'100' ; 10 ミリ秒タイマサブルーチン MOVWF CNT3 LOOP3 NOP CALL TIMER2 DECFSZ CNT3,1 GOTO LOOP3 RETURN END ; プログラムの終わり 通信基板受信プログラムリスト ; ********************************************************** ; 情報教育教材プログラムリスト ; 赤外線受信機プログラム ; ********************************************************** LIST P=PIC16F84A ;使用する PIC16F84A を指定 INCLUDE "P16F84A.INC";読み込む設定ファイルを指定 ; *************************************************************** LEDOFF EQU 00H ; LED消灯データ設定 CNT1 EQU 0CH ; タイマ用カウント変数 KEEP EQU 0DH ; 受信データ退避 WWW EQU 0EH ; 搬送波用カウント変数 ; ************************************************************** ORG 0 ; プログラム先頭アドレス BSF STATUS,RP0 ; バンク1を選択 MOVLW 1FH ; ポート A 設定用データ MOVWF TRISA ; ポート A をすべて入力モード CLRF TRISB ; ポート B をすべて出力モード BCF STATUS,RP0 ; バンク0を選択 MOVLW LEDOFF ; 消灯データを W レジスタにセット MOVWF PORTB ; 消灯データをポート B に出力 ; 赤外線モジュールの読み込み ********************************* REPEAT BTFSS PORTA,4 ; 赤 外 線 モ シ ゙ ュ ー ル を チ ェ ッ ク (START_BIT) GOTO RX ; ON ならば受信ルーチンへ GOTO REPEAT ; 繰り返し ; スタートビット2回目のチェック ****************************** RX MOVLW D'35' ; 12×35=420μS MOVWF WWW CH CALL TIMER1 DECFSZ WWW,1 GOTO CH BTFSC PORTA,4 ; 赤 外 線 モ シ ゙ ュ ー ル を チ ェ ッ ク (START_BIT)
GOTO REPEAT ; OFF ならば間違いなので戻る
CLRF KEEP ; 受信データ退避レジスタ 1 のクリア ; 送信データ4ビット分の読み取り ****************************** MOVLW D'50' ; 12×50=600μS 動作データ 0 ビ ット目 MOVWF WWW L0 CALL TIMER1 DECFSZ WWW,1 GOTO L0 BTFSS PORTA,4 ; 赤外線モジュールをチェック BSF KEEP,3 ; ON ならば退避レジスタ1にセット MOVLW D'50' ; 12×50=600μS 動作データ 1 ビ ット目 MOVWF WWW L1 CALL TIMER1 DECFSZ WWW,1 GOTO L1 BTFSS PORTA,4 ; 赤外線モジュールをチェック BSF KEEP,2 ; ON ならば退避レジスタ1にセット MOVLW D'50' ; 12×50=600μS 動作データ 2 ビ ット目 MOVWF WWW L2 CALL TIMER1 DECFSZ WWW,1 GOTO L2 BTFSS PORTA,4 ; 赤外線モジュ-ルをチェック BSF KEEP,1 ; ON ならば退避レジスタ1にセット MOVLW D'50' ; 12×50=600μS 動作データ 3 ビ ット目 MOVWF WWW L3 CALL TIMER1 DECFSZ WWW,1 GOTO L3 BTFSS PORTA,4 ; 赤外線モジュールをチェック BSF KEEP,0 ; ON ならば退避レジスタ1にセット ; ストップビット5個(10101)のチェック ************************* MOVLW D'50 '; 12×50=600μS 動作データ 4 ビット 目(STOP_BIT0) MOVWF WWW L4 CALL TIMER1 DECFSZ WWW,1 GOTO L4 BTFSC PORTA,4 ; 赤外線モジュールをチェック
GOTO REPEAT ; OFF ならば間違いなので戻る
MOVLW D'50 ; 12×50=600μS 動作データ 5 ビット 目(STOP_BIT1) MOVWF WWW L5 CALL TIMER1 DECFSZ WWW,1 GOTO L5 BTFSS PORTA,4 ; 赤外線モジュールをチェック GOTO REPEAT ; ON ならば間違いなので戻る MOVLW D'50' ; 12×50=600μS 動作データ 6 ビ ット目(STOP_BIT2) MOVWF WWW L6 CALL TIMER1 DECFSZ WWW,1 GOTO L6 BTFSC PORTA,4 ; 赤外線モジュールをチェック
GOTO REPEAT ; OFF ならば間違いなので戻る
MOVLW D'50' ; 12×50=600μS 動作データ 6 ビ ット目(STOP_BIT3) MOVWF WWW L7 CALL TIMER1 DECFSZ WWW,1 GOTO L7 BTFSS PORTA,4 ; 赤外線モジュールをチェック GOTO REPEAT ; ON ならば間違いなので戻る MOVLW D'50' ; 12×50=600μS 動作データ 6 ビ ット目(STOP_BIT4) MOVWF WWW L8 CALL TIMER1 DECFSZ WWW,1 GOTO L8 BTFSC PORTA,4 ; 赤外線モジュールをチェック
GOTO REPEAT ; OFF ならば間違いなので戻る
; データ受信後の処理 ****************************************** MOVF KEEP,0 ; KEEP1 の内容を W レジスタへ転送 MOVWF PORTB ; OK なら W レジスタのデータをポート B に出力 GOTO REPEAT ; タイマサブルーチン ****************************************** TIMER1 MOVLW D'6' ; 12μ秒タイマサブルーチン MOVWF CNT1 LOOP1 NOP NOP DECFSZ CNT1,1 GOTO LOOP1 RETURN END ; プログラムの終わり