やりたいことから始める 赤外線エアコンIoT (3/5)

第3章:赤外線送信の仕組み — IR LED とトランジスタの選定と抵抗計算

1. 送信に必要なもの

受信した信号を再現するには、同じように赤外線 LED を 38kHz で点滅させる必要があります。ここで考えるべきは:

  1. 赤外線 LED:940nm 帯のものが一般的。型番が分かっていれば極性や定格が確定できる。
  2. 電流の ON/OFF スイッチ:Pico の GPIO から直接大電流を流す設計にはしない。GPIO は「指令」を出すだけに留め、LED 電流は別の経路(電源)から流す。
  3. 電流制限:LED に抵抗なしで電源をつなぐと壊れる可能性がある。

2. なぜトランジスタが必要か

Pico の GPIO は最大でも数 mA 程度しか出力できません。しかし IR LED はある程度の電流(今回は初期 10mA 級から試す)を流した方が遠くまで届きます。このギャップを埋めるのがトランジスタです。NPN トランジスタを「電子スイッチ」として使い、GPIO が HIGH の時だけ LED に電流を流します。

3. データシートを確認するとどうなっているか

3-1. IR LED(OSI5LA5A33A-B)

OptoSupply OSI5LA5A33A-B(秋月電子商品ページ)確認結果
  • 波長:940nm(赤外線リモコン用標準帯域)
  • 順電圧(Vf):約 1.6V(典型値)
  • DC 順電流最大定格:100mA
  • パルス順電流最大定格:1,000mA(条件:パルス幅 10ms 以下、デューティ比 1/10 以下)
  • 放射強度:100mW/sr
  • 半減角:30°
  • Pin 配置:Pin 1 = Anode(アノード)、Pin 2 = Cathode(カソード)

データシートを確認すると、極性と定格が確定しました。ただし「DC 最大 100mA」は絶対最大定格であり、連続で 100mA 流してよいという意味ではありません。パルス駆動の条件付きで 1,000mA まで許容されますが、今回は安全側から始めます。

3-2. NPN トランジスタ(BC337-40BU)

ON Semiconductor BC337/338 Datasheet(秋月 105998)確認結果
  • 型式:NPN トランジスタ
  • コレクタ・エミッタ間電圧(VCEO):45V
  • 最大コレクタ電流(IC):800mA
  • パッケージ:TO-92
  • 直流電流増幅率(hFE):250〜630(BC337-40 グレード)
  • Pin 配置(平らな面を手前、足を下に):左から Pin 1=Collector、Pin 2=Base、Pin 3=Emitter

データシートを確認すると、800mA の余裕があり、今回の約 10mA 級の IR LED 駆動には圧倒的に十分であることが分かります。また、足順が明確に定義されているため、ブレッドボード上での向きを間違えにくいです。

選定:OSI5LA5A33A-B(940nm IR LED)+ BC337-40BU(NPN トランジスタ)
理由:LED は型番確定で極性(1=Anode, 2=Cathode)と定格が分かる。トランジスタは GPIO 電流不足を補い、800mA 余裕あり。両方ともメーカー資料で足順が確定している。

4. 抵抗値を計算する

トランジスタの BASE(制御端子)と IR LED(出力端子)の両方に抵抗を入れます。値は「どれだけの電流を流したいか」から導きます。

4-1. BASE 抵抗(2kΩ)

BASE-EMITTER 間はダイオードに近い性質を持ち、約 0.7〜1.0V の電圧降下があります。GPIO から流れる電流を 1mA 程度に抑えたいと考えると:

Ib ≒ (3.3V - 0.7V) / 2000Ω ≒ 1.3mA

手元に 2kΩ の抵抗があったため、これを使用します。BC337-40BU の hFE は 250 以上なので、1.3mA のベース電流であればコレクタ電流は 300mA 以上の駆動能力があり、今回の用途には十分すぎます。

4-2. LED 電流制限抵抗(330Ω)

IR LED の順電圧を 1.6V、USB 給電時の VBUS を約 5V とすると、トランジスタの電圧降下を無視した上限寄りの概算は:

Iled ≒ (5V - 1.6V) / 330Ω ≒ 10.3mA

実際にはトランジスタの COLLECTOR-EMITTER 間にも少し電圧がかかるため、LED 電流はこれよりわずかに小さくなります。最初の動作確認では安全側の約 10mA 級から始めます。

IR LED直列抵抗上限寄りの概算電流※今回の扱い
330Ω約10.3mA最初に使用。安全側で送信確認する。
220Ω約15.5mA手元にあれば次の候補。330Ωで距離不足のときに検討する。
100Ω約34mA最初から使わない。LED定格だけでなくパルス幅・デューティ比・BC337-40BUの駆動条件を確認してから検討する。

※ VBUS=5V、LED 順電圧=1.6V、トランジスタの電圧降下を無視して計算した値。実際の電流は少し小さくなる。

最初は 330Ω で始める
100Ω にすると概算 34mA まで増えます。LED の連続/パルス定格、デューティ比、トランジスタの駆動条件を確認してから抵抗値を下げる。最初は安全側の 330Ω で動作確認。

5. 送信回路の全体図

Pico GP18 (3.3V信号) 2kΩ ベース電流制限 BC337-40BU NPN B E→GND GND C IR LED 940nm 1=A 2=K 330Ω LED電流制限 VBUS ≒5V (USB) 電流の主経路

図2:IR LED 送信回路。GPIO は「スイッチの指令」だけを出し、LED 電流は VBUS 側から流れる。

6. 38kHz 搬送波の生成実験

赤外線受信モジュールは単に IR LED を点灯しただけでは反応しにくい。赤外線リモコンでは数十 kHz の搬送波で高速点滅させる必要があります。Pico では PWM で 38kHz の搬送波を作れます。

from machine import Pin, PWM
from time import sleep_ms

pwm = PWM(Pin(18))
pwm.freq(38000)
pwm.duty_u16(32768)   # 約50% duty
sleep_ms(1000)
pwm.duty_u16(0)
pwm.deinit()

この段階ではエアコンを動かす必要はありません。PL-IRM1838B で自分の送信を自分で受信して確認するか、スマートフォンのカメラで IR LED が点滅しているかを見る方法もあります(機種によって赤外線カットが強く見えないことがあるため、PL-IRM1838B での確認がより確実です)。