Renesas Synergy™

FAQ 1007798 : 赤外線リモコンの信号はどうなっているのですか?

[概要]
赤外線リモコンでは約950nmの波長の赤外線を使用して数バイト分の情報を低速で送信します。
赤外線を用いて0/1のデータを送信しますが、 単純に赤外線の有無でデータの 0/1を表している訳ではありません。
NECフォーマットを例にして説明します。

[概略フォーマット]
まず、赤外線のリモコン信号はリーダ・コードから始まります。
その後に16ビットのカスタム・コード、8ビットのデータ・コード及びその 0/1を反転したコードが8ビット続き、 最後にストップ・ビットがきます。

フォーマットの例を下記に示します。
この後にフレーム・スペースと呼ばれる赤外線を出さない区間が続き、 全体としては1フレーム (リーダ・コードからフレーム・スペースまで含めて) は 108msとなります。

NECフォーマットの例NECフォーマットの例

[リーダ・コード]
リーダ・コードは 9msの期間 on状態が続き、その後に 4.5msの期間 off状態となります。
この部分はその後のデータ部分とは波形 (時間) が大きく異なるので、 容易にリーダ・コードであることを識別できます。
(リピートの場合 off期間が 2.25msでその後のカスタム・コードやデータ・コードが省略され、 直ぐにストップ・ビットとなります。)

[送信データ]
カスタム・コードやデータ・コードの部分が 0/1のデータを含む部分です。
各部分はその下位ビットから順に送信されます (送信順は後述の[データ転送順序]を参照)。

また、0/1の区別は赤外線の有無ではなく、 ビットの長さ (つまりは、赤外線が出されていない期間の長さ) で区別するようになっています。
従って、カスタム・コード部分の長さはそのデータにより変化します。
ただし、データ・コードについてはその反転データも送信するので、 この部分でのトータルの 1の個数は 8つとなり長さは固定になります。

リモコン信号の0/1の違いリモコン信号の0/1の違い

なお、onの期間はその全ての期間連続して赤外線を出しているわけではありません。
一定の周波数 (キャリア周波数) で赤外線を出している期間と出していない期間を繰り返しています。
このキャリア周波数は 38KHzが標準です。
また、そのデューティ比は 1/3となります。
このように設定されているのは、できるだけ消費電力を抑えるためです。

[キャリアでの変調理由]
通常の環境では自然界にはいくつもの赤外線のノイズ源が存在しています。
これらのノイズの中で正しく信号をやり取りするには、 受信側でノイズ・レベル以上となるような強度で赤外線を送信する必要があります。

ただし、単純に赤外線の強度を上げると、大きな電力が必要になります。
このためにキャリア周波数で赤外線を on/off しています。
こうすると、同じ電力でも赤外線の強度を強くできます。

この違いを模式的に表したのが以下の図です。
キャリアを用いないときにはノイズと殆ど変わらないような場合でも、 キャリアを用いてピークの電力だけを大きくした場合には、 トータルでは同じ電力でもノイズより信号を大きくできます。
また、キャリア周波数で on/off することで、 受信時にその周波数成分以外にフィルタをかけることで、 さらにノイズに対してマージンを大きくできます。

キャリアの有無でのリモコン信号とノイズの関係キャリアの有無でのリモコン信号とノイズの関係

このようなことができるのは、時間 (間隔) でデータの 0/1を表しているからです。

[データ転送順序]
このような方法で送信するリモコンのデータ構造は、 カスタム・コードとデータ・コードから構成されています。

最初に送られるカスタム・コードは 16ビット長ですが、2つの8ビット部分に分けられます。
初期のリモコンではカスタム・コード自体は 8ビット (C0~C7) だけで、 続く 8ビット (C'0~C'7) にはその論理を反転したデータを送信するようになっていましたが、 現在では C'0~C'7 の部分にもカスタム・コードを割り振って 16ビットのカスタム・コードとなっております
(Custom Code = □□、 Custom Code' = □□ の合計16ビットで指定します)。

送信は Custom Codeの下位 (C0) から順に C7 まで出力し、 その後 Custom Code'の下位 (C'0) から C'7 まで出力します。

カスタム・コード部分の送信順カスタム・コード部分の送信順

送信するデータ自体は 8ビットです。
データの論理反転したデータを引き続き送信することで合計16ビットで使用しています。
受信の際には必ず、2つの 8ビット・データの論理が反転していることを確認することでエラー・チェックを行ってください。

データ・コード部分の送信順データ・コード部分の送信順

他にご質問がございましたら、リクエストを送信してください