※本記事にはプロモーション(広告)が含まれています。
赤外線リモコンの受信回路は、受光モジュールの3本足(OUT・GND・VS)をつなぎ、VS に 100Ω と 47µF を入れるだけです。配線は受光モジュールの回路の節、NEC フォーマットの 0 と 1 の読み方は見分け方の節、回路の値は早見表にあります。
テレビやエアコンのリモコンは、目に見えない赤外線で命令を送っています。受信回路を作ると、手元のリモコンでマイコンの LED やモーターを動かせるようになります。
この記事では、実在する受光モジュールのデータシートの数字を使って、回路・信号のしくみ・読み方・送る側の計算を、順番に説明します。

赤外線リモコンが届くまで:送る→光→受ける→読む
リモコンはボタンの番号を赤外線の点滅に変えて送り、受光モジュールがそれを H・L の信号に戻し、マイコンが H・L の長さを測って番号に戻します。
| やること | この記事の節 | |
|---|---|---|
| リモコン(送る側) | 番号を「合図の間隔」に変え、38kHz で点滅させて送る | 送る側の回路 |
| 赤外線(940nm) | 目に見えない光が空中を進む | 38kHz の変調 |
| 受光モジュール | 38kHz の点滅だけを拾って H・L にする | 3本足・回路 |
| マイコン | L になる間隔を測って 0・1 に戻す | NEC フォーマット |
受光モジュールは、光を電気に変える受光素子(フォトダイオード)・小さな電流を大きくする増幅・38kHz だけを通すフィルタ・H と L に整える回路が、3本足の1つの部品に入ったものです。
つまり、むずかしい所は受光モジュールの中に入っています。外の回路は、電源と出力をつなぐだけです。

38kHzの変調:光を点滅させて「合図」を送る
リモコンの赤外線は、1秒に 38000 回(周期 26.3µs)点滅しています。この点滅がひとかたまり続く部分を合図(バースト)と呼び、NEC フォーマットでは 1つの合図が 22 回の点滅で約0.58ms です。
なぜ点滅させるのでしょうか。部屋の照明や日光にも赤外線がふくまれていて、ただ光らせるだけでは、リモコンの光とまぎれてしまいます。決まった速さ(38kHz)で点滅させ、受ける側がその速さの変化だけを拾えば、まわりの光と区別できます。
周波数(Hz)とは。1秒に何回くり返すかを図で
つまり、38kHz は「光の点滅の速さ」。情報そのものは、合図と休みの並びに乗っています。

受光モジュールの中:38kHzだけを拾ってH・Lにする
受光モジュールは、38kHz の点滅を受けているあいだ OUT を L(約0V)、受けていないあいだ H(約5V)にします。受けると L になる「逆」の出力です。
| 中の回路 | やること |
|---|---|
| 受光素子(フォトダイオード) | 赤外線を小さな電流に変える |
| 増幅 | 小さな電流を大きくする |
| 38kHz のフィルタ | 38kHz 以外の変化(照明・日光)を捨てる |
| 検波・整形 | 点滅の有無を H・L のきれいな形にする |
TSOP382 のデータシートのブロック図では、OUT は中で約30kΩ の抵抗で電源に引き上げられています(プルアップ)。だから、外にプルアップを足さなくても、マイコンの入力ピンに直接つなげます。
受けていないとき OUT が H なので、マイコンからは「ふだん H、合図のときだけ L」に見えます。入力ピンが浮かない(電圧が決まっている)ことが大事です。
入力が「浮いている」とは。プルアップ・プルダウンの選び方
つまり、受光モジュールは「38kHz を受けたら L」の部品。出力が逆なことだけ覚えておきます。

受光モジュールの3本足:OUT・GND・VS
TSOP38238(Vishay)も OSRB38C9AA(OptoSupply)も、レンズを手前にして左から 1 OUT・2 GND・3 VS(VCC)です。ただし、品種によって並びが違うことがあるので、必ずデータシートで確かめます。
| TSOP38238 | OSRB38C9AA | |
|---|---|---|
| 1番 / 2番 / 3番 | OUT / GND / VS | OUTPUT / GROUND / VCC |
| 電源の電圧 | 2.0〜5.5V | 2.7〜5.5V |
| 流れる電流 | 0.25〜0.45mA(3.3V) | 0.9mA(typ)・1.5mA(max) |
| 受ける周波数 | 38kHz | 37.9kHz(中心) |
| 出力 | L で受信(Active low) | L で受信(Active Low) |
OSRB38C9AA は秋月電子などで手に入りやすい品種で、TSOP38238 は海外の通販でよく見かける品種です。どちらも 5V のマイコンでも 3.3V のマイコンでも使えます(OSRB38C9AA は 2.7V 以上)。
つまり、例の2品は「左から OUT・GND・VS」。違う品種は、差す前にデータシートを見ます。

受光モジュールの回路:電源に100Ωと47µFを入れる
VS を 100Ω を通して 5V につなぎ、VS と GND の間に 47µF(電解コンデンサ)を入れます。OUT はマイコンの D2 へ直接、GND は GND へつなぎます。
OSRB38C9AA のデータシートは「電源が汚い(雑音がある)ときは、100Ω(47〜100Ω)と約47µF(47〜100µF)の電解コンデンサを入れる」と書いています。TSOP382 も、電源に強いリプルやスパイクがあるときに抵抗 R1 とコンデンサ C1 を入れるよう勧めています(値は書かれていません)。
受光モジュールの中の増幅は、わずかな光の変化を大きくしているので、電源の雑音にも弱いです。雑音が OUT に出ると、押していないのに L が出る誤動作になります。
電解コンデンサのような大きなコンデンサ(バルクコンデンサ)の役目と容量の決め方
つまり、受信回路の部品は「受光モジュール+100Ω+47µF」の3つです。

100Ωと47µFの計算:雑音は約1/1100、電圧の下がりは0.15V以下
100Ω と 47µF の時定数は 4.7ms で、約34Hz より速い雑音を減らします。38kHz の雑音は約1/1100 に、1kHz でも約1/30 になります。100Ω での電圧の下がりは最大 0.15V です。
抵抗を大きくすると雑音はもっと減りますが、電圧の下がりも大きくなります。データシートの 47〜100Ω の範囲なら、どちらも心配いりません。電源を入れてからコンデンサが満ちるまでは、時定数の5倍で約23ms です。
抵抗とコンデンサの時定数で、フィルタの部品値を決める方法
つまり、100Ω と 47µF は「雑音をしっかり減らし、電圧はほとんど下げない」組み合わせです。

出力は「Lが受信」:OUTの波形と時間のずれ
合図(38kHz の点滅)が届くと、少し遅れて OUT が L になり、合図が終わると H にもどります。TSOP382 では、L の長さは合図の長さより ±132µs ずれ、184〜342µs 遅れて出ます。
| データシートの決まり(TSOP382) | 式 | 38kHz・合図 579µs のとき |
|---|---|---|
| L の長さ | 合図の長さ ± 5 ÷ 38kHz | 約447〜710µs |
| 遅れ | 7 ÷ 38kHz 〜 13 ÷ 38kHz | 約184〜342µs |
OSRB38C9AA のデータシートでも、600µs の合図に対して出力は 400〜800µs と書かれています。受光モジュールの出力の「長さ」は、ぴったりにはなりません。
これが、次の節で「L の長さ」ではなく「L になる時刻の間隔」で読む理由です。
つまり、OUT は合図の形をなぞりますが、長さには幅があります。読む側はそれを見込んで作ります。

NECフォーマットの形:リーダー+32ビット
NEC フォーマットは、9ms の合図と 4.5ms の休み(リーダー)のあとに、アドレス 8bit とその反転、データ 8bit とその反転の 32bit が続きます。全部で 67.5ms で、押し続けると 108ms ごとに短い合図をくり返します。
| 部分 | 中身 | 長さ |
|---|---|---|
| リーダー | 9ms の合図 + 4.5ms の休み | 13.5ms |
| アドレス+反転 | 機器の番号 8bit と、その 0・1 を入れかえた 8bit | 27ms |
| データ+反転 | ボタンの番号 8bit と、その反転 8bit | 27ms |
| 押し続け | リーダーと短い合図だけをくり返す | 108ms ごと |
反転を送るのは、受けた側で「元」と「反転」をくらべ、まちがいを見つけるためです。反転があるので、32bit の中に 0 と 1 は必ず16個ずつ入り、どのボタンでも長さが同じになります(0 が 1.125ms、1 が 2.25ms なので 16×1.125+16×2.25=54ms)。
NEC 以外にも、家電製品協会(AEHA)方式やソニー方式など、合図の長さや並びが違う方式があります。手元のリモコンの方式は、ロジアナで波形を見るとわかります。
I2C・SPI・UART の違い。H と L の並びでデータを送るほかの方式
つまり、NEC は「リーダー → 32bit」。反転のおかげで長さが一定で、まちがいも見つけられます。

0と1の見分け方:合図と合図の「間隔」で決まる
NEC では、合図の長さはどれも約0.58ms で、次の合図までの間隔が 1.125ms なら 0、2.25ms なら 1 です。読むときは、OUT が L になった時刻の差を測り、1.69ms より短ければ 0、長ければ 1 とします。
L の長さだけで読むと、前の節の ±132µs のずれをまともに受けます。立ち下がりから次の立ち下がりまでの間隔なら、遅れがどちらにも同じように入るので打ち消し合い、ずれに強くなります。
つまり、0 と 1 は「L→L の間隔」で読みます。しきい値は 1.69ms です。

オシロ・ロジアナで見たOUTの波形(イメージ)
OUT をロジアナやオシロスコープで見ると、まず約9ms の長い L(リーダー)、4.5ms の H のあとに、短い L が 33個並びます。短い L のあとの H が短ければ 0、長ければ 1 です。
図は、アドレス 0x00・データ 0x45 を、下位のビットから送ったとして計算で描いたイメージです(本物の波形の写真ではありません)。アドレス 0x00 は 0 が8つなので短い間隔が8回、その反転は 1 が8つなので長い間隔が8回並びます。
最後のビットの終わりを知らせるために、32bit のあとにもう1つ合図が来ます。そのため短い L は 33個です。
オシロスコープで見るときは、トリガを「立ち下がり」にすると、リーダーの始まりで画面が止まり、見やすくなります。
オシロのトリガとは。立ち下がりで波形を止める設定のコツ
つまり、波形は「長い L → H → 短い L が33個」。間隔の長短が 0 と 1 です。

マイコンで読む:Lになる時刻の差を測る
OUT をマイコンの割り込みのある入力ピン(例:D2)につなぎ、立ち下がりのたびに時刻の差を測って、リーダー・0・1 を分けます。実際には、IRremote などのライブラリがこの判定をしてくれます。
| L→L の間隔 | 意味 | 判定 |
|---|---|---|
| 13.5ms 前後 | リーダー(始まり) | 数え始める |
| 約1.1ms | 0 | 1.69ms より短い |
| 約2.3ms | 1 | 1.69ms より長い |
| 9ms の L のあと短い H | 押し続けの合図 | 前と同じボタン |
| それ以外 | 雑音・別の方式 | 捨てて待ち直す |
考え方を Arduino 風に書くと、次のようになります(立ち下がりの割り込みの中で動かす例。押し続けの合図や、ふつうでない間隔を捨てる処理は省いています)。
// OUT が L になった時刻の差で 0 と 1 を分ける(考え方の例)
unsigned long now = micros();
unsigned long dt = now - last; // 前に L になった時刻との差
last = now;
if (dt > 12000 && dt < 15000) { n = 0; } // 約13.5ms:リーダー
else if (dt < 1690) { /* 0 */ n++; }
else if (dt < 2800) { code |= (1UL << n); n++; } // 1(下位のビットから)
自分で書くのは勉強になりますが、実際に使うならライブラリのほうが確実です。ライブラリを使うときも、この節の「L→L の間隔」の考え方を知っておくと、うまく受からないときに原因を探せます。
つまり、受信のプログラムは「立ち下がりの時刻の差」を3つに分けるだけ。中身はこれだけです。

送る側の回路:赤外線LEDをトランジスタで流す
送る側は、赤外線 LED(例:TSAL6200)を 38kHz で点滅させます。マイコンのピンで直接なら 200Ω で約18mA、トランジスタ 2N3904 を使えば 36Ω で約93mA 流せて、遠くまで届きます。
光の強さは電流にほぼ比例し、距離の2乗で弱まります。電流を約5倍にすると、届く距離は約2.3倍が目安です(向き・レンズ・受光モジュールの感度で変わります)。
LED の抵抗を、何Ω・何W かの3ステップで
つまり、近くならピンで直接、遠くまで届かせるならトランジスタで電流を増やします。

送る側の計算:36Ωとベース抵抗430Ω
LED の抵抗は (5−1.35−0.3)÷100mA=33.5Ω → 36Ω(約93mA)、ベース抵抗は 93mA÷30×3=9.3mA から (5−0.7)÷9.3mA=462Ω → 430Ω です。点滅なので、抵抗の平均の電力は約27mW と小さくなります。
抵抗は 1/4W で足ります。ただし、LED を点けっぱなしにして試すと 0.31W かかるので、そういう試し方をするなら 1/2W にします。TSAL6200 の連続の最大は 100mA なので、点けっぱなしでも 93mA なら範囲内です。
ベース抵抗の考え方(hFE の最小値・余裕3倍・丸める向き)は、連載のベース抵抗の記事と同じです。
トランジスタで LED・リレーを動かす、ベース抵抗の計算の3ステップ
つまり、LED の抵抗は電流が増えない側、ベース抵抗は電流が減らない側に丸めます。

早見表:赤外線リモコンの受信・送信回路(5V)
答えだけ欲しい人向けの表です。受信は3本足と2つの部品、送信は LED とトランジスタです。
| 項目 | 値・つなぎ方 | メモ |
|---|---|---|
| 受光モジュール | 1 OUT・2 GND・3 VS(例の2品) | OUT は D2 へ直接 |
| 電源のフィルタ | 100Ω + 47µF(電解) | 38kHz の雑音 約1/1100・下がり 0.15V 以下 |
| NEC の 0 と 1 | L→L が 1.125ms/2.25ms | しきい値 1.69ms |
| リーダー | 9ms の L + 4.5ms の H | 始まりの目印 |
| 赤外線 LED(ピンで直接) | 200Ω | 約18mA |
| 赤外線 LED(2N3904) | 36Ω・ベース 430Ω | 約93mA |
つまり、表の値で組めば、まず動きます。品種が違うときは、足の並びと電源の範囲だけ確かめ直します。

ブレッドボードの配線:受光モジュールをD2へ
レンズを手前にして、OUT・GND・VS を 6・7・8 列に差します。8列(VS)から 100Ω で 11列へ渡し、11列から 5V へ。47µF は+を 8列、−を 7列へ。6列(OUT)からマイコンの D2 へつなぎます。
モーターなど電気の雑音を出す部品といっしょに使うときは、受光モジュールの電源と GND の線をなるべく短くし、47µF を足のそばに置きます。
IC の電源ピンのそばにコンデンサを置く理由(パスコン)
つまり、VS の列に「100Ω」と「47µF の+」、GND の列に「47µF の−」と GND、OUT の列から D2 です。

よくある失敗4つ:赤外線リモコンの受信回路
足の並びを思いこむ・周波数が合っていない・電源の雑音・日光や照明の真下に置く、の4つがよくある失敗です。
1. 足の並びを思いこむ
品種によって OUT・GND・VS の順が違います。ほかの品種の配線図をそのまま使うと、電源を逆に入れて壊すことがあります。データシートの図で確かめます。
2. 周波数が合っていない
受光モジュールには 36kHz・38kHz・40kHz などの品種があります。リモコンの周波数とずれると、届く距離が短くなります。NEC 方式なら 38kHz の品種を選びます。
3. 電源の雑音で誤動作
モーターや DC-DC コンバータの雑音が電源に乗ると、押していないのに L が出ることがあります。100Ω と 47µF を足のそばに入れます。
4. 日光・照明の真下に置く
強い光が当たると、受光モジュールの感度が下がり、届く距離が短くなります。直射日光を避け、筒やフードで横からの光をさえぎります。
つまり、足・周波数・電源・置き場所の4つを見直せば、たいていの「受からない」は直ります。

確かめ方:テスターで電源とOUT、ロジアナで形
最低限、①VS と GND の間が約4.9V あるか、②押していないとき OUT が約5V で、ボタンを押すと少し下がるか、をテスターで確かめます。
最低限ここだけ
余裕があれば
ロジックアナライザやオシロスコープがあれば、OUT の L の長さと間隔を見ます。9ms の L・4.5ms の H のあとに短い L が33個並べば NEC フォーマットです。
つまり、テスターで「電源」と「OUT が動くか」、ロジアナで「形」。この順に見れば、どこが悪いかを切り分けられます。


