赤外線送受信の実験 赤外線送信機と赤外線受信をそれぞれPICを使って製作. 開発環境はC言語(HI-TECH PICC-LITE).赤外線は通常38kHzで変調されているので, まずはLEDを13マイクロ秒ごとにON-OFFするプログラム作成. 10回点減した後に10回分の待ち時間を入れた.(ただし,プログラムは動けばいい程度のレベル)実験回路はこの通り.中央左が赤外線LED,右が受信機.
オシロスコープで波形の観測.上がLEDの発光波形.下が受信機の出力波形. 発振周波数は38kHzより低くなっている. これは,処理時間が13マイクロ秒の待ち時間と比べて無視できない程度であるため. 待ち時間を減じて周波数を調整できるが,受信できているので微調整は省略.
次にパルス幅変調による多チャンネル化を考える.簡単化してデジタル2チャンネルの送信. プログラムは次の通り,ポートAから2チャンネル分のデジタル値を入力し, パルス幅を変えて2チャンネル分を順に出力する.その後十分なインターバルを入れてある.
実験した回路.スイッチ2つを並べて配置している. スイッチはプルアップされ,押すとLレベル,離すとHレベルが入力される.
2チャンネル分の波形.スイッチを押さない場合は2チャンネルともパルス幅は同じ.
片方のスイッチを押したところ,2チャンネル目のパルス幅が短くなっている.
この信号を受信するプログラムと回路を作成.プログラムは次の通り. Hレベルが続くインターバルを検出した後,パルス幅をカウントしてHレベルかLレベルかを判断する. 2チャンネル分読み取った後,ポートBに出力する.
実験回路の写真.左のPICで作られた信号が赤外線LEDで送られ,受信機で受信された信号がPICで解析され, 2チャンネル分の送受信を行う. 左側のスイッチを押した時,受信回路の左のLEDが消灯(負論理のため).
右のスイッチを押した時,右のLEDが消灯.
デジタル2チャンネル送受信の動画. --追記-- Cのソースはあまり参考にしないでください.動けばいい,程度のものです. BASICとアセンブラ世代なので,Cでちゃんとしたプログラムは組んだことありません. また,Cのソースとコンパイル結果の関係からソースの記述を工夫する必要がありそうです.